
Автоматизированный набор инструментов для создания злого двойника точки доступа с захватом трафика и мониторингом в реальном времени для тестирования на проникновение в беспроводные сети и исследований в области безопасности.
Полный, модульный и воспроизводимый набор для создания злонамеренной точки доступа (evil twin) для защитного тестирования безопасности, тестирования на проникновение и исследований беспроводной безопасности.
ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ И АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ
Данный инструмент предоставляется для:
НЕЗАКОННОЕ ИСПОЛЬЗОВАНИЕ СТРОГО ЗАПРЕЩЕНО. Несанкционированный доступ к компьютерным сетям является преступлением в большинстве юрисдикций. Пользователи несут единоличную ответственность за:
Используя этот инструмент, вы соглашаетесь применять его только в сетях, которыми владеете или на тестирование которых получили явное письменное разрешение.
Этот набор инструментов создаёт мошенническую беспроводную точку доступа (evil twin), имитирующую легитимную сеть. Он захватывает сетевой трафик, создавая идентичный SSID, к которому клиенты могут автоматически подключаться, полагая, что это легитимная сеть.
Evil twin — это мошенническая точка доступа Wi-Fi, которая выглядит как легитимная, но настроена для перехвата беспроводных коммуникаций. Атака работает путём размещения мошеннической точки доступа рядом с целевой сетью, вещания того же SSID и обмана устройств, заставляя их подключаться.
Ваш беспроводной адаптер ОБЯЗАТЕЛЬНО должен поддерживать режим AP (точки доступа). Не все беспроводные карты поддерживают эту функцию.
Эти адаптеры, как известно, хорошо работают и поддерживают режим AP:
Alfa AWUS036ACH (RTL8812AU)
TP-Link TL-WN722N v1 (Atheros AR9271)
Alfa AWUS036ACM (MT7612U)
Перед покупкой убедитесь, что адаптер поддерживает режим AP:```bash
iw list | grep -A 10 "Supported interface modes"
### Дополнительное оборудование
- **Подключение Ethernet**: Требуется для передачи интернет-трафика (может быть физический или USB-Ethernet адаптер)
- **Достаточное питание USB**: Для некоторых высокомощных адаптеров может потребоваться USB-концентратор с питанием
- **Компьютер**: Любой ноутбук или настольный ПК под управлением Linux (рекомендуется: Kali Linux)
---
## 💻 Программные требования
### Операционная система
- **Рекомендуется**: Kali Linux (2020.1 или новее)
- **Также поддерживается**:
- Debian 10+
- Ubuntu 18.04+
- Fedora 30+
- Arch Linux
- ParrotOS
- BlackArch
### Необходимые пакеты
Они будут автоматически установлены с помощью `install_dependencies.sh`:
- `hostapd` — создает точку доступа
- `dnsmasq` — предоставляет DHCP и DNS сервисы
- `iptables` — настраивает NAT и правила межсетевого экрана
- `iproute2` — конфигурация сетевых интерфейсов
- `wireless-tools` — утилиты для управления беспроводными сетями
- `net-tools` — инструменты диагностики сети
- `iw` — утилита для конфигурации беспроводных подключений
- `tcpdump` — утилита захвата пакетов
### Привилегии
- Для всех операций требуется root/доступ через sudo
---
## 📦 Установка
### Быстрый старт```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
#### Шаг 2: Установка зависимостей
Скрипт установки автоматически определяет ваш дистрибутив Linux и устанавливает необходимые пакеты:```bash
sudo ./install_dependencies.sh
What it does:
КРИТИЧЕСКИЙ ШАГ: Перед настройкой определите, какой беспроводной интерфейс поддерживает AP mode:```bash sudo ./detect_interface.sh
Этот скрипт проанализирует все беспроводные интерфейсы и порекомендует лучший для использования.
**Пример вывода:**```
==========================================
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'
Ключевые выводы:
Если у вас несколько интерфейсов:
После установки и обнаружения интерфейсов убедитесь, что всё работает:```bash
hostapd -v
dnsmasq -v
iw dev
iw list | grep -A 10 "Supported interface modes"
grep "^interface=" hostapd.conf dnsmasq.conf
---
## ⚙️ Конфигурация
### hostapd.conf - Настройки точки доступа
Отредактируйте `hostapd.conf`, чтобы настроить вашего злого близнеца:```bash
nano hostapd.conf
Ключевые настройки для изменения:```ini
interface=wlan1
ssid=TestNetwork
channel=6
wpa_passphrase=letitrain2
country_code=US
### dnsmasq.conf - Настройки DHCP/DNS
Отредактируйте `dnsmasq.conf`, чтобы настроить сетевые параметры:```bash
nano dnsmasq.conf
Ключевые настройки:```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
### Конфигурация сети
**Настройки по умолчанию:**
- **IP точки доступа**: 192.168.99.1
- **Подсеть**: 192.168.99.0/24
- **Диапазон DHCP**: 192.168.99.10 - 192.168.99.250
- **Канал**: 6 (2.4GHz)
- **Пароль**: letitrain2
- **Интерфейс**: wlan1 (внешний адаптер)
---
## 🚀 Использование
### Запуск Evil Twin```bash
sudo ./start_evil_twin.sh
Что происходит:
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
### Остановка злого двойника```bash
sudo ./stop_evil_twin.sh
Что происходит:
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
---
## 📸 Захват трафика
### Захват сетевого трафика
Инструментарий включает в себя комплексный скрипт захвата трафика, который сохраняет данные пакетов в файлы PCAP для анализа:```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
### Возможности захвата
- ✅ Сохраняет трафик в стандартном формате PCAP
- ✅ Автоматическая ротация файлов для предотвращения создания больших файлов
- ✅ Статистика пакетов в реальном времени в подробном режиме
- ✅ Поддержка фильтрации BPF (Berkeley Packet Filter)
- ✅ Захват по времени или непрерывная работа
- ✅ Безопасная очистка при Ctrl+C
- ✅ Выходные данные сохраняются в каталог `output/`
### Местоположение вывода
Все захваты сохраняются в `output/` с именами файлов на основе временной метки:
- Формат: `capture_YYYYMMDD_HHMMSS.pcap`
- Пользовательский: `yourname_YYYYMMDD_HHMMSS.pcap`
### Анализ захваченного трафика```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"
---
## 📊 Мониторинг
### Мониторинг подключений в реальном времени
Набор инструментов предоставляет несколько способов мониторинга подключенных клиентов:
#### 1. Журнал подключений
Автоматически обновляется каждые 5 секунд:```bash
tail -f logs/connections.log
Пример вывода:``` === 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. Назначения DHCP
Просматривать аренды DHCP в реальном времени:```bash
tail -f logs/dnsmasq.log
Пример вывода:``` 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. Статус точки доступа
Мониторинг логов 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
---
## 🔧 Устранение неполадок
### Общие проблемы и решения
#### 1. "Беспроводные интерфейсы не найдены"
**Проблема:** Ваш беспроводной адаптер не обнаружен.
**Решения:**```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
Проблема: Ваш адаптер не поддерживает создание точек доступа.
Решение: Вам нужен другой беспроводной адаптер. Рекомендации см. в разделе Требования к оборудованию.
Проверка поддержки:```bash iw list | grep -A 10 "Supported interface modes"
#### 3. "hostapd не удалось запустить"
**Проблема:** hostapd не может запустить точку доступа.
**Решения:**```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
Проблема: NetworkManager управляет беспроводным интерфейсом.
Решение:```bash
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager # Temporarily
sudo systemctl enable NetworkManager sudo systemctl start NetworkManager
#### 5. "Клиенты подключаются, но нет интернета"
**Проблема:** NAT/маршрутизация настроена неправильно.
**Решения:**```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
Проблема: Недостаточно привилегий для выполнения.
Решение:```bash
sudo ./start_evil_twin.sh
#### 7. "Канал X недоступен"
**Проблема:** Беспроводные регламенты ограничивают некоторые каналы.
**Решения:**```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)
Проблема: Порт 53 (DNS) уже используется.
Решения:```bash
sudo lsof -i :53
sudo systemctl stop systemd-resolved
#### 9. "Используется неправильный интерфейс"
**Проблема:** Скрипты используют wlan0 вместо wlan1 (или наоборот).
**Решения:**```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
Если возникли проблемы:
logs/hostapd.log, logs/dnsmasq.logsudo ./detect_interface.shbash -xdmesg и 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
### Описание файлов
| Файл | Назначение | Изменять? |
|------|------------|-----------|
| `hostapd.conf` | Настройки точки доступа (SSID, канал, пароль, интерфейс) | ✅ Да — настройте под свой тест |
| `dnsmasq.conf` | Конфигурация DHCP/DNS (интерфейс, диапазон IP) | ✅ Да — настройте параметры сети |
| `install_dependencies.sh` | Устанавливает необходимые пакеты | ❌ Нет — запускать как есть |
| `detect_interface.sh` | Определяет беспроводные интерфейсы и поддержку режима AP | ❌ Нет — запускать как есть |
| `start_evil_twin.sh` | Запускает точку доступа evil twin | ⚠️ Редко — только для продвинутой кастомизации |
| `stop_evil_twin.sh` | Останавливает и очищает | ❌ Нет — запускать как есть |
| `capture_traffic.sh` | Захватывает трафик в PCAP-файлы | ⚠️ Используйте параметры командной строки |
| `logs/*.log` | Журналы времени выполнения | 📖 Только чтение — для мониторинга |
| `output/*.pcap` | Захваченные пакетные данные | 📖 Только чтение — для анализа |
---
## 🔒 Вопросы безопасности
### Рекомендации по этическому использованию
1. **Авторизация**: ВСЕГДА получайте письменное разрешение перед тестированием
2. **Объём**: Оставайтесь в пределах согласованного объёма тестирования
3. **Документация**: Ведите подробные журналы всех действий
4. **Раскрытие**: Ответственно сообщайте об обнаруженных уязвимостях владельцам сети
5. **Обработка данных**: Не перехватывайте, не храните и не используйте захваченные данные неправомерно
### Правовые аспекты
- Создание несанкционированных точек доступа **НЕЗАКОННО** в большинстве стран
- Наказание может включать штрафы, тюремное заключение и уголовную ответственность
- Даже «безобидное» тестирование может преследоваться по закону, если оно не авторизовано
- Корпоративная среда: получите письменное одобрение от IT-отдела
- Общественные места: НИКОГДА не тестируйте на публичных сетях
### Техническая безопасность
**Этот инструментарий по замыслу:**
- ✅ Сосредоточен на создании и мониторинге точки доступа
- ✅ Включает захват трафика только для авторизованного анализа
- ✅ Обеспечивает полное журналирование для подотчётности
- ⚠️ Не включает сбор учётных данных
- ⚠️ Не включает SSL-стриппинг или активные MITM-атаки
- ⚠️ Не включает фишинговые captive portal
**Для повышения безопасности вашего тестирования:**
- Используйте изолированные сетевые сегменты
- Применяйте идентификацию тестовой сети (уникальные SSID)
- Ограничивайте тестирование определёнными временными окнами
- Мониторьте и регистрируйте все действия
- Используйте только в клетках Фарадея или RF-экранированных помещениях для предотвращения утечки сигнала
### Защитные меры
Организации могут защититься от атак evil twin с помощью:
- Внедрения аутентификации **802.1X** (WPA2/WPA3 Enterprise)
- Использования **проверки сертификатов** для сетевой аутентификации
- Развёртывания **систем обнаружения беспроводных вторжений (WIDS)**
- Включения **защищённых управляющих кадров (PMF/802.11w)**
- Обучения пользователей проверке подлинности сети
- Использования VPN для конфиденциальных коммуникаций
- Мониторинга на предмет несанкционированных точек доступа
---
## 🤝 Вклад в проект
Приветствуется любой вклад! Пожалуйста, следуйте этим рекомендациям:
### Как внести вклад
1. **Сделайте форк репозитория**
2. **Создайте ветку для функции**: `git checkout -b feature/your-feature`
3. **Внесите изменения** с понятными комментариями к коммитам
4. **Тщательно протестируйте** на нескольких системах, если возможно
5. **Обновите документацию**, если изменили функциональность
6. **Отправьте pull request** с подробным описанием
### Рекомендации по вкладу
- Сохраняйте модульную структуру
- Добавляйте подробное журналирование для новых функций
- Включайте обработку ошибок для граничных случаев
- Обновляйте README при добавлении новых функций
- Следуйте существующему стилю кода (лучшие практики Bash)
- Добавляйте комментарии для сложной логики
- Тестируйте как минимум на одном дистрибутиве на основе Debian
### Стиль кода```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"
Этот проект предоставляется только для образовательных и авторизованных целей тестирования безопасности.
Лицензия MIT (полный текст в файле LICENSE)``` Copyright (c) 2025 [Your Name]
Permission is hereby granted for educational and authorized security testing purposes only...
---
## 🙏 Благодарности
- Команде Kali Linux за отличные инструменты беспроводной безопасности
- Проектам hostapd и dnsmasq
- Сообществу исследователей беспроводной безопасности
- Участникам и тестировщикам
---
## 📚 Дополнительные ресурсы
### Учебные ресурсы
- [Руководство по тестированию беспроводной безопасности OWASP](https://owasp.org/www-project-web-security-testing-guide/)
- [Методология тестирования беспроводных сетей на проникновение](https://www.sans.org/white-papers/)
- [Безопасность беспроводных сетей в Kali Linux](https://www.kali.org/docs/wireless/)
### Связанные инструменты
- **Aircrack-ng**: Набор для аудита беспроводных сетей
- **Wireshark**: Анализатор сетевых протоколов
- **Bettercap**: Сетевые атаки и мониторинг
- **Wifiphisher**: Автоматизированные фишинговые атаки на WiFi
### Документация
- [Документация hostapd](https://w1.fi/hostapd/)
- [Руководство dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html)
- [Вики по беспроводным сетям Linux](https://wireless.wiki.kernel.org/)
- [Руководство tcpdump](https://www.tcpdump.org/manpages/tcpdump.1.html)
---
## 📞 Поддержка
- **Вопросы**: [GitHub Issues](https://github.com/yourusername/evil-twin-ap/issues)
- **Обсуждения**: [GitHub Discussions](https://github.com/yourusername/evil-twin-ap/discussions)
- **Безопасность**: Сообщайте об уязвимостях по электронной почте (не публичные issue)
---
## ⚖️ Последнее предупреждение```
┌─────────────────────────────────────────────────────────────┐
│ │
│ 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 │
│ │
└─────────────────────────────────────────────────────────────┘
Запомните: С великой силой приходит великая ответственность. Используйте этот инструмент этично, законно и ответственно.
Удачного (авторизованного) тестирования! 🔐
| Чипсет | Примеры моделей | Особенности | Ценовой диапазон |
|---|
| RTL8812AU | Alfa AWUS036ACH, TP-Link Archer T4U | Двухдиапазонный (2.4/5ГГц), Высокая мощность, Отличный радиус действия | $40–60 |
| RTL8814AU | Alfa AWUS1900, TP-Link Archer T9UH | Четыре антенны, AC1900, Большой радиус | $60–80 |
| Atheros AR9271 | TP-Link TL-WN722N v1, Alfa AWUS036NHA | Стабильный, Хорошая поддержка, Бюджетный | $20–35 |
| MT7612U | Panda PAU0D, Alfa AWUS036ACM | Двухдиапазонный, Хорошая совместимость | $35–50 |
| RTL8188EU | Различные бюджетные адаптеры | Базовый, только 2.4ГГц, Начальный уровень | $10–20 |