Evil-WinRM
Introduction
WinRM es la implementación de Microsoft del protocolo WS-Management, muy habitual en entornos Windows, especialmente en sus versiones Server. Fue diseñado para facilitar la administración remota del sistema. Aunque en las estaciones de trabajo (Windows 7, 8, 8.1 o 10) no viene activado por defecto, en Windows Server suele estar habilitado en el puerto 5985.
Si cuentas con acceso al sistema —ya sea con usuario y contraseña, con el hash NTLM o incluso con un ticket TGT de Kerberos— puedes conectarte a este servicio y obtener una shell en el sistema. Esto es especialmente útil en la etapa de post-explotación, una vez que ya tienes cierto control sobre el entorno.
Aquí es donde entra Evil-WinRM, una de las herramientas más interesantes para explotar y gestionar conexiones a través de WinRM, permitiéndote realizar pruebas de post-explotación de manera eficaz y práctica.
Para instalar evil-winrm
ejecutaremos el siguiente comando:
Validating Access
Para verificar que disponemos de acceso para conectarnos a través de WinRM
al equipo, podemos hacer uso de la herramienta nxc
(NetExec) para validar dicho acceso. En el resultado nos debe aparecer con un +
y con la palabra Pwn3d!
. En caso contrario, solamente nos saldrá como -
.
Ejemplo de acceso para conectarnos al equipo mediante WinRM
.
Ejemplo de que no disponemos de acceso para conectarnos al equipo mediante WinRM
.
Autenticación usuario y contraseña
Autenticación realizando Pass-The-Hash (PtH) con el hash NTLM
Autenticación mediante Kerberos
Autenticación mediante Kerberos (.ccache)
Password Spraying / Brute Force
Authentication on WinRM
A continuación, se detallan como conectarnos mediante evil-winrm
a un equipo que disponga WinRM
expuesto.
Usuario y contraseña
Usuario y contraseña + SSL
Usuario y hash NTLM [Pass-The-Hash (PtH)]
Autenticación con key (.pem)
Kerberos
La autenticación mediante Kerberos requiere de una serie de pasos previos para que funcione correctamente.
Sincronizar la hora de la máquina local con la del Domain Controller.
Disponer de un TGT (Ticket Granting Ticket)
Exportar el TGT en la variable KRB5CCNAME
Disponer de la instalación de
krb5-user
ykrb5-config
en el equipo localConfigurar adecuadamente el archivo
/etc/krb5.conf
con la configuración necesaria del dominio
El comando para conectarnos mediante el TGT obtenido es el siguiente:
Para configurar paso a paso esta autenticación al WinRM
mediante Kerberos, realizaremos los siguientes pasos:
Deberemos de sincronizar la hora de nuestro equipo con la del DC (Domain Controller).
Instalaremos el paquete de ntpdate
para ayudarnos a sincronizar la hora de nuestro reloj.
Una vez instalado, sincronizaremos nuestra hora con la del DC.
Help Menu
Menu Functions
Bypass AMSI
La herramienta de evil-winrm
dispone de un módulo para realizar un Bypass de la AMSI para lograr ejecutar nuestro código malicioso.
Service Enumeration
A veces, las herramientas de enumeración en post-explotación no logran identificar el nombre del servicio activo en el sistema objetivo. En esos casos, evil-winrm
resulta muy útil, ya que permite ver una lista completa de los servicios en ejecución desde su menú, específicamente a través de la opción de services
. Esto es especialmente valioso para detectar servicios sin comillas, que otras herramientas podrían pasar por alto.
Upload Transfer
Evil-WinRM cuenta con un módulo que te permite subir archivos desde el directorio actual de tu sesión directamente al sistema comprometido.
Esto facilita la transferencia de herramientas, scripts u otros recursos necesarios para continuar con tus actividades de post-explotación de manera sencilla y directa.
Download Transfer
Evil-WinRM también te permite extraer archivos del sistema comprometido hacia tu máquina local. Simplemente, estando en el directorio deseado, utiliza el comando:
Esto resulta muy práctico para recolectar información o respaldar archivos importantes durante la fase de post-explotación.
Loading PowerShell Script
Evil-winrm
ofrece una funcionalidad que permite cargar scripts directamente desde nuestra máquina local. Usando la opción -s
seguida de la ruta del script, podemos inyectarlo en memoria en el sistema objetivo. Además, cuenta con una capacidad para omitir AMSI, lo que resulta fundamental antes de importar cualquier script.
En el ejemplo que se muestra, primero se desactiva AMSI y luego se carga el script Invoke-Mimikatz.ps1 en la memoria del sistema comprometido, lo que nos permite ejecutar comandos de mimikatz. Con este método, por ejemplo, podemos volcar las credenciales en caché y, posteriormente, utilizar el hash NTLM obtenido para realizar un ataque de Pass-The-Hash (PtH)
.
Store logs with Evil-winrm
Esta función te permite guardar registros de tus sesiones remotas en tu máquina local durante la fase de enumeración. En escenarios como CTF o pruebas internas de penetración, es esencial contar con un historial para la elaboración de informes. Evil-winrm incorpora la opción -l, que al incluirla en la sesión, almacena automáticamente todos los logs en el directorio /root/evil-winrm-logs
de tu máquina base, etiquetados con la fecha y la IP del objetivo. Por ejemplo, si ejecutas el comando ipconfig
durante una sesión, la salida se registrará localmente, facilitándote la referencia posterior.
Podemos corroborarlo revisando los registros almacenados; notarás que se capturó una imagen de la terminal en el instante en el que ejecutamos el comando ipconfig.
References
Última actualización