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?