Come trovare i sottodomini di un sito

Tempo di lettura: 7 minuti

Riuscire a penetrare in un sistema non sempre è facile, specialmente se il dominio principale è protetto, aggiornato e sembra invulnerabile. Ogni volta che bisogna effettuare un penetration test, la via più semplice non è quasi mai quella diretta, anzi, bisogna sempre pensare a tutte le alternative possibili. Un esempio è la ricerca di sottodomini.

Un sottodominio fa parte di un dominio più grande, ad esempio it.wikipedia.org. Molti sviluppatori creano sottodomini riferendosi a blog, forum o sottosezioni del dominio principale senza preoccuparsi di renderli sicuri quanto quello principale. Qualche mese fa un ricercatore è riuscito ad intromettersi nei sistemi di Facebook proprio grazie ad un sottodominio, visto che dalla porta principale gli è stato impossibile (vi consiglio di leggere il suo articolo, spiega in modo approfondito i passi che ha compiuto).

In questo articolo introdurrò diversi software che permettono di trovare tutti (o quasi) i sottodomini di un sito e i loro rispettivi indirizzi IP.

Dnsmap

Dnsmap è uno dei tools più utilizzati nella fase del Footprinting. Esso compie un attacco di forza bruta contro il dominio principale, verificando l’esistenza di più sottodomini.

┌─[mrtouch@parrot]─[~]
└──╼ $dnsmap
dnsmap 0.30 - DNS Network Mapper by pagvac (gnucitizen.org)

usage: dnsmap  [options]
options:




-w <wordlist-file>
-r <regular-results-file>
-c <csv-results-file>
-d <delay-millisecs>
-i <ips-to-ignore> (utile quando si rilevano dei falsi positivi)




esempi: 
dnsmap target-domain.foo 
dnsmap target-domain.foo -w yourwordlist.txt -r /tmp/domainbf_results.txt 
dnsmap target-fomain.foo -r /tmp/ -d 3000 
dnsmap target-fomain.foo -r ./domainbf_results.txt

Nel caso voleste utilizzare una vostra lista il comando è -w vostralista.txt.

Ho provato ad utilizzarlo con Facebook e il risultato è stato ottimo, in meno di 10 minuti ha trovato più di 300 indirizzi

Alcuni sottodomini di Facebook
Alcuni sottodomini di Facebook

SubBrute

Come si evince dal nome, SubBrute è uno dei tool di enumerazione più accurati che ci siano in circolazione. Una delle features più importanti è che non invia richieste direttamente all’obiettivo.

┌─[✗]─[mrtouch@parrot]─[~/subbrute-master]
└──╼ $python subbrute.py -h
Usage: 
subbrute.py [options] obiettivo
subbrute.py -p target_domain

Options:
  -h, --help            show this help message and exit
  -s SUBS, --subs=SUBS  (optional) Lista dei sottodomini, accetta sia file 
                        singoli, o una cartella con file. default = 'names.txt'
  -r RESOLVERS, --resolvers=RESOLVERS
                        (optional) Lista di DNS resolvers, se la lista è
                        vuota verrò utilizzata quella del sistema operativo
                        default='resolvers.txt'
  -t TARGETS, --targets_file=TARGETS
                        (optional) File contenente gli obiettivi.
                        
  -p, -P                (optional) Stampa i dati dei record dei DNS trovati
                        (default= off).
  -o OUTPUT, --output=OUTPUT
                        (optional) Salva in un file (Greppable Format)
  -j JSON, --json=JSON  (optional) Salva in un (JSON Format)
  --type=TYPE           (optional) Stampa tutte le risposte da un particolare
                        record (CNAME, AAAA, TXT, SOA, MX...)
  -c PROCESS_COUNT, --process_count=PROCESS_COUNT
                        (optional) Numero di theads utilizzati. default =
                        16
  -v, --verbose         (optional) Stampa informazioni aggiuntive (debug).
Alcuni sottodomini di Google
Alcuni sottodomini di Google

Sonar

Lo utilizzo poco, ma è capitato più volte che mi trovi sottodomini che altri software non riescono a trovare. È scritto in GO (per chi non sapesse come compilarlo consiglio questo articolo)

┌─[mrtouch@parrot]─[~/.go/src/github.com/jrozner/sonar/cmd]
└──╼ $./main 
Usage: ./main [options] domain
  -bruteforce
        attacco di forza bruta (default true)
  -format string
        formato di output (json, xml, nmap)
  -output string
        file di output
  -threads int
        numero di threads (default 4)
  -wordlist string
        lista di parole specifica
  -zonetransfer
        prova a sfruttare zone transfer (ormai in disuso)

Con la lista di default non trova molti sottodomini, ma se gli viene passata una wordlist migliore (ad esempio queste), potrebbe trovare domini che altri software non hanno trovato

Alcuni sottodomini di Facebook
Alcuni sottodomini di Facebook

Dnsrecon

Sebbene l’obiettivo principale di questo software sia quello di effettuare la ricognizione dei DNS, è utilissimo quando il sito target ha DNS propri, che sono di conseguenza sottodomini e potenzialmente vulnerabili.

Guida di DNSRecon
Guida di DNSRecon

Le opzioni sono molte, in base ai DNS che vorremmo trovare, dei threads che si vogliono utilizzare o il range di indirizzi IP da scansionare. Il comando base è

root@kali:~# dnsrecon -d facebook.com
[*] Performing General Enumeration of Domain: facebook.com
[-] DNSSEC is not configured for facebook.com
[*] 	 SOA a.ns.facebook.com 69.171.239.12
[*] 	 NS a.ns.facebook.com 69.171.239.12
[*] 	 NS a.ns.facebook.com 2a03:2880:fffe:c:face:b00c:0:35
[*] 	 NS b.ns.facebook.com 69.171.255.12
[*] 	 NS b.ns.facebook.com 2a03:2880:ffff:c:face:b00c:0:35
[*] 	 MX msgin.vvv.facebook.com 173.252.113.23
[*] 	 A facebook.com 31.13.64.35
[*] 	 AAAA facebook.com 2a03:2880:f106:83:face:b00c:0:25de
[*] 	 TXT facebook.com v=spf1 redirect=_spf.facebook.com

Conclusioni

Esistono sicuramente molti altri tool per effettuare un attacco di forza bruta contro un dominio e ognuno avrà le sue peculiarità e debolezze. Personalmente consiglio di utilizzarne due o tre insieme, per essere sicuri di non perdere nulla durante la fase del Footprinting e poter trovare un server vulnerabile. Ricordo che con siti grandi e autogestiti è consigliato utilizzare anche DNSRecon, visto che hanno i loro server DNS.