DNS spoofing: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
-U, molteplici fix |
numerosi fix, fonti, collegamenti esterni, bibliografia |
||
Riga 1:
Il '''DNS spoofing''' è un [[attacco informatico]], facente parte di una categoria più vasta denominata
▲Il '''DNS spoofing''' è un [[attacco informatico]], facente parte di una categoria più vasta denominata ''[[man in the middle]]''.
==Introduzione==
[[File:Halfio.jpg|thumb|Schema di attacco Man in the middle.|alt=]]
Gli attacchi di tipo ''
L'attaccante invia comunque i pacchetti che riceve alla giusta destinazione. In questo modo i due host attaccati non si accorgono che la comunicazione è stata alterata. In base alle abilità dell'attaccante di alterare la connessione l'attacco prende il nome di ''man in the middle'' half duplex (in una comunicazione bidirezionale si monitorizza solo un senso della connessione) o ''man in the middle'' [[full duplex]]<ref>In telecomunicazioni ed informatica il full-duplex è una modalità di invio e ricezione di informazioni digitali o analogiche, con funzione completamente bidirezionale.</ref>.
Riga 12 ⟶ 11:
==DNS-Query==
Il [[Domain Name System|
▲[[File:Dnsgerarchy.JPG|center|thumb|Esempio di funzionamento di DNS.|alt=]]
La struttura reale di una query è molto più complessa ed articolata ma questo modello semplificato è sufficiente a introdurre le caratteristiche principali dell'attacco.
==DNS Spoofing==
Il DNS spoofing si svolge nel modo seguente: la vittima fa una DNS query, l'attaccante la cattura e manda alla vittima una risposta fasulla, diversa da quella che sarebbe stata fornita dal DNS. [[File:Pachets dns.JPG|thumb|Esempio semplificato di DNS query.|alt=]]
I messaggi DNS viaggiano sulla rete utilizzando il protocollo [[User Datagram Protocol|UDP]]. La sicurezza è affidata al protocollo DNS il quale ha dei punti deboli. L'attacco sfrutta alcuni campi delle DNS query<ref>{{Cita web|url=http://www.cs.unibo.it/~margara/page2/page6/page25/assets/Gruppo9.pdf|titolo=Attacchi login: Spoofing,Sniffing, Phishing, Keyloggers|autore=Patrick Assirelli|autore2=Matteo Battaglia}}</ref>:
*l'ID (evidenziato in grigio nella figura) è un campo di 16 bit che individua la transazione. Viene generato dall'host che ha originato una DNS query; le risposte devono avere il medesimo id, altrimenti l'host non le accetterà come valide.
*Il campo QUESTION (sempre in grigio) contiene il nome di dominio richiesto e il tipo di record che devono essere inviati come risposta.
Tale attacco può esser effettuato in varie modalità:
Riga 33 ⟶ 30:
L'obiettivo dello spoofing è modificare la corrispondenza tra indirizzo IP e nome del sito contenuti nelle risposte.
===Simulazione delle risposte del DNS
Questa tipologia d'attacco deve considerare l'ID della query. L'attaccante intercetta la richiesta di un client, memorizza l'ID contenuto all'interno del messaggio, e crea una falsa risposta con il giusto ID copiato precedentemente. Alla fine rispedisce il tutto al client che ha fatto la query. Affinché l'attacco riesca è necessario rispondere con l'ID atteso dal client prima del vero server. In questo modo il client crede che l'host attaccante sia il server. Questo perché il client accetta la prima risposta che gli viene inviata con id atteso ([[race condition]])<ref name=":1" />. Infine, è necessario anche intercettare le eventuali reverse query (quelle che traducono indirizzo IP a nome simbolico), perché se parte una nuova richiesta e non la s'intercetta, la vittima può accorgersi che al nome simbolico non corrisponde l'IP ricevuto dal falso DNS<ref name=":0" />. ▼
▲Questa tipologia d'attacco deve considerare l'ID della query. L'attaccante intercetta la richiesta di un client, memorizza l'ID contenuto all'interno del messaggio, e crea una falsa risposta con il giusto ID copiato precedentemente. Alla fine rispedisce il tutto al client che ha fatto la query. Affinché l'attacco riesca è necessario rispondere con l'ID atteso dal client prima del vero server. In questo modo il client crede che l'host attaccante sia il server. Questo perché il client accetta la prima risposta che gli viene inviata con id atteso (race condition). Infine è necessario anche intercettare le eventuali reverse query (quelle che traducono indirizzo IP a nome simbolico), perché se parte una nuova richiesta e non la s'intercetta, la vittima può accorgersi che al nome simbolico non corrisponde l'IP ricevuto dal falso DNS.
A questo punto il client invierà tutti i pacchetti destinati a quel nome simbolico all'attaccante, il quale può:
#svolgere la funzione di [[proxy]] e creare una connessione con il client e una con il server e rimandare ogni richiesta di servizio proveniente dal client al server e ogni risposta dal server al client
#non contattare il server reale e simulare i servizi offerti dal server.
Nel caso in cui non si possa intercettare una DNS query si può provare un attacco di tipo ''blind'', ovvero un attacco alla cieca.
La simulazione delle risposte del DNS è facilmente individuabile. Infatti, utilizzando un server DNS diverso si può notare la differenza delle risposte. Inoltre l'IP dell'attaccante è presente nell'intestazione dei pacchetti IP che contengono i pacchetti UDP con le risposte DNS contraffatte.
Riga 46 ⟶ 42:
===Cache poisoning (in remoto)===
{{Vedi anche|DNS cache poisoning}}
Questa tipologia d'attacco consiste nel creare record DNS fasulli e inserirli nella [[cache]] del name server. Un name server non può contenere tutte le corrispondenze IP/nome simbolico, pertanto utilizza una cache con parti di tali corrispondenze con
Se l'attacco riesce, a questo punto qualsiasi utente che usufruisce di quel determinato server DNS ed esegue query per siti attendibili riceve come risposte corrispondenze IP/nome simbolico sbagliate dovute appunto all'avvelenamento della cache. Questa tipologia d'attacco non è facilmente intercettabile. Si può essere sotto attacco per un lungo periodo senza che ci si accorga facilmente d'esserlo, {{Senza fonte|tuttavia è quasi impossibile trovare name server vulnerabili a quest'attacco ormai considerato obsoleto}}.
===Manomissione fisica del DNS===
Questa tipologia d'attacco è molto semplice, ma solo se si ha accesso diretto a un name server e si ha la possibilità di modificare direttamente i record cambiando manualmente gli indirizzi IP di interesse per l'attaccante.▼
▲Questa tipologia d'attacco è molto semplice, ma solo se si ha accesso a un name server e possibilità di modificare direttamente i record cambiando manualmente gli indirizzi IP di interesse per l'attaccante.
==Contromisure==
▲*Per quanto riguarda la simulazione delle risposte del DNS la prima contromisura è sicuramente accorgersi di essere sotto attacco e ciò è possibile individuando eventuali risposte multiple (IDS).
▲*Per quanto riguarda il DNS Spoofing tramite ARP cache poisoning è possibile utilizzare una soluzione open source chiamata ArpON "ARP handler inspection". ArpON è un demone portabile che rende il protocollo ARP sicuro contro attacchi Man in The Middle (MITM) attraverso tecniche ARP Spoofing, ARP Cache Poisoning, ARP Poison Routing (APR).
==Esempio di DNS spoofing==
L'esempio utilizza la tecnica di simulazione del DNS su una rete locale con il programma [[ettercap]], usando come configurazione quella d'esempio contenuta nel file etter.dns (per vedere tale configurazione basta aprire il file etter.dns del programma stesso). Per eseguire l'esempio è necessario un personal computer con sistema
▲L'esempio utilizza la tecnica di simulazione del DNS su una rete locale con il programma ettercap, usando come configurazione quella d'esempio contenuta nel file etter.dns (per vedere tale configurazione basta aprire il file etter.dns del programma stesso). Per eseguire l'esempio è necessario un personal computer con sistema operativo linux ed ettercap installato.
Sia:
* host1 = pippo con ip 192.168.1.9 l'attaccante
* host2 = topolino con ip 192.168.1.5 la vittima▼
▲host2 = topolino con ip 192.168.1.5 la vittima
topolino vuole collegarsi al sito www.icann.org (utilizzeremo la configurazione di default d'ettercap) e pippo vuole eseguire una simulazione delle risposte del DNS su topolino; per far ciò esegue il seguente comando:▼
pippo: ettercap -T -M arp:remote /192.168.1.9/ /192.168.1.1/ -P dns_spoof<ref name="paper mint">[http://www.blackhats.it/en/papers/Paper-mitm.pdf blackhats.it]</ref>▼
Con questo comando<ref name="paper mint" /> digitato da console, pippo (computer host 1) 192.168.1.9 si è finto gateway (192.168.1.1) e ha reindirizzato le richieste di topolino (host 2) 192.168.1.5 indirizzate a www.icann.org direttamente su www.example.com; ovviamente per far funzionare il tutto deve configurare il reindirizzamento nel seguente modo (cosa già fatta come esempio all'interno del file) pippo: nano /usr/share/ettercap/etter.dns▼
▲
▲ pippo: ettercap -T -M arp:remote /192.168.1.9/ /192.168.1.1/ -P dns_spoof
▲Con questo comando
pippo: nano /usr/share/ettercap/etter.dns
[[File:Etter.JPG|640*480px|center|]]
In questo modo vengono reindirizzate tutte le connessioni di icann su example.com. Se si vuole reindirizzare un generico sito su un altro indirizzo, basta aprire il file etter.dns con
[[File:Structs.JPG|630px|center|]]
In questa prima parte del file spiega come devono essere strutturate le query, perciò se si vogliono reindirizzare più siti basta aggiungere al file più strutture identiche a quelle dell'esempio, dove al posto di icann inseriamo il sito che si vuole reindirizzare e al posto dell'indirizzo
==Tool applicativi==
Esistono vari
▲Esistono vari tool applicativi per svolgere questa tipologia d'attacchi. Tra i più conosciuti vi sono Ettercap,Dsniff e Zodiac.
=== Ettercap ===
È uno [[sniffer]] evoluto, sviluppato da due programmatori italiani, che permette di
*SSH 1 e HTTPS password sniffing;
*Password collection per una moltitudine di protocolli;
*OS fingerprinting per il riconoscimento dei sistemi operativi sugli
*Possibilità di chiudere una connessione o inserire caratteri estranei;
*Supporto di plugin vari che a loro volta presentano funzioni quali DNS spoofing, PPTP sniffing
Riga 104 ⟶ 90:
=== Zodiac ===
Zodiac è un programma che analizza il protocollo DNS. Permette di osservare il traffico
#vedere come funziona il protocollo DNS
#fare dello spoofing senza dover scrivere delle routine di modifica o filtri per pacchetti
Le sue caratteristiche sono le seguenti<ref>{{Cita web|url=https://www.darknet.org.uk/2008/07/zodiac-dns-protocol-monitoring-and-spoofing-tool/|titolo=Zodiac - DNS Protocol Monitoring and Spoofing Tool - Darknet|autore=Darknet|sito=https://www.darknet.org.uk/|data=2008-07-18|lingua=en-US|accesso=2020-09-12}}</ref>:
*Possibilità di
*Possibilità di catturare e decodificare quasi tutti i tipi di pacchetti DNS, inclusi i pacchetti decompressi
*Interfaccia testuale con comandi interattivi e finestre multiple
Riga 118 ⟶ 104:
*il sistema che filtra i pacchetti DNS permette l'installazione di pseudo filtri DNS selezionabili da una vasta gamma di primitive di costruzione di pacchetti DNS
*Possibilità di visualizzare la versione del DNS name server utilizzando richieste di tipo BIND
*DNS spoofing, rispondendo alle query DNS su rete LAN prima del Name Server remoto (fruttando la race condition)
*DNS spoofing con jizz, sfruttando le debolezze in vecchie versioni di BIND.
*DNS ID spoofing, sfruttando le debolezze del protocollo DNS.
Riga 124 ⟶ 110:
==Note==
<references/>
== Bibliografia ==
* {{Cita libro|autore1=Cricket Liu|autore2=Paul Albitz|titolo=DNS and BIND|url=http://worldcat.org/oclc/421777651|data=2006|editore=O'Reilly|OCLC=421777651|ISBN=2-84177-409-0}}
==Voci correlate==
Riga 130 ⟶ 119:
==Collegamenti esterni==
* [http://arpon.sf.net ArpON]
{{Portale|crittografia|informatica|sicurezza informatica}}
| |||