Vad är människan i mitten. Detektering av man-in-the-middle-attacker (MitM-attacker)

15.05.2022

Man in the middle attack (MitM attack) är en term inom kryptografi som hänvisar till en situation där en angripare kan läsa och modifiera meddelanden som utbyts mellan korrespondenter, och ingen av de senare kan gissa sin identitet i kanalen .

En metod för att äventyra en kommunikationskanal, där en angripare, som har anslutit sig till en kanal mellan motparter, aktivt stör överföringsprotokollet, raderar, förvränger information eller lägger fram falsk information.

Attackprincip:

Antag att objekt "A" planerar att överföra viss information till objekt "B". Objekt "C" har kunskap om strukturen och egenskaperna hos den dataöverföringsmetod som används, samt faktumet om den planerade överföringen av den faktiska information som "C" planerar att avlyssna.

För att göra en attack verkar "C" vara objektet "A" som "B" och objektet "B" som "A". Objekt "A", som felaktigt tror att det skickar information till "B", skickar det till objektet "C".

Objekt "C", som har tagit emot information och har utfört några åtgärder med den (till exempel kopiering eller modifiering av den för sina egna ändamål), skickar data till mottagaren själv - "B"; objekt "B" menar i sin tur att informationen kommit direkt från "A".

Exempel på en MitM-attack:

Låt oss säga att Alice har ekonomiska problem och, med hjälp av ett program för snabbmeddelanden, bestämmer sig för att be John om en summa pengar genom att skicka meddelandet:
Alice: John, hej!
Alice: Skicka mig krypteringsnyckeln, jag har en liten förfrågan!
John: Hallå! Vänta en sekund!

Men vid denna tidpunkt lade Mr. X, som, medan han analyserade trafiken med en sniffer, märke till detta meddelande, och orden "krypteringsnyckel" väckte nyfikenhet. Det var därför han bestämde sig för att avlyssna följande meddelanden och ersätta dem med den information han behövde, och när han fick följande meddelande:
John: Här är min nyckel: 1111_D

Han ändrade Johns nyckel till sin egen och skickade ett meddelande till Alice:
John: Här är min nyckel: 6666_M

Alice, omedveten och tror att det är Johns nyckel, med hjälp av den privata nyckeln 6666_M, skickar krypterade meddelanden till John:
Alice: John, jag har problem och jag behöver pengar snabbt, överför 300 USD till mitt konto: Z12345. Tack. p.s. Min nyckel: 2222_A

Efter att ha tagit emot meddelandet, dekrypterar Mr. X det med sin nyckel, läser det och, med glädje, ändrar Alices kontonummer och krypteringsnyckel till sitt eget, krypterar meddelandet med nyckeln 1111_D, och skickar ett meddelande till John:
Alice: John, jag har problem och jag behöver pengar snabbt, överför 300 USD till mitt konto: Z67890. Tack. p.s. Min nyckel: 6666_A

Efter att ha tagit emot meddelandet dekrypterar John det med nyckeln 1111_D, och utan att ens tveka, kommer att överföra pengar till kontot Z67890...

Och därmed tjänade Mr. X, med hjälp av man-in-the-middle-attacken, $300, men Alice måste nu förklara att hon inte fick pengarna... Och John? John måste bevisa för Alice att han skickade dem...

Genomförande:

Denna typ av attack används i vissa mjukvaruprodukter för att lyssna på nätverket, till exempel:
NetStumbler- ett program med vilket du kan samla in mycket användbar data om trådlöst nätverk och lösa några problem i samband med dess drift. NetStumbler låter dig bestämma räckvidden för ditt nätverk och hjälper dig att exakt rikta din antenn för långdistanskommunikation. För varje hittad åtkomstpunkt kan du ta reda på MAC-adressen, signal-brusförhållandet, namnet på tjänsten och graden av dess säkerhet. Om trafiken inte är krypterad kommer programmets förmåga att upptäcka obehöriga anslutningar att vara användbar.

dsniff- är en uppsättning program för nätverksrevision och penetrationstestning, som tillhandahåller passiv nätverksövervakning för att söka efter data av intresse (lösenord, adresser E-post, filer, etc.), avlyssning av nätverkstrafik som normalt skulle vara otillgänglig för analys (till exempel i ett switchat nätverk), samt möjligheten att organisera MITM-attacker för att avlyssna SSH- och HTTPS-sessioner genom att utnyttja PKI-brister.

Kain och Abel - gratis program, som låter dig återställa förlorade lösenord för operativsystem Windows familj. Flera återställningslägen stöds: brute force hacking, val av ordbok, visning av lösenord dolda av asterisker, etc. Det finns också alternativ för att identifiera lösenordet genom att fånga upp informationspaket och deras efterföljande analys, spela in nätverkskonversationer, cacheanalys och annat.

Ettercap- är en sniffer, paketinterceptor och inspelare för lokala Ethernet-nätverk, som stöder aktiv och passiv analys av flera protokoll, och det är också möjligt att "kasta" din egen data i en befintlig anslutning och filtrera "i farten" utan att störa anslutningen synkronisering. Programmet låter dig avlyssna SSH1, HTTPS och andra säkra protokoll och ger dig möjlighet att dekryptera lösenord för följande protokoll: 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– en uppsättning verktyg för att bedöma säkerheten för trådlösa klienter, är en trådlös sniffer som, genom att passivt lyssna på 802.11 Probe Request-ramar, låter dig upptäcka klienter och deras föredragna/betrodda nätverk. En falsk accesspunkt kan sedan skapas för ett av de efterfrågade nätverken, till vilken den automatiskt kan anslutas. Förfalskade tjänster på hög nivå kan användas för att stjäla personuppgifter eller utnyttja klientsårbarheter på värden.

AirJack- en uppsättning program som, enligt experter inom området WiFi-hackning, är bästa verktyget för att generera olika 802.11-ramar. AirJack innehåller ett antal verktyg utformade för att upptäcka ett dolt ESSID, skicka sessionsavslutningsramar med en falsk MAC, utföra MitM-attacker och modifiera den.

Motaktion:

För att undvika attacker av denna typ behöver prenumeranterna "A" och "B" bara sända till varandra via en pålitlig kanal digitala signaturer offentliga krypteringsnycklar. Sedan, när man jämför nyckelsignaturer i krypteringssessioner, kommer det att vara möjligt att avgöra vilken nyckel som användes för att kryptera data och om nycklarna har ersatts.

Det finns nästan alltid flera sätt att uppnå önskat resultat. Detta gäller även informationssäkerhetsområdet. Ibland, för att uppnå ett mål, kan du använda brute force, leta efter hål och utveckla bedrifter själv, eller lyssna på vad som sänds över nätverket. Dessutom sista alternativetär ofta optimalt. Det är därför vi idag kommer att prata om verktyg som hjälper oss att fånga information som är värdefull för oss från nätverkstrafik, med hjälp av MITM-attacker för detta.

MITMf

Låt oss börja med en av de mest intressanta kandidaterna. Detta är ett helt ramverk för att genomföra man-i-mitten-attacker, byggd ovanpå sergio-proxy. Nyligen inkluderad i Kali Linux. För att installera det själv, klona bara förvaret och kör ett par kommandon:

# setup.sh # pip installation -r requirements.txt

# pip install -r requirements.txt

Den har en arkitektur som är utbyggbar genom plugins. Bland de viktigaste är följande:

  • Spoof - låter dig omdirigera trafik med ARP/DHCP-spoofing, ICMP-omdirigeringar och modifiera DNS-frågor;
  • Sniffer - denna plugin spårar inloggningsförsök för olika protokoll;
  • BeEFAutorun - låter dig starta BeEF-moduler automatiskt baserat på typen av operativsystem och klientwebbläsare;
  • AppCachePoison - utför en cacheförgiftningsattack;
  • SessionHijacking - kapar sessioner och lagrar de resulterande cookies i Firefly-profilen;
  • BrowserProfiler - försöker få en lista över plugins som används av webbläsaren;
  • FilePwn - låter dig ersätta filer som skickas via HTTP med hjälp av Backdoor Factory och BDFProxy;
  • Injicera - injicerar godtyckligt innehåll i en HTML-sida;
  • jskeylogger - bäddar in en JavaScript-keylogger på klientsidor.

Om den här funktionen verkar otillräcklig för dig kan du alltid lägga till din egen genom att implementera lämplig tillägg.

PuttyRider

Ett annat verktyg värt att uppmärksamma. Det är sant, till skillnad från alla andra verktyg som betraktas idag, är det mycket snävt specialiserat. Som författaren till projektet själv säger inspirerades han till att skapa ett sådant verktyg av att den viktigaste datan under penetrationstester fanns på Linux/UNIX-servrar, som administratörer kopplade till via SSH/Telnet/rlogin. Dessutom var det i de flesta fall mycket lättare att få åtkomst till administratörens dator än till målservern. Efter att ha penetrerat systemadministratörens maskin återstår bara att se till att PuTTY körs och, med hjälp av detta verktyg, bygga en backbro till angriparen.

Verktyget låter dig inte bara fånga "kommunikation" mellan administratören och Fjärrserver(inklusive lösenord), men kör också godtyckliga skalkommandon inom en given session. Dessutom kommer allt detta att ske helt öppet för användaren (administratören). Om du är intresserad av tekniska detaljer, till exempel hur PuTTY implementeras i processen, rekommenderar jag att du läser författarens presentation.

Ett ganska gammalt bruk, född för mer än åtta år sedan. Avsedd för kloningssessioner genom att stjäla cookies. För att kapa sessioner har han grundläggande färdigheter i att upptäcka värdar (om de är anslutna till ett öppet trådlöst nätverk eller hubb) och genomföra ARP-förgiftning. Problemet är bara att i dag, till skillnad från för åtta år sedan, använder nästan alla stora företag som Yahoo eller Facebook SSL-kryptering, vilket gör detta verktyg helt värdelöst. Trots detta finns det fortfarande tillräckligt med resurser på Internet som inte använder SSL, så det är för tidigt att skriva av verktyget. Dess fördelar inkluderar det faktum att den automatiskt integreras i Firefox och skapar en separat profil för varje avlyssnad session. Källaär tillgängligt i förvaret, och du kan bygga det själv med följande kommandosekvens:

# 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 sessionstjuv

# 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 har inget direkt att göra med att utföra MITM-attacker. Som du kan gissa från namnet är verktyget designat för fuzzing. Detta är en liten icke-deterministisk nätverksfuzzer, implementerad i Python, som slumpmässigt ändrar innehållet i nätverkstrafikpaket. Stöder TCP-protokoll och UDP. Du kan konfigurera den så att den bara fuzzar en sida. Det är praktiskt när du snabbt behöver testa någon nätverksapplikation (eller protokoll) och utveckla en PoC. Användningsexempel:

Python proxyfuzz -l -r -s

python proxyfuzz -l -r -s

Listan med alternativ inkluderar:

  • w - anger antalet förfrågningar som skickas innan fuzzing börjar;
  • c - fuzz bara klienten (annars båda sidor);
  • s - fuzz bara servern (annars båda sidor);
  • u - UDP-protokoll (annars används TCP).

Mellanmannen

Ett verktyg för att utföra MITM-attacker på olika protokoll som presenterades på DEF CON-konferensen. Alfaversionen stödde HTTP-protokollet och hade tre coola plugins i sin arsenal:

  • plugin-beef.py - injicerar Browser Exploitation Framework (BeEF) i alla HTTP-förfrågningar som kommer från det lokala nätverket;
  • plugin-metasploit.py - bäddar in en IFRAME i okrypterade (HTTP)-förfrågningar, vilket laddar webbläsarexploater från Metasploit;
  • plugin-keylogger.py - bäddar in en JavaScript onKeyPress-händelsehanterare för alla textfält som kommer att skickas över HTTPS, vilket gör att webbläsaren skickar det användarinmatade lösenordet tecken för tecken till angriparens server innan hela formuläret skickas.

Middler analyserar inte bara automatiskt nätverkstrafik och hittar cookies i den, men begär dem också självständigt från klienten, det vill säga processen automatiseras maximalt. Programmet garanterar insamling av alla oskyddade konton i datornätverk(eller offentlig hotspot) till vars trafik den har åtkomst. För att programmet ska fungera korrekt måste följande paket vara installerade på systemet: Scapy, libpcap, readline, libdnet, python-netfilter. Tyvärr har förvaret inte uppdaterats på länge, så du måste lägga till ny funktionalitet själv.

Ett konsolverktyg som låter dig interaktivt undersöka och ändra HTTP-trafik. Tack vare sådana färdigheter används verktyget inte bara av pentestare/hackers, utan också av vanliga utvecklare som använder det till exempel för att felsöka webbapplikationer. Med dess hjälp kan du ta emot detaljerad information om vilka önskemål ansökan gör och vilka svar den får. Mitmproxy kan också hjälpa till att studera särdragen i funktionen hos vissa REST API: er, särskilt de som är dåligt dokumenterade.

Installationen är extremt enkel:

$ sudo aptitude installera mitmproxy

Det är värt att notera att mitmproxy också låter dig fånga upp HTTPS-trafik genom att utfärda ett självsignerat certifikat till klienten. Bra exempel Du kan lära dig hur du konfigurerar avlyssning och modifiering av trafik.

Dsniff

Tja, det här verktyget är i allmänhet en av de första sakerna som du bör tänka på så snart du hör
"MITM attack". Verktyget är ganska gammalt, men fortsätter att uppdateras aktivt, vilket är goda nyheter. Det är ingen mening att prata i detalj om dess kapacitet under de fjorton åren av dess existens, den har bevakats på Internet mer än en gång. Till exempel i en guide som denna:

eller instruktioner från vår hemsida:

Slutligen..

Som vanligt har vi inte tittat på alla verktyg, utan bara de mest populära, det finns också många föga kända projekt som vi kanske pratar om någon gång. Som du kan se finns det ingen brist på verktyg för att utföra MITM-attacker, och, vilket inte händer särskilt ofta, är ett av de coola verktygen implementerat för Windows. Det finns inget att säga om nix-system - en hel sort. Så jag tror att du alltid kan hitta rätt verktyg för stöld
andras meriter. Oj, det vill säga för att testa.

Attackprincip

Attacken börjar vanligtvis med avlyssning av kommunikationskanalen och slutar med att kryptoanalytikern försöker ersätta det avlyssnade meddelandet och extrahera användbar information, omdirigera den till någon extern resurs.

Antag att objekt A planerar att överföra viss information till objekt B. Objekt C har kunskap om strukturen och egenskaperna hos den dataöverföringsmetod som används, samt faktumet av den planerade överföringen av den faktiska information som C planerar att avlyssna. För att utföra en attack "uppträder" C för objekt A som B, och objekt B som A. Objekt A, som felaktigt tror att det skickar information till B, skickar det till objekt C. Objekt C, efter att ha tagit emot informationen, och utför vissa åtgärder med den (till exempel kopiering eller modifiering för sina egna syften) vidarebefordrar data till mottagaren själv - B; Objekt B anser i sin tur att informationen kommit direkt från A.

Exempel på attack

Injektion av skadlig kod

En man-in-the-middle-attack tillåter en kryptoanalytiker att infoga sin kod i e-postmeddelanden, SQL-uttryck och webbsidor (det vill säga tillåter SQL-injektioner, HTML/script-injektioner eller XSS-attacker), och till och med modifiera användarladdade binära filer för att komma åt konto användare eller ändra beteendet hos ett program som laddats ner av användaren från Internet.

Nedgradera Attack

Termen "nedgraderad attack" syftar på en attack där en kryptoanalytiker tvingar användaren att använda mindre säkra funktioner, protokoll som fortfarande stöds av kompatibilitetsskäl. Denna typ av attack kan utföras på SSH-, IPsec- och PPTP-protokollen.

SSH V1 istället för SSH V2

En angripare kan försöka ändra anslutningsparametrarna mellan servern och klienten när en anslutning upprättas mellan dem. Enligt ett föredrag som hölls vid Blackhat Conference Europe 2003, kan en kryptoanalytiker "tvinga" en klient att starta en SSH1-session istället för SSH2 genom att ändra versionsnumret "1.99" för SSH-sessionen till "1.51", vilket innebär att använda SSH V1 . SSH-1-protokollet har sårbarheter som kan utnyttjas av en kryptoanalytiker.

IPsec

I detta attackscenario vilseleder kryptoanalytikern sitt offer att tro att IPsec-sessionen inte kan börja i andra änden (servern). Detta resulterar i att meddelanden skickas explicit om värddatorn körs i återställningsläge.

PPTP

Vid förhandlingsstadiet för PPTP-sessionsparametrar kan angriparen tvinga offret att använda mindre säker PAP-autentisering, MSCHAP V1 (det vill säga "rulla tillbaka" från MSCHAP V2 till version 1), eller inte använda kryptering alls.

En angripare kan tvinga sitt offer att upprepa steget med att förhandla om PPTP-sessionsparametrar (skicka ett Terminate-Ack-paket), stjäla lösenordet från en befintlig tunnel och upprepa attacken.

Kommer kryptering att hjälpa?

Låt oss överväga fallet med en vanlig HTTP-transaktion. I det här fallet kan en angripare ganska enkelt dela upp den ursprungliga TCP-anslutningen i två nya: en mellan sig själv och klienten, den andra mellan sig själv och servern. Detta är ganska enkelt att göra, eftersom kopplingen mellan klienten och servern mycket sällan är direkt, och i de flesta fall är de anslutna via ett antal mellanliggande servrar. En MITM-attack kan utföras på vilken som helst av dessa servrar.

Men om klienten och servern kommunicerar med HTTPS, ett protokoll som stöder kryptering, kan en man-in-the-middle-attack också utföras. Den här typen av anslutning använder TLS eller SSL för att kryptera förfrågningar, vilket verkar göra kanalen skyddad från sniffning och MITM-attacker. En angripare kan skapa två oberoende SSL-sessioner för varje TCP-anslutning. Klienten upprättar en SSL-anslutning med angriparen, som i sin tur skapar en anslutning till servern. I sådana fall varnar webbläsaren vanligtvis för att certifikatet inte är signerat av en betrodd certifikatutfärdare, men den genomsnittliga användaren ignorerar lätt denna varning. Dessutom kan angriparen ha ett certifikat signerat av en certifieringsmyndighet. Således kan HTTPS-protokollet inte anses säkert mot MITM-attacker.

MITM-attackdetektering

För att upptäcka en man-i-mitten-attack måste du analysera nätverkstrafik. Till exempel, för att upptäcka en SSL-attack, bör du vara uppmärksam på följande parametrar:

  • Server IP adress
  • DNS-server
  • X.509 - servercertifikat
    • Är certifikatet självsignerat?
    • Är certifikatet signerat?
    • Har certifikatet återkallats?
    • Har certifikatet ändrats nyligen?
    • Har andra klienter på Internet fått samma certifikat?

MITM-attackimplementationer

De listade programmen kan användas för att utföra man-in-the-middle-attacker, samt för att upptäcka dem och testa systemet för sårbarheter.

Exempel i litteraturen

Ett tydligt litterärt exempel kan ses i "Sagan om Tsar Saltan" av A. S. Pushkin, där tre "människor i mitten" dyker upp: en vävare, en kock och Babarikha. Det är de som ersätter brev adresserade till tsaren och hans svarskorrespondens.

se även

  • Aspidistra (engelska) - Brittisk radiosändare som användes under andra världskrigets "invasion", en variant av MITM-attacken.
  • The Babington Plot (engelska) - en konspiration mot Elizabeth I, under vilken Walsingham avlyssnade korrespondens.

Andra attacker

  • "Man in the Browser" är en typ av attack där angriparen omedelbart kan ändra transaktionsparametrar och byta sida helt transparent för offret.
  • Meet-in-the-middle-attack är en kryptografisk attack som, precis som födelsedagsattacken, utnyttjar en avvägning mellan tid och minne.
  • "Fröken i mittanfallet" - effektiv metod den så kallade omöjliga differentiella kryptoanalysen.
  • Reläattack är en variant av en MITM-attack som bygger på att ett avlyssnat meddelande vidarebefordras till en giltig mottagare, men inte till den som meddelandet var avsett för.
  • Ett rootkit är ett program utformat för att dölja spår av en angripares närvaro.

Litteratur

Länkar


Wikimedia Foundation. 2010.

Se vad "Man in the Middle" är i andra ordböcker:

    "Man in the middle"-attack (engelska: Man in the middle, MitM-attack) är en term i kryptografi som betecknar en situation där en angripare kan läsa och modifiera efter behag de meddelanden som utbyts mellan korrespondenter, och ingen av... ... Wikipedia

Det finns nästan alltid flera sätt att uppnå önskat resultat. Detta gäller även informationssäkerhetsområdet. Ibland, för att uppnå ett mål, kan du använda brute force, leta efter hål och utveckla bedrifter själv, eller lyssna på vad som sänds över nätverket. Dessutom är det sista alternativet ofta optimalt. Det är därför vi idag kommer att prata om verktyg som hjälper oss att fånga information som är värdefull för oss från nätverkstrafik, med hjälp av MITM-attacker för detta.

MITMf

Låt oss börja med en av de mest intressanta kandidaterna. Detta är ett helt ramverk för att utföra man-in-the-middle-attacker, byggt på basis av sergio-proxy. Nyligen inkluderad i Kali Linux. För att installera det själv, klona bara förvaret och kör ett par kommandon:

# setup.sh # pip installation -r requirements.txt

Den har en arkitektur som är utbyggbar genom plugins. Bland de viktigaste är följande:

  • Spoof - låter dig omdirigera trafik med ARP/DHCP-spoofing, ICMP-omdirigeringar och modifiera DNS-frågor;
  • Sniffer - denna plugin spårar inloggningsförsök för olika protokoll;
  • BeEFAutorun - låter dig starta BeEF-moduler automatiskt baserat på typen av operativsystem och klientwebbläsare;
  • AppCachePoison - utför en cacheförgiftningsattack;
  • SessionHijacking - kapar sessioner och lagrar de resulterande cookies i Firefly-profilen;
  • BrowserProfiler - försöker få en lista över plugins som används av webbläsaren;
  • FilePwn - låter dig ersätta filer som skickas via HTTP med hjälp av Backdoor Factory och BDFProxy;
  • Injicera - injicerar godtyckligt innehåll i en HTML-sida;
  • jskeylogger - bäddar in en JavaScript-keylogger på klientsidor.

Om den här funktionen verkar otillräcklig för dig kan du alltid lägga till din egen genom att implementera lämplig tillägg.

PuttyRider

Ett annat verktyg värt att uppmärksamma. Det är sant, till skillnad från alla andra verktyg som betraktas idag, är det mycket snävt specialiserat. Som författaren till projektet själv säger inspirerades han till att skapa ett sådant verktyg av att den viktigaste datan under penetrationstester fanns på Linux/UNIX-servrar, som administratörer kopplade till via SSH/Telnet/rlogin. Dessutom var det i de flesta fall mycket lättare att få åtkomst till administratörens dator än till målservern. Efter att ha penetrerat systemadministratörens maskin återstår bara att se till att PuTTY körs och, med hjälp av detta verktyg, bygga en backbro till angriparen.


Verktyget låter dig inte bara fånga "kommunikation" mellan administratören och fjärrservern (inklusive lösenord), utan också att utföra godtyckliga skalkommandon inom en given session. Dessutom kommer allt detta att ske helt öppet för användaren (administratören). Om du är intresserad av tekniska detaljer, till exempel hur PuTTY implementeras i processen, rekommenderar jag att du läser författarens presentation.


Ett ganska gammalt bruk, född för mer än åtta år sedan. Avsedd för kloningssessioner genom att stjäla cookies. För att kapa sessioner har han grundläggande färdigheter i att upptäcka värdar (om de är anslutna till ett öppet trådlöst nätverk eller hubb) och genomföra ARP-förgiftning. Problemet är bara att i dag, till skillnad från för åtta år sedan, använder nästan alla stora företag som Yahoo eller Facebook SSL-kryptering, vilket gör detta verktyg helt värdelöst. Trots detta finns det fortfarande tillräckligt med resurser på Internet som inte använder SSL, så det är för tidigt att skriva av verktyget. Dess fördelar inkluderar det faktum att den automatiskt integreras i Firefox och skapar en separat profil för varje avlyssnad session. Källkoden är tillgänglig i förvaret, och du kan bygga den själv med hjälp av följande kommandosekvens:

# 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 sessionstjuv

ProxyFuzz

ProzyFuzz har inget direkt att göra med att utföra MITM-attacker. Som du kan gissa från namnet är verktyget designat för fuzzing. Detta är en liten icke-deterministisk nätverksfuzzer, implementerad i Python, som slumpmässigt ändrar innehållet i nätverkstrafikpaket. Stöder TCP- och UDP-protokoll. Du kan konfigurera den så att den bara fuzzar en sida. Det är praktiskt när du snabbt behöver testa någon nätverksapplikation (eller protokoll) och utveckla en PoC. Användningsexempel:

Python proxyfuzz -l -r -s

Listan med alternativ inkluderar:

  • w - anger antalet förfrågningar som skickas innan fuzzing börjar;
  • c - fuzz bara klienten (annars båda sidor);
  • s - fuzz bara servern (annars båda sidor);
  • u - UDP-protokoll (annars används TCP).

Mellanmannen

Ett verktyg för att utföra MITM-attacker på olika protokoll som presenterades på DEF CON-konferensen. Alfaversionen stödde HTTP-protokollet och hade tre coola plugins i sin arsenal:

  • plugin-beef.py - injicerar Browser Exploitation Framework (BeEF) i alla HTTP-förfrågningar som kommer från det lokala nätverket;
  • plugin-metasploit.py - bäddar in en IFRAME i okrypterade (HTTP)-förfrågningar, vilket laddar webbläsarexploater från Metasploit;
  • plugin-keylogger.py - bäddar in en JavaScript onKeyPress-händelsehanterare för alla textfält som kommer att skickas över HTTPS, vilket gör att webbläsaren skickar det användarinmatade lösenordet tecken för tecken till angriparens server innan hela formuläret skickas.

Middler analyserar inte bara automatiskt nätverkstrafik och hittar cookies i den, utan begär dem också självständigt från klienten, det vill säga processen automatiseras maximalt. Programmet garanterar insamling av alla oskyddade konton på ett datornätverk (eller offentlig hotspot) till vars trafik det har åtkomst. För att programmet ska fungera korrekt måste följande paket vara installerade på systemet: Scapy, libpcap, readline, libdnet, python-netfilter. Tyvärr har förvaret inte uppdaterats på länge, så du måste lägga till ny funktionalitet själv.

Ett konsolverktyg som låter dig interaktivt undersöka och ändra HTTP-trafik. Tack vare sådana färdigheter används verktyget inte bara av pentestare/hackers, utan också av vanliga utvecklare som använder det till exempel för att felsöka webbapplikationer. Med dess hjälp kan du få detaljerad information om vilka förfrågningar applikationen gör och vilka svar den får. Mitmproxy kan också hjälpa till att studera särdragen i funktionen hos vissa REST API: er, särskilt de som är dåligt dokumenterade.

Installationen är extremt enkel:

$ sudo aptitude installera mitmproxy

$ pip installera mitmproxy

$easy_install mitmproxy

Det är värt att notera att mitmproxy också låter dig fånga upp HTTPS-trafik genom att utfärda ett självsignerat certifikat till klienten. Ett bra exempel på hur man ställer in trafikavlyssning och modifiering finns här.


Intercepter-NG

Det vore konstigt om inte detta legendariska instrument fanns med i vår recension. Även om du aldrig har använt den, har du förmodligen hört talas om den (och måste helt enkelt lära känna den bättre) - den förekommer ganska ofta på tidningens sidor. Jag kommer inte att helt beskriva dess funktionalitet - för det första är vi intresserade av MITM, och för det andra kommer en sådan beskrivning att ta upp hela artikeln.

Fortsättning är endast tillgänglig för medlemmar

Alternativ 1. Gå med i "site"-communityt för att läsa allt material på sajten

Medlemskap i communityn inom den angivna perioden ger dig tillgång till ALLT hackermaterial, ökar din personliga kumulativa rabatt och låter dig samla ett professionellt Xakep-poängbetyg!

En man-in-the-middle-attack är ett generiskt namn för olika tekniker som syftar till att få tillgång till trafik som mellanhand. På grund av den stora variationen av dessa tekniker är det problematiskt att implementera ett enda verktyg för att upptäcka dessa attacker som skulle fungera i alla möjliga situationer. Till exempel, i en man-in-the-middle-attack på ett lokalt nätverk, används vanligtvis ARP-spoofing (förgiftning). Och många man-in-the-middle-attackdetekteringsverktyg övervakar ändringar i Ethernet-adresspar/eller rapporterar misstänkt ARP-aktivitet genom att passivt övervaka ARP-förfrågningar/svar. Men om denna attack används på en skadligt konfigurerad proxyserver, VPN eller andra alternativ som inte använder ARP-förgiftning, är sådana verktyg hjälplösa.

Syftet med det här avsnittet är att granska några tekniker för att upptäcka man-in-the-middle-attacker, såväl som några verktyg som är utformade för att avgöra om du är föremål för en MitM-attack. På grund av mångfalden av metoder och implementeringsscenarier kan 100 % upptäckt inte garanteras.

1. Detektering av trafikändring

Som redan nämnts använder man-in-the-middle-attacker inte alltid ARP-spoofing. Därför, även om aktivitetsdetektering på ARP-nivå är den mest populära detekteringsmetoden, mer på ett universellt sättär upptäckten av trafikändringar. Mitmcanary-programmet kan hjälpa oss med detta.

Funktionsprincipen för programmet är att det gör "kontroll"-förfrågningar och sparar mottagna svar. Därefter upprepar den samma förfrågningar med vissa intervall och jämför svaren den får. Programmet är ganska intelligent och, för att undvika falska positiva, identifierar det dynamiska element i svar och bearbetar dem korrekt. Så snart programmet har upptäckt spår av aktivitet från MitM-attackverktyg, rapporterar det detta.

Exempel på hur vissa verktyg kan "ärva":

  • MITMf ändrar som standard alla HTTPS-URL:er i HTML-kod till HTTP. Upptäcks genom att jämföra HTTP-innehåll.
  • Zarp + MITMProxy, MITMProxy har funktionalitet som gör att du kan rensa HTTP-komprimering, detta används för transparens av överförd trafik, denna kombination upptäcks genom att tidigare befintlig komprimering försvinner
  • Responder, identifierad av plötsliga förändringar i transformationen av mDNS-svar: oväntat svar; svaret är internt, men externt förväntas; svaret skiljer sig från den förväntade IP-adressen
  • MITMCanary vs MITMf:

  • MITMCanary vs Responder:

  • MITMCanary vs Zarp + MITMProxy:

Sudo pip installation Cython sudo apt-get installera python-kivy python-dbus sudo pip installation plyer uuid urlopen analysbegäran simplejson datetime git clone https://github.com/CylanceSPEAR/mitmcanary.git cd mitmcanary/

Som redan nämnts måste mitmcanary börja arbeta med kontrollfrågor. För att göra detta, gå till katalogen

CD-tjänst/

Och kör filen setup_test_persistence.py:

Python2 setup_test_persistence.py

Detta kommer att ta lite tid - vänta tills det är klart. Det ska inte finnas några felmeddelanden (i så fall saknar du vissa beroenden).

Utgången blir ungefär så här:

Mial@HackWare:~/bin/mitmcanary/service$ python2 setup_test_persistence.py Äldre konfigurationsversion upptäckt (0 istället för 14) Uppgradering av konfiguration pågår. Rensningsved avfyrad. Analyserar... Rensningen är klar! Record log in /home/mial/.kivy/logs/kivy_16-11-01_0.txt v1.9.1 v2.7.12+ (standard, 1 sep 2016, 20:27:38)

När denna process är klar, kör i samma katalog (detta startar en bakgrundsprocess):

Python2 main.py

Efter det, öppna ett nytt terminalfönster och gå till slutkatalogen med mitmcanary. Min katalog är bin/mitmcanary/, så jag går in

Cd bin/mitmcanary/

och gör där:

Python2 main.py

Det första fönstret visar något i stil med:

Mial@HackWare:~/bin/mitmcanary/service$ python2 main.py Logga in /home/mial/.kivy/logs/kivy_16-11-01_1.txt v1.9.1 v2.7.12+ (standard, 1 sep 2016, 20:27:38) med hjälp av för socket lyssning för Tuio på 127.0.0.1:3000 Sova i 60 sekunder Sova i 60 sekunder Sova i 60 sekunder Sova i 60 sekunder Sova i 60 sekunder Sova i 60 sekunder

De där. Programmet gör kontrollförfrågningar en gång i minuten och letar efter tecken på en man-in-the-midten-attack.

Det andra fönstret innehåller också utdata + ett mörkt fönster öppnas. Författarna till programmet kallar detta fönster för ett "grafiskt gränssnitt":

Du kan vänta ett tag och surfa på Internet för att se till att programmet inte utfärdar några falska varningar.

Låt oss försöka klassiskt program ettercap.

Jag lanserar en vanlig MitM-attack med ARP-spoofing. mitmcanary svarar inte på etsningen själv. Verktyget mitmcanary genererar trafiken själv, dvs ingen användaråtgärd krävs. Efter en tid visas en enda varning, som inte bekräftas vid efterföljande kontroller. Men en liknande varning dyker upp efter några minuter. Utan ytterligare analys har jag svårt att säga om detta är ett exempel på ett falskt positivt - det ser mycket ut som det. Det är mycket möjligt att denna varning orsakas av ett kommunikationsfel på grund av behovet av trafik att passera ytterligare rutter, eller på grund av egenheterna med min internetanslutning av dålig kvalitet.

Eftersom resultatet inte är uppenbart (mer sannolikt "nej" än "ja"), låt oss prova Bettercap-programmet, som har en mängd olika moduler. Jag tvivlar inte på att när jag använder olika Ettercap och/eller plugins ytterligare program för att utöka funktionaliteten skulle vi också "lysa upp" för mitmcanary.

För experimentets renhet startar jag om utrustningen, kör mitmcanary på den attackerade maskinen och Bettercap på den attackerande. Samtidigt är det inte nödvändigt att göra kontrollbegäranden igen på den attackerade maskinen - de sparas i en fil i katalogen med programmet. De där. Starta bara tjänsten och det grafiska gränssnittet.

Och i attackmaskinen kommer vi att starta Bettercap med parsare aktiverade:

Sudo bettercap -X

Individuella varningar dyker upp, som också ser mer ut som falska positiva.

Men kör detta kommando:

Sudo bettercap -X --proxy

På den attackerade maskinen ringer Ett stort antal varningar om en möjlig man-in-the-midten-attack:

Så ju kraftfullare ett man-in-the-middle-attackverktyg är, desto fler spår lämnar det i trafiken. För praktisk användning av mitmcanary måste följande villkor vara uppfyllda:

  • göra initiala förfrågningar på ett pålitligt nätverk när du är säker på att det inte finns någon mellanhand i överföringen av trafik;
  • redigera resurserna till vilka verifieringsförfrågningar görs, eftersom en professionell angripare kan lägga till standardresurser till undantag, vilket kommer att göra honom osynlig för detta verktyg.

2. Upptäcka ARP-spoofing (ARP-cacheförgiftning)

Mycket ofta börjar en man-in-the-midten-attack på ett lokalt nätverk med ARP-förgiftning. Det är därför många verktyg utformade för att upptäcka MitM-attacker är baserade på en mekanism för att övervaka ändringar i ARP-cachen, som tilldelar överensstämmelse mellan Ethernet (MAC-adresser) och IP-adresser.

Som exempel på sådana program kan vi återkalla arpwatch, arpalert och ett stort antal nya program. ArpON-programmet övervakar inte bara ändringar i ARP-cachen, utan skyddar den också från dem.

Som ett exempel, låt oss köra arpwatch i felsökningsläge, utan att skapa gafflar i bakgrunden och skicka meddelanden med post. Istället skickas meddelanden till stderr (standardfelutgång).

Sudo /usr/sbin/arpwatch -d

Låt oss starta Ettercap på attackmaskinen och börja med ARP-spoofing. På den attackerade maskinen observerar vi:

Programmet arpwatch hjälper dig att snabbt få reda på nya enheter som är anslutna till din lokalt nätverk, samt ändringar i ARP-cachen.

Ett annat verktyg för att upptäcka ARP-spoofing i realtid är en plugin från självaste Ettercap, som kallas arp_cop. På den attackerade maskinen, starta Ettercap enligt följande:

Sudo ettercap -TQP arp_cop ///

Och på angriparen kommer vi att börja ARP-förgiftning. Varningar börjar omedelbart visas på den attackerade maskinen:

3. Detektering av DNS-spoofing

DNS-spoofing indikerar att det finns en mellanhand mellan dig och din destination som kan ändra din trafik. Hur kan du upptäcka att DNS-poster har förfalskats? Det enklaste sättet att göra detta är att jämföra med svaren från en namnserver du litar på. Men posterna i svaret som skickas till din förfrågan kan också ersättas...

De där. du måste kontrollera antingen genom en krypterad kanal (till exempel genom Tor), eller använda icke-standardinställningar (en annan port, TCP istället för UDP). Detta är ungefär vad sans-programmet från XiaoxiaoPu är designat för (åtminstone som jag förstår det). Jag kunde använda det här programmet för att omdirigera DNS-förfrågningar via Tor och genom icke-standardinställningar till min DNS-server. Men jag kunde inte få henne att visa mig meddelanden om DNS-svarsspoofing. Utan detta går programmets betydelse förlorad.

Jag kunde inte hitta några mer värdiga alternativ.

I princip, med tanke på att DNS-spoofers vanligtvis endast övervakar port 53, och endast UDP-protokollet, räcker det även manuellt att helt enkelt kontrollera faktumet av DNS-spoofing, även om detta kräver din egen DNS-server med en icke-standardkonfiguration. Till exempel, på den attackerande maskinen skapade jag en fil dns.conf med följande innehåll:

Lokal mi-al.ru

De där. när du begär en DNS-post för mi-al.ru-webbplatsen kommer IP-adressen för angriparens dator att skickas istället för den riktiga IP-adressen.

Jag kör på attackmaskinen:

Sudo bettercap --dns dns.conf

Och på den attackerade gör jag två kontroller:

Gräv mi-al.ru # och gräv mi-al.ru -p 4560 @185.117.153.79

Resultat:

Mial@HackWare:~$ dig mi-al.ru ;<<>> DiG 9.10.3-P4-Debian<<>> mi-al.ru ;; globala alternativ: +cmd ;; Fick svar: ;; ->>HUVUD<<- 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 ;; globala alternativ: +cmd ;; Fick svar: ;; ->>HUVUD<<- 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

Det kan ses att för en "vanlig" DNS-begäran skickades lokal IP 192.168.1.48, och när man begärde DNS på en atypisk port skickades rätt server-IP.

Om servern var konfigurerad för att använda TCP (snarare än UDP), skulle kommandot se ut så här:

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

Det saknas helt klart ett verktyg som själv skulle övervaka DNS-svar i trafiken, dubbelkolla dem mot en alternativ källa och larma vid spoofing.

För att undvika att sätta upp din egen fjärr-DNS kan du göra namnserverfrågor via Tor. Eftersom all Tor-trafik är krypterad är DNS-svaren som erhålls på detta sätt bortom möjligheterna för en mellanhand. Om Tor inte redan är installerat, installera det.

Sudo apt-get installation tor

Sudo pacman -S tor

Starta tjänsten:

Sudo systemctl start tor

Om du behöver det, lägg till den här tjänsten vid start:

Sudo systemctl aktivera tor

Öppna filen /etc/tor/torrc och lägg till följande rader där:

DNSPort 530 AutomapHostsOnResolve 1 AutomapHostsSuffix .exit,.onion

Var uppmärksam på numret 530. Detta är portnumret istället för 530, du kan ange vilken annan (oanvänd) port som helst. Det viktigaste är att komma ihåg det.

Vi kollar igen:

Gräv mi-al.ru # och gräv mi-al.ru -p 530 @localhost

Nu anger vi som server lokal värd, och skriv portnumret som du angav i /etc/tor/torrc-inställningarna.

Som du kan se från följande skärmdump utförs en DNS-spoofing-attack på den maskin som kontrollen gjordes på:

4. Sök efter nätverksgränssnitt i promiskuöst läge

Om det finns (och speciellt om det plötsligt dyker upp) utrustning i promiskuöst läge på ditt lokala nätverk är detta mycket misstänkt, även om det inte tydligt indikerar en man-i-mitten-attack.

I detta läge låter nätverkskortet dig ta emot alla paket oavsett vem de är adresserade till.

I normalt tillstånd använder Ethernet-gränssnittet länklagerpaketfiltrering och om MAC-adressen i destinationshuvudet för det mottagna paketet inte matchar MAC-adressen för det aktuella nätverksgränssnittet och inte sänds, så kasseras paketet. I "promiskuöst" läge är filtrering på nätverksgränssnittet inaktiverat och alla paket, inklusive de som inte är avsedda för den aktuella noden, tillåts i systemet.

De flesta operativsystem kräver administratörsrättigheter för att aktivera promiskuöst läge. De där. Att ställa in ett nätverkskort till promiskuöst läge är en avsiktlig åtgärd som kan tjäna sniffande syften.

För att söka efter nätverksgränssnitt i promiskuöst läge finns en plugin som heter Ettercap som kallas sök_promisc.

Exempel på att köra plugin:

Sudo ettercap -TQP search_promisc ///

Insticksprogrammets funktion är inte helt tillförlitlig. Fel kan uppstå vid fastställandet av nätverksgränssnittsläget.

Slutsats

Vissa man-in-the-middle-attackmetoder lämnar många spår, och vissa (som passiv proxy-referenssökning) är omöjliga eller nästan omöjliga att upptäcka.