Skip to content

Latest commit

 

History

History
235 lines (190 loc) · 6.95 KB

File metadata and controls

235 lines (190 loc) · 6.95 KB

⚠️ DISCLAIMER - ETHICAL HACKING / HACKING ÉTHIQUE

This 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.


Rust.Nmap.Network - IDS Lab Commander

Rust Docker Nmap Snort Suricata Zeek Python Scapy

Laboratoire académique de test d'évasion IDS avec interface de pilotage complète.

Architecture

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
Loading

Quick Start

1. Configuration initiale (une seule fois)

# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
newgrp docker

# Vérifier
docker ps  # Doit fonctionner sans sudo

2. Démarrer les labs

# Tous les labs
./scripts/start_all_labs.sh

# Ou un seul lab
cd suricata-lab && docker compose up -d

3. Démarrer le Commander

cd commander
cargo run

4. Ouvrir le dashboard

http://localhost:3000

Interfaces Web

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

Niveaux de Sécurité

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

Scripts d'attaque

# 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.3

Techniques d'évasion testables

Fragmentation IP

sudo nmap -f TARGET_IP              # Fragmentation simple
sudo nmap -f -f --mtu 8 TARGET_IP   # Fragmentation max

Timing

sudo nmap -T0 TARGET_IP   # Très lent (évite seuils)
sudo nmap -T1 TARGET_IP   # Lent

Decoys

sudo nmap -D RND:10 TARGET_IP       # 10 decoys aléatoires
sudo nmap -D decoy1,decoy2 TARGET   # Decoys spécifiques

Source port

sudo nmap --source-port 53 TARGET_IP   # Port DNS (souvent autorisé)
sudo nmap --source-port 80 TARGET_IP   # Port HTTP

Structure du projet

Rust.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

Workflow académique suggéré

  1. Comprendre: Lire les règles au niveau 3 (Moderate)
  2. Tester: Lancer un scan nmap standard, observer les alertes
  3. Analyser: Identifier quelle règle a déclenché l'alerte
  4. Évader: Tester des techniques (fragmentation, timing, decoys)
  5. Comparer: Passer au niveau 4, retester les mêmes techniques
  6. Documenter: Noter quelles techniques évitent quels niveaux

Troubleshooting

Docker sans sudo

sudo usermod -aG docker $USER
newgrp docker

Règles ne se rechargent pas

# Forcer manuellement
docker kill -s SIGHUP snort_ids
docker kill -s USR2 suricata_ids
docker restart zeek_ids

Container ne démarre pas

docker logs snort_ids
docker logs suricata_ids

Liens utiles