Come effettuare una ricognizione DNS

Tempo di lettura: 8 minuti

Il sistema dei nomi di dominio (Domain Name System) è un sistema utilizzato per la risoluzione di nomi dei nodi della rete in indirizzi IP e viceversa (ossia traduce il nome del dominio in indirizzo IP). Dopo aver identificato tutti i dominio associati ad un bersaglio (con il Footprinting) viene effettuata la fase di interrogazione dei DNS per identificare possibili configurazioni errate o con un basso livello di sicurezza. Esistono diversi strumenti per questa tecnica, e le informazioni più rilevanti che possiamo ottenere sono:

  • CNAME: i collegamenti tra un DNS e un altro, in questo modo veniamo a conoscenza del percorse effettuato;
  • A: utilizzato per collegare un dominio o sottodominio in un indirizzo IP a 32 bit;
  • MX: è la risorsa del DNS che specifica il server di posta.

La fase di ricognizione dei DNS è considerata a tutti gli effetti un Footprinting attivo, ed obbligatorio quando si vuole mappare la rete di un azienda o organizzazione.

Nslookup

Nslookup è uno strumento presente in tutti i sistemi operativi che utilizzano il protocollo TCP/IP; esso consente di effettuare delle query ad un indirizzo IP o dominio per ottenere la risoluzione dello stesso. Per svolgere una interrogazione veloce basta digitare

nslookup sito.it

e si avrà il seguente output

quinckns
quinckns
Il server specificato è quello utilizzato dal nostro sistema per la query, tramite la porta 53. È possibile confermare i dati ricevuti modificando il server, in questo modo

nslookup
server IP
sito.it

changesrv
changesrv
I risutati sono stati confermati, e siamo certi che il dominio richiesto abbia quegli indirizzi IP.

Possiamo anche interrogare il database in altri modi, tra i quali:

  1. nslookup type=ns sito.it: con il comando type=ns specifichiamo che vogliamo sapere il nome del server, e non l’indirizzo IP;
    typens
    typens
  2. nslookup type=mx sito.it: specifica che vogliamo sapere solamente il server di posta, se presente
  3. nslookup type=any sito.it: tutti i tipi di DNS rilevati.

C’è la possibiltà di creare anche uno script automatico per effettuare molteplici test senza dover digitare ogni volta il comando. I passi da effettuare sono:

  • Creare un file chiamato AutoM8 (io ho utilizzato nano, anche vi va bene);

  • Copiare e incollare questo codice

    #!/bin/sh for HOSTNAME in cat Domini.txt do echo “Getting name servers for [$HOSTNAME]”
    nslookup -type=ns $HOSTNAME 8.8.8.8 done

  • Creare, nello stesso percorso, un file chiamato Domini.txt in cui inserirete la lista (uno per riga) degli indirizzi da controllare;

  • Nel terminale digitate ./AutoM8 e stamperà l’interrogazione di tutti i domini.

    autom8
    autom8

Dig

Domain Information Groper è un comando per sistemi Unix utilizzato per l’interrogazione DNS. È un’ottima alternativa a nslookup e, per certe vie, decisamente più completo. Come prima, una query base è

root@kali:~$ dig amazon.com

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> amazon.com
;; global options: +cmd
;; Got answer:
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;amazon.com.			IN	A

;; ANSWER SECTION:
amazon.com.		8	IN	A	54.239.25.200
amazon.com.		8	IN	A	54.239.17.7
amazon.com.		8	IN	A	54.239.17.6
amazon.com.		8	IN	A	54.239.25.208
amazon.com.		8	IN	A	54.239.25.192
amazon.com.		8	IN	A	54.239.26.128

;; Query time: 56 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Mon May 02 19:27:35 CEST 2016
;; MSG SIZE  rcvd: 135

Anche in questo caso, il server utilizzato per l’interrogazione è lo stesso di nslookup, per cambiarlo bisogna andare in /etc/resolve.conf.

Un’altro comando utile è

dig +qr sito.it any

Esso ci fornisce tutte le informazioni possibili sul dominio interrogato insieme ai diversi tipi di DNS

digany
digany

Un comando molto utile (anche se ormai obsoleto, in quanto pochi DNS lo permettono ancora) è lo Zone Tranfer. Se attivo, esso ci permette di avere tutte le informazioni possibili di un DNS, come sottodomini o configurazioni errate dello stesso. È anche possibile farlo in automatico da questo sito. Digitando

dig @DNS.it sito.it axfr

scopriamo se un dominio lo ha attivo o meno. Se fosse attivo, la risposta sarebbe la seguente

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> axfr @ns1.publinord.it siti.it
; (1 server found)
;; global options: +cmd
siti.it.		86400	IN	SOA	ns1.publinord.it. domain.publinord.it. 2014010201 86400 3600 604800 86400
siti.it.		86400	IN	NS	ns1.publinord.it.
siti.it.		86400	IN	NS	ns2.publinord.it.
siti.it.		86400	IN	MX	10 mail.siti.it.
siti.it.		86400	IN	A	46.37.14.7
siti.it.		86400	IN	A	46.37.14.18
siti.it.		86400	IN	A	46.37.14.27
mail.siti.it.		86400	IN	A	46.37.14.38
www.siti.it.		86400	IN	CNAME	siti.it.
siti.it.		86400	IN	SOA	ns1.publinord.it. domain.publinord.it. 2014010201 86400 3600 604800 86400
;; Query time: 56 msec
;; SERVER: 46.37.14.14#53(46.37.14.14)
;; WHEN: Mon May 02 19:38:40 CEST 2016
;; XFR size: 10 records (messages 1, bytes 253)

Altri comandi utili sono:

  • dig +nocmd +noall +answer sito.it: abbreviazione dell’output. In questo modo visualizziamo solo la l’indirizzo che ci interessa, in particolare:
    • +nocmd indica che vogliamo eliminare le informazioni iniziali;
    • +noall che non vogliamo visualizzare le flags attive;
    • +answer che vogliamo visualizzare solo la risposta;
  • _dig +nocmd txt chaos VERSION.BIND @DNS.it +noall +answer sito.it: _stampa la versione del BIND utilizzata, è ottimo se vogliamo trovare delle possibili vulnerabilità;
  • dig +nocmd +noall +answer -x IP: effettua un DNS lookup inverso, ossia dall’indirizzo IP ci mostra il nome del dominio
    revdig
    revdig
  • dig +trace sito.it: ci mostra il percorso effettuato per rilevare il DNS.

Fierce

Fierce è utilizzato solitamente per il forzare la scoperta di sottodomini e DNS (è un DNS bruteforcer). È composto da molte opzioni, ma nel nostro caso basta il comando principale

fierce -dns sito.it

Se la Zone Tranfer risulta attiva, il software ci mostra l’output con tutti i sottodomini rilevati, altrimenti con il bruteforce cerca di scoprire quali sono attivi. Il file di default per gli host è abbastanza completo, ma io sono solito usare questo file (con più di 50000 mila host).

fierce -dns sito.it -wordlist alexaTop1mAXFRcommonSubdomains.fuzz.txt

In questo modo abbiamo la possibilità di mappare i sottodomini dell’azienda target.

Conclusioni

Oltre che i software introdotti nell’articolo è possibile utilizzare:

Questa fase è effettuata in contemporanea a quella del Footprinting, per chi vuole approfondire o capire meglio l’argomento, consiglio questo e quest’altro video (due conferenze di qualche anno fa).