
Kit automatizado de ponto de acesso evil twin com captura de tráfego e monitoramento em tempo real para testes de penetração sem fio e pesquisa de segurança.
Um setup completo, modular e reproduzível de ponto de acesso gêmeo do mal para testes de segurança defensiva, testes de penetração e pesquisa em segurança sem fio.
APENAS PARA FINS EDUCACIONAIS E TESTES DE SEGURANÇA AUTORIZADOS
Esta ferramenta é fornecida para:
O USO ILEGAL É ESTRITAMENTE PROIBIDO. O acesso não autorizado a redes de computadores é crime na maioria das jurisdições. Os usuários são os únicos responsáveis por:
Ao usar esta ferramenta, você concorda em usá-la apenas em redes que possui ou possui permissão explícita por escrito para testar.
Este kit de ferramentas cria um ponto de acesso sem fio fraudulento (gêmeo do mal) que imita uma rede legítima. Ele captura o tráfego de rede criando um SSID idêntico ao qual os clientes podem se conectar automaticamente, acreditando ser a rede legítima.
Um gêmeo do mal é um ponto de acesso Wi-Fi fraudulento que parece legítimo, mas é configurado para espionar comunicações sem fio. O ataque funciona posicionando um ponto de acesso fraudulento perto da rede alvo, transmitindo o mesmo SSID e enganando os dispositivos para se conectarem.
Seu adaptador sem fio DEVE suportar o modo AP (Ponto de Acesso). Nem todas as placas sem fio suportam esta funcionalidade.
Estes adaptadores são conhecidos por funcionar bem e suportar o modo AP:
Alfa AWUS036ACH (RTL8812AU)
TP-Link TL-WN722N v1 (Atheros AR9271)
Alfa AWUS036ACM (MT7612U)
Antes de comprar, verifique se o adaptador suporta o modo AP:```bash
iw list | grep -A 10 "Supported interface modes"
### Hardware Adicional
- **Conexão Ethernet**: Necessária para o encaminhamento de internet (pode ser física ou adaptador USB-Ethernet)
- **USB com Potência Suficiente**: Alguns adaptadores de alta potência podem exigir um hub USB com alimentação
- **Computador**: Qualquer laptop ou desktop rodando Linux (recomendado: Kali Linux)
---
## 💻 Requisitos de Software
### Sistema Operacional
- **Recomendado**: Kali Linux (2020.1 ou superior)
- **Também Suportado**:
- Debian 10+
- Ubuntu 18.04+
- Fedora 30+
- Arch Linux
- ParrotOS
- BlackArch
### Pacotes Necessários
Estes serão instalados automaticamente pelo `install_dependencies.sh`:
- `hostapd` - Cria o ponto de acesso
- `dnsmasq` - Fornece serviços DHCP e DNS
- `iptables` - Configura regras de NAT e firewall
- `iproute2` - Configuração de interface de rede
- `wireless-tools` - Utilitários de gerenciamento sem fio
- `net-tools` - Ferramentas de diagnóstico de rede
- `iw` - Utilitário de configuração sem fio
- `tcpdump` - Utilitário de captura de pacotes
### Privilégios
- Acesso root/sudo é necessário para todas as operações
---
## 📦 Instalação
### Início 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
#### Passo 2: Instalar Dependências
O script de instalação detecta automaticamente sua distribuição Linux e instala os pacotes necessários:```bash
sudo ./install_dependencies.sh
O que faz:
PASSO CRÍTICO: Antes de configurar, detecte qual interface wireless suporta modo AP:```bash sudo ./detect_interface.sh
Este script analisará todas as interfaces sem fio e recomendará a melhor para usar.
**Exemplo de saída:**```
==========================================
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'
Principais insights:
Se você tiver várias interfaces:
Após a instalação e detecção das interfaces, verifique se tudo está funcionando:```bash
hostapd -v
dnsmasq -v
iw dev
iw list | grep -A 10 "Supported interface modes"
grep "^interface=" hostapd.conf dnsmasq.conf
---
## ⚙️ Configuração
### hostapd.conf - Configurações do Ponto de Acesso
Edite o `hostapd.conf` para personalizar seu gêmeo maligno:```bash
nano hostapd.conf
Principais configurações a modificar:```ini
interface=wlan1
ssid=TestNetwork
channel=6
wpa_passphrase=letitrain2
country_code=US
### dnsmasq.conf - Configurações de DHCP/DNS
Edite `dnsmasq.conf` para personalizar as configurações de rede:```bash
nano dnsmasq.conf
Configurações principais:```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
### Configuração de Rede
**Configurações padrão:**
- **IP do AP**: 192.168.99.1
- **Sub-rede**: 192.168.99.0/24
- **Intervalo DHCP**: 192.168.99.10 - 192.168.99.250
- **Canal**: 6 (2.4GHz)
- **Senha**: letitrain2
- **Interface**: wlan1 (adaptador externo)
---
## 🚀 Uso
### Iniciando o Evil Twin```bash
sudo ./start_evil_twin.sh
O que acontece:
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
### Parando o Evil Twin```bash
sudo ./stop_evil_twin.sh
O que acontece:
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áfego
### Capturando Tráfego de Rede
O kit de ferramentas inclui um script abrangente de captura de tráfego que salva dados de pacotes como arquivos PCAP para análise:```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
### Capture Features
- ✅ Salva o tráfego no formato PCAP padrão
- ✅ Rotação automática de arquivos para evitar arquivos enormes
- ✅ Estatísticas de pacotes em tempo real no modo verbose
- ✅ Suporte a filtragem BPF (Berkeley Packet Filter)
- ✅ Capturas cronometradas ou operação contínua
- ✅ Limpeza segura ao pressionar Ctrl+C
- ✅ Saída salva no diretório `output/`
### Output Location
Todas as capturas são salvas em `output/` com nomes de arquivo baseados em timestamp:
- Formato: `capture_YYYYMMDD_HHMMSS.pcap`
- Personalizado: `yourname_YYYYMMDD_HHMMSS.pcap`
### Analyzing Captured Traffic```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"
---
## 📊 Monitoramento
### Monitoramento de Conexões em Tempo Real
O kit de ferramentas fornece várias formas de monitorar clientes conectados:
#### 1. Registro de Conexões
Atualizado automaticamente a cada 5 segundos:```bash
tail -f logs/connections.log
Exemplo de saída:``` === 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. Atribuições DHCP
Veja as concessões DHCP em tempo real:```bash
tail -f logs/dnsmasq.log
Exemplo de saída:``` 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. Status do Ponto de Acesso
Monitorar logs do 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
---
## 🔧 Resolução de Problemas
### Problemas Comuns e Soluções
#### 1. "Nenhuma interface sem fio encontrada"
**Problema:** Sua placa de rede sem fio não foi detectada.
**Soluções:**```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: Seu adaptador não suporta a criação de pontos de acesso.
Solução: Você precisa de um adaptador wireless diferente. Veja Hardware Requirements para recomendações.
Verificar suporte:```bash iw list | grep -A 10 "Supported interface modes"
#### 3. "hostapd não conseguiu iniciar"
**Problema:** hostapd não consegue iniciar o ponto de acesso.
**Soluções:**```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: O NetworkManager está gerenciando a interface sem fio.
Solução:```bash
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager # Temporarily
sudo systemctl enable NetworkManager sudo systemctl start NetworkManager
#### 5. "Clientes conectam mas não têm internet"
**Problema:** NAT/roteamento não está configurado corretamente.
**Soluções:**```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: Não está sendo executado com privilégios suficientes.
Solução:```bash
sudo ./start_evil_twin.sh
#### 7. "Canal X não está disponível"
**Problema:** Regulamentações sem fio restringem certos canais.
**Soluções:**```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: A porta 53 (DNS) já está em uso.
Soluções:```bash
sudo lsof -i :53
sudo systemctl stop systemd-resolved
#### 9. "Interface errada sendo usada"
**Problema:** Scripts estão usando wlan0 em vez de wlan1 (ou vice-versa).
**Soluções:**```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 você encontrar problemas:
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
### Descrições dos Arquivos
| Arquivo | Propósito | Modificar? |
|---------|-----------|------------|
| `hostapd.conf` | Configurações do AP (SSID, canal, senha, interface) | ✅ Sim - personalize para seu teste |
| `dnsmasq.conf` | Configuração DHCP/DNS (interface, faixa de IP) | ✅ Sim - ajuste as configurações de rede |
| `install_dependencies.sh` | Instala pacotes necessários | ❌ Não - execute como está |
| `detect_interface.sh` | Detecta interfaces sem fio e suporte ao modo AP | ❌ Não - execute como está |
| `start_evil_twin.sh` | Inicia o AP gêmeo do mal | ⚠️ Raramente - apenas para personalização avançada |
| `stop_evil_twin.sh` | Para e limpa | ❌ Não - execute como está |
| `capture_traffic.sh` | Captura tráfego para arquivos PCAP | ⚠️ Use opções de CLI em vez disso |
| `logs/*.log` | Logs de execução | 📖 Somente leitura - para monitoramento |
| `output/*.pcap` | Dados de pacotes capturados | 📖 Somente leitura - para análise |
---
## 🔒 Considerações de Segurança
### Diretrizes de Uso Ético
1. **Autorização**: SEMPRE obtenha permissão por escrito antes de testar
2. **Escopo**: Permaneça dentro do escopo acordado de teste
3. **Documentação**: Mantenha registros detalhados de todas as atividades
4. **Divulgação**: Relate descobertas de forma responsável aos proprietários da rede
5. **Manipulação de Dados**: Não intercepte, armazene ou use indevidamente dados capturados
### Considerações Legais
- Criar pontos de acesso fraudulentos sem autorização é **ILEGAL** na maioria dos países
- As penalidades podem incluir multas, prisão e antecedentes criminais
- Até mesmo testes "inofensivos" podem ser processados se não autorizados
- Ambientes corporativos: Obtenha aprovação por escrito do departamento de TI
- Espaços públicos: NUNCA teste em redes públicas
### Segurança Técnica
**Este kit de ferramentas por design:**
- ✅ Foca na criação e monitoramento de pontos de acesso
- ✅ Inclui captura de tráfego apenas para análise autorizada
- ✅ Fornece registro abrangente para responsabilidade
- ⚠️ NÃO inclui coleta de credenciais
- ⚠️ NÃO inclui remoção de SSL ou ataques MITM ativos
- ⚠️ NÃO inclui phishing de portal cativo
**Para aumentar a segurança dos seus testes:**
- Use segmentos de rede isolados
- Implemente identificação de rede de teste (SSIDs únicos)
- Limite os testes a janelas de tempo específicas
- Monitore e registre todas as atividades
- Use apenas em gaiolas de Faraday ou salas blindadas de RF para evitar vazamento de sinal
### Medidas Defensivas
As organizações podem se proteger contra ataques de gêmeos do mal ao:
- Implementar **autenticação 802.1X** (WPA2/WPA3 Empresarial)
- Usar **validação de certificado** para autenticação de rede
- Implantar **sistemas de detecção de intrusão sem fio (WIDS)**
- Habilitar **Quadros de Gerenciamento Protegidos (PMF/802.11w)**
- Treinar usuários para verificar a autenticidade da rede
- Usar VPNs para comunicações sensíveis
- Monitorar pontos de acesso fraudulentos
---
## 🤝 Contribuindo
Contribuições são bem-vindas! Por favor, siga estas diretrizes:
### Como Contribuir
1. **Faça um fork do repositório**
2. **Crie um branch de funcionalidade**: `git checkout -b feature/your-feature`
3. **Faça suas alterações** com mensagens de commit claras
4. **Teste completamente** em vários sistemas, se possível
5. **Atualize a documentação** se alterar a funcionalidade
6. **Envie um pull request** com descrição detalhada
### Diretrizes de Contribuição
- Mantenha a estrutura modular
- Adicione logs detalhados para novos recursos
- Inclua tratamento de erros para casos extremos
- Atualize o README se adicionar novos recursos
- Siga o estilo de código existente (melhores práticas bash)
- Adicione comentários para lógica complexa
- Teste em pelo menos uma distribuição baseada em 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 projeto é fornecido apenas para fins educacionais e de testes de segurança autorizados.
Licença MIT (consulte o arquivo LICENSE para o texto completo)``` Copyright (c) 2025 [Your Name]
Permission is hereby granted for educational and authorized security testing purposes only...
---
## 🙏 Agradecimentos
- A equipe do Kali Linux pela excelente ferramenta de segurança sem fio
- Os projetos hostapd e dnsmasq
- A comunidade de pesquisa em segurança sem fio
- Colaboradores e testadores
---
## 📚 Recursos Adicionais
### Recursos de Aprendizagem
- [Guia de Testes de Segurança Sem Fio da OWASP](https://owasp.org/www-project-web-security-testing-guide/)
- [Metodologia de Teste de Penetração Wi-Fi](https://www.sans.org/white-papers/)
- [Segurança Sem Fio no Kali Linux](https://www.kali.org/docs/wireless/)
### Ferramentas Relacionadas
- **Aircrack-ng**: Suíte de auditoria sem fio
- **Wireshark**: Analisador de protocolos de rede
- **Bettercap**: Ataques e monitoramento de rede
- **Wifiphisher**: Ataques de phishing automatizados em Wi-Fi
### Documentação
- [Documentação do hostapd](https://w1.fi/hostapd/)
- [Manual do dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html)
- [Wiki de Wireless Linux](https://wireless.wiki.kernel.org/)
- [Manual do tcpdump](https://www.tcpdump.org/manpages/tcpdump.1.html)
---
## 📞 Suporte
- **Issues**: [Issues do GitHub](https://github.com/yourusername/evil-twin-ap/issues)
- **Discussões**: [Discussões do GitHub](https://github.com/yourusername/evil-twin-ap/discussions)
- **Segurança**: Reporte vulnerabilidades por e-mail (não por issues públicas)
---
## ⚖️ Aviso 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 │
│ │
└─────────────────────────────────────────────────────────────┘
Lembre-se: Com grandes poderes vêm grandes responsabilidades. Use esta ferramenta de forma ética, legal e responsável.
Felizes Testes (Autorizados)! 🔐
| Chipset | Exemplos de Modelos | Recursos | Faixa de Preço |
|---|
| RTL8812AU | Alfa AWUS036ACH, TP-Link Archer T4U | Banda dupla (2.4/5GHz), Alta potência, Excelente alcance | $40-60 |
| RTL8814AU | Alfa AWUS1900, TP-Link Archer T9UH | Quad antenna, AC1900, Longo alcance | $60-80 |
| Atheros AR9271 | TP-Link TL-WN722N v1, Alfa AWUS036NHA | Estável, Bem suportado, Econômico | $20-35 |
| MT7612U | Panda PAU0D, Alfa AWUS036ACM | Banda dupla, Boa compatibilidade | $35-50 |
| RTL8188EU | Vários adaptadores econômicos | Básico, Apenas 2.4GHz, Nível de entrada | $10-20 |