Cos'è l'uomo nel mezzo. Rilevamento di attacchi man-in-the-middle (attacchi MitM)

15.05.2022

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 ascoltare la rete, ad esempio:
NetStumbler- un programma con cui puoi raccogliere molti dati utili su rete senza fili 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 la 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 un ESSID nascosto, 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 trasmettersi tra loro utilizzando un canale affidabile firme digitali chiavi di crittografia pubbliche. 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.

Esistono quasi sempre diversi modi per ottenere il risultato desiderato. 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 ultima opzioneè spesso ottimale. Ecco perché oggi parleremo di strumenti che ci aiuteranno a catturare informazioni per noi preziose dal traffico di rete, utilizzando per questo gli attacchi MITM.

MITMF

Cominciamo con uno dei candidati più interessanti. Questo è un intero quadro per la conduzione attacchi man-in-the-middle, costruito sopra 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 file inviati tramite 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 Server remoto(comprese le password), ma esegue anche 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 dirottare le sessioni, ha competenze di base nel rilevamento degli host (se connessi a una rete o hub wireless aperto) e nella conduzione di avvelenamenti 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ò, su Internet sono ancora sufficienti risorse 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 Protocolli TCP e UDP. Puoi configurarlo per fuzz solo su un lato. È utile quando è necessario testare rapidamente alcune applicazioni di rete (o protocolli) 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 traffico di rete e trova i cookie in esso, ma li richiede anche autonomamente al cliente, ovvero il processo è automatizzato al massimo. Il programma garantisce la raccolta di tutti gli account non protetti in rete di computer(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 ricevere informazioni dettagliate su quali richieste fa 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 utilità, 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.

Principio di attacco

L'attacco solitamente inizia con l'intercettazione del canale di comunicazione e termina con il crittoanalista che tenta di sostituire il messaggio intercettato ed estrarne informazioni utili, reindirizzarlo a qualche risorsa esterna.

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 “appare” all'oggetto A come B, e all'oggetto B come A. L'oggetto A, credendo erroneamente di inviare informazioni a B, le invia all'oggetto C. L'oggetto C, ricevuta l'informazione, ed esegue con esso alcune azioni (ad esempio, copia o modifica per propri scopi) inoltra 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

Iniezione di codice dannoso

Un attacco man-in-the-middle consente a un crittoanalista di inserire il suo codice e-mail, espressioni SQL e pagine Web (ovvero, consente iniezioni SQL, iniezioni HTML/script o attacchi XSS) e persino modificare i file caricati dall'utente file binari per poter accedere account utente o modificare il comportamento di un programma scaricato dall'utente da Internet.

Attacco al declassamento

Il termine “Downgrade Attack” si riferisce a un attacco in cui un crittoanalista costringe l’utente a utilizzare funzioni meno sicure, protocolli che sono comunque supportati per motivi di compatibilità. Questo tipo di attacco può essere effettuato sui protocolli SSH, IPsec e PPTP.

SSH V1 invece di SSH V2

Un utente malintenzionato può tentare di modificare i parametri di connessione tra il server e il client quando viene stabilita una connessione tra di loro. Secondo un discorso tenuto alla Blackhat Conference Europe 2003, un crittoanalista può "forzare" un client ad avviare una sessione SSH1 invece di SSH2 modificando il numero di versione "1.99" per la sessione SSH in "1.51", il che significa utilizzare SSH V1 . Il protocollo SSH-1 presenta vulnerabilità che possono essere sfruttate da un crittoanalista.

IPsec

In questo scenario di attacco, il crittoanalista induce in errore la sua vittima a credere che la sessione IPsec non possa iniziare dall'altra parte (server). Ciò comporta l'invio esplicito di messaggi se la macchina host è in esecuzione in modalità rollback.

PPTP

Nella fase di negoziazione dei parametri della sessione PPTP, l'aggressore può forzare la vittima a utilizzare l'autenticazione PAP meno sicura, MS-CHAP V1 (ovvero, il "rollback" da MS-CHAP V2 alla versione 1) o a non utilizzare affatto la crittografia.

Un utente malintenzionato può costringere la sua vittima a ripetere la fase di negoziazione dei parametri della sessione PPTP (inviare un pacchetto Terminate-Ack), rubare la password da un tunnel esistente e ripetere l'attacco.

La crittografia aiuterà?

Consideriamo il caso di una transazione HTTP standard. In questo caso, un utente malintenzionato può facilmente dividere la connessione TCP originale in due nuove: una tra se stesso e il client, l'altra tra se stesso e il server. Questo è abbastanza semplice da fare, poiché molto raramente la connessione tra client e server è diretta e nella maggior parte dei casi sono collegati tramite una serie di server intermedi. Un attacco MITM può essere effettuato su uno qualsiasi di questi server.

Tuttavia, se il client e il server comunicano tramite HTTPS, un protocollo che supporta la crittografia, può essere effettuato anche un attacco man-in-the-middle. Questo tipo di connessione utilizza TLS o SSL per crittografare le richieste, il che sembrerebbe proteggere il canale da attacchi sniffing e MITM. Un utente malintenzionato può creare due sessioni SSL indipendenti per ciascuna connessione TCP. Il client stabilisce una connessione SSL con l'aggressore, che a sua volta crea una connessione con il server. In questi casi, il browser di solito avvisa che il certificato non è firmato da un'autorità di certificazione attendibile, ma l'utente medio ignora facilmente questo avviso. Inoltre, l'aggressore potrebbe avere un certificato firmato da un'autorità di certificazione. Pertanto, il protocollo HTTPS non può essere considerato sicuro contro gli attacchi MITM.

Rilevamento degli attacchi MITM

Per rilevare un attacco man-in-the-middle, è necessario analizzare il traffico di rete. Ad esempio, per rilevare un attacco SSL, dovresti prestare attenzione ai seguenti parametri:

  • Indirizzo IP del server
  • Server DNS
  • X.509: certificato del server
    • Il certificato è autofirmato?
    • Il certificato è firmato?
    • Il certificato è stato revocato?
    • Il certificato è cambiato di recente?
    • Altri client su Internet hanno ricevuto lo stesso certificato?

Implementazioni degli attacchi MITM

I programmi elencati possono essere utilizzati per eseguire attacchi man-in-the-middle, nonché per rilevarli e testare le vulnerabilità del sistema.

Esempio in letteratura

Un chiaro esempio letterario può essere visto in "La storia dello zar Saltan" di A. S. Pushkin, dove compaiono tre "persone nel mezzo": un tessitore, un cuoco e Babarikha. Sono loro che sostituiscono le lettere indirizzate allo zar e la sua corrispondenza di risposta.

Guarda anche

  • Aspidistra (inglese) - Trasmettitore radio britannico utilizzato durante l '"invasione" della seconda guerra mondiale, una variante dell'attacco MITM.
  • The Babington Plot (inglese) - una cospirazione contro Elisabetta I, durante la quale Walsingham intercettò la corrispondenza.

Altri attacchi

  • "Man in the Browser" è un tipo di attacco in cui l'aggressore è in grado di modificare istantaneamente i parametri delle transazioni e modificare le pagine in modo completamente trasparente per la vittima.
  • L’attacco meet-in-the-middle è un attacco crittografico che, come l’attacco compleanno, sfrutta un compromesso tra tempo e memoria.
  • “Perdere l'attacco centrale” - metodo efficace la cosiddetta crittoanalisi differenziale impossibile.
  • L'attacco di inoltro è una variante dell'attacco MITM basata sull'inoltro di un messaggio intercettato a un destinatario valido, ma non a quello a cui era destinato il messaggio.
  • Un rootkit è un programma progettato per nascondere le tracce della presenza di un utente malintenzionato.

Letteratura

Collegamenti


Fondazione Wikimedia. 2010.

Scopri cos'è "Man in the Middle" in altri dizionari:

    Attacco “Man in the middle” (inglese: Man in the middle, attacco MitM) è un termine in crittografia che denota una situazione in cui un aggressore è in grado di leggere e modificare a piacimento i messaggi scambiati tra corrispondenti, e nessuno dei... ...Wikipedia

Esistono quasi sempre diversi modi per ottenere il risultato desiderato. 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 catturare informazioni per noi preziose dal traffico di rete, utilizzando per questo gli attacchi MITM.

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

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 file inviati tramite 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 dirottare le sessioni, ha competenze di base nel rilevamento degli host (se connessi a una rete o hub wireless aperto) e nella conduzione di avvelenamenti 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ò, su Internet sono ancora sufficienti risorse 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. Il codice sorgente è 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

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 testare rapidamente alcune applicazioni di rete (o protocolli) e sviluppare un PoC. Esempio di utilizzo:

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

$ pip installa mitmproxy

$easy_install mitmproxy

Vale la pena notare che mitmproxy consente anche di intercettare il traffico HTTPS emettendo un certificato autofirmato al client. Un buon esempio di come impostare l'intercettazione e la modifica del traffico può essere trovato qui.


Intercepter-NG

Sarebbe strano se questo strumento leggendario non fosse incluso nella nostra recensione. Anche se non l'hai mai usato, probabilmente ne hai sentito parlare (e devi semplicemente conoscerlo meglio): appare abbastanza spesso sulle pagine della rivista. Non descriverò completamente la sua funzionalità: in primo luogo, siamo interessati a MITM e, in secondo luogo, tale descrizione occuperà l'intero articolo.

La continuazione è disponibile solo per i membri

Opzione 1. Unisciti alla community del "sito" per leggere tutti i materiali sul sito

L'iscrizione alla community entro il periodo specificato ti darà accesso a TUTTI i materiali Hacker, aumenterà il tuo sconto cumulativo personale e ti consentirà di accumulare una valutazione Xakep Score professionale!

Un attacco man-in-the-middle è un nome generico per varie tecniche volte a ottenere l'accesso al traffico come intermediario. A causa dell’ampia varietà di queste tecniche, è problematico implementare un unico strumento per rilevare questi attacchi che funzioni per tutte le situazioni possibili. Ad esempio, in un attacco man-in-the-middle su una rete locale, viene solitamente utilizzato lo spoofing ARP (avvelenamento). Inoltre, molti strumenti di rilevamento degli attacchi man-in-the-middle monitorano le modifiche nelle coppie di indirizzi Ethernet o segnalano attività ARP sospette monitorando passivamente le richieste/risposte ARP. Ma se questo attacco viene utilizzato su un server proxy configurato in modo dannoso, una VPN o altre opzioni che non utilizzano l'avvelenamento ARP, tali strumenti sono indifesi.

Lo scopo di questa sezione è quello di esaminare alcune tecniche per rilevare attacchi man-in-the-middle, nonché alcuni strumenti progettati per determinare se sei stato preso di mira da un attacco MitM. A causa della varietà di metodologie e scenari di implementazione, non è possibile garantire il rilevamento al 100%.

1. Rilevamento della modifica del traffico

Come già accennato, gli attacchi man-in-the-middle non sempre utilizzano lo spoofing ARP. Pertanto, sebbene il rilevamento dell'attività a livello ARP sia il metodo di rilevamento più popolare, lo è ancora di più in modo universaleè il rilevamento della modifica del traffico. Il programma mitmcanary può aiutarci in questo.

Il principio di funzionamento del programma è che effettua richieste di "controllo" e salva le risposte ricevute. Successivamente ripete le stesse richieste a determinati intervalli e confronta le risposte ricevute. Il programma è abbastanza intelligente e, per evitare falsi positivi, individua gli elementi dinamici nelle risposte e li elabora correttamente. Non appena il programma rileva tracce di attività degli strumenti di attacco MitM, lo segnala.

Esempi di come alcuni strumenti possono “ereditare”:

  • MITMf, per impostazione predefinita, modifica tutti gli URL HTTPS nel codice HTML in HTTP. Rilevato confrontando il contenuto HTTP.
  • Zarp + MITMProxy, MITMProxy ha funzionalità che permette di cancellare la compressione HTTP, questo serve per la trasparenza del traffico trasmesso, questa combinazione viene rilevata dalla scomparsa della compressione precedentemente presente
  • Responder, identificato da cambiamenti improvvisi nella trasformazione delle risposte mDNS: risposta inaspettata; la risposta è interna, ma ci si aspetta quella esterna; la risposta è diversa dall'IP previsto
  • MITMCanary vs MITMf:

  • MITMCanary vs Risponditore:

  • MITMCanary vs Zarp + MITMProxy:

Sudo pip install Cython sudo apt-get install python-kivy python-dbus sudo pip install plyer uuid urlopen analisi richiesta simplejson datetime git clone https://github.com/CylanceSPEAR/mitmcanary.git cd mitmcanary/

Come già accennato, mitmcanary deve iniziare a lavorare con le query di controllo. Per fare ciò, vai alla directory

Servizio CD/

Ed esegui il file setup_test_persistence.py:

Python2 setup_test_persistence.py

L'operazione richiederà del tempo: attendi che finisca. Non dovrebbero esserci messaggi di errore (se è così, significa che mancano alcune dipendenze).

L'output sarà qualcosa del genere:

Mial@HackWare:~/bin/mitmcanary/service$ python2 setup_test_persistence.py Rilevata versione di configurazione precedente (0 invece di 14) Aggiornamento della configurazione in corso. Registro di eliminazione attivato. Analisi in corso... Eliminazione terminata! Registra l'accesso /home/mial/.kivy/logs/kivy_16-11-01_0.txt v1.9.1 v2.7.12+ (predefinito, 1 settembre 2016, 20:27:38)

Al termine di questo processo, nella stessa directory eseguire (questo avvierà un processo in background):

Python2 main.py

Successivamente, apri una nuova finestra di terminale e vai alla directory finale con mitmcanary. La mia directory è bin/mitmcanary/, quindi entro

Porta CD/mitmcanary/

e fai lì:

Python2 main.py

La prima finestra mostra qualcosa come:

Mial@HackWare:~/bin/mitmcanary/service$ python2 main.py Registra il login /home/mial/.kivy/logs/kivy_16-11-01_1.txt v1.9.1 v2.7.12+ (predefinito, 1 settembre 2016, 20:27:38) utilizzando per l'ascolto tramite socket di Tuio su 127.0.0.1:3000 In sospensione per 60 secondi In sospensione per 60 secondi In sospensione per 60 secondi In sospensione per 60 secondi In sospensione per 60 secondi In sospensione per 60 secondi

Quelli. Il programma effettua richieste di controllo una volta al minuto e cerca segnali di un attacco man-in-the-middle.

Anche la seconda finestra contiene l'output + si apre una finestra scura; gli autori del programma chiamano questa finestra “interfaccia grafica”:

Puoi aspettare un po' e navigare in Internet per assicurarti che il programma non dia falsi avvisi.

Proviamo programma classico ettercap.

Sto lanciando un normale attacco MitM con spoofing ARP. mitmcanary non risponde all'incisione stessa. Lo strumento mitmcanary genera il traffico stesso, ovvero non è richiesta alcuna azione da parte dell'utente. Dopo un po' di tempo appare un unico avviso che non viene confermato nei controlli successivi. Ma un avviso simile appare dopo pochi minuti. Senza ulteriori analisi, ho difficoltà a dire se questo sia un esempio di falso positivo: gli somiglia molto. È del tutto possibile che questo avviso sia causato da un errore di comunicazione dovuto alla necessità che il traffico passi su percorsi aggiuntivi o dalle peculiarità della mia connessione Internet di scarsa qualità.

Poiché il risultato non è ovvio (più probabile “no” che “sì”), proviamo il programma Bettercap, che ha una varietà di moduli. Non ho dubbi che quando si utilizzano vari Ettercap e/o plugin programmi aggiuntivi per espandere la funzionalità, "accenderemmo" anche mitmcanary.

Per la purezza dell'esperimento, riavvio l'attrezzatura, eseguo mitmcanary sulla macchina attaccata e Bettercap su quella attaccante. Allo stesso tempo non è necessario effettuare nuovamente richieste di controllo sulla macchina attaccata: queste vengono salvate in un file all'interno della directory del programma. Quelli. Basta avviare il servizio e l'interfaccia grafica.

E nella macchina attaccante lanceremo Bettercap con i parser abilitati:

Sudo bettercap -X

Vengono visualizzati avvisi individuali, che assomigliano più a falsi positivi.

Ma eseguendo questo comando:

Sudo bettercap -X --proxy

Sulle chiamate automatiche attaccate un gran numero di avvisi su un possibile attacco man-in-the-middle:

Pertanto, quanto più potente è uno strumento di attacco man-in-the-middle, tanto più tracce lascia nel traffico. Per l'uso pratico di mitmcanary, devono essere soddisfatte le seguenti condizioni:

  • effettuare le prime richieste su una rete fidata quando si è sicuri che non ci siano intermediari nella trasmissione del traffico;
  • modificare le risorse a cui vengono effettuate le richieste di verifica, poiché un utente malintenzionato professionista può aggiungere risorse predefinite alle eccezioni, il che lo renderà invisibile a questo strumento.

2. Rilevamento dello spoofing ARP (avvelenamento della cache ARP)

Molto spesso un attacco man-in-the-middle a una rete locale inizia con l'ARP Poisoning. Ecco perché molti strumenti progettati per rilevare gli attacchi MitM si basano su un meccanismo di monitoraggio delle modifiche nella cache ARP, che assegna la corrispondenza tra Ethernet (indirizzi MAC) e indirizzi IP.

Come esempio di tali programmi possiamo ricordare arpwatch, arpalert e un gran numero di nuovi programmi. Il programma ArpON non solo monitora le modifiche nella cache ARP, ma la protegge anche da esse.

Ad esempio, eseguiamo arpwatch in modalità debug, senza creare fork in background e inviare messaggi tramite posta. Invece, i messaggi vengono inviati a stderr (output di errore standard).

Sudo /usr/sbin/arpwatch -d

Lanciamo Ettercap sulla macchina attaccante e avviamo lo spoofing ARP. Sulla macchina attaccata osserviamo:

Il programma arpwatch ti aiuterà a scoprire rapidamente i nuovi dispositivi collegati al tuo rete locale, nonché modifiche alla cache ARP.

Un altro strumento per rilevare lo spoofing ARP in tempo reale è un plugin della stessa Ettercap, chiamato arp_cop. Sulla macchina attaccata, avvia Ettercap come segue:

Sudo ettercap -TQP arp_cop ///

E sull'aggressore inizieremo l'avvelenamento da ARP. Gli avvisi iniziano immediatamente ad apparire sulla macchina attaccata:

3. Rilevamento dello spoofing DNS

Lo spoofing DNS indica che esiste un intermediario tra te e la tua destinazione che può modificare il tuo traffico. Come è possibile rilevare che i record DNS sono stati falsificati? Il modo più semplice per farlo è confrontare le risposte di un server dei nomi di cui ti fidi. Ma le voci nella risposta inviata alla tua richiesta possono anche essere sostituite...

Quelli. è necessario verificare tramite un canale crittografato (ad esempio tramite Tor) oppure utilizzare impostazioni non standard (un'altra porta, TCP anziché UDP). Questo è più o meno lo scopo per cui è progettato il programma sans di XiaoxiaoPu (almeno per quanto ho capito). Sono stato in grado di utilizzare questo programma per reindirizzare le richieste DNS tramite Tor e tramite impostazioni non standard sul mio Server DNS. Ma non sono riuscito a convincerla a mostrarmi messaggi sullo spoofing della risposta DNS. Senza questo si perde il significato del programma.

Non sono riuscito a trovare alternative più degne.

In linea di principio, dato che gli spoofer DNS di solito monitorano solo la porta 53 e solo il protocollo UDP, anche manualmente è sufficiente verificare semplicemente lo spoofing DNS, sebbene ciò richieda il proprio server DNS con una configurazione non standard. Ad esempio, sulla macchina attaccante ho creato un file dns.conf con il seguente contenuto:

Locale mi-al.ru

Quelli. quando si richiede un record DNS per il sito mi-al.ru, verrà inviato l’IP della macchina dell’aggressore invece dell’IP reale.

Corro sulla macchina attaccante:

Sudo bettercap --dns dns.conf

E su quello attaccato faccio due controlli:

Cerca mi-al.ru # e cerca mi-al.ru -p 4560 @185.117.153.79

Risultati:

Mial@HackWare:~$ scava mi-al.ru ;<<>> DiG 9.10.3-P4-Debian<<>> mi-al.ru ;; opzioni globali: +cmd ;; Ho ricevuto la risposta: ;; ->>INTESTAZIONE<<- opcode: QUERY, status: NOERROR, id: 51993 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;mi-al.ru. IN A ;; ANSWER SECTION: mi-al.ru. 86400 IN A 192.168.1.48 ;; Query time: 2 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Wed Nov 02 09:25:20 MSK 2016 ;; MSG SIZE rcvd: 42 mial@HackWare:~$ dig mi-al.ru -p 4560 @185.117.153.79 ; <<>> DiG 9.10.3-P4-Debian<<>> mi-al.ru -p 4560 @185.117.153.79 ;; opzioni globali: +cmd ;; Ho ricevuto la risposta: ;; ->>INTESTAZIONE<<- opcode: QUERY, status: NOERROR, id: 401 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;mi-al.ru. IN A ;; ANSWER SECTION: mi-al.ru. 3799 IN A 185.26.122.50 ;; Query time: 304 msec ;; SERVER: 185.117.153.79#4560(185.117.153.79) ;; WHEN: Wed Nov 02 09:25:27 MSK 2016 ;; MSG SIZE rcvd: 53

Si può vedere che per una richiesta DNS "normale" è stato inviato l'IP locale 192.168.1.48 e quando si richiede DNS su una porta atipica è stato inviato l'IP del server corretto.

Se il server fosse configurato per utilizzare TCP (anziché UDP), il comando sarebbe simile al seguente:

Dig mi-al.ru -p 4560 +tcp @185.117.153.79

Manca chiaramente uno strumento in grado di monitorare esso stesso le risposte DNS nel traffico, di controllarle due volte rispetto a una fonte alternativa e di lanciare un allarme in caso di spoofing.

Per evitare di configurare il tuo DNS remoto, puoi effettuare query sul server dei nomi tramite Tor. Poiché tutto il traffico Tor è crittografato, le risposte DNS ottenute in questo modo vanno oltre le capacità di un intermediario. Se Tor non è già installato, installalo.

Sudo apt-get install tor

Sudo pacman -S tor

Avvia il servizio:

Sudo systemctl start tor

Se ne hai bisogno, aggiungi questo servizio all'avvio:

Sudo systemctl abilita tor

Apri il file /etc/tor/torrc e aggiungi lì le seguenti righe:

DNSPort 530 AutomapHostsOnResolve 1 AutomapHostsSuffixes .exit,.onion

Presta attenzione al numero 530. Questo è il numero di porta invece di 530, puoi specificare qualsiasi altra porta (non utilizzata); L'importante è ricordarlo.

Controlliamo ancora:

Dig mi-al.ru # e dig mi-al.ru -p 530 @localhost

Ora specifichiamo come server localhost e scrivi il numero di porta che hai specificato nelle impostazioni di /etc/tor/torrc.

Come potete vedere dallo screenshot seguente, sulla macchina su cui è stato effettuato il controllo viene effettuato un attacco di DNS spoofing:

4. Cerca le interfacce di rete in modalità promiscua

Se sulla vostra rete locale sono presenti (e soprattutto se compaiono all'improvviso) apparecchiature in modalità promiscua, ciò è molto sospetto, anche se non indica chiaramente un attacco man-in-the-middle.

In questa modalità la scheda di rete permette di ricevere tutti i pacchetti indipendentemente a chi sono indirizzati.

Nello stato normale, l'interfaccia Ethernet utilizza il filtraggio dei pacchetti del livello di collegamento e se l'indirizzo MAC nell'intestazione di destinazione del pacchetto ricevuto non corrisponde all'indirizzo MAC dell'interfaccia di rete corrente e non viene trasmesso, il pacchetto viene scartato. Nella modalità “promiscua”, il filtraggio sull'interfaccia di rete è disabilitato e tutti i pacchetti, compresi quelli non destinati al nodo corrente, sono ammessi nel sistema.

La maggior parte dei sistemi operativi richiede diritti di amministratore per abilitare la modalità promiscua. Quelli. Impostare una scheda di rete in modalità promiscua è un'azione deliberata che può servire a scopi di sniffing.

Per cercare le interfacce di rete in modalità promiscua esiste un plugin chiamato Ettercap chiamato search_promisc.

Esempio di esecuzione del plugin:

Sudo ettercap -TQP search_promisc ///

Il funzionamento del plugin non è completamente affidabile; potrebbero verificarsi errori nella determinazione della modalità dell'interfaccia di rete.

Conclusione

Alcuni metodi di attacco man-in-the-middle lasciano molte tracce e alcuni (come la ricerca passiva delle credenziali proxy) sono impossibili o quasi impossibili da rilevare.