Ir al contenido

RDP

Por

Madurezreviewed
Última revisión
Publicado
Última actualización

Una sesión de escritorio remoto necesita transportar mucho más que píxeles. El cliente negocia seguridad, autenticación, capacidades gráficas y canales para clipboard, unidades, audio, impresoras o smart cards. Remote Desktop Protocol (RDP) reúne esas funciones en una conexión que puede crear una sesión nueva, reconectar otra existente o quedar detenida antes del escritorio.

El error visible en el cliente comprime varias fases. TCP puede funcionar mientras falla TLS. CredSSP puede autenticar la cuenta y la política denegar el derecho de inicio de sesión remoto. El escritorio puede crearse y cerrarse por límites de sesión. Enumerar RDP exige conservar en qué transición se detuvo la conexión y qué canales decidió habilitar el cliente.

Los ejemplos usan TARGET_IP, FQDN, DOMAIN y USERNAME como placeholders.

Nmap obtiene seguridad, certificado e información NTLM sin crear una sesión gráfica completa. FreeRDP negocia como un cliente real y permite controlar certificado, dominio, transporte y redirecciones. PowerShell y la configuración local explican después derechos de inicio de sesión, NLA, listeners y política efectiva.

Pregunta Herramienta Comprobación
¿habla RDP y qué seguridad ofrece? Nmap NSE negociación FreeRDP contra el mismo endpoint
¿qué identidad anuncia? rdp-ntlm-info DNS, certificado y otros servicios
¿valida el certificado esperado? FreeRDP /cert:tofu fingerprint y FQDN usados
¿puede iniciar sesión la cuenta? FreeRDP autenticación y derecho de logon remoto
¿qué canales se redirigen? flags de FreeRDP configuración explícita del cliente y servidor

Evita /cert:ignore como opción por defecto y no incluyas contraseñas en la línea de comandos. Una conexión fallida debe conservar el código y la fase: TCP, TLS, CredSSP, autenticación o autorización.

RDP suele usar 3389/tcp y también puede utilizar 3389/udp para mejorar el transporte. Antes de crear una sesión gráfica, cliente y servidor negocian el protocolo de seguridad.

En configuraciones actuales es común Network Level Authentication (NLA), que utiliza CredSSP para autenticar antes de crear la sesión completa. El servidor también puede ofrecer TLS o mecanismos RDP anteriores. La opción disponible no tiene por qué ser la elegida por cada cliente.

NLA desplaza la autenticación antes de reservar los recursos de una sesión gráfica y reduce la información que recibe un cliente no autenticado. CredSSP negocia un mecanismo como Kerberos o NTLM dentro de un canal protegido y delega credenciales para completar el acceso. NLA no decide por sí sola si la cuenta tiene derecho de inicio de sesión remoto.

Nmap -sV identifica el servicio. rdp-enum-encryption consulta protocolos y niveles de cifrado. rdp-ntlm-info inicia una negociación CredSSP suficiente para obtener datos NTLM cuando el servidor los publica:

Enumerar seguridad e identidad RDP
nmap -sV -p 3389 \
--script rdp-enum-encryption,rdp-ntlm-info \
TARGET_IP

El output puede incluir domain name, NetBIOS name, DNS hostname y versión de sistema. Son valores anunciados durante esa negociación. Correlaciónalos con DNS y otros servicios antes de tratarlos como la identidad canónica del host.

FreeRDP abre una sesión gráfica. /v: fija el endpoint, /u: el usuario, /d: el dominio y /cert:tofu confía en la primera fingerprint observada y exige la misma después:

Abrir una sesión RDP
xfreerdp /v:FQDN /u:USERNAME /d:DOMAIN /cert:tofu

El cliente solicita la contraseña si no se incluye. Evitar /p:PASSWORD reduce su exposición en procesos e historial.

Registra el certificado, la fingerprint, NLA, gateway y redirecciones habilitadas. Cada redirección amplía la conexión entre el cliente y la sesión remota. Por ejemplo, compartir una unidad introduce archivos locales dentro del entorno remoto, mientras clipboard permite transferir texto en ambas direcciones.

Habilitar las redirecciones de una en una permite atribuir un fallo a clipboard, unidades, audio, impresoras, smart cards o al canal principal. Cada prueba debe conservar el canal que se añadió y el cambio observado.

Un endpoint que responde en 3389 confirma RDP, no el acceso de una cuenta. Los fallos posteriores pertenecen a fases distintas:

Síntoma Comprobación
Error de certificado Hostname usado, CA, fechas, fingerprint y modo configurado en el cliente.
NLA rechazada Dominio, formato del usuario, credencial y capacidad CredSSP del cliente.
Autenticación correcta sin escritorio Derecho de inicio de sesión remoto, grupo, límite y estado del servicio.
Pantalla creada y desconexión inmediata Perfil, políticas de sesión, licenciamiento y logs del host.

La latencia y la pérdida pueden hacer que TCP funcione mientras el transporte UDP falla. Conserva ambos resultados por separado.

Con acceso local, relaciona estado de TermService, listeners, certificado, NLA, grupos autorizados, límites de sesión y redirecciones permitidas. Las políticas locales y de dominio pueden modificar la configuración efectiva.

Las claves siguientes muestran si RDP está habilitado y cómo está configurado el listener RDP-Tcp:

Consultar estado, puerto, NLA y capa de seguridad de RDP
Get-ItemProperty `
'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' `
-Name fDenyTSConnections
Get-ItemProperty `
'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `
-Name PortNumber,UserAuthentication,SecurityLayer,MinEncryptionLevel

fDenyTSConnections = 0 permite conexiones RDP. UserAuthentication = 1 exige NLA. SecurityLayer y MinEncryptionLevel describen la política del listener, pero una GPO puede volver a escribir esos valores. Get-LocalGroupMember -Group 'Remote Desktop Users' muestra miembros locales. Administradores, grupos de dominio y el derecho SeRemoteInteractiveLogonRight también intervienen.

Los logs de TerminalServices distinguen negociación, autenticación, creación de sesión y desconexión. Esa separación ayuda a explicar un acceso parcial que desde el cliente aparece como un único error.

rdp-enum-encryption prueba capas de seguridad y niveles de cifrado. rdp-ntlm-info inicia la negociación necesaria para recuperar metadatos NTLM expuesta. rdp-vuln-ms12-020 comprueba una condición histórica distinta y no debe agruparse con fingerprinting:

Separar cifrado de identidad
nmap -sV -n -Pn -p 3389 \
--script rdp-enum-encryption,rdp-ntlm-info TARGET_IP

Compara con xfreerdp /v:TARGET_IP /cert:tofu y registra la fingerprint aceptada. tofu confía en el primer certificado visto y lo fija localmente. No uses /cert:ignore como valor predeterminado porque elimina la señal de sustitución.

NLA obliga a autenticar mediante CredSSP antes de crear el escritorio. Una credencial válida puede seguir fallando por derecho Allow log on through Remote Desktop Services, grupo, deny explícito, horario, gateway, MFA o límite de sesiones. Registra dominio, formato del usuario, NLA, error y si llegó a crearse sesión.

Clipboard, unidades, impresoras, audio y smart cards amplían la frontera de datos entre cliente y host. Deshabilita redirecciones que no necesita la prueba. Una sesión gráfica puede bloquear, desconectar o coexistir con la sesión del usuario según edición y política, por lo que logoff no es equivalente a cerrar la ventana.

Windows registra autenticación, Logon Type 10, RemoteConnectionManager, LocalSessionManager, CredSSP y actividad de proceso. Gateways y firewalls conservan otra capa. Al cerrar, termina la sesión de prueba sin cerrar sesiones ajenas, desmonta drives redirigidos, retira credenciales del command line y registra el ID de sesión. Un certificado distinto, un disconnect o una pantalla negra son señales de diagnóstico, no prueba de credenciales inválidas.

Compara FreeRDP, NetExec y NSE en herramientas y automatización. Usa la checklist para conservar transporte, autenticación y autorización. La cheatsheet recupera comandos ya explicados.