DNS Pharming con server DHCP

Di malware della famiglia dei “DNSChanger” se ne sono visti parecchi negli ultimi tempi. DNSChanger per sistemi Mac, DNSChanger per router ADSL e DNSChanger per Windows.

Fino ad ora però la tecnica utilizzata per ogni target era sempre differente. CSRF per i router, modifica del file hosts o del registro di Windows e della modifica delle impostazioni di sistema per i Mac. Adesso è stata escogitata un nuovo modo completamente cross-platform utilizzando il protocollo DHCP. Infatti un nuovo malware segnalato da Symantec e ISC, una volta installato su un sistema Windows, manda in esecuzione, sulla medesima macchina, un server DHCP non legittimo (detto anche rogue DHCP) che di fatto si contrappone a quello già esistente, praticamente,  in tutte le LAN domestiche e aziendali. Di fatto questa cosa consente al “rogue DHCP” di far credere ai client che i server DNS da utilizzare siano quelli in possesso degli attaccanti. ISC a tal proposito segnala che i DNS utilizzati da questo ultimo attacco si trovano tra 85.255.112.0 e 85.255.127.255.

L’idea, sicuramente non nuova, ma mai utilizzata da un malware, sfrutta il fatto che il protocollo DHCP non prevede nessun metodo per verificare se la risposta arriva dal server DHCP legittimo o meno. Le richieste dei client girano sulla rete Ethernet in broadcast. In questo modo qualsiasi server DHCP presente sul dominio di broadcast sarà in grado di rispondere. Il primo, in ordine di tempo, che risponderà alle richieste dei client, sarà quello che verrà preso in considerazione.

Dopo questa premessa vorrei passare ai tool che risultano essere utili per scoprire “rogue DHCP” sulla LAN:

TIME: 2008-12-06 15:17:50.200
IP: 192.168.0.1 (XX:XX:XX:XX:XX:XX) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: a6e51638
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 192.168.0.101
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: YY:YY:YY:YY:YY:YY:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         5 (DHCPACK)
OPTION:  54 (  4) Server identifier         192.168.0.1
OPTION:  51 (  4) IP address leasetime      86400 (24h)
OPTION:   1 (  4) Subnet mask               255.255.255.0
OPTION:   3 (  4) Routers                   192.168.0.1
OPTION:   6 ( 12) DNS server                85.37.17.55,85.38.28.93
OPTION:  15 ( 22) Domainname                domain_not_set.invalid

(Sono stati sostituiti i mac del server con XX:XX:XX:XX:XX:XX e quello del client con YY:YY:YY:YY:YY:YY)

Questo è un esempio di un DHCPACK mandato da un server DHCP dopo le richieste del client. Come si può notare il server DHCP comunica Gateway e DNS.

Ho trovato alcuni tool interessanti per monitorare richieste e risposte DHCP su una LAN:

  • DHCPloc (resurceKit di Windows)
  • DHCPdump (disponibile nei repository della maggiori distribuzioni Linux)

Dove gli antivirus non arrivano, con qualche riga di script non è difficile gestire gli alert in caso siano rilevati server DHCP non legittimi.