
Kit automatizzato per evil twin access point con cattura del traffico e monitoraggio in tempo reale per penetration testing wireless e ricerca sulla sicurezza.
Una configurazione completa, modulare e riproducibile di un punto di accesso evil twin per test di sicurezza difensiva, penetration testing e ricerca sulla sicurezza wireless.
SOLO PER SCOPI EDUCATIVI E TEST DI SICUREZZA AUTORIZZATI
Questo strumento è fornito per:
L'USO ILLEGALE È STRETTAMENTE VIETATO. L'accesso non autorizzato a reti informatiche è un reato nella maggior parte delle giurisdizioni. Gli utenti sono gli unici responsabili per:
Utilizzando questo strumento, accetti di utilizzarlo solo su reti di tua proprietà o per le quali hai esplicita autorizzazione scritta per i test.
Questo toolkit crea un punto di accesso wireless rogue (evil twin) che imita una rete legittima. Cattura il traffico di rete creando un SSID identico al quale i client possono connettersi automaticamente, credendo che sia la rete legittima.
Un evil twin è un punto di accesso Wi-Fi fraudolento che appare legittimo ma è configurato per intercettare le comunicazioni wireless. L'attacco funziona posizionando un punto di accesso rogue vicino alla rete di destinazione, trasmettendo lo stesso SSID e inducendo i dispositivi a connettersi.
La tua scheda wireless DEVE supportare la modalità AP (Access Point). Non tutte le schede wireless supportano questa funzionalità.
Queste schede sono note per funzionare bene e supportare la modalità AP:
Alfa AWUS036ACH (RTL8812AU)
TP-Link TL-WN722N v1 (Atheros AR9271)
Alfa AWUS036ACM (MT7612U)
Prima dell'acquisto, verifica che l'adattatore supporti la modalità AP:```bash
iw list | grep -A 10 "Supported interface modes"
### Hardware Aggiuntivo
- **Connessione Ethernet**: Richiesta per il passaggio Internet (può essere fisica o adattatore USB-Ethernet)
- **Alimentazione USB Sufficiente**: Alcuni adattatori ad alta potenza potrebbero richiedere un hub USB alimentato
- **Computer**: Qualsiasi laptop o desktop con Linux (consigliato: Kali Linux)
---
## 💻 Requisiti Software
### Sistema Operativo
- **Consigliato**: Kali Linux (2020.1 o successivo)
- **Supportati anche**:
- Debian 10+
- Ubuntu 18.04+
- Fedora 30+
- Arch Linux
- ParrotOS
- BlackArch
### Pacchetti Richiesti
Questi verranno installati automaticamente da `install_dependencies.sh`:
- `hostapd` - Crea il punto di accesso
- `dnsmasq` - Fornisce servizi DHCP e DNS
- `iptables` - Configura le regole NAT e firewall
- `iproute2` - Configurazione dell'interfaccia di rete
- `wireless-tools` - Utility di gestione wireless
- `net-tools` - Strumenti diagnostici di rete
- `iw` - Utility di configurazione wireless
- `tcpdump` - Utility di cattura pacchetti
### Privilegi
- È richiesto l'accesso root/sudo per tutte le operazioni
---
## 📦 Installazione
### Avvio Rapido```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
#### Passo 2: Installare le dipendenze
Lo script di installazione rileva automaticamente la tua distribuzione Linux e installa i pacchetti richiesti:```bash
sudo ./install_dependencies.sh
Cosa fa:
PASSO CRITICO: Prima di configurare, rileva quale interfaccia wireless supporta la modalità AP:```bash sudo ./detect_interface.sh
Questo script analizzerà tutte le interfacce wireless e raccomanderà la migliore da utilizzare.
**Esempio di output:**```
==========================================
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'
Punti Chiave:
Se hai più interfacce:
Dopo l'installazione e il rilevamento delle interfacce, verifica che tutto funzioni:```bash
hostapd -v
dnsmasq -v
iw dev
iw list | grep -A 10 "Supported interface modes"
grep "^interface=" hostapd.conf dnsmasq.conf
## ⚙️ Configurazione
### hostapd.conf - Impostazioni del punto di accesso
Modifica `hostapd.conf` per personalizzare il tuo evil twin:```bash
nano hostapd.conf
Impostazioni chiave da modificare:```ini
interface=wlan1
ssid=TestNetwork
channel=6
wpa_passphrase=letitrain2
country_code=US
### dnsmasq.conf - Impostazioni DHCP/DNS
Modifica `dnsmasq.conf` per personalizzare le impostazioni di rete:```bash
nano dnsmasq.conf
Impostazioni chiave:```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
### Network Configuration
**Default settings:**
- **AP IP**: 192.168.99.1
- **Subnet**: 192.168.99.0/24
- **DHCP Range**: 192.168.99.10 - 192.168.99.250
- **Channel**: 6 (2.4GHz)
- **Password**: letitrain2
- **Interface**: wlan1 (adattatore esterno)
---
## 🚀 Utilizzo
### Avvio dell'Evil Twin```bash
sudo ./start_evil_twin.sh
Cosa succede:
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
### Fermare l'Evil Twin```bash
sudo ./stop_evil_twin.sh
Cosa succede:
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
---
## 📸 Cattura del Traffico
### Cattura del Traffico di Rete
Il toolkit include uno script completo per la cattura del traffico che salva i dati dei pacchetti come file PCAP per l'analisi:```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
### Caratteristiche di Cattura
- ✅ Salva il traffico in formato PCAP standard
- ✅ Rotazione automatica dei file per evitare file enormi
- ✅ Statistiche dei pacchetti in tempo reale in modalità verbose
- ✅ Supporto per il filtraggio BPF (Berkeley Packet Filter)
- ✅ Catture temporizzate o operazione continua
- ✅ Pulizia sicura su Ctrl+C
- ✅ Output salvato nella directory `output/`
### Posizione dell'Output
Tutte le catture vengono salvate in `output/` con nomi di file basati su timestamp:
- Formato: `capture_YYYYMMDD_HHMMSS.pcap`
- Personalizzato: `yourname_YYYYMMDD_HHMMSS.pcap`
### Analisi del Traffico Catturato```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"
---
## 📊 Monitoraggio
### Monitoraggio delle connessioni in tempo reale
Il toolkit fornisce diversi modi per monitorare i client connessi:
#### 1. Registro delle connessioni
Aggiornato automaticamente ogni 5 secondi:```bash
tail -f logs/connections.log
Esempio di output:``` === 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. Assegnazioni DHCP
Visualizza i lease DHCP in tempo reale:```bash
tail -f logs/dnsmasq.log
Output di esempio:``` 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. Stato del punto di accesso
Monitora i log di 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
## 🔧 Risoluzione dei problemi
### Problemi comuni e soluzioni
#### 1. "Nessuna interfaccia wireless trovata"
**Problema:** La tua scheda wireless non viene rilevata.
**Soluzioni:**```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
Problema: La tua scheda di rete non supporta la creazione di punti di accesso.
Soluzione: Hai bisogno di una scheda wireless diversa. Consulta Requisiti hardware per i consigli.
Verifica il supporto:```bash iw list | grep -A 10 "Supported interface modes"
#### 3. "hostapd non è riuscito ad avviarsi"
**Problema:** hostapd non riesce ad avviare il punto di accesso.
**Soluzioni:**```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
Problema: NetworkManager sta gestendo l'interfaccia wireless.
Soluzione:```bash
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager # Temporarily
sudo systemctl enable NetworkManager sudo systemctl start NetworkManager
#### 5. "I clienti si connettono ma non hanno internet"
**Problema:** NAT/routing non è configurato correttamente.
**Soluzioni:**```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
Problema: Non si esegue con privilegi sufficienti.
Soluzione:```bash
sudo ./start_evil_twin.sh
#### 7. "Canale X non disponibile"
**Problema:** Le normative wireless limitano alcuni canali.
**Soluzioni:**```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)
Problema: La porta 53 (DNS) è già in uso.
Soluzioni:
1.```bash
sudo lsof -i :53
sudo systemctl stop systemd-resolved
#### 9. "Interfaccia sbagliata in uso"
**Problema:** Gli script stanno utilizzando wlan0 anziché wlan1 (o viceversa).
**Soluzioni:**```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
Se incontri problemi:
logs/hostapd.log, logs/dnsmasq.logsudo ./detect_interface.shbash -xdmesg e 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
### Descrizione dei File
| File | Scopo | Modificare? |
|------|-------|-------------|
| `hostapd.conf` | Impostazioni AP (SSID, canale, password, interfaccia) | ✅ Sì - personalizzare per il tuo test |
| `dnsmasq.conf` | Configurazione DHCP/DNS (interfaccia, intervallo IP) | ✅ Sì - regolare le impostazioni di rete |
| `install_dependencies.sh` | Installa i pacchetti richiesti | ❌ No - eseguire così com'è |
| `detect_interface.sh` | Rileva le interfacce wireless e il supporto per la modalità AP | ❌ No - eseguire così com'è |
| `start_evil_twin.sh` | Avvia l'AP gemello malvagio | ⚠️ Raramente - solo per personalizzazioni avanzate |
| `stop_evil_twin.sh` | Arresta e pulisce | ❌ No - eseguire così com'è |
| `capture_traffic.sh` | Cattura il traffico in file PCAP | ⚠️ Usa le opzioni CLI invece |
| `logs/*.log` | Log di esecuzione | 📖 Sola lettura - per monitoraggio |
| `output/*.pcap` | Dati dei pacchetti catturati | 📖 Sola lettura - per analisi |
---
## 🔒 Considerazioni sulla Sicurezza
### Linee Guida per l'Uso Etico
1. **Autorizzazione**: Ottenere SEMPRE il permesso scritto prima di testare
2. **Ambito**: Rimanere nell'ambito concordato del test
3. **Documentazione**: Tenere registri dettagliati di tutte le attività
4. **Divulgazione**: Segnalare le scoperte in modo responsabile ai proprietari della rete
5. **Gestione dei Dati**: Non intercettare, memorizzare o utilizzare impropriamente i dati catturati
### Considerazioni Legali
- Creare punti di accesso rogue senza autorizzazione è **ILLEGALE** nella maggior parte dei paesi
- Le sanzioni possono includere multe, reclusione e precedenti penali
- Anche i test "innocui" possono essere perseguiti se non autorizzati
- Ambienti aziendali: Ottenere l'approvazione del reparto IT per iscritto
- Spazi pubblici: MAI testare su reti pubbliche
### Sicurezza Tecnica
**Questo toolkit per progettazione:**
- ✅ Si concentra sulla creazione e monitoraggio di punti di accesso
- ✅ Include la cattura del traffico solo per analisi autorizzate
- ✅ Fornisce registrazione completa per la responsabilità
- ⚠️ NON include la raccolta di credenziali
- ⚠️ NON include l'eliminazione di SSL o attacchi MITM attivi
- ⚠️ NON include il phishing tramite captive portal
**Per aumentare la sicurezza dei tuoi test:**
- Utilizzare segmenti di rete isolati
- Implementare l'identificazione della rete di test (SSID unici)
- Limitare i test a finestre temporali specifiche
- Monitorare e registrare tutte le attività
- Utilizzare solo in gabbie di Faraday o stanze schermate RF per evitare perdite di segnale
### Misure Difensive
Le organizzazioni possono proteggersi dagli attacchi evil twin:
- Implementando l'**autenticazione 802.1X** (WPA2/WPA3 Enterprise)
- Utilizzando la **convalida dei certificati** per l'autenticazione di rete
- Implementando **sistemi di rilevamento delle intrusioni wireless (WIDS)**
- Abilitando **Protected Management Frames (PMF/802.11w)**
- Addestrando gli utenti a verificare l'autenticità della rete
- Utilizzando VPN per comunicazioni sensibili
- Monitorando per punti di accesso rogue
---
## 🤝 Contribuire
I contributi sono benvenuti! Segui queste linee guida:
### Come Contribuire
1. **Fork del repository**
2. **Crea un ramo feature**: `git checkout -b feature/tua-feature`
3. **Apporta le tue modifiche** con messaggi di commit chiari
4. **Testa accuratamente** su più sistemi se possibile
5. **Aggiorna la documentazione** se modifichi la funzionalità
6. **Invia una pull request** con una descrizione dettagliata
### Linee Guida per i Contributi
- Mantieni la struttura modulare
- Aggiungi registrazione dettagliata per nuove funzionalità
- Includi la gestione degli errori per casi limite
- Aggiorna il README se aggiungi nuove funzionalità
- Segui lo stile del codice esistente (best practice bash)
- Aggiungi commenti per logiche complesse
- Testa su almeno una distribuzione basata su Debian
### Stile del Codice```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"
Questo progetto è fornito esclusivamente per scopi educativi e di test di sicurezza autorizzati.
Licenza MIT (vedere il file LICENSE per il testo completo)``` Copyright (c) 2025 [Your Name]
Permission is hereby granted for educational and authorized security testing purposes only...
## 🙏 Riconoscimenti
- Il team di Kali Linux per gli eccellenti strumenti di sicurezza wireless
- I progetti hostapd e dnsmasq
- La comunità di ricerca sulla sicurezza wireless
- Contributori e tester
---
## 📚 Risorse Aggiuntive
### Risorse di Apprendimento
- [Guida OWASP per i Test di Sicurezza Wireless](https://owasp.org/www-project-web-security-testing-guide/)
- [Metodologia di Penetration Testing WiFi](https://www.sans.org/white-papers/)
- [Sicurezza Wireless su Kali Linux](https://www.kali.org/docs/wireless/)
### Strumenti Correlati
- **Aircrack-ng**: Suite di auditing wireless
- **Wireshark**: Analizzatore di protocolli di rete
- **Bettercap**: Attacchi e monitoraggio di rete
- **Wifiphisher**: Attacchi di phishing automatizzati su WiFi
### Documentazione
- [Documentazione di hostapd](https://w1.fi/hostapd/)
- [Manuale di dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html)
- [Wiki Wireless Linux](https://wireless.wiki.kernel.org/)
- [Manuale di tcpdump](https://www.tcpdump.org/manpages/tcpdump.1.html)
---
## 📞 Supporto
- **Problemi**: [GitHub Issues](https://github.com/yourusername/evil-twin-ap/issues)
- **Discussioni**: [GitHub Discussions](https://github.com/yourusername/evil-twin-ap/discussions)
- **Sicurezza**: Segnalare vulnerabilità via email (non problemi pubblici)
---
## ⚖️ Avviso Finale```
┌─────────────────────────────────────────────────────────────┐
│ │
│ 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 │
│ │
└─────────────────────────────────────────────────────────────┘
Ricorda: Da un grande potere derivano grandi responsabilità. Usa questo strumento in modo etico, legale e responsabile.
Happy (Autorizzato) Testing! 🔐
| Chipset | Esempi di modelli | Caratteristiche | Fascia di prezzo |
|---|
| RTL8812AU | Alfa AWUS036ACH, TP-Link Archer T4U | Dual-band (2.4/5GHz), Alta potenza, Eccellente portata | $40-60 |
| RTL8814AU | Alfa AWUS1900, TP-Link Archer T9UH | Quad antenna, AC1900, Lunga portata | $60-80 |
| Atheros AR9271 | TP-Link TL-WN722N v1, Alfa AWUS036NHA | Stabile, Ben supportato, Economico | $20-35 |
| MT7612U | Panda PAU0D, Alfa AWUS036ACM | Dual-band, Buona compatibilità | $35-50 |
| RTL8188EU | Vari adattatori economici | Base, solo 2.4GHz, Livello base | $10-20 |