Cerco di riprodurre l'attacco, rivelato da Dan Kaminsky nel 2008, per avvelenare la cache DNS. Ho creato la mia rete virtuale e tutto ciò che faccio è limitato all'interno.
L'avvelenamento sembra funzionare. Ma non . Perché?
Il dominio di destinazione è example.com . Ecco la mia rete:
- Resolver: 200.200.200.1
Resolves the DNS queries.
- DNS #0: 200.200.200.2
Root DNS Server.
- DNS #1: 200.200.200.3
Authoritative for '.com' zone.
- DNS #2: 200.200.200.4
Authoritative for 'example.com' zone.
It also runs a web server: www.example.com.
- Attacker: 200.200.200.5
The attacker. Tries to perform the attack.
The attacher is configured to be authoritative for 'example.com' (as DNS2).
But as he is not referenced by the DNS servers, he won't be asked anything.
The purpose of the attack is to be stored in the cache of the Resolver.
Therefore, as long as it's in the cache, any query to <rdm>.example.com will
be forwarded to him.
The attacker runs a web server too, and wants to 'steal' www.example.com.
In sostanza, quando qualcuno richiede www.example.com o qualsiasi altra cosa, Resolver richiede DNS0 , DNS1 e poi DNS2 . Alla fine, memorizza i record interessanti nella sua cache. Dovrebbe sembrare più o meno come questo:
. 300 IN NS ns.
ns. 300 IN A 200.200.200.2 (DNS 0)
com. 300 IN NS ns.com.
ns.com. 300 IN A 200.200.200.3 (DNS 1)
example.com. 200 IN NS ns.example.com.
ns.example.com. 200 IN A 200.200.200.4 (DNS 2)
www.example.com. 100 IN A 200.200.200.4 (DNS 2 runs a web serv)
Ho creato un programma per eseguire l'attacco. Sembra funzionare. Infatti, ecco la cache del Resolver :
;
; Start view _default
;
;
; Cache dump of view '_default' (cache _default)
;
$ DATE 20141229094639 (09:46:39, 29th of December 2014)
; authanswer
. 295 IN NS ns.
; glue
com. 295 NS ns.com.
; glue
example.com. 196 NS ns.example.com.
; glue
ns.example.com. 56 A 200.200.200.5 (Attacker)
; glue
ns.com. 295 A 200.200.200.3 (DNS 1)
; additional
ns. 295 A 200.200.200.2 (DNS 0)
Ma in effetti, non funziona:
$ dig www.example.com +short
200.200.200.4 (DNS 2 web serv!)
Ed ecco come appare la cache del Resolver ora:
;
; Start view _default
;
;
; Cache dump of view '_default' (cache _default)
;
$ DATE 20141229094652 (09:46:52, 29th of December 2014)
; authanswer
. 282 IN NS ns.
; glue
com. 282 NS ns.com.
; authauthority
example.com. 97 NS ns.example.com.
; answer
ns.example.com. 97 \-AAAA ;-$NXRRSET
; example.com SOA ns.example.com. admin.example.com. 2014111400 86400 900 1209600 3600
; glue
193 A 200.200.200.4 (DNS 2)
; authanswer
www.example.com. 97 A 200.200.200.4 (DNS 2)
; glue
ns.com. 282 A 200.200.200.3 (DNS 1)
; additional
ns. 282 A 200.200.200.2 (DNS 0)
Non so cosa sia successo. Potrei vedere, usando wireshark, che quando digito dig www.example.com , Resolver richiede DNS2 e non l' Attacker . Ma quando vedo il suo cache (quello dopo un attacco "riuscito"), non dovrebbe sapere DNS2 .
Qualcuno di voi ha un'idea di cosa sta andando male?
Grazie e buona giornata.