Protezione dall'uomo di mezzo. Tutto sull'attacco Man in the Middle (MitM).

18/10/2016 | Vladimir Cazov

I piani dell'FSB, del Ministero delle telecomunicazioni e delle comunicazioni di massa e del Ministero dell'industria e del commercio per attuare le disposizioni della legge Yarovaya sull'intercettazione e la decrittazione della corrispondenza dei russi non sono più solo piani, ma stanno già cominciando a essere messi in atto. in azione mediante un ordine per la preparazione di un parere di esperti sulla possibilità di intercettare messaggi WhatsApp, Viber, Facebook Messenger, Telegram, Skype utilizzando attacchi MITM e la dimostrazione di un prototipo di tale strumento.

Abbiamo scritto dello schema per organizzare un attacco MITM “legittimo” in un articolo precedente. Oggi ci soffermeremo più in dettaglio sul principio stesso di tale attacco e sui metodi della sua attuazione.

Cos'è un attacco MITM

Man In The Middle (MITM) si traduce come “uomo nel mezzo”. Questo termine si riferisce a un attacco di rete in cui un utente malintenzionato si frappone tra l'utente Internet e l'applicazione a cui accede. Non fisicamente, ovviamente, ma con l'aiuto di un software speciale. Si presenta all'utente come l'applicazione richiesta (potrebbe essere un sito web o un servizio Internet), simula il lavoro con essa e lo fa in modo tale da dare l'impressione del normale funzionamento e dello scambio di informazioni.

L'obiettivo dell'attacco sono i dati personali dell'utente, come le credenziali di accesso vari sistemi, coordinate bancarie e numeri di carte, corrispondenza personale e altre informazioni riservate. Nella maggior parte dei casi vengono attaccate applicazioni finanziarie (clienti bancari, banche online, servizi di pagamento e trasferimento di denaro), servizi SaaS aziendali, siti web e-commerce(negozi online) e altri siti dove è richiesta l'autorizzazione per accedere.

Le informazioni ottenute da un utente malintenzionato possono essere utilizzate per diversi scopi, tra cui trasferimenti di denaro illegali, modifica di conti, intercettazione di corrispondenza personale, acquisto a spese di qualcun altro, compromissione e ricatto.

Inoltre, dopo aver rubato le credenziali e aver violato il sistema, i criminali possono installare software dannoso nella rete aziendale. Software organizzare il furto di proprietà intellettuale (brevetti, progetti, banche dati) e causare danni economici cancellando dati importanti.

Un attacco MITM può essere paragonato ad un postino che, mentre consegna la vostra corrispondenza, apre una lettera, ne riscrive il contenuto per uso personale, o addirittura falsifica la grafia, aggiunge qualcosa di proprio, quindi sigilla la busta e la consegna al destinatario come se nulla fosse successo.. Inoltre, se hai criptato il testo della lettera, e vuoi comunicare personalmente il codice di decriptazione al destinatario, il postino si presenterà come destinatario in modo tale che tu non ti accorgerai nemmeno della sostituzione.

Come viene effettuato un attacco MITM

L'esecuzione di un attacco MITM consiste di due fasi: intercettazione e decrittazione.

  • Intercettazione

La prima fase dell'attacco consiste nell'intercettare il traffico dall'utente al bersaglio previsto e indirizzarlo nella rete dell'aggressore.

Il modo più comune e più semplice per intercettare è un attacco passivo, quando un utente malintenzionato crea punti Wi-Fi con accesso gratuito (senza password o autorizzazione). Nel momento in cui un utente si connette a tale punto, l'aggressore ottiene l'accesso a tutto il traffico che lo attraversa e può estrarne qualsiasi dato per l'intercettazione.

Il secondo metodo è l’intercettazione attiva, che può essere effettuata in uno dei seguenti modi:

Spoofing IP– sostituendo l’indirizzo IP del bersaglio nell’intestazione del pacchetto con l’indirizzo dell’attaccante. Di conseguenza, gli utenti, invece di visitare l’URL richiesto, finiscono sul sito web dell’aggressore.

Spoofing ARP– sostituzione del reale indirizzo MAC dell’host con l’indirizzo dell’aggressore nella tabella ARP della vittima. Di conseguenza, i dati inviati dall'utente all'indirizzo IP del nodo richiesto finiscono all'indirizzo dell'aggressore.

Spoofing DNS Infezione della cache DNS, penetrazione in Server DNS e la sostituzione del record di corrispondenza dell'indirizzo del sito web. Di conseguenza, l’utente tenta di accedere al sito richiesto, ma riceve l’indirizzo del sito dell’aggressore dal server DNS.

  • Decrittazione

Una volta intercettato, il traffico SSL bidirezionale deve essere decrittografato in modo tale che l'utente e la risorsa richiesta non si accorgano dell'interferenza.

Esistono diversi metodi per questo:

Spoofing HTTPS– un certificato falso viene inviato al browser della vittima quando viene stabilita una connessione al sito tramite il protocollo HTTPS. Questo certificato contiene una firma digitale dell'applicazione compromessa, grazie alla quale il browser considera affidabile la connessione con l'aggressore. Una volta stabilita tale connessione, l'aggressore ottiene l'accesso a tutti i dati inseriti dalla vittima prima che vengano trasmessi all'applicazione.

BESTIA SSL(exploit del browser contro SSL/TLS) – l'attacco sfrutta la vulnerabilità SSL nelle versioni TLS 1.0 e 1.2. Il computer della vittima è infetto da JavaScript dannoso, che intercetta i cookie crittografati inviati all'applicazione web. Ciò compromette la modalità di crittografia del "concatenamento di blocchi di testo cifrato" in modo tale che l'aggressore ottenga i cookie e le chiavi di autenticazione decrittografati.

Dirottamento SSL– trasferimento di chiavi di autenticazione false all'utente e all'applicazione all'inizio di una sessione TCP. Ciò crea l’apparenza di una connessione sicura quando in realtà la sessione è controllata da un “uomo nel mezzo”.

Eliminazione SSL– Declassa la connessione da HTTPS sicuro a HTTP semplice intercettando l'autenticazione TLS inviata dall'applicazione all'utente. L’aggressore fornisce all’utente un accesso non crittografato al sito, mentre mantiene una sessione sicura con l’applicazione, acquisendo la capacità di vedere i dati trasmessi dalla vittima.\

Protezione contro gli attacchi MITM

Una protezione affidabile contro gli attacchi MITM è possibile se l'utente intraprende diverse azioni preventive e utilizza una combinazione di metodi di crittografia e autenticazione da parte degli sviluppatori di applicazioni web.

Azioni dell'utente:

  • Evita di connetterti a punti Wi-Fi che non dispongono di protezione tramite password. Disabilita la funzione di connessione automatica ai punti di accesso conosciuti: un utente malintenzionato può mascherare il suo Wi-Fi come legittimo.
  • Presta attenzione alla notifica del browser relativa all'accesso a un sito non protetto. Un messaggio di questo tipo può indicare il passaggio di un utente malintenzionato a un sito Web falso o problemi con la protezione di un sito Web legittimo.
  • Terminare la sessione con l'applicazione (logout) se non è in uso.
  • Non utilizzare reti pubbliche (bar, parchi, hotel, ecc.) per condurre transazioni riservate ( corrispondenza di lavoro, transazioni finanziarie, acquisti nei negozi online, ecc.).
  • Utilizza un antivirus con database aggiornati sul tuo computer o laptop; ti aiuterà a proteggerti dagli attacchi tramite software dannoso.

Gli sviluppatori di applicazioni web e siti web devono utilizzare la sicurezza Protocolli TLS e HTTPS, che complicano notevolmente gli attacchi di spoofing crittografando i dati trasmessi. Il loro utilizzo impedisce inoltre l'intercettazione del traffico per ottenere parametri di autorizzazione e chiavi di accesso.

È considerata buona pratica proteggere TLS e HTTPS non solo per le pagine di autorizzazione, ma anche per tutte le altre sezioni del sito. Ciò riduce la possibilità che un utente malintenzionato rubi i cookie dell'utente nel momento in cui naviga attraverso pagine non protette dopo l'autorizzazione.

La protezione contro gli attacchi MITM è responsabilità dell'utente e dell'operatore di telecomunicazioni. La cosa più importante per l'utente è non perdere la vigilanza, utilizzare solo metodi comprovati per accedere a Internet e scegliere siti con crittografia HTTPS durante il trasferimento dei dati personali. Si può consigliare agli operatori di telecomunicazioni di utilizzare sistemi DPI (Deep Packet Inspection) per rilevare anomalie nelle reti di dati e prevenire attacchi di spoofing.

Le agenzie governative intendono utilizzare l’attacco MITM per proteggere i cittadini e non per causare danni, a differenza degli aggressori. L'intercettazione di messaggi personali e altro traffico degli utenti viene effettuata nel quadro della legislazione vigente, effettuata su decisione delle autorità giudiziarie per combattere il terrorismo, il traffico di droga e altre attività vietate. Utenti abituali Gli attacchi MITM “legittimi” non sono pericolosi.

Raggiungere risultato desiderato Ci sono quasi sempre diversi modi. Ciò vale anche per il campo della sicurezza informatica. A volte, per raggiungere un obiettivo, puoi usare la forza bruta, cercare buchi e sviluppare tu stesso exploit, oppure ascoltare ciò che viene trasmesso in rete. Inoltre, l'ultima opzione è spesso ottimale. Ecco perché oggi parleremo di strumenti che ci aiuteranno a ottenere informazioni preziose traffico di rete, attirando attacchi MITM per questo.

MITMF

Cominciamo con uno dei candidati più interessanti. Si tratta di un intero framework per condurre attacchi man-in-the-middle, costruito sulla base di sergio-proxy. Recentemente incluso in Kali Linux. Per installarlo da solo, basta clonare il repository ed eseguire un paio di comandi:

# setup.sh # pip install -r requisiti.txt

# pip install -r requisiti.txt

Ha un'architettura estensibile tramite plugin. Tra i principali ricordiamo i seguenti:

  • Spoof: consente di reindirizzare il traffico utilizzando lo spoofing ARP/DHCP, reindirizzamenti ICMP e modificare le richieste DNS;
  • Sniffer: questo plugin tiene traccia dei tentativi di accesso per vari protocolli;
  • BeEFAutorun: consente di avviare automaticamente i moduli BeEF in base al tipo di sistema operativo e browser client;
  • AppCachePoison: esegue un attacco di avvelenamento della cache;
  • SessionHijacking: dirotta le sessioni e memorizza i cookie risultanti nel profilo Firefly;
  • BrowserProfiler: tenta di ottenere un elenco di plugin utilizzati dal browser;
  • FilePwn: consente di sostituire i messaggi inviati tramite File HTTP utilizzando Backdoor Factory e BDFProxy;
  • Inject: inserisce contenuto arbitrario in una pagina HTML;
  • jskeylogger: incorpora un keylogger JavaScript nelle pagine client.

Se questa funzionalità ti sembra insufficiente, puoi sempre aggiungerne una tua implementando l'estensione appropriata.

PuttyRider

Un'altra utilità degna di attenzione. È vero, a differenza di tutti gli altri strumenti considerati oggi, è molto strettamente specializzato. Come dice lo stesso autore del progetto, nella creazione di una tale utility è stato ispirato dal fatto che durante i test di penetrazione i dati più importanti si trovavano su server Linux/UNIX, ai quali gli amministratori si collegavano tramite SSH/Telnet/rlogin. Inoltre, nella maggior parte dei casi, era molto più semplice accedere alla macchina degli amministratori che al server di destinazione. Una volta penetrato nel computer dell’amministratore di sistema, non resta che assicurarsi che PuTTY sia in esecuzione e, utilizzando questo strumento, costruire un ponte posteriore verso l’aggressore.

L'utilità consente non solo di acquisire la "comunicazione" tra l'amministratore e il server remoto (comprese le password), ma anche di eseguire comandi shell arbitrari all'interno di una determinata sessione. Inoltre, tutto ciò avverrà in modo assolutamente trasparente per l'utente (amministratore). Se sei interessato ai dettagli tecnici, ad esempio come viene implementato PuTTY nel processo, ti consiglio di leggere la presentazione dell'autore.

Una utility piuttosto vecchia, nata più di otto anni fa. Destinato alla clonazione delle sessioni rubando i cookie. Per il dirottamento della sessione, ha capacità di rilevamento dell'host di base (in caso di connessione a un open rete senza fili o hub) e conducendo l'avvelenamento ARP. L’unico problema è che oggi, a differenza di otto anni fa, quasi tutte le grandi aziende come Yahoo o Facebook utilizzano la crittografia SSL, il che rende questo strumento completamente inutile. Nonostante ciò, ci sono ancora abbastanza risorse su Internet che non utilizzano SSL, quindi è troppo presto per cancellare l'utilità. I suoi vantaggi includono il fatto che si integra automaticamente in Firefox e crea un profilo separato per ogni sessione intercettata. Fonteè disponibile nel repository e puoi crearlo tu stesso utilizzando la seguente sequenza di comandi:

# apt-get install build-essential libwxgtk2.8-dev libgtk2.0-dev libpcap-dev # g++ $(wx-config --cppflags --libs) -lpcap -o sessionthief *.cpp # setcap cap_net_raw,cap_net_admin=eip sessionthief

# apt-get install build-essential libwxgtk2.8-dev libgtk2.0-dev libpcap-dev

# g++ $(wx-config --cppflags --libs) -lpcap -o sessionthief *.cpp

# setcap cap_net_raw,cap_net_admin=eip sessionthief

ProxyFuzz

ProzyFuzz non ha nulla a che fare direttamente con la conduzione di attacchi MITM. Come puoi intuire dal nome, lo strumento è progettato per il fuzzing. Si tratta di un piccolo fuzzer di rete non deterministico, implementato in Python, che modifica casualmente il contenuto dei pacchetti di traffico di rete. Supporta i protocolli TCP e UDP. Puoi configurarlo per fuzz solo su un lato. Utile quando è necessario controllare rapidamente qualcosa applicazione di rete(o protocollo) e sviluppare un PoC. Esempio di utilizzo:

Python proxyfuzz -l -R -P

python proxyfuzz -l -R -P

L'elenco delle opzioni include:

  • w - specifica il numero di richieste inviate prima che inizi il fuzzing;
  • c - fuzz solo il client (altrimenti entrambi i lati);
  • s - effettua il fuzz solo sul server (altrimenti su entrambi i lati);
  • u - Protocollo UDP (altrimenti viene utilizzato TCP).

Il Medio

Un'utilità per condurre attacchi MITM su vari protocolli presentati alla conferenza DEF CON. La versione alpha supportava il protocollo HTTP e aveva tre fantastici plugin nel suo arsenale:

  • plugin-beef.py - inietta il Browser Exploitation Framework (BeEF) in qualsiasi richiesta HTTP proveniente dalla rete locale;
  • plugin-metasploit.py: incorpora un IFRAME in richieste non crittografate (HTTP), che caricano exploit del browser da Metasploit;
  • plugin-keylogger.py: incorpora un gestore di eventi onKeyPress JavaScript per tutti i campi di testo che verranno inviati tramite HTTPS, facendo sì che il browser invii la password immessa dall'utente carattere per carattere al server dell'aggressore prima che venga inviato l'intero modulo.

Il Middler non solo analizza automaticamente il traffico di rete e trova i cookie in esso, ma li richiede anche autonomamente al client, ovvero il processo è automatizzato al massimo. Il programma garantisce la raccolta di tutti gli account non protetti su una rete informatica (o hotspot pubblico) al cui traffico ha accesso. Affinché il programma funzioni correttamente è necessario che sul sistema siano installati i seguenti pacchetti: Scapy, libpcap, readline, libdnet, python-netfilter. Sfortunatamente, il repository non è stato aggiornato da molto tempo, quindi dovrai aggiungere tu stesso le nuove funzionalità.

Un'utilità console che consente di esaminare e modificare in modo interattivo il traffico HTTP. Grazie a tali competenze, l'utilità viene utilizzata non solo dai pentester/hacker, ma anche dagli sviluppatori ordinari che la utilizzano, ad esempio, per eseguire il debug di applicazioni web. Con il suo aiuto, puoi ottenere informazioni dettagliate su quali richieste effettua l'applicazione e quali risposte riceve. Inoltre, mitmproxy può aiutare a studiare le peculiarità del funzionamento di alcune API REST, soprattutto quelle scarsamente documentate.

L'installazione è estremamente semplice:

$ sudo aptitude install mitmproxy

Vale la pena notare che mitmproxy consente anche di intercettare il traffico HTTPS emettendo un certificato autofirmato al client. Buon esempio Puoi imparare come configurare l'intercettazione e la modifica del traffico.

D'annusare

Bene, questa utilità è generalmente una delle prime cose che dovrebbero venire in mente non appena senti
"Attacco MITM". Lo strumento è piuttosto vecchio, ma continua ad essere aggiornato attivamente, il che è una buona notizia. Non ha senso parlare in dettaglio delle sue capacità, nei quattordici anni della sua esistenza è stato trattato su Internet più di una volta. Ad esempio, in una guida come questa:

o istruzioni dal nostro sito web:

Da ultimo..

Come al solito, non abbiamo esaminato tutte le utility, ma solo quelle più popolari; ci sono anche molti progetti poco conosciuti di cui forse un giorno parleremo. Come puoi vedere, gli strumenti per eseguire attacchi MITM non mancano e, cosa che non accade molto spesso, uno degli strumenti interessanti è implementato per Windows. Non c'è niente da dire sui sistemi nix: tutta una varietà. Quindi penso che tu possa sempre trovare lo strumento giusto per il furto
credenziali di altre persone. Ops, cioè per il test.

Attacco Man in the middle (attacco MitM) è un termine in crittografia che si riferisce a una situazione in cui un aggressore è in grado di leggere e modificare a piacimento i messaggi scambiati tra corrispondenti, e nessuno di questi ultimi può indovinare la sua presenza nel canale. .

Un metodo per compromettere un canale di comunicazione, in cui un utente malintenzionato, dopo essersi collegato a un canale tra controparti, interferisce attivamente con il protocollo di trasmissione, cancellando, distorcendo informazioni o imponendo informazioni false.

Principio di attacco:

Supponiamo che l'oggetto "A" intenda trasmettere alcune informazioni all'oggetto "B". L'oggetto "C" conosce la struttura e le proprietà del metodo di trasmissione dei dati utilizzato, nonché il fatto della trasmissione pianificata delle informazioni effettive che "C" intende intercettare.

Per effettuare un attacco, "C" sembra obiettare "A" come "B" e "B" come "A". L'oggetto "A", credendo erroneamente di inviare informazioni a "B", le invia all'oggetto "C".

L'oggetto "C", dopo aver ricevuto le informazioni e aver eseguito alcune azioni con esse (ad esempio copiandole o modificandole per i propri scopi), invia i dati al destinatario stesso - "B"; l'oggetto "B", a sua volta, ritiene che l'informazione sia stata ricevuta direttamente da "A".

Esempio di attacco MitM:

Supponiamo che Alice abbia problemi finanziari e, utilizzando un programma di messaggistica istantanea, decida di chiedere una somma di denaro a Giovanni inviando il messaggio:
Alice: Giovanni, ciao!
Alice: Per favore mandami la chiave di crittografia, ho una piccola richiesta!
John: Ciao! Aspetta un secondo!

Ma proprio in questo momento il signor X, che analizzando il traffico con uno sniffer, ha notato questo messaggio, e la dicitura “chiave di crittografia” ha suscitato curiosità. Ecco perché ha deciso di intercettare i seguenti messaggi e di sostituirli con i dati di cui aveva bisogno, e quando ha ricevuto il seguente messaggio:
John: Ecco la mia chiave: 1111_D

Ha cambiato la chiave di John con la sua e ha inviato un messaggio ad Alice:
John: Ecco la mia chiave: 6666_M

Alice, ignara e pensando che sia la chiave di John, usa la chiave privata 6666_M, invia messaggi crittografati a John:
Alice: John, ho dei problemi e ho urgentemente bisogno di soldi, per favore trasferisci $ 300 sul mio conto: Z12345. Grazie. p.s. La mia chiave: 2222_A

Dopo aver ricevuto il messaggio, il signor X lo decrittografa utilizzando la sua chiave, lo legge e, rallegrandosi, cambia il numero di conto e la chiave di crittografia di Alice con i suoi, crittografa il messaggio con la chiave 1111_D e invia a John un messaggio:
Alice: John, ho dei problemi e ho urgentemente bisogno di soldi, per favore trasferisci $ 300 sul mio conto: Z67890. Grazie. p.s. La mia chiave: 6666_A

Dopo aver ricevuto il messaggio, John lo decrittografa utilizzando la chiave 1111_D, e senza nemmeno esitare, trasferirà il denaro sul conto Z67890...

E così il signor X, usando l'attacco man-in-the-middle, ha guadagnato 300 dollari, ma Alice ora dovrà spiegare di non aver ricevuto i soldi... E John? John deve dimostrare ad Alice che è stato lui a mandarli...

Implementazione:

Questo tipo di attacco viene utilizzato in alcuni prodotti software per l'intercettazione della rete, ad esempio:
NetStumbler- un programma con il quale puoi raccogliere molti dati utili su una rete wireless e risolvere alcuni problemi associati al suo funzionamento. NetStumbler ti consente di determinare la portata della tua rete e ti aiuta a puntare con precisione l'antenna per le comunicazioni a lunga distanza. Per ogni punto di accesso trovato, puoi scoprire l'indirizzo MAC, il rapporto segnale-rumore, il nome del servizio e il suo grado di sicurezza. Se il traffico non è crittografato, sarà utile la capacità del programma di rilevare connessioni non autorizzate.

dsniff- è un insieme di programmi per il controllo della rete e i test di penetrazione, che forniscono un monitoraggio passivo della rete per la ricerca di dati di interesse (password, indirizzi E-mail, file, ecc.), l'intercettazione del traffico di rete che normalmente sarebbe inaccessibile per l'analisi (ad esempio, in una rete commutata), nonché la capacità di organizzare attacchi MITM per intercettare sessioni SSH e HTTPS sfruttando i difetti PKI.

Caino e Abele - programma gratuito, che ti consente di recuperare le password perse per sistemi operativi Famiglia Windows. Sono supportate diverse modalità di ripristino: hacking con forza bruta, selezione del dizionario, visualizzazione di password nascoste da asterischi, ecc. Esistono anche opzioni per identificare una password intercettando pacchetti di informazioni e la loro successiva analisi, registrando conversazioni di rete, analisi della cache e altro.

Ettercap- è uno sniffer, un intercettatore e un registratore di pacchetti per reti Ethernet locali, che supporta l'analisi attiva e passiva di più protocolli, ed è anche possibile "gettare" i propri dati in una connessione esistente e filtrarli "al volo" senza interrompere la connessione sincronizzazione. Il programma consente di intercettare SSH1, HTTPS e altri protocolli sicuri e offre la possibilità di decrittografare le password per i seguenti protocolli: TELNET, ftp, POP, RLOGIN, SSH1, icq, SMB, Mysql, HTTP, NNTP, X11, NAPSTER, IRC , RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, HALF LIFE, QUAKE 3, MSN, YMSG.

KARMA– un insieme di utilità per valutare la sicurezza dei client wireless, è uno sniffer wireless che, ascoltando passivamente i frame Probe Request 802.11, consente di rilevare i client e le loro reti preferite/attendibili. È quindi possibile creare un falso punto di accesso per una delle reti richieste, alla quale connettersi automaticamente. I servizi falsi di alto livello possono essere utilizzati per rubare dati personali o sfruttare le vulnerabilità del client sull'host.

AirJack- un insieme di programmi che, secondo gli esperti nel campo dell'hacking WiFi, è lo strumento migliore per generare vari frame 802.11. AirJack include una serie di utilità progettate per rilevare ESSID nascosti, inviare frame di terminazione della sessione con un MAC falso, condurre attacchi MitM e modificarlo.

Contrastazione:

Per evitare attacchi di questo tipo, gli abbonati “A” e “B” devono solo scambiarsi reciprocamente le firme digitali delle chiavi di crittografia pubbliche utilizzando un canale affidabile. Quindi, confrontando le firme delle chiavi nelle sessioni di crittografia, sarà possibile determinare quale chiave è stata utilizzata per crittografare i dati e se le chiavi sono state sostituite.

In questo articolo cercheremo di comprendere la teoria degli attacchi man-in-the-middle e alcuni punti pratici che aiuteranno a prevenire questo tipo di attacchi. Questo ci aiuterà a comprendere il rischio che tali intrusioni rappresentano per la nostra privacy, poiché gli attacchi MitM ci consentono di intrometterci nelle comunicazioni e di intercettare le nostre conversazioni.

Capire come funziona Internet

Per comprendere il principio di un attacco man-in-the-middle, vale prima la pena capire come funziona Internet stessa. Principali punti di interazione: client, router, server. Il protocollo di comunicazione più comune tra client e server è Hypertext Transfer Protocol (HTTP). Navigare in Internet utilizzando un browser, e-mail, messaggistica istantanea: tutto questo avviene tramite HTTP.

Quando digiti nella barra degli indirizzi del browser, il client (tu) invia una richiesta al server per visualizzare una pagina web. Il pacchetto (richiesta HTTP GET) viene trasmesso al server attraverso diversi router. Il server risponde quindi con una pagina web, che viene inviata al client e visualizzata sul suo monitor. I messaggi HTTP devono essere inviati a modalità sicura per garantire riservatezza e anonimato.

Figura 1. Interazione client-server

Protezione del protocollo di comunicazione

Un protocollo di comunicazione sicuro deve avere ciascuna delle seguenti proprietà:

  1. Privacy- solo il destinatario previsto può leggere il messaggio.
  2. Autenticità- sia dimostrata l'identità delle parti interagenti.
  3. Integrità- conferma che il messaggio non è stato modificato durante il trasporto.

Se una qualsiasi di queste regole non viene seguita, l’intero protocollo viene compromesso.

Attacco man-in-the-middle tramite protocollo HTTP

Un utente malintenzionato può facilmente eseguire un attacco man-in-the-middle utilizzando una tecnica chiamata ARP spoofing. Chiunque nel tuo Reti Wi-Fi potrebbe inviarti un pacchetto ARP contraffatto, costringendoti a inviare inconsapevolmente tutto il tuo traffico attraverso l'aggressore invece che attraverso il tuo router.

Successivamente l’aggressore ha il pieno controllo del traffico e può monitorare le richieste inviate in entrambe le direzioni.

Figura 2. Schema di attacco man-in-the-middle


Per prevenire tali attacchi è stata creata una versione sicura del protocollo HTTP. Transport Layer Security (TLS) e il suo predecessore, Secure Socket Layer (SSL), sono protocolli crittografici che forniscono sicurezza per la trasmissione dei dati su una rete. Pertanto, il protocollo sicuro si chiamerà HTTPS. Puoi vedere come funziona il protocollo sicuro digitando nella barra degli indirizzi del tuo browser (nota la S in https).

Attacco Man-in-the-Middle a SSL mal implementato

Il moderno SSL utilizza un buon algoritmo di crittografia, ma non importa se non è implementato correttamente. Se un hacker riesce a intercettare la richiesta, può modificarla rimuovendo la "S" dall'URL richiesto, ignorando così SSL.

Tale intercettazione e modifica della richiesta può essere notata. Ad esempio, se richiedi https://login.yahoo.com/ e la risposta è http://login.yahoo.com/ , ciò dovrebbe sollevare sospetti. Al momento in cui scrivo, questo attacco funziona effettivamente sul servizio di posta elettronica Yahoo.

Figura 3. Richiesta di intercettazione e modifica


Per prevenire un simile attacco, i server possono implementare HTTP Strict Transport Security (HSTS), un meccanismo che abilita una connessione sicura forzata sul protocollo HTTPS. In questo caso, se un utente malintenzionato modifica la richiesta rimuovendo la “S” dall’URL, il server reindirizzerà comunque l’utente con un reindirizzamento 302 verso una pagina con protocollo sicuro.

Figura 4. Diagramma operativo HSTS


Questo modo di implementare SSL è vulnerabile a un altro tipo di attacco: l'aggressore crea una connessione SSL al server, ma utilizza vari trucchi per costringere l'utente a utilizzare HTTP.

Figura 5. Schema di attacco HSTS


Per prevenire tali attacchi, i browser moderni come Chrome, Firefox e Tor monitorano i siti utilizzando HSTS e forzano una connessione lato client tramite SSL. In questo caso, l’aggressore che conduce un attacco man-in-the-middle dovrebbe creare una connessione SSL con la vittima.

Figura 6. Modello di attacco in cui l'aggressore stabilisce una connessione SSL con la vittima


Per fornire una connessione SLL a un utente, un utente malintenzionato deve sapere come agire come server. Comprendiamo gli aspetti tecnici di SSL.

Comprendere SSL

Dal punto di vista di un hacker, compromettere qualsiasi protocollo di comunicazione si riduce a trovare l'anello debole tra le componenti sopra elencate (privacy, autenticità e integrità).

SSL utilizza un algoritmo di crittografia asimmetrica. Il problema con la crittografia simmetrica è che viene utilizzata la stessa chiave per crittografare e decrittografare i dati; questo approccio non è valido per i protocolli Internet poiché un utente malintenzionato può risalire a questa chiave.

La crittografia asimmetrica comprende 2 chiavi per ciascun lato: chiave pubblica, utilizzata per la crittografia, e una chiave privata, utilizzata per decrittografare i dati.

Figura 7. Funzionamento delle chiavi pubblica e privata

In che modo SSL fornisce le tre proprietà necessarie per comunicazioni sicure?

  1. Poiché per crittografare i dati viene utilizzata la crittografia asimmetrica, SSL fornisce una connessione privata. Questa crittografia non è così facile da violare e non viene rilevata.
  2. Il server conferma la sua legittimità inviando al client un certificato SSL emesso da un'autorità di certificazione, una terza parte fidata.

Se un utente malintenzionato riesce in qualche modo a ottenere il certificato, potrebbe aprire la porta a un attacco man-in-the-middle. Pertanto, creerà 2 connessioni: con il server e con la vittima. Il server in questo caso pensa che l'aggressore sia un normale client e la vittima non ha modo di identificare l'aggressore poiché ha fornito un certificato comprovante che è lui il server.

I tuoi messaggi arrivano e arrivano in forma crittografata, ma seguono una catena attraverso il computer del criminale informatico, dove ha il controllo completo.

Figura 8. Modello di attacco se l'aggressore dispone di un certificato


Non è necessario falsificare il certificato se un utente malintenzionato ha la capacità di compromettere il browser della vittima. In questo caso può inserire un certificato autofirmato, che sarà considerato attendibile per impostazione predefinita. Questo è il modo in cui vengono eseguiti la maggior parte degli attacchi man-in-the-middle. Nei casi più complessi, l'hacker deve prendere una strada diversa: falsificare il certificato.

Problemi dell'autorità di certificazione

Il certificato inviato dal server è stato emesso e firmato da un'autorità di certificazione. Ciascun browser dispone di un elenco di autorità di certificazione attendibili ed è possibile aggiungerle o rimuoverle. Il problema qui è che se decidi di rimuovere autorità di grandi dimensioni, non sarai in grado di visitare i siti che utilizzano certificati firmati da tali autorità.

I certificati e le autorità di certificazione sono sempre stati l'anello più debole in una connessione HTTPS. Anche se tutto è stato implementato correttamente e ogni autorità di certificazione dispone di un’autorità solida, è ancora difficile accettare il fatto di doversi fidare di molte terze parti.

Oggi esistono più di 650 organizzazioni in grado di emettere certificati. Se un utente malintenzionato dovesse hackerarne qualcuno, otterrebbe tutti i certificati che desidera.

Anche quando esisteva una sola autorità di certificazione, VeriSign, c'era un problema: le persone che avrebbero dovuto prevenire gli attacchi man-in-the-middle vendevano servizi di intercettazione.

Inoltre, molti certificati sono stati creati a causa dell'hacking delle autorità di certificazione. Sono state utilizzate varie tecniche e trucchi per indurre l'utente preso di mira a fidarsi di certificati fraudolenti.

Forense

Poiché l'aggressore invia pacchetti ARP contraffatti, il suo indirizzo IP non può essere visualizzato. Bisogna invece prestare attenzione all'indirizzo MAC, che è specifico per ciascun dispositivo della rete. Se conosci l'indirizzo MAC del tuo router, puoi confrontarlo con l'indirizzo MAC del gateway predefinito per scoprire se si tratta davvero del tuo router o di un utente malintenzionato.

Ad esempio, sul sistema operativo Windows è possibile utilizzare il comando ipconfig in riga di comando(CMD) per visualizzare l'indirizzo IP del gateway predefinito (ultima riga):

Figura 9. Utilizzo del comando ipconfig


Quindi utilizzare il comando arp –a per scoprire l'indirizzo MAC di questo gateway:

Figura 10. Utilizzo del comando arp –a


Ma esiste un altro modo per notare l'attacco: monitorare l'attività di rete nel momento in cui è iniziato e osservare i pacchetti ARP. Ad esempio, puoi utilizzare Wireshark per questo scopo, questo programma ti avviserà se l'indirizzo MAC del gateway predefinito è cambiato.

Nota: se l'aggressore falsifica correttamente gli indirizzi MAC, rintracciarlo diventerà un grosso problema.

Conclusione

SSL è un protocollo che costringe un utente malintenzionato a fare molto lavoro per sferrare un attacco. Ma non ti proteggerà dagli attacchi sponsorizzati dallo stato o da abili organizzazioni di hacking.

Il compito dell'utente è proteggere il proprio browser e computer per evitare che venga inserito un certificato falso (una tecnica molto comune). Vale anche la pena prestare attenzione all'elenco dei certificati attendibili e rimuovere quelli di cui non ti fidi.

Pubblicazioni sull'argomento