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 https://www.html.it/
date Tue, 22 Mar 2016 15:16:38 GMT
content-type text/html; charset=UTF-8
accept-ranges bytes
x-pingback https://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.