DNS spoofing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Typo fixing, typos fixed: using AWB
Nessun oggetto della modifica
Riga 5:
==Introduzione==
 
Gli attacchi di tipo [[man in the middle]] consistono nel deviare i pacchetti nell'ambito diin una cominicazionecomunicazione tra due host adverso un terzo(l'attaccante),il qualeche fingerà d'esserdi l'endessere pointeril veromittente dellao comunicazionedestinatario vero.
 
La struttura è la seguente:
All'internoLa struttura è la diseguente: una comunicazione a tre,due dove l'attaccante si antepones’interpone tra lai vittimadue edhost ilvittime secondoA hoste B.
 
[[File:Mansinthemiddle.JPG|center|thumb|]]
 
L'attaccante riceverà pacchetti contenenti richieste da ambo due le parti. ed ilIl suo ruolo è quello di preoccuparsi d'inoltrareinviare i pacchiettipacchetti che riceve verso la giusta destinazione,in. modoIn chequesto haimodo i due realihost end pointerattaccati non risultisi compromessaaccorgeranno che la comunicazione è stata alterata.
In base alle abilità dell'accattacante attaccante di monitorarealterare la connessione (in un solo verso dall' host a all' host b, o in ambidue i sensi da a verso b e da b verso a) l'attacco prende il nome di [[man in the middle]] half duplex o [[man in the middle]] [[full duplex]].
[[File:Half&full.jpg‎|center|thumb|nome]]
 
Un possibile finescopo di queste tipologie d'attacchi può essere quello di rubare tuttedelle leinformazioni credenzialipersonali oppure monitorare e alterare la comunicazione tra 2due utenti.
 
==Tipologie di attacchi Man in the middle ==
 
Ci sono varie tipologie d’attacchi [[man, in thebase middle]],essealla cambianoscala insu basecui all’attaccante contestopuò doveagire si applicano,epossono classificare sononel lemodo seguenti.seguente:
 
*Primo caso, attacco su rete locale:
#ARP Poisoning
#Dns Spoofing
Riga 26 ⟶ 27:
#Traffic desync
 
*Secondo caso, attacco da rete locale su remoto attraverso un gateway:
#ARP Poisoning
#Dns Spoofing
Riga 35 ⟶ 36:
#Route mangling
 
*Terzo caso, attacco da remoto:
#Dns cache poisoing
#Traffic Tunneling
#Route mangling
 
Per comprendere queste tipologie d’attacchi è necessario avere un idea di come funzioni lo scambio di record DNS tra server DNS.
 
==Dns-Query==
 
Il Dnsprotocollo DNS ha il compito di trasformare l'indirizzo [[internet]]simbolico (ad esempio www.prova.org) in [[indirizzo ip]] numerico o IP (ad esempio 202.159.XXX.XXX);ha. I server DNS sono organizzati secondo una struttura ad albero gerarchica, costituitain dacui ogni nodo corrisponde ad un dominio. variI server aiDNS qualiscambiamo èrecord assegnataDNS unamediante determinatatre zona.tipi di messaggi: query, responce e update.
Supponiamo ad esempio di voler contattare tramite un browser (softwareil applicativosito dedicatowww.prova.org. allaQuest’operazione navigazioneconsiste internet,in sonouna browserserie firefox,internetdi explore,DNS google crhome,safari) wwwquery.prova.org.
Quest’operazioneIl consiste in una query alserver DNS, che dopo aver trovato l'indirizzo ip tramite varie chiamate ad altri server Dns lo comunica alla macchina richiedente con un DNS responce che deve contenere l’IP giusto (di fatto, se al posto del sito scriviamo ill’IP relativo ip d'esempiodell’esempio 202.159.XXX.XXX il sito sarebbe comunque raggiungibile).
[[File:Dnsgerarchy.JPG|center|thumb|]]
La struttura reale di una query è molto più complessa ed articolata ma semplifichiamo il tutto ed utilizziamo solo ciò che serve ai fini dell’attacco.
 
La struttura reale di una query è molto più complessa ed articolata ma semplifichiamo il tutto ed utilizziamo solo ciò che serve ai fini dell’attacco.
 
==Dns Spoofing==
 
Il DnsDNS spoofing è un attacco informatico, lache vittimasi fasvolge richiestanel dimodo risoluzioneseguente: dila unvittima hostfa una DNS query, quest'ultimache viene catturata dall'attacanteattaccante, cheil quale può decidere di corromperla e di mandare alla vittima una risposta diversa da quella che sarebbe stata fornita dal DNS. Tale attacco può esser effettuato in varie modalità:
Tale attacco può esser effettuato in varie modalità:
*Simulazione delle risposte del Dns
*Cache poisoning
*Manomissione fisica del Dns
 
I datimessaggi trasmessi o inviatiDNS viaggiano sulla rete sotto forma di pacchetti ed utilizzando il protocollo UDP,la sicurezza è affidata al protocollo Dns il quale ha dei punti deboli.
La sicurezza è affidata al protocollo DNS il quale ha dei punti deboli. L’attacco sfrutta alcuni campi delle DNS query:
L' attacco sfrutta alcuni campi dei pacchetti per i propri fini, essi sono:
 
*l' ID (evidenziato in grigio) ,in quanto ogni volta che si effettua una query viene generato un ' id e le risposte alla query devono avere il medesimo id altrimenti il client non accetterà le risposte,per cui questo dato è indispensabile;
*l’ID (evidenziato in grigio) è 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à.
*Il campo question (sempre in grigio) poiché ogni domanda ha un type ed ogni risposta ha un type
*Il campo QUESTION (sempre in grigio) contiene il nome di dominio richiesto e il tipo di record che devono essere inviati come risposta .
 
UnUna pacchettoDNS query Dns lola possiamo immaginare cosìnel fattomodo seguente:
[[File:Pachets dns.JPG|center|thumb|]]
L'obbiettivo dello spoofing è modificare la corrispondenza tra indirizzo ip e nome del sito contenute nelle risposte.
 
L'obbiettivo dello spoofing è il campo question, in quanto ogni domanda e ogni risposta hanno un tipo specifico,quello che interessa ai fini dell’attacco è l’ “A type” ovvero colui che contiene la corrispondenza tra indirizzo ip e nome del sito.
 
===Simulazione delle risposte del Dns(in una rete locale o da locale a remoto)===
 
Questa tipologia d'attacco deve considerare 3l’ID variabilidella (id,query. risposta, porta), di fatti consiste nell'intercettareL’attaccante intercetta lela richiesterichiesta di un client, memorizzarememorizza l'idID contenuto all' internoall’interno del pacchettomessaggio, e successivamente crearecrea una falsa risposta con il giusto idID copiato precedentemente,. infineAlla bisognafine rispedirerispedisce il tutto al client che ha effettuatofatto la query.
Affinché l'attacco riesca è necessario rispondere con l’ID atteso al client prima del vero server. In questo modo il client crederà che l’host attaccante sia il server.
Infine bisognaè necessario anche intercettare le eventuali reverse query(quelle contrarieche datraducono indirizzo ip a nome simbolico).
A questo punto il client invierà tutti i pacchetti destinati a quel nome simbolico all'attaccante, che deve accettare la connessione e crearne un'altra verso il veroquale server,a questo punto ha due opzioni possibilipuò:
#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 mostraresimulare i servizi "falsi"offerti aldal clientserver.
Nel caso in cui siamonon impossibilitatisi dipossa intercettare queryuna versoDNS il Dns abbiamo sempre unaquery secondasi opzione,ovveropuò operareprovare un attacco di tipo blind.
 
La simulazione delle risposte del Dns nonDNS è unfacilmente attaccointercettabile. "pulito", infattiInfatti utilizzando un server DnsDNS diverso si può notare la differenza delle risposte,inoltre. cosa ben più graveInoltre l'ip(indirizzo fisico)IP dell'attacanteattaccante è presente all'internonell’intestazione delledei pacchetti IP che contengono i pacchetti UDP con le risposte DnsDNS contraffatte.
Affinché l'attacco riesca è necessario rispondere al client prima del vero server,in modo da far credere al client che siamo noi il server anche se in realtà non è così(questa clausola viene detta "race condition").
 
Infine bisogna anche intercettare le eventuali reverse query(quelle contrarie da indirizzo ip a nome simbolico).
 
A questo punto il client invierà tutti i pacchetti destinati a quel nome simbolico all'attaccante, che deve accettare la connessione e crearne un'altra verso il vero server,a questo punto ha due opzioni possibili:
 
#può svolgere mansione di proxy per il server e rispondere in modo corretto a tutti i servizi che il client s'aspetta di trovare sul server.
#non contattare il server reale e mostrare servizi "falsi" al client.
 
Nel caso in cui siamo impossibilitati di intercettare query verso il Dns abbiamo sempre una seconda opzione,ovvero operare un attacco di tipo blind.
 
====Considerazioni====
 
La simulazione delle risposte del Dns non è un attacco "pulito", infatti utilizzando un server Dns diverso si può notare la differenza delle risposte,inoltre cosa ben più grave l'ip(indirizzo fisico) dell'attacante è presente all'interno delle risposte Dns.
 
===Cache poisoning (in remoto)===
 
Questa tipologia d'attacco consiste nel creare record DnsDNS fasulli ed 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 tale corrispondenze con TTL(Time to live, ovvero un periodo di vita dei dati nella cache).
La tecnica del cache poisoning si basa sull’inserimento in cache di record falsi con un TTL molto grande.
 
Il problema, che si pone di fronte ad un attaccante, è come illudere il DNS SERVERServer in modo che accetti i record avvelenati. Queste sono alcune delle possibilità.
Quindi con una mappatura sbagliata e un TTL molto grande si ottengo indirizzi ip fasulli, su questo si basa la tecnica del cache poisoning.
 
Il problema, che si pone di fronte ad un attaccante, è come illudere il DNS SERVER in modo che accetti i record avvelenati. Queste sono alcune delle possibilità.
 
*ilIl DnsDNS server si avvelena“avvelena” da solo: nel modo seguente:
 
Un host fa una richiesta di un indirizzonome di dominio(ad esempio www.prova.org) al suo server DnsDNS, se tale indirizzo non è in memoria, parte una query al dnsDNS del dominio corrispondente,ora. supponiamo cheSe questo server siaè stato avvelento quindiavvelenato risponderà al server DnsDNS con una mappatura sbagliata e di conseguenza si avvelenerà anche luiil laprimo cacheserver DNS(avvelenamento temporaneo poiché i dati nella cache hanno un time to live).
[[File:Autopoison.JPG|center|thumb|]]
 
*Dns Id spoofing
 
Il DNS server inserisce solo i record che provengono da risposte a query con ID atteso. I vecchi DNS Server usavano un unico ID che veniva incrementato per le richieste successive. L’attaccante, in questo caso doveva solo venire a conoscenza di questo ID per essere abbastanza sicuro che i suoi record avvelenati verranno inseriti. Un modo di procedere per l’attaccante è il seguente:
Un modo di procedere per l’attaccante è il seguente:
 
*Crea una rete con un DNS Server “fasullo” di cui ha pieno controllo, denominiamolo ad esempio attaccante.net
*Chiede al server vittima la traduzione di www.attaccante.net
*Il server vittima è costretto ad inviare una query al DNS fasullo della rete attaccante.net, e questa query contiene anche l’Id
*L’attaccante chiede la traduzione di un record che vuole avvelenare e spera di poter inviare lui stesso la risposta con l’Id corretto prima del DNS autoritario (race condition).
Se il server cambia gli IdID nelle DNS query quest’attacco non funziona più, ma l’attaccante può fare tutte le prove che riesce ad eseguire prima che arrivi la risposta dal DNS autorevole. I possibili diversi identificativi sono 65636 (2^16), ovvero l’attaccante deve indovinare un intero in questo range.
 
Se l’attacco riesce, a questo punto qualsiasi utente che usufruirà di quel determinato server DnsDNS ed eseguirà query per siti attendibili riceverà come risposte contraffatte dovute all’ "avvelenamento"all’avvelenamento della cache.
Se il server cambia gli Id nelle DNS query quest’attacco non funziona più, ma l’attaccante può fare tutte le prove che riesce ad eseguire prima che arrivi la risposta dal DNS autorevole. I possibili diversi identificativi sono 65636 (2^16), ovvero l’attaccante deve indovinare un intero in questo range.
Questa tipologia d’attacco non è moltofacilmente piùintercettabile. pulita ed efficace della precedente in quanto siSi può essere sotto attacco per un lungo periodo senza che ci si accorga facilmente d'esserlo, ma tuttavia è quasi impossibile trovare name server vulnerabili a questo attaccoquest’attacco ormai considerato obsoleto.
 
Se l’attacco riesce, a questo punto qualsiasi utente che usufruirà di quel determinato server Dns ed eseguirà query per siti attendibili riceverà come risposte contraffatte dovute all’ "avvelenamento" della cache.
 
====Considerazioni====
Questa tipologia d’attacco è molto più pulita ed efficace della precedente in quanto si può essere sotto attacco per un lungo periodo senza che ci si accorga facilmente d'esserlo, ma tuttavia è quasi impossibile trovare name server vulnerabili a questo attacco ormai considerato obsoleto.
 
===Manomissione fisica del Dns===
 
Questa tipologia d’attacco dalè puntomolto disemplice, vistama esplicativosolo èse moltosi semplice,avendoha accesso a un name server autoritativoe nonpossibilità facciamodi nient’altromodificare direttamente chei alterarerecord la tabella,modificandocambiando manualmente gli indirizzi ip chedi ciinteresse interessano.per l’attaccante.
 
===Contromisure===
 
* Per quanto riguarda la simulazione delle risposte del DnsDNS la prima contromisura è sicuramente accorgersi d'esserdi essere sotto attacco e ciò è possibile individuando eventuali risposte multiple (IDS).
* Una seconda opzione è il DNSSEC ovvero Domain Name System Security Extensions il quale è l’ultimo standard d’internet implementato per garantire sicurezza ai Domain Name, è un protocollo che controlla e valida le richiesta mediante una serie di controlli, in questo modo si può prevenire l’intercettazione del traffico web.
* Per quanto riguarda il DNS Spoofing tramite ArpARP cache poisoning è possibile utilizzare una soluzione open source chiamata [http://arpon.sf.net ArpON] "Arp handler inspectiON" che rileva e blocca tutti gli attacchi Man In The Middle tramite Arp poisoning e spoofing attraverso due approci: Static ARP Inspection (SARPI) e Dynamic ARP Inspection (DARPI) su LAN switched/hubbed con o senza DHCP.
* Altra soluzione è utilizzare un server che genera il campo id dei pacchetti in maniera casuale e allo stesso modo sceglie un numero di porta di comunicazione; aumentaqueste contromisure aumentano in maniera esponenziale la sicurezza del DNS.
* In merito al poison cache ci limitiamo a direaffermare che è ormai impossibile trovare server vulnerabili a questo tipo d’attacco considerato obsoleto.
 
===Esempi dns spoofing===
 
FaremoL’esempio un esempio di spoofing utilizzandoutilizza la tecnica di simulazione del DnsDNS su una rete locale con il programma ettercap, utilizzandousando come configurazione quella d’esempio contenuta nel file etter.dns (per vedere tale configurazione basta aprire il file etter.dns) del programma stesso;infine). parleremoPer deleseguire casol’esempio generico.Eseguiremoè il nostro esempio sunecessario un personal computer avente linux comecon sistema operativo edlinux il toole ettercap installato.
 
Sia:
Poniamo che:
 
host1 = pippo con ip 192.168.1.9 sia l’attaccante
 
host2 = topolino con ip 192.168.1.5 sia la vittima
 
topolino vuole collegarsi al sito www.microsoft.com (utilizzeremo la configurazione di default di 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.microsoft.com direttamente su www.linux.com, ovviamente per far funzionare il tutto dobbiamo configurare il reindirizzamento nel seguente modo(cosa già fatta come esempio all’interno del file) :
pippo: nano /usr/share/ettercap/etter.dns
 
pippo: nano /usr/share/ettercap/etter.dns
 
[[File:Etter.JPG|center|thumb|]]
 
In questo modo vengono reindirizzate tutte le connessioni di microsoft su linux. Nel caso in cui vorremmosi vuole reindirizzare un generico sito su un altro indirizzo basta aprire il file etter.dns con nano (nano /usr/share/ettercap/etter.dns) o con qualsiasi altro editor di testo, ed analizzarneanalizzare la prima parte del file che si presenta nel seguente modo:
in questo modo abbiamo reindirizzato tutte le connessioni di microsoft su linux.
Nel caso in cui vorremmo reindirizzare un generico sito su un altro indirizzo basta aprire il file etter.dns con nano (nano /usr/share/ettercap/etter.dns) o con qualsiasi altro editor di testo,ed analizzarne la prima parte del file che si presenta nel seguente modo:
 
[[File:Structs.JPG|center|thumb|none]]
 
inIn questa prima parte del file spiega come devono essere strutturate le query, per cui se volessimosi vogliono reindirizzare più siti basteràbasta aggiungere al file più strutture identiche a quelle dell’esempio, dove al posto di microsoft inseriamo il sito che si vuole reindirizzare e al posto dell’indirizzo ip di linux utilizamo l’indirizzo ip di dove si vuol reindirizzare la query.Va ricordato che bisogna anche cambiare la reverse query (PTR).
 
===Tools applicativi===
 
Esistono vari tools applicativi per svolgere questa tipologia d’attacchi tra i più conosciuti vi sono:
 
#Ettercap
Riga 165 ⟶ 153:
Ettercap:
 
E’ uno sniffer evoluto, sviluppato da 2due programmatori italiani che permette di sniffare tutto il traffico presente in rete anche in presenza di swich. Inoltre offre una serie di funzioni che lo rendono un software molto valido.Tra queste funzioni abbiamo:
 
*SSH 1 e HTTPS password sniffing;
Riga 175 ⟶ 163:
Dsniff:
 
E’ un pacchetto di tool un po’ obsoleto ma tutt’oratuttora interessante per le varie possibilità offerte per dedite allolo sniffing, nel pacchetto sono inclusi: dsniff (uno sniffer di password), arpspoof (un tool per ARP poisoning), dnsspoof (un tool per il DNS spoofing), msgsnarf (tool che cattura e visualizza i messaggi tra clients IM), mailsnarf (tool dedito a violare la privacy altrui, infatti cattura e visualizza i messaggi email), tcpkill (tool che termina le connessioni tcp nella rete locale), tcpnice (applicazione che obbliga le altre connessioni a ridurre il consumo di banda delle proprie connessioni) ed infine webspy (software davvero interessante che cattura e visualizza in real time la navigazione web della vittima).
 
Zodiac:
 
Zodiac è un programma molto utile che analizza il protocollo DnsDNS. Permette di osservare il traffico su rete, infatti analizza come sono assemblati e disassemblati i pacchetti. Il software offre degli strumenti per chi non è esperto del settore per:
 
E’ davvero utile nell’osservare il traffico su rete,infatti guarda come sono assemblati e “disassemblare” i pacchetti;il software offre delle tool per chi non è esperto del settore per vedere come funziona il protocollo Dns e come poter fare dello spoofing senza dover scrivere delle routine di modifica per i pacchetti o filtri per pacchetti,questo è il suo vero punto di forza.Le sue funzionalità sono le seguenti:
*vedere come funziona il protocollo DNS
*fare dello spoofing senza dover scrivere delle routine di modifica o filtri per pacchetti
 
Le sue funzionalità sono le seguenti:
*Sniffare qualsiasi tipo di dispositivo configurato (Ethernet, PPP, ecc..)
*Catturare e decodificare quasi tutti I tipi di pacchetti DNS, inclusi i pacchetti decompressi
*Interfaccia testuale con comandi interattivi e finestre multiple
*la struttura a threaded permette più flessibilità quando si aggiungono nuove funzionalità
*il codice è pulito commentato e testato benissimo, ciò ne semplifica l’estensione
*il sistema che filtra I i pacchetti Dns, permette l’installazione di pseudo filtri Dns selezionabili da una vasta gamma di primitive di costruzione di pacchetti DNS
*visuallizzarevisualizzare la versione del DNS name server utilizzando richieste di tipo BIND
*“spufferare” il DNS, rispondendo alle query DNS su rete LAN prima del Name Server remoto
*“spufferare” il DnsDNS, conrispondendo jizz,sfruttandoalle query leDNS debolezzesu inrete vecchieLAN versioniprima del diName BIND.Server remoto
*DNS“spufferare” IDil spoofing,Dns con jizz,sfruttando le debolezze delin protocollovecchie versioni DNS.di BIND.
*DNS ID spoofing, sfruttando le debolezze del protocollo DNS.
 
==Voci correlate==