RDP Hijack: Ver al otro lado de la pantalla
¡Hola! Esta semana vamos a dedicar el artículo a una técnica usada durante los ejercicios de Red Team para el movimiento lateral entre máquinas, con el objetivo de buscar información útil durante la infiltración. Se trata del secuestro de sesiones RDP o RDP hijack
Cuando realizamos los ejercicios de Red Team, en ocasiones es necesario acceder a algún equipo, que puede ser de empleados de la compañía, o a algún servidor. Es entonces cuando nos vienen a la cabeza las siguientes preguntas: ¿qué conexión tiene este equipo?, ¿cuál es la función del usuario dentro de la compañía?, ¿a dónde se conecta?, ¿qué documentos tiene?, etc.
Una de las técnicas que se pueden utilizar para responderlas es RDP Hijack, la cual nos permite capturar la sesión de un usuario que esté conectado a la máquina; es decir, ver todo lo que está realizando el usuario en su sesión y las aplicaciones que tiene abiertas.
¿Qué es RDP?
En primer lugar, las siglas RDP corresponden a “Remote Desktop Protocol”, un protocolo desarrollado por Microsoft con la finalidad de permitir la comunicación visual a un equipo con este servicio activo. Este servicio suele estar activo en el puerto 3389 y, además, es importante tenerlo en cuenta a la hora de analizar infraestructuras, inclusive en algunos ejercicios de Red Team. Este servicio nos permite acceder a la máquina como si estuviéramos físicamente en ella. No obstante, en este caso lo importante para nosotros es ver las funciones o tareas que puede realizar un usuario desde su equipo.
¿Qué es RDP Hijack?
Se define como robar o secuestrar una sesión activa de escritorio remoto en el equipo al que nos conectamos. Se debe a cómo funciona una de las utilidades de Windows que a continuación explicaremos.
Pero, antes de iniciar las pruebas de RDP Hijack, me gustaría hacer un inciso, ya que en los equipos Windows de usuarios no es posible acceder a dos sesiones al mismo tiempo, dado que para eso necesitamos tener multisesión y, si se intenta entrar, echaremos de la misma al usuario que esté conectado.
Esto provoca que, durante un ejercicio de Red Team, sea llamativo o alarme al usuario que esté usando el equipo, por lo que puede darse el caso de que avise al equipo de Blue Team para notificar de un posible ataque. Por este motivo, para no llamar la atención del mismo, y si es posible no llamar la atención del usuario, es necesario usar la herramienta Mimikatz, con la cual podemos habilitar la multisesión en el equipo al que queremos conectarnos.
El inconveniente de este paso es que esta herramienta ya está catalogada por muchos antivirus como malware, lo cual implica que salte el antivirus del equipo al que queremos acceder. Para evitarlo, existen numerosas herramientas que sirven para cifrar estas utilidades, necesarias para realizar los ejercicios de intrusión, y así evadir los antivirus. Sin embargo, esa no es la finalidad de este artículo.
En una máquina donde supuestamente hemos “evadido” el antivirus, solamente hay que realizar un paso, y ese es arrancar mimikatz para ejecutar este comando:
$ ts::multirdp
Una vez habilitado, podemos continuar con la explicación de este post para conseguir el RDP Hijack. Es importante tener en cuenta que lo anterior es solamente para equipos de usuarios. En los Windows Server no es necesario, ya que podemos conectar más de una sesión si no lo tienen cortado.
Si vamos a nuestro equipo Windows podemos comprobar que, si abrimos el Administrador de tareas e intentamos conectarnos a través de tsdmin.msc o con el comando tscon.exe, este nos pedirá credenciales para poder acceder a la sesión.
Según revelaron Benjamin Delpy, creador de mimikatz, y Alexander Korznikov, si ejecutamos tscon.exe con permisos de administrador o usuario de sistema, seremos capaces de entrar en cualquier sesión sin necesidad de credenciales. Es decir, si ya somos administradores de la máquina, Windows interpreta que ya no necesita pedir de nuevo las credenciales y te devuelve la sesión del usuario.
¿Cómo podemos capturar la sesión del usuario?
En primer lugar, nos conectamos por RDP con la cuenta que tenemos de Administrador del equipo, o bien con cualquier otra cuenta que se tenga, pero teniendo en cuenta que tras ello deberemos escalar privilegios.
Abrimos un cmd con permisos de administrador (esto último es importante) y ejecutamos el comando “query user” para saber las sesiones activas en nuestro escritorio:
Principalmente, nos tendremos que fijar en cuánto tiempo está el usuario desconectado, para así evitar echarlo de su sesión mientras está trabajando con la máquina.
Una vez obtenida la información del query user, para crear nuestro rdp hijack “sc create sesshijack binpath= “cmd.exe /k tscon <idsession> /dest:<nombredenuestrasesion>”, debemos ejecutar lo siguiente:
Nota 1: hemos llamado a la sesión de otra manera y, como se puede ver en la captura, ya se habían realizado pruebas anteriormente y no se puede sobrescribir la misma sesión que habíamos creado.
Una vez se tiene la sesión de rdp hijack creada, solo tenemos que hacer lo siguiente: “net start sesshijack”. Y ya lo tenemos.
Como podemos ver, ¡hemos capturado la sesión del usuario que estaba en el equipo y ya tenemos nuestro RDP Hijack!
Nota 2: Si no funciona tu conexión, es muy posible que el usuario al que estés intentando acceder no tenga habilitada la sesión de escritorio remoto. Para ello, como se tienen permisos de administrador, solo se tiene que habilitar en las propiedades del usuario.
Y aquí finaliza mi primer post para Security Garage. Espero que os haya resultado interesante y hayáis aprendido algo nuevo ;)
Nos vemos en el próximo. ¡Un saludo!