Je vais commencer ici une suite d’articles à propos des Rogue AP, et des possibilités d’attaque qu’ils permettent. C’est un sujet très vaste, dans un premier temps je me limiterai au scénario Honeypot, c’est-à-dire un réseau ouvert et « gratuit » auquel la cible se connecte de son plein gré.
Pour ceux qui se poseraient la question, un Rogue AP dans ce contexte est un point d’accès WiFi en apparence innocent, mais qui est en réalité « piégé » pour attaquer les clients qui s’y connectent : récupération de trafic, détournement vers des sites non-prévus, injection de scripts ou de virus/trojans/malwares,…
Mon but est que cette série soit progressive, en commençant par des trucs simples puis en les complexifiant petit-à-petit. On va donc commencer facile par un simple hotspot transparent, qui servira à partager sa connexion Internet en créant son propre réseau WiFi.
Sauf avis contraire, les commandes que je donnerai ici ont été testées avec succès sur une BackTrack 5R3 KDE 32 bits non-modifiée.
Je pars du principe que vous utilisez une machine qui dispose de deux interfaces réseau :
- une interface sans-fil qui servira au partage de connexion chez moi ce sera wlan1)
- et une interface (filaire ou sans fil) qui sera connectée à Internet (chez moi ce sera wlan0)
Il y a une série d’éléments à mettre en place pour réaliser un partage de connexion :
- le réseau wi-fi lui-même
- un serveur DHCP pour attribuer une IP aux clients (ainsi que les infos passerelle et DNS)
- configurer la machine pour autoriser le transfert du trafic d’une interface à l’autre
La partie sans-fil
Pour cet aspect, nous allons utiliser airbase-ng de la suite (aircrack-ng). On crée une interface monitor mon0, et on indique à airbase-ng de l’utiliser pour le réseau
airmong-ng start wlan1 airbase-ng -c 3 -e 'WiFi Gratuit' mon0 # J'ai choisi le canal 3 (-c 3) arbitrairement, # airbase-ng n'a pas l'air content si on ne lui indique pas un canal
Après ça, un nouveau réseau appelé « WiFi gratuit » devrait apparaître, non sécurisé. Mais même si les clients peuvent se connecter dessus, ils ne pourront rien en faire.
Serveur DHCP
Le serveur DHCP va attribuer une IP aux clients, ainsi que leur indiquer quelle passerelle et quel serveur DNS utiliser. Alors même si dhcp3 est le serveur DHCP de référence sur BackTrack, je préfère utiliser udhcpd qui est plus léger et plus facile à configurer. Il faut commencer par l’installer via les dépôts :
apt-get update && apt-get install udhcpd
Ensuite il faut générer son fichier de configuration, j’utilise ceci :
# Nombre maximum de clients connectés max_leases 10 # Première adresse disponible pour les clients start 192.168.2.10 # Dernière adresse disponible end 192.168.2.20 # Interface sur laquelle udhcpd va écouter, at0 est créée par airbase-ng interface at0 # Domaine des clients, n'importe quelle valeur fera l'affaire domain local # Serveur DNS à utiliser, ici ceux de Google mais on peut choisir option dns 8.8.8.8 # Sous-réseau à utiliser, valeur typique (le LAN sera du type 192.168.2.*) option subnet 255.255.255.0 # Adresse de la passerelle (nous), on devra attribuer cette adresse à notre machine option router 192.168.2.1 # Durée d'attribution de l'adresse IP, 7200 secondes est une valeur standard lease 7200 # Fichier dans lequel udhcpd va stocker les associations MAC IP # On devra le créer avant de lancer udhcpd lease_file /tmp/udhcpd.leases
On copie tout ça dans un fichier /tmp/udhcpd.conf (attention, comme tout ce qui est dans /tmp/, il sera effacé au reboot).
On en profite pour créer le fichier /tmp/udhcpd.leases
touch /tmp/udhcpd.leases
Avant de démarrer le serveur, on doit encore configurer l’interface at0 (créée par airbase-ng) :
ifconfig at0 up # Les valeurs doivent correspondre à celles de udhcpd.conf ifconfig at0 192.168.2.1 netmask 255.255.255.0
On peut alors démarrer le serveur DHCP :
udhcpd /tmp/udhcpd.conf
Routage et pare-feu
Il faut maintenant configurer la machine pour autoriser le transfert de trafic d’une interface à l’autre.
# Activer le transfert au niveau du noyau echo 1 > /proc/sys/net/ipv4/ip_forward # Indiquer au pare-feu de rediriger les paquets vers wlan0 (qui est connectée au net, chez moi) iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Et voilà 🙂 Avec ça, les clients devraient pouvoir se connecter au réseau « WiFi gratuit » et surfer de façon transparente sur le net sans savoir qu’ils passent à travers un ordi plutôt qu’un routeur WiFi classique. A noter que ceci ne sert pas qu’à piéger le client, c’est un moyen simple de partager une connexion (par exemple filaire).
Voici un script qui automatise tout ça. Copiez-collez le contenu de ceci dans un fichier « rogue.sh » sur une BackTrack 5R3-KDE-32 « vierge » (mais déjà connectée au net), rendez-le exécutable (chmod +x rogue.sh) et laissez la magie opérer 😀
#!/bin/bash # Create a transparent WiFi AP to share a connection # Tested & OK with BackTrack 5R3-KDE-32 # Author : Antares145 - 2013, licence CC-BY-NC # Spécifier les interfaces réseau ici : NET_IFACE=wlan0 ROGUE_IFACE=wlan1 # Choisir un répertoire pour les fichiers de log # (! dans /tmp/ ils seront effacés au reboot) LOG_FILE=/tmp/log.txt # Nettoyage des processus et des fichiers # Les redirections &> sont là pour ne rien afficher à l'écran rm /tmp/udhcpd.* &> /dev/null rm $LOG_FILE &> /dev/null killall airbase-ng &> /dev/null killall udhcpd &> /dev/null airmon-ng stop mon0 &> /dev/null # Installation de udhcpd et génération de sa config echo "Installation de Udhcpd" echo "(Ca peut prendre un peu de temps...)" # Pour utiliser le script sous Kali 1.0, décommenter la ligne suivante #apt-get update &>> $LOG_FILE apt-get install udhcpd &>> $LOG_FILE echo "max_leases 10 start 192.168.2.10 end 192.168.2.20 interface at0 domain local option dns 8.8.8.8 option subnet 255.255.255.0 option router 192.168.2.1 lease 7200 lease_file /tmp/udhcpd.leases" > /tmp/udhcpd.conf touch /tmp/udhcpd.leases &>> $LOG_FILE #Création du réseau WiFi echo "Démarage du réseau WiFi" airmon-ng start $ROGUE_IFACE &>> $LOG_FILE airbase-ng -c 3 -e 'WiFi Gratuit' mon0 &>> $LOG_FILE & sleep 5 ifconfig at0 up ifconfig at0 192.168.2.1 netmask 255.255.255.0 &>> $LOG_FILE # Démarrage du DHCP et du Transfert de trafic echo "Démarrage du serveur DHCP" udhcpd /tmp/udhcpd.conf &>> $LOG_FILE echo 1 > /proc/sys/net/ipv4/ip_forward # Effacer toutes les règles IpTables pour ne garder que les bonnes iptables -F iptables -X iptables -t nat -F iptables -t nat -X # Activer le transfert vers l'interface $NET_IFACE iptables -t nat -A POSTROUTING -o $NET_IFACE -j MASQUERADE echo "Le réseau est opérationnel !" exit 0
Le script est volontairement simple voire simpliste, une fois que j’aurai fini les tutos je travaillerai sur un outil plus complet et intégré. En attendant, j’essaie de faire en sorte que le code puisse être compris par tout le monde.
Remarques
- Il est possible de travailler avec une seule interface sans-fil (par exemple wlan0) qui sert à la fois d’émetteur et d’interface connectée, mais ça complique un peu le scénario. Il faut faire attention au canal utilisé pour le hotspot (qui doit être le même que pour le réseau entrant), et le surf de la victime sera plus lent (puisque l’interface a deux fois plus de boulot). Dans un objectif de simplicité, je conseille de travailler avec deux interfaces (physiquement) distinctes.
- La plage IP utilisée par le hotspot devrait être différente de celle utilisée sur le « réseau principal » (et donc sur l’interface qui est connectée au net). J’utilise 192.168.2.*, mais vous devrez adapter si cette plage IP est déjà utilisée sur votre réseau en amont (c’est rare mais on ne sait jamais).
Ce script servira de base pour les autres articles, donc c’est important que ceci fonctionne chez vous avant d’attaquer la suite. Et si en plus vous avez tout compris, c’est encore mieux 😀
Des questions, des réactions ou des suggestions pour améliorer le script (je ne demande pas mieux) ? Les commentaires sont là pour ça !
bonjour a tous
je me suis lancé dans le rogue avec toutes les explications de ton site ça va pas trop mal
mais quand je fait
» ifconfig at0 up »
j’ai un message d’erreur :
ifconfig at0 up
at0: ERROR while getting interface flags: Aucun périphérique de ce type
root@kali:~#
pourtant l’interface est bien crée par airbase :
root@kali:~# airbase-ng -c 3 -e wifi-sfr wlan1mon
14:56:52 Created tap interface at0
14:56:52 Trying to set MTU on at0 to 1500
14:56:52 Trying to set MTU on wlan1mon to 1800
14:56:52 Access Point with BSSID 00:C0:CA:84:F4:9B started.
merci de votre aide
je vais jeter un oeil sur les questions si je peut aider a mon tour.
yvan
Bonjour Monsieur.
Voici la marche a suivre pour regler CE probleme:
Rajoutez les lignes de commande suivante dans le dossier etc/NetworkManager/NetworkManager.conf:
[keyfile]
unmanaged-devices=interface-name:wlan0mon;interface-name:wlan1mon;interface-name:wlan2mon;interface-name:wlan3mon;interface-name:wlan4mon;interface-name:wlan5mon;interface-name:wlan6mon;interface-name:wlan7mon;interface-name:wlan8mon;interface-name:wlan9mon;interface-name:wlan10mon;interface-name:wlan11mon;interface-name:wlan12mon
Si vous avez d autres questions?
Bonjour ,
Merci pour le tutoriel. Cela fonctionne bien.
Cependant, j’ai une question. Si je veux sniffer le trafic avec wiresharechark j’écoute sur l’interface at0. J’ai des messages bizarre contenant DUP ( Duplicate j’imagine )
Est ce dû au masquerading our dois-je peut-être écouter sur le wlan0 ?
Sur at0 je préfère il y a moins de traffic.
Merci
4 ans plus tard ton billet sert toujours !
Merci
bonjour,
si j’ai bien compris … car j’ai un message d’erreur moi aussi au passage de la config at0 …
Je passe en écoute avec iwconfig:
—————————————————-
ifconfig wlan0 down
service network-manager stop
killall wpa_supplicant
iwconfig wlan0 mode monitor
macchanger –mac=00:11:22:33:44:55
ifconfig wlan0 up
—————————————————–
du coup vu que mon interface reste « wlan0 » je rajoute:
unmanaged-devices=interface-name:wlan0
au fichier ‘etc/NetworkManager/NetworkManager.conf’ ???
c’est bien ca???
ben je suis co* car je vais tester !!! 😀 si je reviens pas commenté c’etais ça 😉 … pour ceux qui ont le meme souci 😉