WPA2 KRACKattack (Key Reinstallation Attack)

En forskare vid namn Mathy Vanhoef har upptäckt sårbarheter i WPA2 som används för kryptering för trådlösa nätverk.

Sårbarheten utnyttjar en sårbarhet i nyckelutbytet som sker under ”the four way handshake”, när klienten och accesspunkten förhandlar fram krypteringsnycklar för trafiken.

Detta innebär att det är en sårbarhet i 802.11i (WPA2) standarden och inte i någon specifik produkt. Sårbarheten påverkar alla klienter som använder sig av WPA2 oavsett om du använder Pre-shared Key eller 802.1x.

Detaljerad information om sårbarheten och forskarnas rapport finns publicerad på KRACKattacks.com

Översikt

Detta är en artikel i tre delar där vi går igenom olika CVE:er och angreppsmetoder inom KRACKattack

Del 1 CVE-2017-13077: Utnyttja sårbarheten i ”the four way handshake” för att få fram PTK

Del 2 CVE-2017-13078: Utnyttja sårbarheten i ”the four way handshake” för att få fram GTK

Del 3 CVE-2017-13082: Utnyttja sårbarheten 802.11r för att få fram PTK

Sammanfattning

Trådlös kommunikation med WPA2 AES CCMP skyddas av ett par olika krypteringsnycklar.

Det finns två olika nycklar som är utsatta, PTK och GTK.

PTK (Pairwise Transient Key) är den nyckel som klient och AP använder för att kryptera unicast-trafik och är unik per uppkopplad enhet.

GTK (Group Temporal Key) är den nyckel som används för broadcast och multicast och är identisk hos alla klienter som är uppkopplade mot samma accesspunkt.

Man har även hittat en sårbarhet i 802.11r (BSS Fast transition) som använd i ”Voice Enterprise” för att cacha en krypteringsnyckel vid roaming.

Sårbarheten ligger i implementationen av ”The four way handshake”, vilket innebär att i stort sett alla trådlösa klienter är drabbade.

The four-way handshake

”The four-way handshake” används för att räkna fram PTK nyckel och distribuera GTK från accesspunkt till klient.

Sårbarheten som påverkar PTK nyckel finns i hur ”the four-way handshake” har implementerats.

Förenklat fungerar ”the four-way handshake” såhär:

Bild från Wikipedia

Samma PTK nyckel räknas fram av både klient och accesspunkt på var sin sida för att den aldrig ska behöva skickas och vara avlyssningsbar.

För att räkna fram PTK används delvis den Pre-shared key nätet använder (PMK), men även mac-adress på klient och AP samt en ”NONCE” (ett slumptal) från både klient och AP.

I paket 1 ifrån accesspunkten får klienten accesspunktens mac-adress samt NONCE och räknar fram sin PTK.

I paket 2 skickar klienten sin mac-adress samt sin NONCE till AP så att accesspunkten kan räkna ut samma PTK. Paket 2 skickar även med en krypterad bit (MIC) som accesspunkten testar att avkryptera för att verifiera att de använder samma nyckel. PTK nyckeln skickas aldrig över det trådlösa nätverket utan istället skickas de delar som behövs för att varje sida skall kunna räkna fram PTK tillsammans med den hemlighet som klienten och accesspunkten redan har dvs. Pre-shared key.

I paket 3 skickas en bekräftelse till klienten från accesspunkten att nyckeln var rätt och GTK nyckeln distribueras även till klienten i detta paket som är krypterat av PTK och alltså inte i klartext.

Paket 4 är en bekräftelse från klienten till accesspunkten att GTK är mottagen och att den nya PTK nu används.

Attacken

PTK nycklar förnyas lite då och då och det är här man kan utnyttja sårbarheter i implementationen av ”four-way handshake”.

Största problemet finns i versionerna 2.4 och 2.6 av wpa_supplicant som används i Linux (Android) för att hantera trådlösa nätverk, men problemet finns även på Windows, iOS, OS-X.

Attacken går ut på att en angripare blockerar paket 4 i ”the four way handshake” från klienten genom att sätta sig som ”man in the middle” mellan klienten och accesspunkten. Detta görs exempelvis genom att man använder sig av en dator med två trådlösa nätverkskort, där det ena emulerar accesspunkten mot klienten (med samma mac-adress som den riktiga accesspunkten) och det andra emulerar klienten mot den riktiga accesspunkten (med samma mac-adress som klienten).

Man-in-the-Middle

Bild från http://www.globalspec.com

För att lyckas med detta krävs att den som utför attacken får klienten att ansluta till den emulerade accesspunkten på en annan kanal, eftersom det inte kan vara två enheter med samma mac-adress på samma nät. Attacken kräver alltså att det finns en angripare inom klientens täckningsområde, helst närmre än den riktiga accesspunkten för att minimera risken att klienten ansluter till den äkta accesspunkten.

Angriparen kan lura över klienten till den fejkade accesspunkten genom att t.ex tillfälligt störa ut kommunikationen ifrån accesspunkten med en jammer.
Alternativt kan man t.ex skicka ett CSA paket (Channel switch announcement) som talar om för klienten att accesspunkten kommer byta kanal. Detta är genomförbart pga att management trafik mellan klienter och accesspunkten inte krypteras eller verifieras.

Angriparen skickar oförändrat vidare paket 1, paket 2 samt paket 3 mellan klienten och accesspunkten.

När klienten får paket 3, så nollställer den sitt paketnummer samt gör den tidigare framräknade PTK:n ogiltig, och det är här själva sårbarheten ligger. Det sista paketet som är nummer 4 i ordningen och innehåller bekräftelsen från klienten, blockeras utav angriparen. Detta innebär att accesspunkten kommer att skicka om paket 3, eftersom den aldrig får en bekräftelse från klienten.

Normalt sker en omsändning från accesspunkten inom en sekund efter det initiala paketet, om den inte fått tillbaka ett svar från klienten. Antalet omsändningar innan accesspunkten ger upp varierar, men det kan vara så många som upp till 19 gånger.

Värst på Linux och Android enheter

Android och Linux är särskilt sårbara eftersom de gör sin nyckel ogiltig genom att sätta den till bara 0:or. Det innebär att en angripare direkt kan kommunicera med dessa enheter genom att använda denna kända PTK nyckel, helt utan att behöva gissa eller räkna fram den. Detta gör attacken betydligt enklare att utföra och ger en omedelbar effekt på en opatchad Linux eller Android enhet.

För att en angripare skall kunna kommunicera med övriga klienter, krävs att man listar ut den PTK nyckel som används, och det är här problematiken med nollställningen av sekvensnummer spelar roll.

Kort om kryptering

802.11i använder sig av ett så kallat ”stream cipher”. Grundläggande inom denna typ av kryptering är att samma nyckel (Keystream) aldrig får användas mer än en gång för att kryptera ett meddelande.

För att säkerställa att inte två meddelanden skickas med samma krypteringsnyckel, används ett unikt paketnummer ihop med övriga paketdata som sedan krypteras av den framräknade PTK (i de fall det är en unicast ström) eller GTK:n (i de fall det är den broadcast- eller multicastström).

Ett paketnummer behöver inte vara hemligt utan själva funktionen med detta är att se till att den resulterande nyckeln alltid är unik, vilket uppnås genom att detta paketnummer inkrementeras inför varje sändning.

Den resulterande unika nyckeln används sedan ihop med en XOR (Exclusive OR) funktion med det klartextmeddelande som skall skickas och transporteras sedan ut via det trådlösa nätverkskortet som en krypterad ström.AES krypteringXOR innebär i korthet att om man jämför två olika bitar så blir resultatet av XOR 1. Jämför man två lika bitar så blir resultatet av XOR 0. Detta är för övrigt exakt samma metod som används i RAID 5, där man med hjälp av XOR jämför varje bit på hårddisk 1 med motsvarande bit på hårddisk 2 och skriver ner resultat av XOR funktionen på hårddisk 3. På så sätt kan man återskapa data oavsett vilken hårddisk som kraschar.

Matematisk beskrivning

En förenklad matematisk beskrivning över hur man får fram av dekrypteringsnyckeln ser ut så här:

⊕ = XOR funktion

P1 = Datapaket 1
KS1 = Nyckel 1
E1 = Krypterat datapaket 1
P2 = Datapaket 2
KS2 = Nyckel 2
E2 = Krypterat datapaket 2

I normalfallet så är E1 = P1 ⊕ KS1 och E2 = P2 ⊕ KS2

Exempel:
E1 = 01000011 ⊕ 01010111 = 00010100
E2 = 01001110 ⊕ 01000101 = 00001011

Om samma nyckel återanvänds så är KS1 = KS2

Exempel:
E1 = P1 ⊕ KS1
E1 = 01000011 ⊕ 01010111 = 00010100
E2 = P2 ⊕ KS1
E2 = 01001110 ⊕ 01010111 = 00011001

E1 ⊕ E2 = 00001101

P1 ⊕ P2 = 00001101

Enligt ovan så blir då E1 ⊕ E2 = P1 ⊕ P2, vilket alltså innebär att en XOR av de två krypterade paketen kommer att vara identisk med en XOR av de två okrypterade paketen.

Om man kan gissa eller vet vad det ursprungliga paketet P1 är så skapar detta alltså en matematisk förutsättning att sedan räkna fram dekrypteringsnyckeln (i vårt fall PTK alternativt GTK).

På samma sätt som med RAID5 kan man då genom att ha datat på disk 1 (i vårt fall E1) och datat på disk 2 (i vårt fall E2) räkna ut nyckeln (keystream), under förutsättning att E1 och E2 använder samma nyckel. Eftersom vi också vet vilket paketnummer klienten använder kan vi sedan räkna ut PTK.

Hos en normal trådlös klient, råder det ingen brist på paket som är förutsägbara eller identiska.

Inriktad mot klienter

Denna angreppsmetod är helt inriktad mot klienten och ger en angripare möjlighet att sitta som ”man in the middle”.

Om an angripare har knäckt en PTK nyckel kan han kommunicera med klienten utan att denne märker att han inte längre är uppkopplad till den riktiga accesspunkten.
Angriparen kan då lyssna på eller manipulera trafiken som passerar genom sin accesspunkt. Detta ger möjlighet att t.ex. fånga upp lösenord som klienten skickar, eller byta ut DNS svar vilket kan skicka vidare klienten till falska webbsidor.

Som ”man in the middle” finns möjlighet att använda andra hack t.ex SSL-strip vilket tvingar klienten att gå från HTTPS till HTTP när de surfar. Angriparen kan då i klartext se t.ex data ifrån inloggningsformulär som normalt sett krypteras.

Vad som är viktigt att tänka på i detta hack är att attacken är riktad mot klienter, inte accesspunkter, samt attacken kan i inte få fram den Pre-shared key som används på nätverket, men kan avlyssna och manipulera trafik mellan klient och accesspunkt.

Detta betyder att det är i första hand alla klienter som behöver uppdateras för att fixa sårbarheten.

Microsoft hänvisar till följande patchar

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-13080

Flera tillverkare av accesspunkter har släppt patchar till sina produkter, men det handlar i första hand om accesspunkter som används som klienter, dvs när en accesspunkt har trådlös uplink. t.ex i ett mesh nätverk.

Det finns vissa ”mitigation” tekniker som man kan använda för att förhindra hacket, t.ex WIPS (Wireless Intrusion Protection System).
WIPS håller kontrollerar bland annat att det inte finns några andra accesspunkter som sänder samma SSID och kan i fall den se ett sådan nätverk skicka en konstant ström med ”deauthentication” paket vilket hindrar klienter att koppla upp sig mot den accesspunkten.

Detta hjälper dock inte om klienter skulle röra sig utanför ditt nätverk.

The Endgame

Så varför är det dåligt med att någon sitter som ”Man-in-the-Middle” på det trådlösa nätverket? I stort sett all trafik idag är ju TLS krypterad som exempelvis HTTPS så den är ju säker ändå?

Tyvärr är det inte riktigt så enkelt. En angripare som sitter mellan klienten och det klienten försöker ansluta till, kan i stort sett göra vad den vill. Ett exempel är en så kallad SSL strip attack, vilket medför att en ouppmärksam användare skickar data via HTTP istället för HTTPS. Detta medför till exempel att inloggningar mot tjänster som Gmail och Facebook skickas i klartext och kan avlyssnas av angriparen.

https://www.youtube.com/watch?v=ZSjzo5MeFGA

Andra saker som skulle vara rent katastrofala är till exempel om en angripare exempelvis spelar in ett manöverkommando till en IoT enhet (som ofta inte har något ”packet replay attack” skydd högre upp i protokollstacken).

Ett exempel skulle till exempel vara en instruktion till en enhet om att ändra läget på ett relä, vad händer om detta paket skickas till enheten ett par hundra gånger på en några sekunder.

VPN skyddar användarna

En VPN anslutning skyddar i de allra flesta fall klienten oavsett om en angripare sitter mellan klienten och VPN servern. Att se till att VPN klienten automatiskt går igång och tunnlar ALL trafik från klienten, är en väldigt bra åtgärd för att skydda användare utanför nätverket som exempelvis på caféer och flygplatser.

Men framförallt bör administratörer se till att samtliga enheter som ansluter till trådlösa nätverk är patchade. Dessutom behövs en kontroll att framtida enheter som ansluts inte är sårbara. Framförallt enklare enheter som exempelvis sensorer och andra IoT enheter, som ibland är svåra eller omöjliga att patcha.

I kommande inlägg kommer mer info om hacken som påverkar GTK samt 802.11r.

Den 1:a november kommer Mathy släppa sina proof of concept script som utnyttjar sårbarheten.

Lämna en kommentar

E-postadressen publiceras inte. Obligatoriska fält är märkta *