tags: reconnaissance nslookup dns passive SOA_Records DNS_Transfer


Nslookup è uno strumento molto utile nel trovare l’indirizzo IP di un determinato dominio, il suo uso è semplicissimo e si può utilizzare da riga di comando digitando prima i seguenti parametri:

Trovare l’indirizzo IP non autorevole

nslookup       
> set type=a

Questo parametro ci permetterà di cercare l’indirizzo IP corrispondente, dopo aver settato questo parametro possiamo mettere il dominio come nel seguente esempio:

nslookup       
> set type=a
> certifiedhacker.com
Server:		192.168.1.1
Address:	192.168.1.1#53
 
Non-authoritative answer:
Name:	certifiedhacker.com
Address: 162.241.216.11

In questo caso l’indirizzo IP del dominio certifiedhacker è 162.241.216.11, ma abbiamo ottenuto una risposta non autorevole il che significa che il server non è quello ufficiale, ma un server che ha interagito con il server ufficale o che ha memorizzato nella cache i dati, un altro indizio che ci suggerisce questo è che alla voce Server e Address ci appare il nostro indirizzo locale il che indica che siamo stati noi a risolvere il DNS.

Ottenere l’indirizzo IP effettivo del dominio (Autorevole)

Per ottenere una risposta autorevole e quindi diretta dal server ufficiale possiamo utilizzare il tipo NS che serve proprio a scovare i server DNS autorevoli ai quali poi porre un’interrogazione di tipo A ed ottenere l’indirizzo IP autorevole del dominio in questione in questo caso certifiedhacker.com:

nslookup
> set type=ns
> certifiedhacker.com
Server:		192.168.1.1
Address:	192.168.1.1#53
 
Non-authoritative answer:
certifiedhacker.com	nameserver = ns2.bluehost.com.
certifiedhacker.com	nameserver = ns1.bluehost.com.
 
Authoritative answers can be found from:
ns1.bluehost.com	internet address = 162.159.24.80
ns2.bluehost.com	internet address = 162.159.25.175

I risultati ns1.bluehost.com e ns2.bluehost.com sono effettivamente i nomi e gli indirizzi IP dei domini DNS autorevoli. Ora possiamo impostare uno di questi due server in nslookup in modo tale che faccia le richieste proprio a questi server autorevoli in modo da ottenere l’indirizzo IP effettivo del dominio certifiedhacker.com, lo possiamo fare nel seguente modo:

> server ns1.bluehost.com         #Qua impostiamo il server trovato prima
Default server: ns1.bluehost.com
Address: 162.159.24.80#53
> set type=A
> certifiedhacker.com
Server:		ns1.bluehost.com    #Questo output conferma l'impostazione del server
Address:	162.159.24.80#53
 
Name:	certifiedhacker.com
Address: 162.241.216.11          #Questo è l'IP effettivo del dominio

Questo l’abbiamo potuto fare perchè avevamo già a disposizione il dominio originale.

Trovare il dominio originale da un sottodominio

Se invece avessimo avuto un sottodomio avremmo dovuto prima trovare il domino originale tramite il parametro CNAME che sta per canonical name, lo possiamo fare nel seguente modo:

> set type=cname
> certifiedhacker.com
Server:		192.168.1.1
Address:	192.168.1.1#53
 
Non-authoritative answer:
*** Can't find certifiedhacker.com: No answer
 
Authoritative answers can be found from:
certifiedhacker.com
	origin = ns1.bluehost.com
	mail addr = dnsadmin.box5331.bluehost.com
	serial = 2024102200
	refresh = 86400
	retry = 7200
	expire = 3600000
	minimum = 300
 

Nota importante sull ouput

- _CNAME configurato per `certifiedhacker.com`_.
- **`Authoritative answers can be found from:`**: **Questa sezione in questo output è _fuorviante_ e _non c'entra con i record CNAME_.** In questo caso, `nslookup` ti sta mostrando le informazioni del record **SOA (Start of Authority)** per la zona `certifiedhacker.com`. Il record SOA è _sempre_ presente per ogni zona DNS e contiene informazioni amministrative sulla zona (server DNS primario, email dell'amministratore, numeri di seriale, refresh, retry, expire, minimum TTL). Quindi, `nslookup` sta dicendo: "Anche se non ho trovato record CNAME per `certifiedhacker.com`, posso dirti che le _informazioni autorevoli sulla zona DNS `certifiedhacker.com` (inclusi i record SOA)_ possono essere trovate dai server DNS autorevoli che sono..." (e _dovrebbe_ listare `ns1.bluehost.com` e `ns2.bluehost.com` qui, ma _non lo fa_ in questo output specifico - forse un piccolo bug o comportamento inatteso di `nslookup`).

Tramite questo comando possiamo trovare la radice del domino cioè il dominio originale, infatti il parametro CNAME serve proprio a trovare la radice del dominio infatti in questo caso ci risponde Can't find certifiedhacker.com: No answer proprio perchè non trova un dominio più originale di quello perchè è già la radice del dominio (), infatti se proviamo a farlo ad un suo sottodominio come www.certifiedhacker.com ci apparirà certifiedhacker.com come dominio originale o radice del dominio:

set type=cname
www.certifiedhacker.com
Server:		10.64.0.1
Address:	10.64.0.1#53
 
Non-authoritative answer:
www.certifiedhacker.com	canonical name = certifiedhacker.com.
 
Authoritative answers can be found from:

Come si può notare ora ci appare www.certifiedhacker.com canonical name = certifiedhacker.com. il che ci indica che il nome del dominio è certifiedhacker.com, quindi questo parametro si può utilizzare per trovare il dominio radice a partire da un sottodominio.

> set type=a
> ns1.bluehost.com
Server:		192.168.1.1
Address:	192.168.1.1#53
 
Non-authoritative answer:
Name:	ns1.bluehost.com
Address: 162.159.24.80

Quindi l’indirizzo IP originale è 162.159.24.80.

SOA (Start of Authority)

Possiamo usare questo servizio per trovare il server DNS primario per poi cercare di capire se il server permette il DNS transfer, per fare ciò possiamo eseguire i seguenti comandi:

certifiedhacker.com
Server:		127.0.0.53
Address:	127.0.0.53#53
 
Non-authoritative answer:
certifiedhacker.com
	origin = ns1.bluehost.com
	mail addr = dnsadmin.box5331.bluehost.com
	serial = 2024110500
	refresh = 86400
	retry = 7200
	expire = 3600000
	minimum = 300
 
Authoritative answers can be found from:

Per vedere cosa indicano le informazioni ricavate visita la pagina DIG, le più utili sono origin=ns1.bluehost.com che indica il nome del server DNS primario e mail addr = dnsadmin.box5331.bluehost.com che indica l’indirizzo email dell’amministratore.

DNS Transfer

Ora che abbiamo trovato il sever primario tramite il servizio soa possiamo vedere se il servizio Zone Transfer è abilitato oppure no e lo possiamo fare attraverso il seguenti comando (Attenzione su Linux questo comando non è supportato quindi per effettuare questa operazione è meglio utilizzare DIG):

Il comando è:

ls -d [Nome server]