⚠️ DISCLAIMER - ETHICAL HACKING / HACKING ÉTHIQUEThis repository is intended solely for educational purposes, authorized security testing, and defensive research. All tools and techniques documented here must only be used on systems you own or have explicit written permission to test.
Unauthorized access to computer systems is illegal under laws including but not limited to:
- 🇫🇷 Article 323-1 du Code Pénal (France)
- 🇺🇸 Computer Fraud and Abuse Act (USA)
- 🇪🇺 EU Directive 2013/40/EU (Europe)
The authors assume no liability for misuse of these materials. By using this repository, you agree to use it responsibly and legally.
Ce dépôt est destiné uniquement à des fins éducatives, de tests de sécurité autorisés et de recherche défensive. Tous les outils et techniques documentés ici ne doivent être utilisés que sur des systèmes vous appartenant ou pour lesquels vous disposez d'une autorisation écrite explicite.
L'accès non autorisé à des systèmes informatiques est illégal. Les auteurs déclinent toute responsabilité en cas de mauvaise utilisation.
Laboratoire académique de test d'évasion IDS avec interface de pilotage complète.
graph TB
subgraph LOCALHOST["LOCALHOST (Attaquant)"]
COMMANDER["Commander :3000"]
NMAP["Nmap / Scapy / Hping3"]
end
subgraph SNORT_NET["snort_net"]
SNORT_IDS["snort_ids"]
TARGET_SNORT["target_snort nginx:80"]
SNORT_EDITOR["editor :8081"]
end
subgraph SURICATA_NET["suricata_net"]
SURICATA_IDS["suricata_ids"]
TARGET_SURICATA["target_suricata nginx:80"]
SURICATA_EDITOR["editor :8082"]
EVEBOX["evebox :5636"]
end
subgraph ZEEK_NET["zeek_net"]
ZEEK_IDS["zeek_ids"]
TARGET_ZEEK["target_zeek nginx:80"]
ZEEK_EDITOR["editor :8083"]
end
COMMANDER --> SNORT_NET
COMMANDER --> SURICATA_NET
COMMANDER --> ZEEK_NET
NMAP --> TARGET_SNORT
NMAP --> TARGET_SURICATA
NMAP --> TARGET_ZEEK
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
newgrp docker
# Vérifier
docker ps # Doit fonctionner sans sudo# Tous les labs
./scripts/start_all_labs.sh
# Ou un seul lab
cd suricata-lab && docker compose up -dcd commander
cargo run| Port | Service | Description |
|---|---|---|
| 3000 | Commander | Dashboard principal, templates, cookbook |
| 5636 | EveBox | Visualisation alertes Suricata |
| 8081 | Filebrowser | Édition règles Snort |
| 8082 | Filebrowser | Édition règles Suricata |
| 8083 | Filebrowser | Édition scripts Zeek |
Le dashboard permet de basculer entre 5 niveaux de règles pour chaque IDS:
| Niveau | Nom | Description |
|---|---|---|
| 1 | Minimal | Très perméable, détecte uniquement les attaques évidentes |
| 2 | Basic | Détecte les scans courants (SYN, NULL, XMAS) |
| 3 | Moderate | Équilibré, idéal pour tester l'évasion |
| 4 | Strict | Haute sensibilité, détecte la fragmentation |
| 5 | Paranoid | Sécurité maximum, alerte sur presque tout |
# Test rapide d'un lab
./scripts/quick_test.sh suricata
# Test de tous les niveaux
./scripts/scan_all_levels.sh suricata
# Attaque par fragmentation (Scapy)
sudo python3 ./scripts/fragment_attack.py 172.19.0.3sudo nmap -f TARGET_IP # Fragmentation simple
sudo nmap -f -f --mtu 8 TARGET_IP # Fragmentation maxsudo nmap -T0 TARGET_IP # Très lent (évite seuils)
sudo nmap -T1 TARGET_IP # Lentsudo nmap -D RND:10 TARGET_IP # 10 decoys aléatoires
sudo nmap -D decoy1,decoy2 TARGET # Decoys spécifiquessudo nmap --source-port 53 TARGET_IP # Port DNS (souvent autorisé)
sudo nmap --source-port 80 TARGET_IP # Port HTTPRust.Nmap.Network/
├── commander/
│ ├── Cargo.toml
│ ├── src/main.rs
│ └── templates/ # 5 niveaux x 3 IDS
│ ├── snort/
│ ├── suricata/
│ └── zeek/
├── snort-lab/
│ ├── docker-compose.yml
│ └── config/
├── suricata-lab/
│ ├── docker-compose.yml
│ ├── rules/
│ └── logs/
├── zeek-lab/
│ ├── docker-compose.yml
│ └── scripts/
├── scripts/ # Scripts d'attaque
│ ├── start_all_labs.sh
│ ├── stop_all_labs.sh
│ ├── quick_test.sh
│ ├── scan_all_levels.sh
│ └── fragment_attack.py
└── README.md
- Comprendre: Lire les règles au niveau 3 (Moderate)
- Tester: Lancer un scan nmap standard, observer les alertes
- Analyser: Identifier quelle règle a déclenché l'alerte
- Évader: Tester des techniques (fragmentation, timing, decoys)
- Comparer: Passer au niveau 4, retester les mêmes techniques
- Documenter: Noter quelles techniques évitent quels niveaux
sudo usermod -aG docker $USER
newgrp docker# Forcer manuellement
docker kill -s SIGHUP snort_ids
docker kill -s USR2 suricata_ids
docker restart zeek_idsdocker logs snort_ids
docker logs suricata_ids