Analisi del traffico wireless con wireshark

In questa guida verrà illustrato come effettuare un'analisi del traffico wifi utilizzando uno dei più famosi analizzatori di protocollo: WIRESHARK
Verrano discussi molto sinteticamente i principi teorici su cui si basa l'analizzatore per classificare i frames in funzione dei protocolli e degli incapsulamenti. Inoltre, verranno portati alcuni esempi su come utilizzare i filtri per scovare dati di login o osservare una conversazione messenger.

INTENDIAMO RICORDARE CHE ENTRARE IN UNA RETE WiFi PROTETTA E' UN REATO PRESEGUIBILE A TERMINI DI LEGGE, RAGION PER CUI QUESTA GUIDA E' DA RIFERIRSI A UNA PROVA SULLA PROPRIA RETE.
AL FINE DI GIUDICARNE LA SICUREZZA. WIFI-ITA.COM E GLI AMMINISTRATORI NON POTRANNO ESSERE RITENUTI RESPONSABILI DI EVENTUALI VIOLAZIONI EFFETTUANDO UN USO ERRATO DI QUESTA GUIDA.
Vedere la NORMATIVA sul Wireless.

Cos'è Wireshark?

Wireshark è un software open source disponibile per piattaforme come win e linux appartenente alla classe degli sniffer.
Le informazioni trasmesse sulla rete sono composte da unità, frammenti della comunicazione stessa, chiamati pacchetti. Ogni pacchetto della comunicazione ha delle informazioni aggiuntive rispetto al carico delle informazioni che trasporta (payload) comprendenti gli indirizzi di destinazione del computer mittente e destinatario più altre informazioni di formattazione (header e trailer).
Questo strumento è in grado di effettuare un'analisi approfondita sui frames che viaggiano nell'etere decodificandoli e dissezionandoli, mostrando il traffico in maniera leggibile e compresibile all'operatore.
Wieshark è indispensabile per chi vuole capire come funziona una rete. Esempio; si possono di individuare applicazioni insicure che inviano dati di log in chiaro o capire quali processi appesantiscano la rete.
come prima cosa wireshark durante una scansione raccoglie i dati in linguaggio binario, per poi convertirli, in una seconda fase, in linguaggio conprensibile. Inifine, nella terza fase, analizza i pacchetti classificandoli per protcollo di trasporto o di applicazione.
Per fare in modo che il nostro sniffer funzioni in maniera corretta, bisognerà impostare la nostra periferica di rete in modalità monitor. tale modalità renderà possibile intercettare anche il traffico diretto alle altre periferiche di rete. Oltre a questo, quando si attiva la modalità di cattura, i pacchetti catturati non seguiranno il normale percorso attraverso la pila ISO/OSI ma verranno direttamente inviati al software per essere analizzati. Ogni protocollo della pila ISO/OSI infatti rimuoverebbe informazioni, fondamentali all’analizzatore di protocollo per ottenere un’impronta completa del pacchetto.

www.WiFi-Ita.com

Pila ISO/OSI

In questa guida verranno proposte 2 possibili soluzioni per catturare il traffico di una rete:

A) sniffare i pacchetti con airodump-ng ed analisi con wireshark
B) cattura ed analisi live con airtun-ng e wireshark

Scegliete il metodo opportuno in base alle vostre esigenze per poi passare all’analisi del traffico con wireshark.

A) Sniffare i pacchetti con airodump-ng ed analisi con wireshark:

Nei test effettuati è stato usato come sistema operativo BT3 per sniffare il traffico, mentre l’analisi dei pacchetti è stata effettuata utilizzando Wireshark su windows per agevolare la realizzazione della guida. Le due verisioni su linux e win di wireshark sono identiche quindi non noterete nessuna differenza!

1) Sniff con Airodump-ng:
Facciamo una scansione degli Access Point in zona con il comando

Codice:
airodum-ng <interfaccia


Successivamente selezioniamo il nostro Access Point da monitorare chiudendo airodump-ng con Ctrl+C e digitiamo:

Codice:
airodump-ng -c <canale> --bssid <mac Access Point> -w <nome_file> <interfaccia>


ok. lasciamo sniffare per quanto tempo vogliate!
Consiglio di non superare le 2 ore di sniff per evitare di avere un file troppo grosso da gestire.

2) Decript con airdecap-ng:

fatto ciò dobbiamo decriptare i dati qualora la rete sia cifrata con chiave wep o wpa. In ogni caso per proseguire bisogna conoscere la chiave di rete.

Se la rete è open nessun problema e possiamo saltare questo punto e caricheremo direttamente il file <nome_file-01.cap> su Wireshark.

Nel caso in cui la chiave sia WEP basterà dare il comnando
:

Codice:
airdecap-ng -l -b <mac Access Point> -w <chiave_WEP> <nome_file-01.cap>


Per chiavi WPA il discorso è un po più complicato in quanto non basterà conoscere solo la chiave. Infatti bisognerà ottenere, durante lo sniffing, l'handshake che verra correlato alla chiave per decriptare i pacchetti. Si può essere certi durante lo sniffing di aver catturato un handshake osservando la shell dove è stato lanciato airodump-ng. Eseguire un attacco deauth per velocizzare le operazioni (per maggiori delucidazioni su quesi passaggi consultare la guida WPA crak).
Airdecap decripterà solamente i pacchetti che riuscirà a correlare all’handshake quindi è probabile che alcuni pacchetti andranno persi!

Fatto ciò possiamo eseguire il decript utilizzando airdecap:

Codice:
airdecap-ng -l -e <ssid Access Point> -p <chiave_WPA> <nome_file.cap>


Sia nel caso di codifica wep che wpa airdecap ci restituirà 1 file del tipo nome_file-01-dec.cap contenente tutte le informazioni decriptate.

Adesso passiamo all’analisi con Wireshark

B) cattura ed analisi live con airtun-ng e wireshark

Con questo metodo effettueremo una cattura ed un’analisi dei pacchetti in tempo reale!
Utilizzando airtun-ng creeremo un’iterfaccia virtuale che sarà in ascolto con l’Access Point che vogliamo monitorare decriptando le trasmissioni codificate in WEP! Putroppo airtun-ng non supporta la decodifica delle trasmissioni WPA. Quindi in questo caso l’unico metodo per decriptare i frames catturati e quello di usare il primo metodo con airdecap e airodump.
Come sistema operativo ho usato BT3 final ed eeepc come macchina il quale monta un chipset Atheros AR5007.

1) mettere in monitor mode la sheda:

Codice:
airmon-ng start <interfaccia>


2) eseguire la scansione con airodump-ng:

Digitate

Codice:
airodump-ng <interfaccia>

e segnativi il mac ed il canale dell’Access Point che volete monitorare.

3) settate il canale di ascolto della periferica wifi:

Codice:
iwconfig <interfaccia> channel  <canale_ap>


4) creare interfaccia virtuale:

Codice:
modprobe tun

airtun-ng  –a <mac_AP> -w <chiave_wep_AP> <interfaccia>


Il sistema risponderà:

created tap interface at0
WEP encryption specified. Sending and receiving frames through ath0.
FromDS bit set in all frames.

Nota: Se la rete non è protetta da chiave di rete, non si deve inserire l’opzione –w <chiave_wep_AP>.

Lasciate aperta questa shell ed apritene un’altra che servirà ad attivare l’interfaccia virtuale digitando:

Codice:
ifconfig at0 up


5) interfacciare wireshark alla periferica virtuale at0:

Digitiamo nella stessa shell “wireshark” e si aprirà l’interfaccia grafica del programma.

Clicchiamo su option--> captured e selezioniamo la periferica at0 dopodichè premiamo start in fondo a destra.

Perfetto… siamo in ascolto. L’unica differenza con il metodo precedente è che qui i frames vengono costantemente catturati e quindi i dati vengono continuamente aggiornati.

Analisi con Wireshark:

(Per agevolare la realizzazione della guida ho salvato i file .cap e li ho analizzati sotto windows).

Passiamo ora all'analisi dei frames
apriamo una shell e digitiamo “wireshark”
si aprirà l'interfaccia grafica del programma

clicciamo su file-->open e carichiamo il nostro file nome_file-01-dec.cap

vedremo apparire tutti i frames catturati con le relative informazioni.

www.WiFi-Ita.com

Si possono vedere in figura le informazioni che wireshark è in grado di fornire riguardo ai pacchetti catturati dove si distinguono: tempo trascorso dall’avvio alla cattura; ip sorgente e ip destinazione ( che ho mascherato per evitare problemi); protocollo dei frames; informazioni sui pacchetti.

come prima cosa è molto importante imparare ad utilizzare i filtri per cercare quello che ci interessa... i filtri sono molto efficaci se utilizzati assieme ad operatori che ci consentono di selezionare i frames a cui siamo interessati in funzione del protocollo, della sorgente, della destinazione, delle porte e tanto altro.

I Filtri

In wireshark è presente una barra (evidenziata in rosso in figura in basso) dove è possibile inserire espressioni che consentono di filtrare il traffico catturato in funzione dei protocolli dei pacchetti delle porte in cui viaggiano, sui mac o sugli indirizzi IP di destinazione o sorgente.
Attraverso l’uso degli Operatori siamo in grado di costruire espressioni molto efficaci nell’analisi dei pacchetti.

www.WiFi-Ita.com

Ecco alcuni esempi di operatori:

Codice:
==      ( eq )
!=         ( ne )
And      ( && )
Or        ( || )
Not       ( ! )
<          ( lt )
>          ( gt )
>=        ( ge )
<=        ( le )
contains


Esempi di espressioni usate per filtrare il traffico:

Se nella rete sono presenti numerosi client è molto importante selezionare i frames che riguardino solamente il client da monitorare.
Per fare ciò possiamo filtrare i pacchetti o in base al mac o in base agli ip dei client.
Basta inserire nel campo dei filtri una delle righe:

a) filtraggio IP del traffico generato e destinato all’host 192.168.1.6 scriveremo:

Codice:
ip.addr == 192.168.1.6  (generato e destinato)

ip.dst == 192.168.1.6    (destinato)

ip.src == 192.168.1.6    (generato)


b) filtraggio MAC del traffico generato e destinato al client 00:xx:xx:xx:xx:xx

Codice:
Eth.addr == 00:xx:xx:xx:xx:xx

Eth.src == 00:xx:xx:xx:xx:xx

Eth.dst == 00:xx:xx:xx:xx:xx


c) filtrare i pacchetti tra 2 client o tra un client ed un indirizzo web:

Codice:
ip.addr == 192.168.1.6 and ip.addr == 192.168.1.9


L’operatore “and” fa si che vengano soddisfate entrambe le condizioni contemporaneamente.
Se avremo usato l’operatore “or” avremo visualizzato tutto il traffico ricevuto ed inviato da entrambi gli indirizzi ip a qualsiasi altro host:

Codice:
ip.addr == 192.168.1.6  or ip.addr == 192.168.1


con l’espressione seguente visualizzeremo solo il traffico ricevuto da 192.168.1.6 inviato dall’host 192.168.1.9:

Codice:
ip.dst == 192.168.1.6  and ip.src == 192.168.1.9


d) funzioni composte:

-Facciamo caso che vogliamo visualizzare i pacchetti TCP e UDP degli host 192.168.1.6 e 192.168.1.15… scriveremo:

Codice:
(ip.addr ==192.168.1.6 or ip.addr == 192.168.1.15) and (tcp or udp)



-altro esempio potremo filtrare i pacchetti anche in funzione della porta:

Codice:
port == 53     (filtra i pacchetti dns sulla porta 53)

tcp.port == 1863   (filtra i pacchetti tcp sulla porta 1863)

tcp.port >= 100 and tcp.port <= 1000   (filtra i pacchetti tcp nel range di porte tra 100 e 1000

udp.port == 2222   (filtra i pacchetti udp sulla porta 222


altri filtri interessanti dove portremo scovere dati di log inviati in chiaro sono:

Codice:
http.cookie

pop


In particolare il protocollo POP3 è molto utilizzato per le caselle di posta elettronica. Una tipica sessione di pop3 prevede la connessione tra cliente POP3 e server POP3 in ascolto sulla porta 110. una volta effettuata la connessione si ha l’autenticazione del client al server che prevede l’invio dei dati USER e PASSWORD. Questi dati vengono inviati in chiaro!!!
Per visualizzare i dati basterà cicliccare col tasto destro sul pacchetto pop e premere follow tcp strem.

Digitando:

Codice:
Pop and ip.addr 192.168.1.6


Visualizzeremo tutti i pacchetti pop che sono stati indirizzati o generate dal nostro host.
In questo caso filtrerà solamente i pacchetti con protocollo pop3 destinati e generati dal client 192.168.1.6

Molti sistemi di web login utilizzano certificati SSL (esempio hotmail) che non trasmettono i dati in chiaro e che quindi sono impossibili da sniffare con questo metodo. Per sniffare i dati di log-in è più indicato ettercap in quanto si basa su attacchi mitm. Attenzione che questo metodo è però più invasivo mentre wireshark è del tutto passivo!!!

le conversazioni msn sono il tipico esempio di messaggi inviati in chiaro...

Sniffare una conversazione MSN

I pacchetti msn usano un protocollo di trasporto dati TCP e come protocollo applicativo MSNMS.

I pacchetti MSNMS possono contenere diverse informazioni tra cui i messaggi spediti in chiaro.
I pacchetti MSNMS che contengono i messaggi sono di tipo msg.

Per identificarli inseriamo nella nostra barra dei filtri:

Codice:
Msnms contains msg

www.WiFi-Ita.com

“Contains” è un altro operatore che consentirà di visualizzare solo i pacchetti che contengono l’informazione testuale specificata (nel nostro caso msg).
Appariranno così tutti i messaggi dove si potranno distinguere in alcuni di essi gli indirizzi dei contatti. Adesso basta cliccare su di un pacchetto msg col tasto destro e premere l’opzione “follow tcp stream”.

www.WiFi-Ita.com

Questa operazione decifrerà tutti i dati tra cui anche i messaggi inviati in chiaro. (se non vi viene fuori niente provate con un'altro pacchetto msg).

www.WiFi-Ita.com

Come si può vedere dalla figura bisogna prestare molta attenzione a leggere le conversazioni!!! Nella figura ho effettuato una prova con il nostro caro mod Radio3 ed abbiamo accurato che il metodo funziona alla grande! Ho evidenziato i miei messaggi in rosso e quelli di Radio3 in verde. Nei pacchetti sono infine presenti anche gli indirizzi dei contatti.

Per filtrare i messaggi riguardanti il contatto di Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo. digiteremo:

Codice:
msnms contains pippoplut


Anche qui basterà cliccare su di un pacchetto msg col tasto destro e premere l’opzione “follow tcp stream”.

Ultima nota… alcune conversazioni potrebbero non essere visibili in quanto le ultime versioni di messenger live utilizzano sistemi di comunicazione criptati.

Come acquisire manualità e trovare dati di log

Infine volevo proporre un modo semplice e pratico per analizzare il traffico che transita tra il nostro Access Point e la nostra periferica di rete. Questo è molto utile perchè da un riscontro visivo delle operazioni effettuate da noi stessi in tempo reale durante una navigazione web. Possiamo monitorare cosa sta accadendo sulla nostra rete secondo per secondo per esempio verificando come vengono inviati i dati di credenziali nei vari siti web come i forum o altri servizi.

Si può usare comodamente windows ma anche linux. Le procedure sono identiche. Basta essere connessi alla propria rete.

Apriamo wireshark e clicchiamo su capture --> option e selezionare la periferica. Deselezioniamo la casella che prevede il funzionamento della periferica in modalità promiscua (vedi figura) e premiamo start.


www.WiFi-Ita.com

Per chi è alle prime armi consiglio di eseguire pochissime operazioni durante lo sniffing e stoppare l’acquisizione dei dati premendo capture stop.

Come esempio ho mostrato il pacchetto http che contengono il log al sito di wifi-ita che passano in chiaro. Per fare ciò ho premuto start, ho effettuato il log e poi ho stoppato lo sniffing.

Successivamente ho impostato il filtro inserendo:

http contains password and http contains wifi-ita

www.WiFi-Ita.com

Adesso seleziono l’unico pacchetto che appare e premo “follow tcp stream”.

www.WiFi-Ita.com

Sarei potuto essere più generico specificando solo http.cookie oppure http contains password o addirittura specificando i pacchetti in base al protocollo di trasporto con tcp contains password ma quando si hanno quantità elevate pacchetti è utile costruire espressioni che siano molto selettive.

Altri pacchetti che possono contenere credenziali in chiaro usano protocolli ftp o smtp


Si ringrazia Fabio82 per aver fornito questa ottima guida


Tags Cloud 3D

Bookmarks

Delicious Technorati Furl Yahoo_myweb Google_bmarks Windows_live Digg Newsvine MySocialBookmark Social Bookmark Script 

Supportaci





Aggiungi questo sito ai preferiti
Scegli come Homepage