Dig, uno strumento per effettuare query DNS senza più segreti

Impariamo ad effettuare query DNS tramite dig alla scoperta di settaggi e configurazioni fondamentali.
By Admin | Settembre 28, 2023

In questo articolo approfondiremo la conoscenza dello strumento dig, alias di Domain Information Groper, che ci permette ricavare preziose informazioni a livello DNS relativamente a domini o indirizzi IP. dig è uno strumento utilissimo non solo nella fase di raccolta delle informazioni ma anche come strumento diagnostico per la configurazione dei sistemi e la diagnosi di problemi di rete o di comunicazione.

Dato un certo dominio, ad esempio site.com, potremmo facilmente ricavare informazioni sui settaggi DNS, ad esempio per i comuni record NS, A, AAAA ed MX oltre a settaggi più specifici come record di tracking, verifica identità, specifiche per i certificati, sottodomini, ecc.

Sulla maggior parte delle distribuzione *NIX il comando dig è già presente da installazione base, se ciò non fosse disponibile ci basterà installare sulle distribuzione Debian-derivate il pacchetto dnsutils mentre sulle RHEL-derivate il pacchetto bind-utils.

Vediamo ora la sintassi specifica di dig. Il costrutto base è dig [target] [name] [type], dove troviamo rispettivamente il dominio o IP target a cui siamo diretti, il nome del dominio che interroghiamo e il tipo di record a cui siamo interessati (di default viene utilizzato A).

Supponiamo di interrogare cloudflare.com, per ora senza nessuna opzione. Al comando:

$ dig cloudflare.com

Otterremo la seguente risposta:

Figura 1

Come si può vedere una risposta densa di informazioni, vediamo le principali sezioni.

La parte HEADER contiene un summary della risposta ricevuta, in questo caso 1 query (QUERY) effettuata, 2 risposte (ANSWER) e ben 22 record di info addizionali (ADDITIONAL).

La sezione QUESTION SECTION riassume i dettagli della nostra query in colonne riportando (nell'ordine) il dominio target (cloudflare.com), il tipo di query utilizzata IN (in questo caso internet) e il record richiesto A (in questo caso fornito di default dal comando dig).

Nella sezione ANSWER SECTION troviamo la parte più importante, cioè la risposta, ordinata in colonne da sinistra a destra. Nell'ordine (1) il dominio interrogato, (2) il TTL o Tome to Live cioè il tempo dopo il quale il record ottenuto viene (ri)aggiornato, (3) il tipo di query utilizzato, nuovamente IN per internet, (4) il tipo di record (A) e (5) l'IP a cui punta il dominio interrogato (in questo caso 104.16.132.229). Cioò l'informazione principale a cui eravamo interessati, l'IP della macchina o del sistema target.

Nella sezione ADDITIONAL SECTION (se presente) otteniamo numerosi altri record sempre nella struttura a 5 colonne, ad esempio potremmo avere i record NS che specificano i Name Server o i record AAAA che indicano gli IP a cui punta il dominio oggetto della query espressi in formato IPv6.

Infine, nella parte finale di tutte le info fornite da dig troviamo alcune info di complemento quali il tempo impiegato dalla nostra query in msec, il che ha processato la nostra richiesta (campo SERVER), in questo caso è spesso riportato un indirizzo locale su porta 53 che rappresenta la configurazione della nostra rete, la data in cui abbiamo eseguito la query (campo WHEN), la dimensione della risposta ottenuta (campo MSG SIZE).

Vediamo ora alcune opzioni specifiche per ottenere risposte mirate dal comando dig. Per ottenere tutti i record indistintamente dal tipo eseguiamo:

$ dig cloudflare.com ANY

Per ottenere una risposta breve con il(i) solo(i) IP della sezione ANSWER:

$ dig cloudflare.com +short

Per ottenere solo una parte specifica della risposta, in questo caso ANSWER:

$ dig cloudflare.com +noall +answer

Allo stesso modo avremmo potuto usare naturalmente +authority oppure +additional (in sostituzione di +answer) per le relative sezioni.

Per ottenere al contrario la lista di tutti i server attraverso cui la nostra query viene instradata verso la destinazione finale possiamo usare:

$ dig cloudflare.com +trace

In fase di utilizzo possiamo anche richiedere a dig il server DNS specifico attraverso cui effettuare una query. Di default dig utilizza i DNS settati nel file /etc/resolv.conf, ma appunto è possibile richiedere specificatamente altri DNS. Ad esempio possiamo richiedere di utilizzare i DNS di cloudflare o di google per interrogare un certo sito eseguendo:

$ dig @1.1.1.1 example.com
$ dig @8.8.8.8 site.net

Possiamo inoltre specificare per ogni query dig di utilizzare il formato il formato IPv6 dal momento che di default viene utilizzato il classico IPv4.

$ dig -6 @1.1.1.1 example.com

Lo stesso si otterrebbe (omettendo -6) fornendo l'IP del DNS richiesto in formato IPv6:

$ dig @::ffff:1.1.1.1 example.com

E' possibile ovviamente utilizzare dig in modalità reverse, cioè usando gli IP al posto dei domini.

$ dig -x 104.16.133.229

Ottenendo per questo IP, cioè per cloudflare.com, la seguente risposta:

Figura 2

Anche la modalità reverse è utilizzabile con le opzioni precedentemente viste, ad esempio:

$ dig -x 104.16.133.229 +noall +authority

Infine, dig potrebbe essere interrogato per la raccolta di informazioni massive su numerosi domini, per affrontare agevolmente una situazione di questo tipo evitando di ripetere gli stessi comandi decine di volte possiamo ad esempio preparare un file (url_list.txt) con un elenco di domini o IP di nostro interesse, ad esempio:

siteA.com
siteB.net
siteC.org

Fornendolo a dig attraverso il comando:

$ dig -f url_list.txt +short

Ovviamente l'opzione +short ci aiuterà ad avere informazioni mirate e concise, probabilmente da usare in combinazioni con altri comandi per manipolare i record ottenuti. A conclusione di questo articolo ricordiamo come sempre accade per i comandi ampiamente diffusi la presenza di un ampio ed articolato manuale con tutte le specifiche e le opzioni da consultare attraverso:

$ man dig

In conclusione a questo articolo una nota di chiusura finale. Il comando dig è estremamente utile nella fase di raccolta delle informazioni, soprattutto in ambito security. Ci permette di farci un'idea sulla struttura dei sistemi dietro i domini generici, ad esempio è molto utile per ricostruire la natura dei sistemi mail (record MX), ottenendo informazioni dettagliate sulle macchine che erogano il servizio o se vengono utilizzati sistemi alternativi.

Dal punto di vista “difensivo” un professionista deve valutare bene quali informazioni esporre tramite DNS, quindi accessibili pubblicamente da dig. Spesso nella pianificazione di operazioni offensive o difensive si scopre in maniera sorprendente una grandissima quantità di informazioni (spesso non necessarie) esposte tramite record DNS configurati con approssimazione e leggerezza. I professionisti dovrebbero quindi soppesare e valutare con attenzione l'intera configurazione di tutti record onde evitare di favorire la raccolta di informazioni riservate.

Qualsivoglia richiesta può essere inviata a NAOSDATA che offre servizi di consulenza, implementazione e managment specifico sulle infrastrutture ICT.

Ci auguriamo che questo articolo vi sia piaciuto e vi possa essere d'aiuto nell'utilizzo di dig. Se apprezzate il nostro lavoro seguite i nostri profili su Facebook e LinkedIn.

Creative Commons License
Questo lavoro è offerto tramite licenza Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


Risorse e Link: