
Boîte à outils automatisée de point d'accès malveillant (evil twin) avec capture de trafic et surveillance en temps réel pour les tests de pénétration sans fil et la recherche en sécurité.
Une configuration complète, modulaire et reproductible de point d'accès Evil Twin pour les tests de sécurité défensive, les tests d'intrusion et la recherche en sécurité sans fil.
POUR USAGE ÉDUCATIF ET TESTS DE SÉCURITÉ AUTORISÉS UNIQUEMENT
Cet outil est fourni pour :
L'UTILISATION ILLÉGALE EST STRICTEMENT INTERDITE. L'accès non autorisé à des réseaux informatiques est un crime dans la plupart des juridictions. Les utilisateurs sont seuls responsables de :
En utilisant cet outil, vous acceptez de ne l'utiliser que sur des réseaux dont vous êtes propriétaire ou pour lesquels vous avez obtenu une autorisation écrite explicite.
Cette boîte à outils crée un point d'accès sans fil frauduleux (Evil Twin) qui imite un réseau légitime. Elle capture le trafic réseau en créant un SSID identique auquel les clients peuvent se connecter automatiquement, croyant qu'il s'agit du réseau légitime.
Un Evil Twin est un point d'accès Wi-Fi frauduleux qui semble légitime mais qui est configuré pour espionner les communications sans fil. L'attaque fonctionne en plaçant un point d'accès frauduleux à proximité du réseau cible, en diffusant le même SSID, et en trompant les appareils pour qu'ils se connectent.
Votre adaptateur sans fil DOIT prendre en charge le mode AP (Point d'accès). Toutes les cartes sans fil ne supportent pas cette fonctionnalité.
Ces adaptateurs sont connus pour bien fonctionner et prendre en charge le mode AP :
Alfa AWUS036ACH (RTL8812AU)
TP-Link TL-WN722N v1 (Atheros AR9271)
Alfa AWUS036ACM (MT7612U)
Avant d'acheter, vérifiez que l'adaptateur prend en charge le mode AP :```bash
iw list | grep -A 10 "Supported interface modes"
### Matériel supplémentaire
- **Connexion Ethernet** : Requise pour le passage Internet (peut être un adaptateur physique ou USB-Ethernet)
- **Alimentation USB suffisante** : Certains adaptateurs haute puissance peuvent nécessiter un hub USB alimenté
- **Ordinateur** : Tout ordinateur portable ou de bureau fonctionnant sous Linux (recommandé : Kali Linux)
---
## 💻 Configuration logicielle requise
### Système d'exploitation
- **Recommandé** : Kali Linux (2020.1 ou ultérieur)
- **Également supporté** :
- Debian 10+
- Ubuntu 18.04+
- Fedora 30+
- Arch Linux
- ParrotOS
- BlackArch
### Paquets requis
Ceux-ci seront automatiquement installés par `install_dependencies.sh` :
- `hostapd` - Crée le point d'accès
- `dnsmasq` - Fournit les services DHCP et DNS
- `iptables` - Configure les règles NAT et pare-feu
- `iproute2` - Configuration de l'interface réseau
- `wireless-tools` - Utilitaires de gestion sans fil
- `net-tools` - Outils de diagnostic réseau
- `iw` - Utilitaire de configuration sans fil
- `tcpdump` - Utilitaire de capture de paquets
### Privilèges
- L'accès root/sudo est requis pour toutes les opérations
---
## 📦 Installation
### Démarrage rapide```bash
# Clone the repository
git clone https://github.com/yourusername/evil-twin-ap.git
cd evil-twin-ap
# Install dependencies
sudo ./install_dependencies.sh
# Detect your wireless interfaces
sudo ./detect_interface.sh
# Configure your settings (update interface if needed)
nano hostapd.conf # Change SSID, channel, interface
nano dnsmasq.conf # Adjust DHCP settings, interface
# Start the evil twin
sudo ./start_evil_twin.sh
git clone https://github.com/yourusername/evil-twin-ap.git cd evil-twin-ap
#### Étape 2 : Installer les dépendances
Le script d'installation détecte automatiquement votre distribution Linux et installe les paquets requis :```bash
sudo ./install_dependencies.sh
Ce qu'il fait :
ÉTAPE CRITIQUE : Avant la configuration, détectez quelle interface sans fil prend en charge le mode AP :```bash sudo ./detect_interface.sh
Ce script analysera toutes les interfaces sans fil et recommandera la meilleure à utiliser.
**Exemple de sortie:**```
==========================================
Wireless Interface Detection
==========================================
[INFO] Scanning for wireless interfaces...
[✓] Found 2 wireless interface(s)
═══════════════════════════════════════════
Interface: wlan1
═══════════════════════════════════════════
State: DORMANT
MAC Address: 1a:60:c6:85:87:53
Driver: rtl88XXau
[INFO] Checking capabilities for wlan1...
[✓] Supports AP mode (Access Point) ✓
[✓] Supports Monitor mode ✓
Current Mode: managed
═══════════════════════════════════════════
Interface: wlan0
═══════════════════════════════════════════
State: DOWN
MAC Address: b2:72:bf:bc:31:bd
Driver: iwlwifi
[INFO] Checking capabilities for wlan0...
[✓] Supports AP mode (Access Point) ✓
[✓] Supports Monitor mode ✓
Current Mode: managed
[!] Power management is ON (may cause issues)
==========================================
Summary & Recommendations
==========================================
[✓] Found 2 AP-capable interfaces:
- wlan1
- wlan0
[INFO] Recommendation: Use wlan1 (likely external USB adapter)
[!] wlan0 is usually built-in WiFi - use external adapter if available
[INFO] To update configuration files, run:
sed -i 's/^interface=.*/interface=wlan1/' hostapd.conf
sed -i 's/^interface=.*/interface=wlan1/' dnsmasq.conf
Current Configuration:
hostapd.conf: interface=wlan1
dnsmasq.conf: interface=wlan1
[INFO] After updating, verify with: iw list | grep -A 10 'Supported interface modes'
Points clés :
Si vous avez plusieurs interfaces :
Après l'installation et la détection des interfaces, vérifiez que tout fonctionne :```bash
hostapd -v
dnsmasq -v
iw dev
iw list | grep -A 10 "Supported interface modes"
grep "^interface=" hostapd.conf dnsmasq.conf
---
## ⚙️ Configuration
### hostapd.conf - Paramètres du point d'accès
Modifiez `hostapd.conf` pour personnaliser votre jumeau malveillant :```bash
nano hostapd.conf
Paramètres clés à modifier :```ini
interface=wlan1
ssid=TestNetwork
channel=6
wpa_passphrase=letitrain2
country_code=US
### dnsmasq.conf - Paramètres DHCP/DNS
Modifiez `dnsmasq.conf` pour personnaliser les paramètres réseau :```bash
nano dnsmasq.conf
Paramètres clés:```ini
interface=wlan1
dhcp-range=192.168.99.10,192.168.99.250,12h
dhcp-option=3,192.168.99.1
server=8.8.8.8 server=8.8.4.4
### Configuration réseau
**Paramètres par défaut :**
- **IP de l'AP** : 192.168.99.1
- **Sous-réseau** : 192.168.99.0/24
- **Plage DHCP** : 192.168.99.10 - 192.168.99.250
- **Canal** : 6 (2,4 GHz)
- **Mot de passe** : letitrain2
- **Interface** : wlan1 (adaptateur externe)
---
## 🚀 Utilisation
### Démarrage du jumeau maléfique```bash
sudo ./start_evil_twin.sh
Ce qui se passe :
Configuration: SSID: TestNetwork Channel: 6 Password: letitrain2 AP IP: 192.168.99.1 Subnet: 192.168.99.0/24 WLAN Interface: wlan1 Internet Interface: eth0
To stop the Evil Twin AP, run: sudo ./stop_evil_twin.sh
To capture traffic for analysis: sudo ./capture_traffic.sh sudo ./capture_traffic.sh -v # verbose mode
### Arrêter l'Evil Twin```bash
sudo ./stop_evil_twin.sh
Ce qui se passe :
Unique clients connected: 3
Last 10 DHCP assignments: 192.168.99.10 - AA:BB:CC:DD:EE:01 192.168.99.11 - AA:BB:CC:DD:EE:02 192.168.99.12 - AA:BB:CC:DD:EE:03
---
## 📸 Capture du trafic
### Capture du trafic réseau
La boîte à outils comprend un script complet de capture de trafic qui enregistre les données de paquets sous forme de fichiers PCAP pour analyse :```bash
# Basic capture (continuous until Ctrl+C)
sudo ./capture_traffic.sh
# Capture for specific duration (60 seconds)
sudo ./capture_traffic.sh -d 60
# Capture with verbose output and live statistics
sudo ./capture_traffic.sh -v
# Capture only HTTP/HTTPS traffic
sudo ./capture_traffic.sh -f "tcp port 80 or tcp port 443"
# Capture with custom filename
sudo ./capture_traffic.sh -n my_test_capture
# Capture on specific interface
sudo ./capture_traffic.sh -i wlan1
# Capture with file rotation (50MB files, max 20 files)
sudo ./capture_traffic.sh -s 50 -m 20
-i, --interface Wireless interface to capture (default: wlan0) -d, --duration Capture duration in seconds (default: continuous) -n, --name Custom capture filename prefix -f, --filter BPF capture filter (e.g., "tcp port 80") -s, --size Rotate files when size reaches MB (default: 100) -m, --max-files Maximum number of rotated files (default: 10) -v, --verbose Show verbose packet statistics -h, --help Show help message
### Fonctionnalités de capture
- ✅ Enregistre le trafic au format PCAP standard
- ✅ Rotation automatique des fichiers pour éviter les fichiers énormes
- ✅ Statistiques en direct des paquets en mode verbeux
- ✅ Prise en charge du filtrage BPF (Berkeley Packet Filter)
- ✅ Captures temporisées ou opération continue
- ✅ Nettoyage sûr sur Ctrl+C
- ✅ Sortie enregistrée dans le répertoire `output/`
### Emplacement de sortie
Toutes les captures sont enregistrées dans `output/` avec des noms de fichiers basés sur l'horodatage :
- Format : `capture_YYYYMMDD_HHMMSS.pcap`
- Personnalisé : `yourname_YYYYMMDD_HHMMSS.pcap`
### Analyse du trafic capturé```bash
# Open in Wireshark (GUI)
wireshark output/capture_20251018_143215.pcap
# Analyze with tcpdump
tcpdump -r output/capture_20251018_143215.pcap -n
# Filter for specific protocols
tcpdump -r output/capture_20251018_143215.pcap 'tcp port 80'
# Extract HTTP requests
tcpdump -r output/capture_20251018_143215.pcap -A 'tcp port 80'
# Get capture statistics
capinfos output/capture_20251018_143215.pcap
# Use tshark for advanced analysis
tshark -r output/capture_20251018_143215.pcap -Y "http.request"
sudo ./capture_traffic.sh -f "tcp port 80"
sudo ./capture_traffic.sh -f "tcp port 443"
sudo ./capture_traffic.sh -f "tcp port 80 or tcp port 443"
sudo ./capture_traffic.sh -f "udp port 53"
sudo ./capture_traffic.sh -f "host 192.168.99.10"
sudo ./capture_traffic.sh -f "not broadcast and not multicast"
sudo ./capture_traffic.sh -f "tcp"
---
## 📊 Surveillance
### Surveillance en temps réel des connexions
La boîte à outils offre plusieurs moyens de surveiller les clients connectés :
#### 1. Journal des connexions
Mis à jour automatiquement toutes les 5 secondes :```bash
tail -f logs/connections.log
Exemple de sortie :``` === Sat Oct 18 14:32:15 EDT 2025 === Connected clients: 192.168.99.10 dev wlan1 lladdr aa:bb:cc:dd:ee:01 REACHABLE 192.168.99.11 dev wlan1 lladdr aa:bb:cc:dd:ee:02 STALE
#### 2. Attributions DHCP
Voir les baux DHCP en temps réel :```bash
tail -f logs/dnsmasq.log
Exemple de sortie :``` dnsmasq-dhcp[12346]: DHCPDISCOVER(wlan1) aa:bb:cc:dd:ee:01 dnsmasq-dhcp[12346]: DHCPOFFER(wlan1) 192.168.99.10 aa:bb:cc:dd:ee:01 dnsmasq-dhcp[12346]: DHCPREQUEST(wlan1) 192.168.99.10 aa:bb:cc:dd:ee:01 dnsmasq-dhcp[12346]: DHCPACK(wlan1) 192.168.99.10 aa:bb:cc:dd:ee:01 android-device
#### 3. État du point d'accès
Surveiller les logs hostapd:```bash
tail -f logs/hostapd.log
sudo iw dev wlan1 station dump
cat /var/lib/misc/dnsmasq.leases
ip addr show wlan1
sudo arp -a -i wlan1
---
## 🔧 Dépannage
### Problèmes courants et solutions
#### 1. "Aucune interface sans fil trouvée"
**Problème :** Votre adaptateur sans fil n'est pas détecté.
**Solutions :**```bash
# Check if adapter is connected
lsusb | grep -i wireless
# Check interface name
ip link show
# Try replugging USB adapter
# Check kernel messages
dmesg | tail -20
# Run the detection script
sudo ./detect_interface.sh
Problème: Votre adaptateur ne prend pas en charge la création de points d'accès.
Solution: Vous avez besoin d'un adaptateur sans fil différent. Voir Configuration matérielle requise pour les recommandations.
Vérifier la prise en charge:```bash iw list | grep -A 10 "Supported interface modes"
#### 3. "hostapd n'a pas réussi à démarrer"
**Problème:** hostapd ne peut pas démarrer le point d'accès.
**Solutions:**```bash
# Check if interface is busy
sudo airmon-ng check kill
# Verify interface is up
sudo ip link set wlan1 up
# Check hostapd config syntax
sudo hostapd -d hostapd.conf
# View detailed logs
cat logs/hostapd.log
# Make sure you're using the right interface
grep "^interface=" hostapd.conf
Problème : NetworkManager gère l'interface sans fil.
Solution :```bash
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager # Temporarily
sudo systemctl enable NetworkManager sudo systemctl start NetworkManager
#### 5. "Les clients se connectent mais n'ont pas internet"
**Problème:** Le NAT/routage n'est pas configuré correctement.
**Solutions:**```bash
# Verify IP forwarding
cat /proc/sys/net/ipv4/ip_forward
# Should output: 1
# Check NAT rules
sudo iptables -t nat -L -v
# Verify internet interface
ip route show default
# Test internet on host
ping -c 3 8.8.8.8
# Check if eth0 has internet
ping -I eth0 -c 3 8.8.8.8
Problème: Pas d'exécution avec des privilèges suffisants.
Solution:```bash
sudo ./start_evil_twin.sh
#### 7. « Le canal X n'est pas disponible »
**Problème :** Les réglementations sans fil restreignent certains canaux.
**Solutions :**```bash
# Check available channels for your country
iw list | grep -A 20 "Frequencies:"
# Edit hostapd.conf and change to available channel
nano hostapd.conf
# Common safe channels: 1, 6, 11 (2.4GHz)
Problème : Le port 53 (DNS) est déjà utilisé.
Solutions :```bash
sudo lsof -i :53
sudo systemctl stop systemd-resolved
#### 9. "Mauvaise interface utilisée"
**Problème:** Les scripts utilisent wlan0 au lieu de wlan1 (ou vice versa).
**Solutions:**```bash
# Run interface detection
sudo ./detect_interface.sh
# Update config files to use correct interface
sed -i 's/^interface=.*/interface=wlan1/' hostapd.conf
sed -i 's/^interface=.*/interface=wlan1/' dnsmasq.conf
# Verify changes
grep "^interface=" hostapd.conf dnsmasq.conf
Si vous rencontrez des problèmes :
logs/hostapd.log, logs/dnsmasq.logsudo ./detect_interface.shbash -xdmesg et journalctlevil-twin-ap/ │ ├── README.md # This file (documentation) ├── LICENSE # License information │ ├── hostapd.conf # Access point configuration ├── dnsmasq.conf # DHCP/DNS server configuration │ ├── install_dependencies.sh # Dependency installer (all distros) ├── detect_interface.sh # Wireless interface detection & verification ├── start_evil_twin.sh # Main start script ├── stop_evil_twin.sh # Cleanup and stop script ├── capture_traffic.sh # Traffic capture script (PCAP) │ ├── .evil_twin.pid # Runtime PID file (created automatically) ├── .capture.pid # Capture PID file (created automatically) │ ├── logs/ # Log directory (created at runtime) │ ├── hostapd.log # Access point logs │ ├── dnsmasq.log # DHCP/DNS logs │ └── connections.log # Client connection tracking │ └── output/ # Packet capture directory └── *.pcap # PCAP files from traffic capture
### Descriptions des fichiers
| Fichier | But | Modifier ? |
|---------|-----|------------|
| `hostapd.conf` | Paramètres AP (SSID, canal, mot de passe, interface) | ✅ Oui - personnalisez pour votre test |
| `dnsmasq.conf` | Configuration DHCP/DNS (interface, plage IP) | ✅ Oui - ajustez les paramètres réseau |
| `install_dependencies.sh` | Installe les paquets requis | ❌ Non - exécutez tel quel |
| `detect_interface.sh` | Détecte les interfaces sans fil et le support du mode AP | ❌ Non - exécutez tel quel |
| `start_evil_twin.sh` | Démarre le point d'accès jumeau maléfique | ⚠️ Rarement - uniquement pour personnalisation avancée |
| `stop_evil_twin.sh` | Arrête et nettoie | ❌ Non - exécutez tel quel |
| `capture_traffic.sh` | Capture le trafic vers des fichiers PCAP | ⚠️ Utilisez plutôt les options CLI |
| `logs/*.log` | Journaux d'exécution | 📖 Lecture seule - pour surveillance |
| `output/*.pcap` | Données de paquets capturées | 📖 Lecture seule - pour analyse |
---
## 🔒 Considérations de sécurité
### Directives d'utilisation éthique
1. **Autorisation** : Obtenez TOUJOURS une autorisation écrite avant de tester
2. **Périmètre** : Restez dans le périmètre convenu des tests
3. **Documentation** : Conservez des journaux détaillés de toutes les activités
4. **Divulgation** : Signalez les résultats de manière responsable aux propriétaires du réseau
5. **Gestion des données** : N'interceptez, ne stockez et n'utilisez pas abusivement les données capturées
### Considérations légales
- Créer des points d'accès non autorisés sans autorisation est **ILLÉGAL** dans la plupart des pays
- Les sanctions peuvent inclure des amendes, l'emprisonnement et des casiers judiciaires
- Même les tests « inoffensifs » peuvent être poursuivis s'ils ne sont pas autorisés
- Environnements d'entreprise : Obtenez l'approbation écrite du service informatique
- Espaces publics : NE testez JAMAIS sur les réseaux publics
### Sécurité technique
**Cette boîte à outils par conception :**
- ✅ Se concentre sur la création et la surveillance de points d'accès
- ✅ Inclut la capture de trafic uniquement pour une analyse autorisée
- ✅ Fournit une journalisation complète pour la responsabilité
- ⚠️ N'inclut PAS la récolte d'identifiants
- ⚠️ N'inclut PAS le déshabillage SSL ni les attaques MITM actives
- ⚠️ N'inclut PAS le hameçonnage par portail captif
**Pour renforcer la sécurité de vos tests :**
- Utilisez des segments réseau isolés
- Mettez en œuvre une identification de réseau de test (SSID uniques)
- Limitez les tests à des fenêtres temporelles spécifiques
- Surveillez et journalisez toutes les activités
- Utilisez uniquement dans des cages de Faraday ou des salles blindées RF pour éviter les fuites de signal
---
### Mesures défensives
Les organisations peuvent se protéger contre les attaques de jumeau maléfique en :
- Mettre en œuvre **l'authentification 802.1X** (WPA2/WPA3 Enterprise)
- Utiliser **la validation de certificat** pour l'authentification réseau
- Déployer **des systèmes de détection d'intrusion sans fil (WIDS)**
- Activer **les trames de gestion protégées (PMF/802.11w)**
- Former les utilisateurs à vérifier l'authenticité du réseau
- Utiliser des VPN pour les communications sensibles
- Surveiller les points d'accès non autorisés
---
## 🤝 Contribution
Les contributions sont les bienvenues ! Veuillez suivre ces directives :
### Comment contribuer
1. **Fork (dupliquer) le dépôt**
2. **Créez une branche de fonctionnalité** : `git checkout -b feature/your-feature`
3. **Effectuez vos modifications** avec des messages de commit clairs
4. **Testez minutieusement** sur plusieurs systèmes si possible
5. **Mettez à jour la documentation** si vous changez des fonctionnalités
6. **Soumettez une pull request** avec une description détaillée
### Directives de contribution
- Maintenez la structure modulaire
- Ajoutez une journalisation détaillée pour les nouvelles fonctionnalités
- Incluez la gestion des erreurs pour les cas limites
- Mettez à jour le README si vous ajoutez de nouvelles fonctionnalités
- Suivez le style de code existant (bonnes pratiques bash)
- Ajoutez des commentaires pour la logique complexe
- Testez sur au moins une distribution basée sur Debian
### Style de code```bash
# Use descriptive function names
configure_network_interface() {
# Clear comments
# Error handling
# Verbose output
}
# Consistent formatting
print_info "Starting process..."
command || print_error "Failed to execute command"
Ce projet est fourni uniquement à des fins éducatives et de tests de sécurité autorisés.
Licence MIT (voir le fichier LICENSE pour le texte complet)``` Copyright (c) 2025 [Your Name]
Permission is hereby granted for educational and authorized security testing purposes only...
---
## 🙏 Remerciements
- L'équipe Kali Linux pour ses excellents outils de sécurité sans fil
- Les projets hostapd et dnsmasq
- La communauté de recherche en sécurité sans fil
- Les contributeurs et testeurs
---
## 📚 Ressources supplémentaires
### Ressources d'apprentissage
- [Guide de test de sécurité sans fil OWASP](https://owasp.org/www-project-web-security-testing-guide/)
- [Méthodologie de test d'intrusion WiFi](https://www.sans.org/white-papers/)
- [Sécurité sans fil sur Kali Linux](https://www.kali.org/docs/wireless/)
### Outils connexes
- **Aircrack-ng** : Suite d'audit sans fil
- **Wireshark** : Analyseur de protocole réseau
- **Bettercap** : Attaques réseau et surveillance
- **Wifiphisher** : Attaques de phishing automatisées sur WiFi
### Documentation
- [Documentation hostapd](https://w1.fi/hostapd/)
- [Manuel dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html)
- [Wiki Linux Wireless](https://wireless.wiki.kernel.org/)
- [Manuel tcpdump](https://www.tcpdump.org/manpages/tcpdump.1.html)
---
## 📞 Support
- **Problèmes** : [GitHub Issues](https://github.com/yourusername/evil-twin-ap/issues)
- **Discussions** : [GitHub Discussions](https://github.com/yourusername/evil-twin-ap/discussions)
- **Sécurité** : Signalez les vulnérabilités par email (pas via les problèmes publics)
---
## ⚖️ Avertissement final```
┌─────────────────────────────────────────────────────────────┐
│ │
│ This tool is provided for EDUCATIONAL PURPOSES ONLY │
│ │
│ Unauthorized access to computer networks is ILLEGAL │
│ │
│ Always obtain written permission before testing │
│ │
│ You are responsible for your actions │
│ │
└─────────────────────────────────────────────────────────────┘
Rappelez-vous : Un grand pouvoir implique de grandes responsabilités. Utilisez cet outil de manière éthique, légale et responsable.
Bons tests (autorisés) ! 🔐
| Chipset | Exemples de modèles | Caractéristiques | Fourchette de prix |
|---|
| RTL8812AU | Alfa AWUS036ACH, TP-Link Archer T4U | Bi-bande (2,4/5GHz), Haute puissance, Excellente portée | 40-60 $ |
| RTL8814AU | Alfa AWUS1900, TP-Link Archer T9UH | Quad antenna, AC1900, Longue portée | 60-80 $ |
| Atheros AR9271 | TP-Link TL-WN722N v1, Alfa AWUS036NHA | Stable, Bien supporté, Économique | 20-35 $ |
| MT7612U | Panda PAU0D, Alfa AWUS036ACM | Bi-bande, Bonne compatibilité | 35-50 $ |
| RTL8188EU | Divers adaptateurs économiques | Basique, 2,4GHz seulement, Entrée de gamme | 10-20 $ |