Citat:
Ursprungligen postat av
Lee Sterling
Finns där något program / script släppt som utför dessa attacker?
Nej. Och anledningen är enkel - för att kunna knäcka WPA2 så som beskrivs krävs lite manuell handpåläggning. Man måste ha ett "hum" om vad som överförs.
I WPA2, likt många strömkrypton, så används en så kallad nyckelström, som består av pseudorandomdata som har genererats detemitiskt utifrån en "huvudnyckel" som förhandlas fram i fas 3 av handskakningen.
Nyckelströmmen används sedan ihop med datat med XOR. Här är det petviktigt att man aldrig återanvänder någon del av nyckelströmmen.
Säkerhetsbristen är just det, att man kan återställa "nonce" till 0, och därmed få parterna att återanvända redan förbrukade delar av nyckeln.
Nu ska jag illustrera lite varför man måste ha lite hum om innehållet i paketet.
Om man har två texter:
"Hej du" och "Server"
I hex blir dessa: 48656a206475 resp 536572766572
Låt oss nu säga att vi krypterar dessa texter med nyckeln "Nyckel" - vilket blir 4e79636b656c i hex.
Resultaten är: 061c094b0119 resp 1d1c111d001e
Angriparen vet inget om klartexten, och vet inget om nyckeln.
Men här måste man då gissa.
Efter att ha utfört en KRACK, samlat in lite data, utfört KRACK igen, och samlat in mer data.
Så har angriparen 2 dataströmmar som han vet att dessa har krypterats med exakt samma XOR-nyckel.
Vad vi vet, är att "Hej du" (XOR) "Server" = 061c094b0119 (XOR) 1d1c111d001e
Så först börjar vi med att XOR:a dem ihop, vilket blir: 1b0018560107. Vi kallar detta för "Composite ciphertext / Composite Plaintext" (CC/CP)
Sedan måste angriparen pröva sig fram. Säg nu att man prövar sig fram med ordet "Hej":
Då får man fram att lägger man ordet "Hej" i början av "CC/CP" så får man "Ser" som resultat. Men alla andra resultat ger rappakalja, t.ex. att lägga "Hej" XOR 001856 ger "H}<".
Sedan får man göra en gissning på den andra klartexten.
Säg att man gissar med "Ser du", men det stämmer inte. Sedan gissar man med "Server" - och vips så får man resten av den andra klartexten, och så är texten dekrypterad.
Med en giltig plaintext, kan man sedan få fram delar av nyckelströmmen. (Men INTE WPA2-lösenordet, INTE den förutdelade nyckeln, och INTE den förhandlade nyckeln).
Detta kan sedan användas för att dekryptera framtida data genom att utföra ytterligare KRACK-attacker.
Men, grejen är att attacken är svår att automatisera, eftersom du måste göra en korrekt gissning på klartexten.
T.ex. kan man gissa med att det är HTTP som överförs, och därmed ha en "crib" som är "GET / HTTP/1.1".
Finns också andra saker man kan göra gissningar på.
Och man kan göra om KRACK flera gånger för att avslöja större och större delar av strömnyckeln. Så gör du om krack säg 10 ggr mot samma offer, och offret gör GET-requests på lite olika ställen i datatrömmen, så har man sedan avslöjat rätt stor del av strömnyckeln.
Men sedan kan du bara nyttja dig av den del du avslöjat, så när strömnyckeln börjar ta slut så måste man göra om KRACK-attacken för att starta om på noll igen.