Créer un routeur vulnérable avec l’Esp32

Apprendre le fonctionnement du WiFi, découvrir les vulnérabilités dans le but de les exploiter est vital pour tous ceux qui s’intéressent au pentesting et au audits wireless. Dans ce cas, nous utiliserons l’Esp32 comme router. Notre objectif est d’utiliser l’Esp32 comme un router avec lequel nous pouvons l’utiliser comme routeur victime pour effectuer des attaques telles que le brute forcing, le pmkid attack, etc. Ou bien l’utiliser comme moyen pour créer un evil-twin ou un MITM.

Quels sont les prérequis pour créer un point d’accès ?

Les exigences sont minimes, nous aurons seulement besoin de :

    - PC : avec Linux comme système d'exploitation.
    - Esp32  : pour l'utiliser comme routeur vulnérable. 
    - Python : nous aurons besoin que Python soit préalablement installé.

Une fois que vous avez les exigences, nous pouvons commencer avec l’installation.

L’installation des outils et du firmware.

Pour commencer, nous devons installer le micrologiciel qui se trouve dans le repertoire avec cette commande:

┌─[root@parrot][~]
└──╼ #git clone https://github.com/martin-ger/esp32_nat_router.git 

Il faudra également l’outil esptool qui nous permettra de flasher le micrologiciel sur l’esp32. Nous le téléchargerons avec la commande suivante :

┌─[root@parrot][~]
└──╼ #pip install esptool 

Comment flasher le firmware sur l’ESP32 ?

Après avoir installé esptool y el firmware, nous devons nous déplacer vers le répertoire où se trouvent les binaires.

┌─[user@parrot][~]
└──╼ $cd esp32_nat_router/

Et une fois à l’intérieur du répertoire, nous flasherons les binaires qui correspondent au firmware à l’aide de la commande :

┌─[user@parrot][~/esp32_nat_router]
└──╼ $esptool.py --chip esp32 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 40m --flash_size detect \
0x1000 build/esp32/bootloader.bin \
0x8000 build/esp32/partitions.bin \
0x10000 build/esp32/firmware.bin

Si tout s’est bien passé, cela devrait normalement nous donner cela comme résultat:

┌─[user@parrot][~/esp32_nat_router]
└──╼ $esptool.py --chip esp32 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 40m --flash_size detect \
0x1000 build/esp32/bootloader.bin \
0x8000 build/esp32/partitions.bin \
0x10000 build/esp32/firmware.bin
esptool.py v4.5.1
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32-PICO-D4 (revision v1.0)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: d8:a0:1d:66:17:48
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00001000 to 0x00006fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x00010000 to 0x000f6fff...
Compressed 22656 bytes to 14222...
Wrote 22656 bytes (14222 compressed) at 0x00001000 in 1.6 seconds (effective 113.6 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 117...
Wrote 3072 bytes (117 compressed) at 0x00008000 in 0.1 seconds (effective 407.6 kbit/s)...
Hash of data verified.
Compressed 942832 bytes to 601480...
Wrote 942832 bytes (601480 compressed) at 0x00010000 in 53.7 seconds (effective 140.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Et bingo! Maintenant nous avons l’esp32 en tant que routeur.

Pour configurer le routeur, nous devons nous connecter à l’AP (Point d’accès) ESP32_NAT_Router et utiliser un navigateur web pour accéder à l’adresse IP: 192.168.4.1

Nous rencontrerons le portail pour la configuration de l’AP.

Tout d’abord, veuillez entrer les valeurs appropriées pour le réseau WiFi de liaison montante, les “Paramètres STA”. Laissez le mot de passe vide pour les réseaux ouverts. Cliquez sur “Connecter”. L’ESP32 redémarrera et se connectera à votre routeur WiFi.

Vous pouvez maintenant vous reconnecter et recharger la page pour modifier les “Paramètres Soft AP”. Cliquez sur “Définir” et l’ESP32 redémarrera à nouveau. Il est maintenant prêt à faire passer le trafic via le Soft AP nouvellement configuré. Veuillez noter que ces modifications affectent également l’interface de configuration, c’est-à-dire que pour effectuer une configuration supplémentaire, connectez-vous à l’ESP32 via l’un des réseaux WiFi nouvellement configurés. Vous pouvez également utiliser l’ESP32.

Si vous souhaitez entrer un “+” dans l’interface Web, vous devez utiliser l’encodage hexadécimal de style HTTP comme “Mine%2bYours”. Cela donnera la chaîne “Mine+Yours”. Avec cet encodage hexadécimal, vous pouvez entrer n’importe quelle valeur de byte que vous souhaitez, à l’exception de 0 (pour des raisons internes de C).

Si vous souhaitez désactiver l’interface Web (par exemple, pour des raisons de sécurité), accédez à l’interface de ligne de commande (CLI) et saisissez :

┌─[user@parrot][~/esp32_nat_router]
└──╼ nvs_namespace esp32_nat
┌─[user@parrot][~/esp32_nat_router]
└──╼ nvs_set lock str -v 1

Après avoir redémarré, aucun serveur web ne démarre. Vous ne pouvez le réactiver qu’en utilisant :

┌─[user@parrot][~/esp32_nat_router]
└──╼nvs_namespace esp32_nat
┌─[user@parrot][~/esp32_nat_router]
└──╼nvs_set lock str -v 0

Si vous avez commis une erreur et avez perdu tout contact avec l’ESP, vous pouvez toujours utiliser la console série pour le reconfigurer. Tous les paramètres de configuration sont stockés dans la mémoire non volatile (NVS), qui ne sont pas effacés simplement en reflashant les binaires. Si vous souhaitez les effacer, utilisez “esptool.py -p /dev/ttyUSB0 erase_flash”.