Sto imparando come eseguire un attacco di avvelenamento della cache DNS.
Corro tutto su un ambiente VM isolato, solo per scopi didattici.
L'installazione è una macchina Linux con Unbound
Server DNS configurato come un resolver ricorsivo, che cerco di avvelenare.
Per semplicità, mi permetto di essere MITM (per i pacchetti dentro e fuori).
Io uso dig
per interrogare il resolver per un nome di dominio, ad esempio www.google.com
.
Il resolver interroga qualche server DNS per una risposta.
Quindi, usando scapy e python-nfqueue, catturo il pacchetto del risultato finale e cambio la risposta in modo che conterrà solo un nome NS (ns1.google.com, sometimes ns2 etc)
come record NS e un record aggiuntivo di ns1.google.com
con un IP di 6.6.6.6
.
Ecco uno schermo stampato di Wireshark (del pacchetto di risposta finale che ho modificato):
Ed ecco una prova che la cache è avvelenata:
Ora, interrompo lo script di avvelenamento, e mi aspetto che la prossima volta che interrogherò un sottodominio come www.images.google.com
, il resolver avvelenato riconoscerà www.images.google.com
come sottodominio di google.com
, quindi tenterà di interrogare ns1.google.com
a 6.6.6.6
utilizzando il record memorizzato nella cache.
Tuttavia non sta succedendo e il risolutore tenta di interrogare un server DNS esterno usando invece la cache.
Qualche idea di cosa mi manca?