Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
it
«Back|Track-[IT]
www.backtrack.it
lynx51@hotmail.it
brigante@backtrack.it
crossbower@backtrack.it
Wireshark
Questo documento descrive in linea teorica e pratica l' uso di quello che oggi è l'
analizzatore di traffico di rete più potente sul mercato: Wireshark.
Il documento è il frutto della collaborazione degli autori citati in copertina, contiene un'
introduzione generale a Wireshark, le sue caratteristiche principali con le opzioni e
configurazioni che più caratterizzano e rendono unico Wireshark e dei cenni al modello
OSI/ISO. Nella seconda parte invece verranno descritti degli esempi pratici, dapprima con la
descrizione di un Arp-Spoof “manuale” con cenni al protocollo ARP, l' uso del filtro in Wireshark
per tale protocollo e si assumerà e descriverà la visione di un video creato proprio per questo
scopo, inoltre verranno spiegati esempi di utilizzo di Wireshark su protocolli wireless e
bluetooth, cercando di coprire quindi alcune delle tante potenzialità che Wireshark mette a
disposizione al mondo del penetration-testing.
Introduzione
Perchè è così importante? La risposta è molto semplice: imparare ad usare uno sniffer è
sicuramente una delle più importanti nozioni che un esperto di sicurezza deve avere.
• è open source.
• ha un'interfaccia grafica molto intuitiva.
• offre molti filtri precostituiti e funzioni utili.
• multi-piattaforma.
• Lavora su varie interfacce selezionabili secondo la piattaforma in uso con opzione per la
cattura del traffico su tutte le interfacce disponibili contemporaneamente.
• dà all' utente la possibilità di creare filtri personalizzati.
-2-
I dati possono essere acquisiti dal vivo su interfacce Ethernet, FDDI, PPP, Token Ring,
IEEE, IP classico su ATM, e interfacce di loopback, (supportate secondo il tipo di
piattaforma).
***
Prima di vedere da vicino Wireshark e il suo utilizzo, pensiamo fosse opportuno riprendere
alcuni concetti di reti/protocolli e nozioni fondamentali per una lettura ottimale del documento
***
Il modello OSI ha una natura di tipo stack, quindi presenta più layers (strati), per la
precisione è formato da 7 layers, descritti nell'immagine seguente.
***
***
Partendo dal basso incontriamo il layer 1, continuando man mano fino ad arrivare al settimo.
Ad ogni layer avviene una comunicazione tra gli host interessati attraverso un determinato
protocollo. Quindi, se abbiamo un host A e un host B, il livello n dell'host A potrà scambiare
informazioni solo con il livello n dell'host B, usando di conseguenza lo stesso protocollo ed
evitando di comunicare con livelli diversi.
In questo modo ogni livello si occupa soltanto di operare secondo le sue direttive e passare il
pacchetto dati ai livelli successivi, che a loro volta lo elaboreranno in maniera diversa.
Facciamo un po’ di chiarezza: questo sistema può essere visto come la spedizione della posta;
inizialmente la lettera viene scritta da una certa persona, la quale la immette in una busta
pronta per essere spedita.
-3-
Aquesto punto lui ha terminato il suo compito, sta al postino prendere la busta e trasportarla
altrove, per poi arrivare nel luogo di destinazione. Il mittente della lettera non si preoccupa più
degli step successivi, a lui è bastato inserire le informazioni da lui elaborate (destinatario,
luogo, ...).
Analogamente a quanto avviene in una situazione del genere, anche nel modello di
comunicazione sopra esaminato avviene un processo di incapsulamento simile. Ogni livello
infatti dopo aver lavorato i dati pone delle informazioni che rendendono possibile l’ulteriore
elaborazione del livello successivo. I dati che viaggiano in una rete vengono suddivisi e
chiamati in gergo pacchetti.
Ogni pacchetto ha una struttura diversa in base al protocollo di rete utilizzato, ma
genericamente si può affermare che ci sono sempre tre parti principali in quasi tutti i pacchetti:
Header
Corpo dati
Checksum
• Il corpo dati contiene per l’appunto i dati che vengono effettivamente trasmessi
Nonostante si sia fatto questo uso generico della parola pacchetto per indicare tutti i tipi di dati
trasmessi, è bene sottolineare che per il livello di collegamento dati (data link layer) si
preferisce il termine frame al termine pacchetto. Adesso è arrivato il momento di esaminare
un po’ più nel dettaglio ogni layer o livello del modello OSI/ISO,partendo dal basso:
• Livello fisico: è il livello più basso, in realtà è il livello in cui avviene l’effettivo transito
dei dati sottoforma di bit nei cavi o nel mezzo trasmissivo in uso.
• Livello di rete: in questo livello opera il protocollo IP e ICMP. E’ usato per trasmettere i
pacchetti.
• Livello di trasporto: una volta che i pacchetti sono trasmessi, il trasporto avviene in
questo livello da un protocollo come TCP o UDP. Non è compito di questo documento
esaminare le differenze tra i due, sostianzialemente a titolo informativo possiamo dire
che TCP offre un sistema più sicuro di trasporto a discapito di un “maggiore consumo” di
risorse, mentre UDP presenta un corpo più snello ma meno sicuro e affidabile. Ognuno
dei due ha usi diversi in base al funzionamento di un determinato sistema di rete.
-4-
La Cattura
Per avviare Wireshark basta lanciare il programma dalla sezione:
***
Per iniziare a catturare bisognerà selezionare la propria interfaccia di rete e gestirne
successivamente le opzioni, quindi basta cliccare sulla prima icona a sinistra della toolbar in
alto. Verrà mostrata la GUI seguente (in alternativa cliccare sulla voce “Capture” del Menu
in alto, e poi “Interfaces”):
-5-
Come è possibile vedere, Wireshark ha cattuato tutto ciò che il mio sistema e quello del
sito a cui mi sono connesso,(google.it), con un browser si sono scambiati.Per ogni
protocollo Wireshark assegna un colore diverso nella visualizzazione, ciò facilità la
comprensione. Ogni riga corrisponde ad un pacchetto. Cerchiamo di analizzare le prime
righe, in quanto quello che avviene non si svolge effettivamente tra il client e il server,
bensì all’interno della sottorete stessa.
• Riga 1: Il dispositivo ethernet del sistema chiedente, inviata a tutta la rete LAN,
(broadcast), a chi appartiene l’indirizzo IP 192.168.1.1 (quello del router/gateway).
La richiesta avviene attraverso il protocollo ARP.
• Riga 2: Il router risponde, con lo stesso protocollo, però inviando la risposta solo al
chiedente, dicendo: 192.168.1.1 è dell’indirizzo MAC …
• Riga 3: Il dispositivo ethernet del sistema chiedente, invia una query DNS al server
DNS, sapendo che ormai si tratta di 192.168.1.1, chiedendo a quale indirizzo
appartiene l’hostname www.google.it
• Riga 4 e 5: Il router chiede a quale MAC corrisponde l’IP 192.168.1.33, ovvere l’IP
che gli ha chiesto la query DNS. Il client risponde dicendo l’IP apparteiene al MAC…
• Riga 6: A questo punto, conoscendo il router il MAC dell’IP che gli ha fornito la
richiesta, effettua una risposta, fornendogli l’IP dell’hostname chiesto dal client.
• Riga 7/8/9: Avviene una handshale TCP per stabilire una connessione (TCP/IP per
l’appunto) con il server web.
-6-
• Riga 10: Il dispositivo del client chiede al server la dir / attraverso un comando GET
del protocollo HTTP. In questo caso il browser pescherà la pagina index.htm o la
pagina di default del sito qual’ora ce né fosse una.
• Rige successive: avviene l’invio dei file del sito da parte del server web…
Nonostante questa sia una ricostruzione semplice di quanto è avvenuto, ciò può rendere l’idea
di come sia utile e preciso uno strumento come Wireshark.
I CaptureFilters in Wireshark
Iniziando l’analisi di un flusso di rete qualsiasi attraverso Wireshark, in special modo se in
modalità promiscua, i pacchetti analizzati dal software e mostrati a video saranno
numerosissimi e soprattutto appartenenti a diversi protocolli.
Molto spesso però, c’è la necessità di studiare un particolare protocollo o solo dei particolari di
una rete, evitando di catturare anche pacchetti “spazzatura” che per il nostro scopo non hanno
nessuna rilevanza, e quindi non costituiscono nessuna informazione utile. In aiuto a tutto ciò ci
vengono incontro i CaptureFilters; attraverso il linguaggio di filtraggio della libreria libpcap
infatti, è possibile scrivere dei particolari “script” che fungono da filtri, consentendo di catturare
solo determinate parte del traffico di rete.
La selezione può avvenire per esempio analizzando solo traffico di un determinato protocollo, o
ancora solo il traffico da/verso un determinato host. Wireshark mette a disposizione una
finestra apposita per la gestione dei CaptureFilters, essa può essere raggiunta in diversi modi,
vediamone uno:
***
-7-
Quando clicchiamo sul pulsante in alto a sinistra della finestra principale per configurare un'
interfaccia, per poi in seguito clickare su Options, ci troviamo di fronte alla GUI mostrata
sopra, che ci espone alcune opzioni per la cattura che andremo ad iniziare.
Nella finestra dei filtri, ne troverete tanti predefiniti, ma proviamo a realizzarne uno semplice
da zero: nella textbox del filtro della finestra rappresentata in figura, provate ad inserire il
testo: “arp” senza apici, e premete start. Inizierà il filtraggio, e se avete più computer collegati
nella vostra rete locale vedrete ad ogni arco di tempo relativamente piccolo (minuti) filtrare dei
pacchetti riguardanti il protocollo ARP. Ecco un esempio:
***
***
I più attenti avranno notato che le richieste ARP provengono da due differenti host:
192.168.1.33 e 192.168.1.35.
-8-
Questo esempio può essere utilizzato per catturare I pacchetti che hanno come sorgente quel
determinato host, in questo caso: 192.168.1.33
La modalità promiscua
Come avete notato nell’immagine del paragrafo superiore, ho evidenziato una voce: “Modalità
promiscua”. Questa modalità, impostata quasi sempre automaticamente dai software di
cattura, (e modificabile manualmente), rende possibile al software di cattuare i dati che
viaggiano in tutta la rete, (purchè sia una rete non commutata), a cui fa parte il dispositivo di
rete, (solitamente la rete LAN).
***
***
Come possiamo vedere l’area è divisa in due parti: la prima è una sorta di treeview dove si
possono espandere i vari layers e vedere per ognuno i dettagli di quel pacchetto specifico. Un
esempio è la prima voce Frame, poi Ethernet, poi Internet Protocol, Trasmission Control
Protocol, ognuna riferendosi a un diverso tipo di protocollo, ma facenti tutti parte chiaramente
dello stesso pacchetto. La seconda parte è quella dedicata al dump dei dati, ovvero dall’analisi
e alla loro visualizzazione sottoforma esadecimale “Hex” e il corrispondente codice ASCII.
-9-
I display filters
Delle volte, quando si sono catturati troppi pacchetti, vi è la necessità di guardare soltanto
pacchetti di un determinato protocollo o in base ad un certo criterio. Ciò è possibile attraverso i
filtri di visualizzazione.
Durante o dopo aver fatto una cattura, digitare una stringa di filtro nella cella evidenziata, e
premere Invio. Per esempio, scrivete arp e applicate il filtro. Se nella vostra lista di catture c’è
un qualche pacchetto arp verrà visualizzato e tutti gli altri nascosti. Questa funzione è molto
comoda per individuare solo particolari dati, tra tanti catturati.
I ColorsRules
A titolo informativo, dal menu View → ColorsRules è possibile
visualizzare/modificare/importare nuovi schemi di colori. Quando si cattura, infatti, i vari
pacchetti spesso vengono visualizzati con colori differenti. Per esempio tutti i pacchetti TCP
sono differenti da quelli DNS o UDP. Questo permette una migliore lettura.
ˮIn recent time, Wireshark was often mentioned in security bulletins about having several security related
bugs fixed. This is caused by code reviews of individuals and interested parties and by the effort of the
Wireshark team to automatically find bugs. It is expected that this will continue - at least in the near future.
While there is currently no known exploit out there to attack Wireshark, this may change one day ...
Because of this, special care should be taken to avoid security related problems while running Wireshark or
at least to reduce the possible impact.
Whether this is a problem for yourself will depend on the situation: A small SoHo network will probably be
less critical compared to a company's 24/7 mission critical web server, capturing data from an internal
network is probably more secure than capturing internet traffic, ...
It's not the intention of this page to discuss the opinion of certain persons that the usage of Wireshark itself is
"insecure", because you can see network data like transported passwords. BTW: Security through obscurity
just doesn't work. ˮ Dalla documentazione ufficiale
-10-
• Chiudere tutte le applicazioni possibili nel sistema (quantomeno quello che usano
la rete e che sono ritenute meno utili), in modo da ridurre il sovraccarico.
• Usare se possibile, un tool diverso per cattuare il traffico (i.e. tcpdump), per poi
analizzarlo successivamente
Eccoci ora arrivati alla seconda parte del documento, a fare quindi una descrizione di quella che
è l' analisi dettagliata dei frames che Wireshark ci mette a disposizione con la sua cattura e a
descrivere il video creato in combinazione con questo paper.
Scopo del video è quello di “far credere” alla VITTIMA del caso, che l' host ATTACKER abbia lo
stesso MAC-Address del GATEWAY, procedimento che prende il nome di “ARP-Spoof”.
Il video mostra come manipolare i frames di Wireshark con l' ausilio di altri strumenti i quali
sono Hexedit e File2Cable, entrambe presenti di default nella nostra distribuzione.
Seguendo il video...
1. Hexedit – usato per l' editing del testo esadecimale precedentemente catturato
-11-
prendendo l' esempio pratico di 2 dei 4 PC indicati nell' immagine, lo SCENARIO iniziale è il seguente:
Avviando Wireshark viene selezionata l' interfaccia Ethernet, (la eth0), con opzioni di filtering
per la cattura del traffico ARP, quindi il filtro Ethernet 0x0806 ARP, filtro che nasce già
precostituito in Wireshark.
Tramite questo filtro con qualsiasi host noi saremo in comunicazione, l' unico traffico che
Wireshark ci restituirà sarà il traffico ARP, selezionato in questo caso per fare l' esempio dell
Arp-Spoofing.
Una volta avviata la cattura del traffico con lo Start, viene creato del traffico pingando
www.google.it, dopo non molto ci verranno restituiti I primi dati catturati da Wireshark,
andiamo subito a farne una breve analisi con l' ausilio di qualche immagine.
***
-12-
L'immagine sopra ci mostra quella che è l' interrogazione che avviene tra l' host che avvia il
ping verso www.google.it e il gateway/firewall che si trova a monte della LAN che stiamo
trattando.
L' interrogazione avviene precisamente nella maniera che l' immagine indica, ovvero con i Who
As e Tell che ci sono durante la comunicazione tra il GATEWAY e l' ATTACKER,(vedere pag.6),
indicando ovviamente oltre all' indirizzo IP dei sistemi anche il rispettivo MAC address,
elencato per questo all' interno della tabella dello SCENARIO.
Per avere tutti i dati che servono per effettuare un Arp-Spoofing abbiamo ottenuto il MAC
della VITTIMA pingandola e successivamente controllando i dati nella nostra arp-cache.
Tornando all' interfaccia di Wireshark possiamo vedere che tenendo selezionata la prima riga,
(1° riquadro) , quella dell' interrogazione tra il GATEWAY e il nostro host ATTACKER, abbiamo
tutti i riferimenti dettagliati della comunicazione nel riquadro centrale,che ci mostra tramite
una treeview i dati del protocollo, opcode,l'hardware e il Sender / Target con in basso i
dettagli di tutto il frame,(o sezioni di frame secondo la selezione nel riquadro centrale),
corrispondente, che contengono di conseguenza tutti i dati in HEX – esadecimale – della nostra
comunicazione ARP, nello specifico nell' immagine sotto possiamo vedere che selezionando il
Sender MAC/IP o il Target MAC/IP nel riquadro centrale otteniamo l' evidenziazione dei dati
in Hex nel riquadro in basso, dove sono perfettamente riconoscibili sia i MAC address che gli
indirizzi IP della comunicazione.
***
***
Infatti, come riconoscibile anche dal video, ad ogni click sull' intestazione del riquadro centrale
vediamo oltre ai MAC contenuti, e facilmente ricoscibili, anche gli indirizzi IP sempre in hex,
con il corrispondente codice ASCII, basterebbe in caso di insicurezza, prendere una calcolatrice
scentifica e vedere le rispettive corrispondenze in decimale/esadecimale dei vari IP.
-13-
***
Bene, una volta inquadrato lo SCENARIO completo della nostra LAN, passiamo a salvare l'
intero frame datoci da Wireshark nella nostra /root dal nome arpv senza apporre nessuna
estensione al file, poi passiamo ad aprire il file con HexEdit, dando il comando:
***
Possiamo vedere che HexEdit è di semplice interpretazione, è un editor di testi per files
binari/esadecimali e quindi ideale per l' editing di frames catturati con Wireshark.
All' interno del testo sono facilmente riconoscibili gli stessi frames che abbiamo analizzato
precedentemente, che si trovavano in Wireshark visibili all' interno del riquadro inferiore,
(dump).
Avendo in mano, (vedere lo SCENARIO completo per una lettura ottimale), tutti i dati a nostra
disposizione per effettuare un Arp-Spoofing, andiamo a “cambiare” i dati contenuti all' interno
del frame.
-14-
Il primo cambiamento che dovremmo effettuare all' interno del frame è l' inserimento del
MAC della VITTIMA al posto di quello dell' ATTACKER, quindi successivamente il frame avrà l'
aspetto che vediamo nell' immagine seguente:
***
***
Questa l' immagine dopo il primo cambiamento all' interno del frame. Il secondo comporterà la
sostituzione del MAC del GATEWAY con il MAC dell' ATTACKER, ed ecco quindi anche l'
immagine del frame dopo il secondo cambiamento...
***
-15-
***
Ora bisogna effettuare i cambiamenti: dapprima nel MAC del GATEWAY, da sostituire con
quello dell ATTACKER e poi quello della VITTIMA al posto dell' ATTACKER, per fare in modo che
l' ARP-cache della VITTIMA legga il nostro MAC, (ATTACKER),uguale a quello del GATEWAY, ed
ecco l' immagine degli ultimi due cambiamenti a livello MAC-Address:
***
***
***
-16-
Per effettuare un Arp-Spoof siamo già a buon punto, ma non alla fine, questo perché, (come
già descritto precedentemente), dobbiamo effettuare l' ultimo cambiamento, ovvero: la
sostituzione della sezione di frame rappresentante l' idirizzo IP del ATTACKER con quella della
VITTIMA, sostuiremo quindi il c0 a8 01 65 [192.168.1.101] con c0 a8 01 64
[192.168.1.100].
***
***
Durante la visualizzazione del video viene mostrato il prompt dei comandi del sistema della
VITTIMA, in particolare l' ARP-Cache:
***
***
Ma torniamo al nostro sistema, con BackTrack, e salviamo il frame così come visto l' ultima
volta con il nome arpvictim, per immetterlo successivamente sull' interfaccia che ci interessa,
eth0, con l' ausilio di File2Cable, ideale per il nostro scopo.
***
L' immagine sotto mostra dapprima l' “usage”, (comando e opzioni da passare a riga di
comando), che deve essere adottato per l' utilizzo di File2Cable, poi mostra il lancio di 2
pacchetti contenenti il nostro frame modificato sull' interfaccia Ethernet eth0:
-17-
***
***
Dopo aver specificato le opzioni, immetteremo due volte sulla nostra eth0 il frame con
File2Cable, ed ecco quindi l' immagine dell' ARP-Cache del sistema VITTIMA con il risultato
ottenuto:
***
***
Come possiamo vedere dall' immagine l' ARP-Cache del sistema VITTIMA contiene due indirizzi
IP, rispettivamente del GATEWAY e dell' ATTACKER, entrambe però con lo stesso MAC-Address,
frutto del nostro spoofing manuale.
-18-
Dopo aver introdotto e specificato le opzioni di Wireshark all' inizio del documento, dopo aver
fatto un profondo riferimento con tanto di video ed esempio di Arp-Spoofing tramite la
manipolazione dei frames catturati con Wireshark, eccoci ora arrivati alla parte del documento
che vede al lavoo Wireshark su un altro protocollo, il Wireless.
Sebbene necessiti di qualche passaggio in piu' rispetto allo sniffing su reti ethernet, lo sniffing
delle reti wireless é piuttosto semplice da effettuare. Ancora una volta BackTrack ci semplifica
il compito, mettendoci a disposizione tutti i tools di cui abbiamo bisogno.
***
***
Cosi, facendo abbiamo a l'interfaccia virtuale mon0 che possiamo aprire da wireshark:
***
-19-
Questi sono pacchetti inviati da un access point cisco. Possiamo vedere una gran quantità di
beacon frames, pacchetti usati per annunciare il punto d'ingresso per una rete wifi e le
caratteristiche della rete. Se Osserviamo meglio possiamo individuare il metodo di cifratura
della rete:
-20-
Penso che anche voi abbiate capito che é una rete protetta con WPA. Infatti come cifrario a
blocchi é usato AES, e come chiave una passphase condivisa (PSK).
Con la diffusione capillare dei cellulari/palmari, oggi é molto difficile non incontrare questi
dispositivi durante il giorno. E probabilmente una buona parte di essi avra' il bluetooth attivo.
É un protocollo usato in moltissimi modi: per trasmettere file, per collegare tra loro vari
dispositivi (auricolari, mouse, telecomandi), e per navigare in internet. Sapevate che
wireshark puo' aiutarci anche in questo caso?
Per catturare dati bluetooth grezzi abbiamo di un tool esterno a wireshark, hcidump (anche
questo fornito naturalmente con BackTrack). Possiamo eseguire un dump delle comunicazioni
lanciando hcidump e dicendogli di salvare I dati raw in un file, con l'opzione --save-dump.
Vediamo:
Per fermare lo sniffing bloccate hcidump con un CTRL-C. Ora dovremmo avere a disposizione
un file, che wireshark sara' felice di parsare per noi:
Potete vedere un analisi di una scansione inquire per la ricerca di dispositivi bluetooth.
Ricordate che in questo modo potete ottenere tutti I dati (sms, files, ecc...) che passano in
chiaro su un canale bluetooth. Da usare in luoghi molto affollati...
-21-
Grafici Input/Output
Una delle features piu' divertenti di wireshark é la possibilità di visualizzare grafici dei dati
raccolti. Attraverso I grafici é possibile correlare gli eventi della rete ed evidenziare I momenti
di traffico piu' intensi, il tutto in modo piacevole alla vista.
Per utilizzare i Grafici basta andare nel menu' Statistiche → Grafici I/O e si aprirà una
finestrella come la seguente:
Qui possiamo utilizzare le conoscenze che abbiamo aquisito sui filtri di wireshark per
disegnare graficamente I pacchetti che ci interessano. Nella finestra sopra, si é evidenziata la
componente di traffico HTTP (linea rossa), sul totale del traffico (linea nera). Per I grafici é
possibile utilizzare molti stili diversi e variare tempo e frequenza dei pacchetti disegnati.
Grafici di flusso
Un'altro tipo di analisi é il grafico di flusso, molto istruttivo per comprendere il
funzionamento dei protocolli, e in particolare il TCP. Per utilizzare I grafici di flusso cliccate
sul menu' Statistiche → Grafici di flusso, selezionate la modalita' (noi utilizzeremo l'analisi
del TCP) e verrà generato un flusso di questo tipo:
-22-
Wireshark
www.wireshark.org
in BackTrack:
File2Cable
http://phenoelit-us.org/irpas/docu.html#file2cable
in BackTrack:
~file2cable
HexEdit
http://www.hexedit.com/
in BackTrack:
~hexedit
-23-
www.backtrack.it
***
Questo documento è da ritenersi esclusivamente per scopi informativi / didattici, gli autori del
documento e coloro che lo ospitano sul proprio spazio non sono responsabili delle azioni
commesse da terze parti
***
(c) 2009 Lynx51 - brigante & crossbower for backtrack.it published under GNU / GPL-v3