
Kit de herramientas automatizado para punto de acceso gemelo malvado con captura de tráfico y monitoreo en tiempo real para pruebas de penetración inalámbrica e investigación de seguridad.
Una configuración completa, modular y reproducible de un punto de acceso gemelo malvado para pruebas de seguridad defensiva, pruebas de penetración e investigación de seguridad inalámbrica.
SOLO PARA FINES EDUCATIVOS Y PRUEBAS DE SEGURIDAD AUTORIZADAS
Esta herramienta se proporciona para:
EL USO ILEGAL ESTÁ ESTRICTAMENTE PROHIBIDO. El acceso no autorizado a redes informáticas es un delito en la mayoría de las jurisdicciones. Los usuarios son los únicos responsables de:
Al usar esta herramienta, acepta utilizarla únicamente en redes de su propiedad o para las cuales tenga permiso explícito por escrito para realizar pruebas.
Este conjunto de herramientas crea un punto de acceso inalámbrico fraudulento (gemelo malvado) que imita una red legítima. Captura el tráfico de red creando un SSID idéntico al que los clientes pueden conectarse automáticamente, creyendo que es la red legítima.
Un gemelo malvado es un punto de acceso Wi-Fi fraudulento que parece legítimo pero está configurado para espiar las comunicaciones inalámbricas. El ataque funciona colocando un punto de acceso fraudulento cerca de la red objetivo, transmitiendo el mismo SSID y engañando a los dispositivos para que se conecten.
Su adaptador inalámbrico DEBE ser compatible con el modo AP (Punto de Acceso). No todas las tarjetas inalámbricas soportan esta funcionalidad.
Estos adaptadores se sabe que funcionan bien y soportan el modo AP:
| Chipset | Ejemplos de Modelos | Características | Rango de Precio |
|---|---|---|---|
| RTL8812AU | Alfa AWUS036ACH, TP-Link Archer T4U | Doble banda (2.4/5GHz), Alta potencia, Excelente alcance | $40-60 |
| RTL8814AU | Alfa AWUS1900, TP-Link Archer T9UH | Cuádruple antena, AC1900, Largo alcance | $60-80 |
| Atheros AR9271 | TP-Link TL-WN722N v1, Alfa AWUS036NHA | Estable, Bien soportado, Económico | $20-35 |
| MT7612U | Panda PAU0D, Alfa AWUS036ACM | Doble banda, Buena compatibilidad | $35-50 |
| RTL8188EU | Varios adaptadores económicos | Básico, solo 2.4GHz, Nivel de entrada | $10-20 |
Alfa AWUS036ACH (RTL8812AU)
TP-Link TL-WN722N v1 (Atheros AR9271)
Alfa AWUS036ACM (MT7612U)
Antes de comprar, verifique que el adaptador soporte el modo AP:```bash
iw list | grep -A 10 "Supported interface modes"
### Hardware Adicional
- **Conexión Ethernet**: Necesaria para el paso de internet (puede ser física o adaptador USB-Ethernet)
- **Suficiente alimentación USB**: Algunos adaptadores de alto consumo pueden requerir un concentrador USB con alimentación
- **Computadora**: Cualquier laptop o PC de escritorio con Linux (recomendado: Kali Linux)
---
## 💻 Requisitos de Software
### Sistema Operativo
- **Recomendado**: Kali Linux (2020.1 o posterior)
- **También Compatibles**:
- Debian 10+
- Ubuntu 18.04+
- Fedora 30+
- Arch Linux
- ParrotOS
- BlackArch
### Paquetes Requeridos
Estos serán instalados automáticamente por `install_dependencies.sh`:
- `hostapd` - Crea el punto de acceso
- `dnsmasq` - Proporciona servicios DHCP y DNS
- `iptables` - Configura reglas NAT y de firewall
- `iproute2` - Configuración de interfaces de red
- `wireless-tools` - Utilidades de gestión inalámbrica
- `net-tools` - Herramientas de diagnóstico de red
- `iw` - Utilidad de configuración inalámbrica
- `tcpdump` - Utilidad de captura de paquetes
### Privilegios
- Se requiere acceso root/sudo para todas las operaciones
---
## 📦 Instalación
### Inicio Rápido```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
#### Paso 2: Instalar Dependencias
El script de instalación detecta automáticamente tu distribución de Linux e instala los paquetes requeridos:```bash
sudo ./install_dependencies.sh
Lo que hace:
PASO CRÍTICO: Antes de configurar, detecta qué interfaz inalámbrica soporta el modo AP:```bash sudo ./detect_interface.sh
Este script analizará todas las interfaces inalámbricas y recomendará la mejor para usar.
**Ejemplo de salida:**```
==========================================
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'
Puntos clave:
Si tienes múltiples interfaces:
Después de la instalación y detección de interfaces, verifica que todo funcione correctamente:```bash
hostapd -v
dnsmasq -v
iw dev
iw list | grep -A 10 "Supported interface modes"
grep "^interface=" hostapd.conf dnsmasq.conf
## ⚙️ Configuración
### hostapd.conf - Configuración del Punto de Acceso
Edite `hostapd.conf` para personalizar su gemelo malvado:```bash
nano hostapd.conf
Configuraciones clave para modificar:```ini
interface=wlan1
ssid=TestNetwork
channel=6
wpa_passphrase=letitrain2
country_code=US
### dnsmasq.conf - Configuración de DHCP/DNS
Edite `dnsmasq.conf` para personalizar la configuración de red:```bash
nano dnsmasq.conf
Configuraciones clave:```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
### Configuración de red
**Configuración predeterminada:**
- **IP del AP**: 192.168.99.1
- **Subred**: 192.168.99.0/24
- **Rango DHCP**: 192.168.99.10 - 192.168.99.250
- **Canal**: 6 (2.4GHz)
- **Contraseña**: letitrain2
- **Interfaz**: wlan1 (adaptador externo)
---
## 🚀 Uso
### Iniciando el Evil Twin```bash
sudo ./start_evil_twin.sh
Qué sucede:
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
### Deteniendo el Gemelo Malvado```bash
sudo ./stop_evil_twin.sh
Qué sucede:
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
---
## 📸 Captura de Tráfico
### Capturando Tráfico de Red
El kit de herramientas incluye un script integral de captura de tráfico que guarda los datos de paquetes como archivos PCAP para su análisis:```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
### Funciones de Captura
- ✅ Guarda el tráfico en formato PCAP estándar
- ✅ Rotación automática de archivos para evitar archivos enormes
- ✅ Estadísticas de paquetes en vivo en modo verbose
- ✅ Soporte de filtrado BPF (Filtro de Paquetes Berkeley)
- ✅ Capturas temporizadas u operación continua
- ✅ Limpieza segura al presionar Ctrl+C
- ✅ Salida guardada en el directorio `output/`
### Ubicación de Salida
Todas las capturas se guardan en `output/` con nombres de archivo basados en timestamp:
- Formato: `capture_YYYYMMDD_HHMMSS.pcap`
- Personalizado: `yourname_YYYYMMDD_HHMMSS.pcap`
### Analizando el Tráfico Capturado```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"
---
## 📊 Monitoreo
### Monitoreo de Conexiones en Tiempo Real
El kit de herramientas proporciona varias formas de monitorear los clientes conectados:
#### 1. Registro de Conexiones
Actualizado automáticamente cada 5 segundos:```bash
tail -f logs/connections.log
Ejemplo de salida:``` === 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. Asignaciones DHCP
Ver concesiones DHCP en tiempo real:```bash
tail -f logs/dnsmasq.log
Salida de ejemplo:``` 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. Estado del Punto de Acceso
Monitorear los registros de 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
---
## 🔧 Solución de problemas
### Problemas comunes y soluciones
#### 1. "No wireless interfaces found"
**Problema:** Tu adaptador inalámbrico no se detecta.
**Soluciones:**```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: Tu adaptador no admite la creación de puntos de acceso.
Solución: Necesitas un adaptador inalámbrico diferente. Consulta Requisitos de hardware para obtener recomendaciones.
Verificar soporte:```bash iw list | grep -A 10 "Supported interface modes"
#### 3. "hostapd no se pudo iniciar"
**Problema:** hostapd no puede iniciar el punto de acceso.
**Soluciones:**```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 está gestionando la interfaz inalámbrica.
Solución:```bash
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager # Temporarily
sudo systemctl enable NetworkManager sudo systemctl start NetworkManager
#### 5. "Los clientes se conectan pero no tienen internet"
**Problema:** NAT/enrutamiento no está configurado correctamente.
**Soluciones:**```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: No se ejecuta con suficientes privilegios.
Solución:```bash
sudo ./start_evil_twin.sh
#### 7. "El canal X no está disponible"
**Problema:** Las regulaciones inalámbricas restringen ciertos canales.
**Soluciones:**```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: El puerto 53 (DNS) ya está en uso.
Soluciones:```bash
sudo lsof -i :53
sudo systemctl stop systemd-resolved
#### 9. "Se está usando la interfaz incorrecta"
**Problema:** Los scripts están usando wlan0 en lugar de wlan1 (o viceversa).
**Soluciones:**```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 encuentras problemas:
logs/hostapd.log, logs/dnsmasq.logsudo ./detect_interface.shbash -xdmesg y 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
### Descripción de archivos
| Archivo | Propósito | ¿Modificar? |
|---------|-----------|-------------|
| `hostapd.conf` | Configuración del AP (SSID, canal, contraseña, interfaz) | ✅ Sí - personalizar para tu prueba |
| `dnsmasq.conf` | Configuración de DHCP/DNS (interfaz, rango IP) | ✅ Sí - ajustar configuración de red |
| `install_dependencies.sh` | Instala paquetes requeridos | ❌ No - ejecutar tal cual |
| `detect_interface.sh` | Detecta interfaces inalámbricas y soporte de modo AP | ❌ No - ejecutar tal cual |
| `start_evil_twin.sh` | Inicia el AP gemelo malvado | ⚠️ Raramente - solo para personalización avanzada |
| `stop_evil_twin.sh` | Detiene y limpia | ❌ No - ejecutar tal cual |
| `capture_traffic.sh` | Captura tráfico a archivos PCAP | ⚠️ Usa opciones de CLI en su lugar |
| `logs/*.log` | Registros de ejecución | 📖 Solo lectura - para monitoreo |
| `output/*.pcap` | Datos de paquetes capturados | 📖 Solo lectura - para análisis |
---
## 🔒 Consideraciones de Seguridad
### Pautas de Uso Ético
1. **Autorización**: SIEMPRE obtén permiso por escrito antes de probar
2. **Alcance**: Mantente dentro del alcance acordado de la prueba
3. **Documentación**: Mantén registros detallados de todas las actividades
4. **Divulgación**: Reporta los hallazgos de manera responsable a los propietarios de la red
5. **Manejo de Datos**: No interceptes, almacenes ni mal utilices los datos capturados
### Consideraciones Legales
- Crear puntos de acceso no autorizados es **ILEGAL** en la mayoría de los países
- Las sanciones pueden incluir multas, prisión y antecedentes penales
- Incluso las pruebas "inofensivas" pueden ser procesadas si no están autorizadas
- Entornos corporativos: Obtén la aprobación del departamento de TI por escrito
- Espacios públicos: NUNCA hagas pruebas en redes públicas
### Seguridad Técnica
**Este kit de herramientas por diseño:**
- ✅ Se centra en la creación y monitoreo de puntos de acceso
- ✅ Incluye captura de tráfico solo para análisis autorizado
- ✅ Proporciona registro completo para rendición de cuentas
- ⚠️ NO incluye recolección de credenciales
- ⚠️ NO incluye eliminación de SSL ni ataques MITM activos
- ⚠️ NO incluye phishing de portal cautivo
**Para mejorar la seguridad de tus pruebas:**
- Usa segmentos de red aislados
- Implementa identificación de red de prueba (SSIDs únicos)
- Limita las pruebas a ventanas de tiempo específicas
- Monitorea y registra todas las actividades
- Usa solo en jaulas de Faraday o salas blindadas RF para evitar fugas de señal
### Medidas Defensivas
Las organizaciones pueden protegerse contra ataques de gemelo malvado mediante:
- Implementar autenticación **802.1X** (WPA2/WPA3 Empresarial)
- Usar **validación de certificados** para autenticación de red
- Implementar **sistemas de detección de intrusiones inalámbricas (WIDS)**
- Habilitar **Tramas de Gestión Protegidas (PMF/802.11w)**
- Capacitar a los usuarios para verificar la autenticidad de la red
- Usar VPN para comunicaciones sensibles
- Monitorear puntos de acceso no autorizados
---
## 🤝 Contribuciones
¡Las contribuciones son bienvenidas! Sigue estas pautas:
### Cómo Contribuir
1. **Haz un fork del repositorio**
2. **Crea una rama de funcionalidad**: `git checkout -b feature/your-feature`
3. **Haz tus cambios** con mensajes de commit claros
4. **Prueba a fondo** en múltiples sistemas si es posible
5. **Actualiza la documentación** si cambias la funcionalidad
6. **Envía un pull request** con una descripción detallada
### Pautas de Contribución
- Mantén la estructura modular
- Agrega registro detallado para nuevas funcionalidades
- Incluye manejo de errores para casos límite
- Actualiza el README si agregas nuevas funcionalidades
- Sigue el estilo de código existente (mejores prácticas de bash)
- Agrega comentarios para lógica compleja
- Prueba en al menos una distribución basada en Debian
### Estilo de Código```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"
Este proyecto se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas.
Licencia MIT (consulte el archivo LICENSE para ver el texto completo)``` Copyright (c) 2025 [Your Name]
Permission is hereby granted for educational and authorized security testing purposes only...
---
## 🙏 Agradecimientos
- El equipo de Kali Linux por sus excelentes herramientas de seguridad inalámbrica
- Los proyectos hostapd y dnsmasq
- La comunidad de investigación en seguridad inalámbrica
- Contribuidores y evaluadores
---
## 📚 Recursos Adicionales
### Recursos de Aprendizaje
- [Guía de Pruebas de Seguridad Inalámbrica de OWASP](https://owasp.org/www-project-web-security-testing-guide/)
- [Metodología de Pruebas de Penetración WiFi](https://www.sans.org/white-papers/)
- [Seguridad Inalámbrica en Kali Linux](https://www.kali.org/docs/wireless/)
### Herramientas Relacionadas
- **Aircrack-ng**: Suite de auditoría inalámbrica
- **Wireshark**: Analizador de protocolos de red
- **Bettercap**: Ataques y monitoreo de redes
- **Wifiphisher**: Ataques de phishing automatizados en WiFi
### Documentación
- [Documentación de hostapd](https://w1.fi/hostapd/)
- [Manual de dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html)
- [Wiki de Linux Inalámbrico](https://wireless.wiki.kernel.org/)
- [Manual de tcpdump](https://www.tcpdump.org/manpages/tcpdump.1.html)
---
## 📞 Soporte
- **Problemas**: [GitHub Issues](https://github.com/yourusername/evil-twin-ap/issues)
- **Discusiones**: [GitHub Discussions](https://github.com/yourusername/evil-twin-ap/discussions)
- **Seguridad**: Reporte vulnerabilidades por correo electrónico (no problemas públicos)
---
## ⚖️ Advertencia 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 │
│ │
└─────────────────────────────────────────────────────────────┘
Recuerda: Un gran poder conlleva una gran responsabilidad. Usa esta herramienta de forma ética, legal y responsable.
¡Felices pruebas (autorizadas)! 🔐