L'attacco "man-in-the-middle" (a volte riportato anche come "Monkey-in-the-middle"), d'ora in poi MiTM, è quella tecnica che ci consente di "avvelenare" la ARP cache degli host presenti sul nostro segmento di LAN, meccanismo noto come "ARP Spoofing/ARP Poisoning". ARP sta per Address Resolution Protocol ed è il protocollo dello stack TCP/IP che permette di tradurre gli indirizzi IP (di livello 3 nella pila ISO/OSI) nei corrispondenti MAC address (indirizzi di livello 2).
Essenzialmente ARP lavora in questo modo: quando un host della LAN ha bisogno di contattarne un altro, deve conoscerne il MAC Address, cioè l'indirizzo (univoco) della scheda di rete. Per cui, la prima cosa che fa è quella di andare a dare un'occhiata nella propria ARP cache per vedere se già contiene quel MAC address. Se così non è, ARP lancia una richiesta broadcast (una ARP request, per l'appunto) a tutte le macchine della LAN. Se tra gli host in ascolto ce n'è uno che ha quell'IP, esso risponderà con una ARP reply contenente il proprio MAC address, fornendo quindi la traduzione dell'IP richiesto nel MAC address corrispondente, il che consente ai due host di comunicare. Dopo questo dialogo iniziale, l'host "richiedente" aggiunge una nuova entry nella propria ARP cache contenente l'IP richiesto e il corrispondente MAC Address. Per verificarlo basta lanciare il comando arp -a da riga di comando (valido sia in Windows che in Linux) come mostrato in Fig. 1.
Come dicevamo, però, la ARP cache si può "avvelenare" facendo credere alle altre macchine del nostro segmento di rete LAN che è il nostro host ad avere l'IP che stanno cercando, eseguendo quindi un "ARP Poisoning". La mostra una esemplificazione del meccanismo di ARP Poisoning.
L'effetto pratico dell'avvelenamento della cache è che da questo istante in poi, ogni comunicazione tra i due host passerà per l'host "attacker" e quindi:
- possiamo sniffare tutto il traffico di rete tra le due macchine (utilizzando packet sniffers come Ethereal, TCP Dump, Ngrep o quello che volete);
- Possiamo "avvelenare" la cache di una qualsiasi macchina della LAN e del gateway, in modo da intercettare tutto il traffico da/verso Internet di quell'host.
Ci sono molti software in giro che ci consentono di realizzare un arp spoofing/arp poisoning, in questo articolo ci concentreremo sul software Cain, disponibile per Windows.
Cain
Per quanto sia già da un po' sulla scena, Cain rappresenta un ottimo strumento di lavoro per network administrators, security researchers, penetration testers e, in generale, professionisti dell'IT Security. Per quei pochi che ancora non lo conoscessero, Cain è "ufficialmente" un software di password recovery per sistemi che girano in ambiente Microsoft, ma in realtà fa molto di più. Di seguito alcune tra le funzioni più importanti di Cain:
- Protected Storage Password Manager
Rivela le password salvate localmente per Outlook, Outlook Express, Outlook Express Identities, Outlook 2002, Internet Explorer e MSN Explorer. - Credential Manager Password Decoder
Rivela le passwords salvate in Enterprise e Local Credential su Windows XP/2003. - LSA Secrets Dumper
Effettua il dump del contenuto dell'LSA (Local Security Authority) Secrets. - SID Scanner
Estrae gli username associati ai Security Identifiers (SIDs) su un sistema remoto. - Network Enumerator
Recupera usernames, gruppi, condivisioni e servizi che girano su una macchina. - Remote Registry
Permette modifiche al registro di Windows dalla rete. - Sniffer
Cattura password e hashes.
Cattura conversazioni VoIP :) intercettando i pacchetti SIP/RTP e ricomponendoli come file WAV e MP3.
Cattura tutto il traffico di una sessione RDP (Remote Desktop Protocol), compresi i keystrokes lato client.
Cattura tutto il traffico HTTPS, FTPS, POP3S, IMAPS, LDAPS, collezionando i relativi certificati per utilizzarli successivamente nelle relative sessioni. - Wireless Scanner/WEP Cracker
Cattura SSID e traffico criptato con chiavi WEP e WPA-PSK. Decodifica le chiavi WEP. - Password Decoder & Cracker
decodifica password di Access (9x/2000/XP), Base64, Cisco Type-7 Passwords, Cisco VPN Client, VNC, Microsoft SQL Server Enterprise Manager (SQL 7.0 e 2000 inclusi), Oracle, MySQL, password salvate nei profili RDP (Remote Desktop Profiles, .RDP files), nonché gli hash dal file SAM.
La funzione che ci interessa per la realizzazione di un attacco MiTM è la APR o ARP Poison Routing. La APR realizza il meccanismo dell'ARP spoofing/ARP poisoning sopra descritto, vediamo come.
Dopo aver scaricato ed installato Cain, bisogna innanzitutto configurarlo per l'ARP spoofing. Per far ciò, occorre andare nel menu Configure / APR (Arp Poison Routing) e selezionare una delle due modalità di spoofing che consentono di utilizzare l'IP "reale" del nostro host o un finto IP (sempre della stessa sottorete). Come si vede in figura, Cain crea un finto MAC address (001122334455) da utilizzare per lo spoofing.
A questo punto, lanciamo una scansione del nostro segmento di sottorete per enumerare gli IP presenti, che verranno inclusi nell'elenco delle "possibili vittime". Per far ciò selezioniamo la tab Sniffer/Hosts e clicchiamo sul pulsante con il segno "+" ("Add to list"): apparirà una finestra di dialogo che ci chiede come vogliamo effettuare lo scanning della sottorete, con la possibilità di definire un range o di effettuare un full-scan, come mostrato in figura.
Una volta effettuato lo scanning degli host presenti, Cain li mostrerà nella finestra Sniffer. A questo punto, sempre dalla tab Sniffer, selezioniamo la sotto-tab APR: cliccando nuovamente sul tasto "+" apparirà la finestra per la selezione degli host da "avvelenare":
Nel nostro esempio, il gateway ha IP 192.168.1.1 e gli altri sono host della LAN. Dopo aver selezionato gli host su cui effettuare l'ARP poisoning, bisogna avviare sia lo sniffer che l'APR, come mostrato in figura. Da questo istante in poi la cache degli host 192.168.1.2 e 192.168.1.3 sarà sottoposta ad ARP Poisoning, per cui tutto il traffico tra queste macchine e il gateway (192.168.1.1) verrà catturato dallo sniffer di Cain e salvato nelle posizioni appropriate, come vedremo tra un istante.
Vediamo dunque se tutto funziona: proviamo a lanciare una connessione Telnet sul gateway dall'host 192.168.1.3 e poi selezioniamo la tab Sniffer/Passwords. Il risultato è quello mostrato in figura.
Come si vede dalla figura, Cain ha registrato e catturato il traffico telnet tra i due host, ma c'è di più: selezionando Telnet nel riquadro di sinistra e cliccando col destro su una delle connessioni catturate, apparirà un file di testo contenente le credenziali da noi immesse per aprire la connessione telnet:
Ora proviamo invece ad effettuare, sempre sul nostro gateway, una connessione HTTP con autenticazione, immaginando di voler accedere al pannello di controllo del router. Il risultato sarà il seguente
Quelli mostrati sono solo due esempi della miriade di cose che si possono fare con un attacco MiTM, utilizzando Cain, ma le possibilità sono tantissime: provate ad esempio ad utilizzare la stessa tecnica per catturare il traffico VoIP o a catturare i certificati SSL, usando Cain come SSL proxy. A proposito, per difendervi dal MiTM, oltre a realizzare sempre LAN totally switching, usate alcune accortezze:
- usate tabelle ARP statiche;
- proteggetevi con pacchetti come ARPWatch.
- cambiate il vostro MAC address