[Tuto] Rogue AP – Épisode 1 : Un hotspot transparent

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 !

Cet article a été publié dans rogue-ap, tuto, wifi. Ajoutez ce permalien à vos favoris.

41 commentaires pour [Tuto] Rogue AP – Épisode 1 : Un hotspot transparent

  1. lorage dit :

    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

  2. fred dit :

    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?

  3. Totof dit :

    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. leidzmex dit :

    4 ans plus tard ton billet sert toujours !

    Merci

  5. silverfox dit :

    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 😉

Répondre à Sinaî00 Annuler la réponse.