Wifi security

Cyberboswachters

Tim Dams

Deze cursus werd gemaakt met hulp van AI-assistentie. Sommige afbeeldingen zijn door AI gegenereerd.

Wat leer je in dit hoofdstuk?

Na dit hoofdstuk kan je:

  • beveiligingsproblemen van draadloos vs bedraad uitleggen
  • concreet beschrijven waarom WEP fundamenteel gebroken is
  • de evolutie WEP → WPA1 → WPA2 → WPA3 technisch motiveren
  • personal vs enterprise mode (802.1X) kiezen voor een gegeven context
  • de impact van KRACK kaderen en uitleggen waarom forward secrecy telt

IEEE 802.11b · 1999 Vrijheid met een prijskaartje

Plots geraak je van overal in het gebouw op het netwerk. En zelfs erbuiten.

Een netwerkkabel heeft ingebouwde beveiliging: je hebt fysieke toegang nodig.

Met wifi ligt het bedrijfsnetwerk open in een straal van tientallen meters.

Wardriving

Rondrijden in de stad met een laptop die scant naar draadloze netwerken.

Extra aandacht voor netwerken met geen of zwakke beveiliging.

De term komt van wardialing, uit de cultfilm Wargames (1983).

Problemen met wifi

Eavesdropping

Iedereen kan “zien” wat er door de lucht vliegt. Het medium is letterlijk de lucht.

Invasion

Zonder beveiliging verbind je zomaar. Bij een kabel heb je fysieke toegang nodig.

Man-in-the-middle

De aanvaller zet zich tussen jou en het netwerk. Daarover straks meer.

Daarbovenop: rogue access points als backdoor en DoS op fysiek niveau.

Backdoor Rogue access points

Een rogue AP: de ideale backdoor voor hackers.

Goedbedoelde werknemers plaatsen zelf een (goedkoop) AP bij om het bereik uit te breiden.

Eén zwak beveiligd AP tussen tientallen goed beveiligde: de aanvaller kiest het zwakste punt.

DoS Ruis op de frequentieband

  1. Wifi-apparaten delen een frequentieband (2.4 GHz / 5 GHz)
  2. CSMA/CA: eerst luisteren of de band vrij is, dan pas zenden
  3. De aanvaller vult de band continu met ruis
  4. Legale gebruikers krijgen nooit meer iets verstuurd

Bedraad werkt met CSMA/CD (Collision Detection). Botsingen in de lucht zijn niet te detecteren, daarom Collision Avoidance.

Managementframes

In de 802.11-standaard zijn managementframes niet beveiligd. Geen CIA.

Ze regelen het beheer: verbinden SSID broadcasten netwerk verlaten handover

Overgenomen van bedrade netwerken, waar fysieke beveiliging volstond.

Aanvallen via managementframes

Disassociation flooding

Valse “verlaat het netwerk”-frames → DoS.

Identity spoofing

MAC-adres spoofen → sessie overnemen.

Impersonation

Fake AP opzetten → MITM-aanval.

Eve spooft de wifi-sessie van Alice.

Impersonation Fake access points

Een fake AP voor een MITM-aanval.

Met de Linux-tool AirSnarf zet je zo een fake hotspot op.

Klassieker: een fake Telenet Wi-Free met een geclonede loginpagina. Elke login levert een wachtwoord op.

802.11 · 1999 De originele standaard

Hoofdstuk 8, Authentication and privacy: 10 van de 528 pagina’s.

Verbinden met een wifi-netwerk

  1. Scannen: netwerken in de buurt ontdekken (SSID = netwerknaam)
  2. Verbinden (joining): fysieke parameters instellen (kanaal, snelheid)
  3. Authenticatie: bewijzen dat je toegang hebt
  4. Associatie: association ID toewijzen → netwerk is bruikbaar

Dat loopt allemaal via de onbeveiligde managementframes.

SSID verbergen?

SSID-broadcasting uitschakelen is snake oil.

Het SSID zit ook in een hoop andere pakketjes. Een wifi-hacker plukt het er zo uit.

Authenticatie in 802.11

Open-system

Geen authenticatie: de client vraagt, het AP zegt “welkom”.

Shared-key

Challenge-response met de WEP-sleutel.

MAC-ACL

Whitelist van MAC-adressen. Niet in de standaard, wel bij veel fabrikanten.

Origineel geen mutual authentication: je kan zomaar verbinden met een fake AP.

Shared-key authentication

  1. AP stuurt een random challenge (plaintext)
  2. Client encrypteert met de WEP-sleutel en stuurt de response terug
  3. AP decrypteert en vergelijkt: match = toegang

Wie meesnift, ziet plaintext én ciphertext: een gekende-plaintextaanval. Oh ironie: open-system is daardoor veiliger.

Wired Equivalent Privacy WEP

  • Belofte: even veilig als een bedraad netwerk
  • Hart: de RC4-streamcipher
  • WEP-sleutel = seed voor de keystream
  • Keystream \(\oplus\) frame = ciphertext
  • Optioneel: veel netwerken gebruikten het niet eens

WEP in de 802.11 stack.

WEP: encryptie en integriteit

WEP encryptie.
  • CRC-32 genereert een ICV (Integrity Check Value)
  • De ICV wordt mee geëncrypteerd door RC4
  • Frame aanpassen → ICV ongeldig (in theorie…)

WEP frame lay-out.

De initialisatievector (IV)

Zelfde sleutel = zelfde keystream voor elk frame. Dat kan niet.

  1. Elk frame krijgt een 24-bit IV
  2. WEP-sleutel + IV = nieuwe seed per frame
  3. RC4 maakt telkens een andere keystream
  4. De IV gaat als plaintext mee in de header

Een sleutel verlengen met een getal heet salting. Dat zie je terug in het hoofdstuk over authenticatie.

WEP: encryptie

WEP encryptie.

WEP: decryptie

WEP decryptie.

Een horrorverhaal Hoe WEP faalde

Rond de eeuwwisseling geraakte je in bijna elk wifi-netwerk binnen enkele minuten.

Vier grote problemen

1. RC4

Streamcipher, niet gemaakt voor een datagramnetwerk.

2. IV

Te klein en slecht gespecificeerd: weak keys en collisions.

3. CRC-32

Lineair: bitflip-aanvallen mogelijk.

4. Sleutels

Geen re-keying, geen centraal sleutelbeheer.

En een vijfde die alles versterkt: geen replay protection. De aanvaller mag pakketjes onbeperkt heruitzenden en gebruikt je netwerk als experimenteertuin.

Probleem 1 · RC4 Geen random access

In een datagramnetwerk gaan geregeld bits verloren en moeten pakketjes opnieuw verstuurd worden.

AES (blockcipher)

  • Random access: herbeginnen waar het misliep

RC4 (streamcipher)

  • 1 bit verloren → alle bits erna ook verloren
  • Beide zijden moeten resetten: inefficiënt

Probleem 1 · RC4

Dezelfde sleutel twee keer gebruiken bij een streamcipher is fataal.

\((p_i \oplus k_i) \oplus (q_i \oplus k_i) = p_i \oplus q_i\)

De sleutel valt weg. Ken je één plaintext, dan is de andere triviaal te berekenen. WEP probeert dit op te lossen met de IV… maar ook dat gaat fout.

Probleem 2 · IV Weak keys: de FMS-aanval

Fluhrer, Mantin & Shamir (2001): sommige IV’s zorgen voor sleutellekkage naar de keystream.

  1. Capteer ~60 weak keystreams
  2. De eerste 2 bytes plaintext zijn gekend: de LLC-header begint met 0xAA
  3. \(k_i = c_i \oplus p_i\): begin van de keystream gekend
  4. WEP-sleutel achterhaald

Implementaties: Airsnort WEPCrack

Probleem 2 · IV Collisions

Twee pakketjes met dezelfde IV = dezelfde keystream.

16,7 mln

mogelijke IV’s (\(2^{24}\))

916/s

pakketjes bij 11 Mbps en frames van 1500 bytes

± 5 uur

en alle IV’s zijn op: collisions gegarandeerd

\[\frac{16.777.216}{916\;pakketten/s} \approx 18.302\;s \approx 5\;uur\]

IV collisions misbruiken

Passief

  • Meeluisteren tot er een IV collision is
  • Twee pakketten met dezelfde IV XOR’n → XOR van beide plaintexts
  • IP-trafiek is voorspelbaar → cryptanalyse

Actief

  • Gekende plaintext van buitenaf naar het AP sturen (bv. ping)
  • Ciphertext sniffen
  • \(k_i = c_i \oplus p_i\)keystream!

Gekende plaintext injecteren

Known plaintext injecteren.

Keystreams laten groeien

Geen replay protection: de aanvaller laat een keystream byte per byte groeien.

  1. Ping die 1 byte langer is dan de keystream
  2. Willekeurige byte achter de keystream plakken (1 kans op 256)
  3. XOR’n en versturen
  4. Reactie? Juiste byte! Geen reactie? Volgende proberen

Keystreams groeien.

Probleem 2 · IV IV-selectie

De standaard zei enkel “geregeld updaten”. Fabrikanten kozen zelf:

Vaste IV

Collision bij het 2e pakket al.

Willekeurige IV

50% kans op collision na ~5000 pakketten.

Incrementele IV

Collision zodra een 2e apparaat op het netwerk komt.

De verjaardagenparadox

23

mensen: dan is er al meer dan 50% kans dat twee dezelfde verjaardag hebben

~5000

pakketjes met een willekeurige 24-bit IV: meer dan 50% kans op een collision

Probleem 3 · CRC-32 CRC-32 is lineair

\[CRC(m_1) \oplus CRC(m_2) = CRC(m_1 \oplus m_2)\]

CRC is gemaakt om toevallige transmissiefouten op te sporen, geen bewuste aanpassingen.

Gevolg: je kan een pakket aanpassen zonder de CRC te breken.

De bitflip-aanval

  1. Capteer 1 geldig WEP-frame
  2. XOR de payload met een bitflip-masker
  3. Nieuwe geldige ICV dankzij de lineariteit
  4. AP aanvaardt, de hogere laag stuurt een gekende foutboodschap
  5. \(k = c \oplus p\)keystream

Het AP aanvaardt het frame omdat de ICV klopt, ook al is de inhoud rommel.

Bitflip-aanval: visualisatie

De bitflip aanval.

Bitflip-aanval: gekende foutboodschappen

Corrupte pakketjes genereren gekende foutboodschappen.

Probleem 4 Sleutelmanagement

Dagenlang dezelfde WEP-sleutel op alle apparaten. Een ontslagen werknemer is een potentieel lek, en admins vervangen sleutels manueel.

  • Geen geautomatiseerd re-keying-mechanisme
  • Geen gecentraliseerd sleutelbeheer

WEP is het perfecte schoolvoorbeeld van wat er fout loopt wanneer je zelf een crypto-algoritme ontwikkelt.

Bart Preneel, KUL/COSIC

2001 WEP oplossen

Miljoenen WEP-apparaten in gebruik en dringend een oplossing nodig.

WiFi Protected Access Twee pistes

WPA1

Tijdelijke oplossing. Werkt op bestaande hardware via een firmware-update.

WPA2

De ultieme oplossing. Volledig nieuwe protocollen, nieuwe hardware vereist.

Personal of enterprise?

Zowel WPA1 als WPA2 bestaan in twee modes.

Personal

  • Gedeelde sleutel: pre-shared key (PSK)
  • Voor thuisgebruik
  • Geen 802.1X

Enterprise

  • 802.1X
  • Centraal sleutelbeheer
  • Voor bedrijven

Overzicht: WEP → WPA1 → WPA2

Standaard Encryptie Integrity Auth & sleutelbeheer
WEP RC4 CRC-32 Geen
WPA1-Personal TKIP Michael Pre-shared key
WPA1-Enterprise TKIP Michael 802.1X
WPA2-Personal CCMP CBC-MAC Pre-shared key
WPA2-Enterprise CCMP CBC-MAC 802.1X

WPA1: de beperkingen

WPA1 is een wrapper rond WEP, met drie randvoorwaarden:

Firmware-update

Miljoenen bestaande apparaten moeten via een update mee kunnen.

Minimale overhead

AP’s draaiden al op maximale capaciteit.

Vast aan WEP

RC4 zit deels hardwired in de hardware.

802.1X: enterprise-mode

  • (Mutual) authentication
  • Centraal user management (RADIUS-server)
  • Veilige sleuteluitwisseling

Het AP is enkel een doorgeefluik tussen client en authenticatieserver.

Port-based authenticatie.

802.1X: een framework

802.1X is geen algoritme. Je plugt er een EAP-methode in.

EAP-TLS

TLS-tunnel + authenticatie met een certificaat.

EAP-TTLS / PEAP

TLS-tunnel + username/wachtwoord. Geen client-certificaat nodig.

802.1X modulariteit.

802.1X: authenticatie-flow

Het authenticatie-proces met 802.1X.
  1. Client en AP kiezen een EAP-methode
  2. AP stuurt door naar de server
  3. Server maakt sleutels voor het AP
  4. AP ververst de sleutels
  5. Client krijgt toegang

802.1X: twee sets sleutels

Sessiesleutels

Pairwise keys: uniek per client, enkel geldig tijdens de sessie.

Groepssleutels

Group keys: gedeeld door alle clients van het AP (multicast).

Met dynamic key exchange worden de sleutels automatisch ververst.

Temporal Key Integrity Protocol TKIP: de WEP-wrapper van WPA1

Michael (MIC)

Tegen het CRC-32-probleem (bitflips).

IV-regels

Tegen replay-aanvallen.

Key mixing

Per pakket, tegen weak keys in RC4.

Re-keying

Om de ~10.000 pakketten: sleutelbeheer.

Michael: de MIC

Cryptografisch sterker dan CRC-32: payload + Michael-sleutel + adres van verzender en ontvanger.

MIC generatie met Michael.

Twee foute MICs na elkaar? Aanval gedetecteerd!

  1. Sleutels verwijderen
  2. Verbinding verbreken
  3. 1 minuut wachten

TKIP: een betere IV

24 bit

de IV bij WEP

48 bit

de IV bij TKIP: de TKIP Sequence Counter (TSC)

En een strikte volgorde: een pakket met een lagere IV dan het vorige wordt geweigerd. Dat houdt replay-aanvallen tegen.

TKIP: key mixing in twee fases

  1. Fase 1: Temporal Key + Transmitter Address + TSC → intermediate sleutel (uniek per client)
  2. Fase 2: intermediate sleutel + TSC → per-pakket RC4-sleutel

Key mixing proces.

WPA1: het totaalplaatje

WPA1 in volle glorie: een wrapper rond WEP.

WPA1-Personal kraken via de handshake: coWPAtty Aircrack

AES als hart WPA2 en WPA3

WPA2: AES vervangt RC4

Eindelijk geen streamcipher meer. WPA2 combineert twee AES-modes:

AES Counter mode

Encryptie: blokken onafhankelijk van elkaar.

AES CBC-MAC

Integriteit: berekent de MIC.

Samen: CCMP, Counter Mode Cipher Block Chaining Message Authentication Code Protocol.

CCMP: elegant

CCMP: confidentiality en integrity parallel.
  • CBC-MAC: keten van encrypties, het finale blok = MIC
  • Counter mode: blokken onafhankelijk, een payload counter als extra seed
  • 48-bit IV (packet number)

Personal mode

Iedereen met de passphrase kan ook de data van de andere gebruikers decrypteren.

In enterprise mode is dat onmogelijk.

WPA1/WPA2-Personal blijft ook altijd gevoelig voor dictionary-aanvallen op de pre-shared key. Kies een sterk wachtwoord.

2017 KRACK: aan alles komt een einde

  • De Belgische onderzoeker Mathy Vanhoef vindt een fout in WPA2
  • Niet in AES zelf, wel in de handshake-procedure
  • Gedocumenteerd op krackattacks.com

De IEEE moest aan een opvolger beginnen: WPA3.

2018 WPA3 (“Wifi 6”): state of the art

SAE

Simultaneous Authentication of Equals: een veiligere personal mode.

Geen offline dictionary

Resistent tegen offline dictionary attacks, anders dan WPA2-Personal.

Forward secrecy

Oude pakketten zijn achteraf niet te decrypteren: “store now, decrypt later” werkt niet.

GCMP-256

Geauthenticeerde encryptie.

2018 WPA3: klaar voor de 21e eeuw

Wifi Easy Connect

IoT-apparaten gebruiksvriendelijk met het netwerk verbinden.

Wifi Enhanced Open

Publieke hotspots: iedere client krijgt z’n eigen veilig kanaal met het AP.

Gedaan met in de Starbucks de trafiek van omstaanders sniffen.

Conclusie

WEP
fundamenteel gebroken (RC4, IV, CRC, geen sleutelbeheer)
WPA1
tijdelijke patch (TKIP), een wrapper rond WEP
WPA2
AES/CCMP, sterk maar KRACK-kwetsbaar
WPA3
state of the art met forward secrecy, SAE en GCMP

Wat neem je mee?

  • WPA3 waar mogelijk, minstens WPA2-Enterprise
  • Enterprise-mode in een bedrijf
  • Een sterk wachtwoord in personal mode
  • AP’s fysiek én softwarematig gepatcht
  • WEP en WPA1
  • SSID verbergen als “beveiliging”