Scansionare sottodomini con Knockpy

23 marzo 2016

Durante le fasi di analisi della sicurezza di un web server, può essere utile soffermarsi sui sottodomini esposti su internet. Può succedere, infatti, che qualche falla di sicurezza si nascanda proprio su una pagina accessibile da un sottodominio, magari resa visibile per errore durante le fasi di sviluppo di una piattaforma ancora in beta testing.

Allo scopo di analizzare i sottodomini di un sito web, esistono diversi strumenti: in questo articolo ne vedremo uno, Knockpy, scritto in Python (da uno sviluppatore italiano, Gianni Amato) e facilmente accessibile poichè disponibile su GitHub. Impareremo come utilizzarlo per scansionare (in maniera completamente automatica, o utilizzando una wordlist) i possibili sottodomini di un sito web.

Installazione

Per potere utilizzare Knockpy, dobbiamo innanzitutto assicurarci di avere installato Python sul nostro PC. Nella documentazione di Knockpy si fa riferimento alla versione 2.7.6 di Python, che possiamo scaricare (per diverse piattaforme) direttamente da questo link. Una volta completato il download e l’installazione, potremo installare Knockpy in due modi:

  • tramite pip (a sua volta facilmente installabile come indicato a questa pagina), utilizzando il comando seguente:
    pip install https://github.com/guelfoweb/knock/archive/knock3.zip
    
  • manualmente, estraendo il contenuto del file .zip scaricabile da GitHub, ed eseguendo (con i privilegi di root) il comando seguente:
    python setup.py install
    

Fatto ciò, non resta che capire come utilizzare Knockpy.

Utilizzare Knockpy

Quello che Knockpy ci consente di fare è sostanzialmente la scansione dei sottodomini di un sito web, partendo da una serie di parole (una wordlist). Possiamo decidere di utilizzare la wordlist di default di Knockpy, oppure di specificarne una personalizzata.

La sintassi si può riassumere in questo modo:

knockpy [-h] [-v] [-w WORDLIST] [-r] [-z] domain

Il flag -h, come intuibile, non fa altro che spiegare come utilizzare il comando, mostrando una serie di suggerimenti ed esempi di utilizzo. Specificando, invece, l’opzione -v (o analogamente --version), visualizzeremo la versione di Knockpy (che attualmente è la 3.0). Con l’opzione -w possiamo invece specificare una wordlist, in cui ogni riga dovrà contenere una singola parola (che corrisponderà, in fase di analisi, ad un singolo sottodominio da verificare). Un tipico utilizzo di questo tool sarà quindi il seguente:

knockpy miodominio.com

L’output di questo comando conterrà diverse righe. Vediamo alcune di seguito (tratte dall’output di knockpy html.it):

Ip Address        Target Name
----------        -----------
151.1.244.200     html.it

Code              Reason
----------        -----------
301               Moved Permanently

Field             Value
----------        -----------
x-varnish         2281227678
x-cache           MISS
content-language  it
x-powered-by      PHP/5.3.10-1ubuntu3.7
x-ants-machine-id www9
x-varnish-hn      02
server            Apache/2.2.22 (Ubuntu)
age               0
connection        keep-alive
via               1.1 varnish
location          http://www.html.it/
date              Tue, 22 Mar 2016 15:16:38 GMT
content-type      text/html; charset=UTF-8
accept-ranges     bytes
x-pingback        http://www.html.it/xmlrpc.php

Ip Address        Domain Name
----------        -----------
151.1.244.197     ad.html.it
46.37.29.209      adserver.html.it
46.37.29.204      adsl.html.it
46.37.29.204      b2b.html.it

[...]

Come si vede, ci vengono innanzitutto mostrati gli header della risposta HTTP del dominio, da cui possiamo immediatamente trarre alcune informazioni più o meno interessanti (tipo e versione del server, lingua dei contenuti, indirizzo IP, eccetera). Potevamo anche decidere di ottenere solo questa prima parte dell’output, utilizzando il flag -r:

knockpy -r html.it

Continuando l’analisi dell’output precedente, vediamo che vengono elencati una serie di sottodomini disponibili (unitamente agli IP associati a ciascuno di essi), tutti trovati utilizzando la wordlist di default di Knockpy. Ovviamente, potevamo effettuare lo stesso tipo di operazione specificando un file di testo diverso:

knockpy -w my_wordlist.txt

Il funzionamento di Knockpy è tutto qua. Il tool è molto interessante proprio per questa sua semplicità di utilizzo, e può tornare utile in numerose occasioni, soprattutto a chi si occupa di analisi di sicurezza.

Conclusioni

Con tool come Knockpy, non facciamo altro che “cercare” i sottodomini di un sito web. In un’analisi di sicurezza, questa operazione può rappresentare una prima fase di studio, che può essere fondamentale ancor prima di cercare eventuali falle. Se l’analista non sa bene quali domini sono esposti su internet, non potrà analizzarli tutti, rischiando di tralasciare elementi potenzialmente importanti e che potrebbero contribuire alla sicurezza di un intero ecosistema di server web.

Se vuoi aggiornamenti su Scansionare sottodomini con Knockpy inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Scansionare sottodomini con Knockpy

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy