the_open_door
café
ESEN
← Volver al índice

WMI lateral movement

ATT&CKT1047

Windows Management Instrumentation (WMI) es el subsistema de administración remota de Windows. Con unas credenciales válidas de administrador local sobre otra máquina, WMI permite ejecutar comandos en remoto sin dejar un binario en disco ni crear un servicio, lo que lo hace más discreto que PsExec. Es una de las vías de movimiento lateral más limpias dentro de un dominio: se apoya en protocolos legítimos de Windows y hereda el contexto del usuario autenticado, no de SYSTEM, por lo que genera menos ruido para quien busca la intrusión.

Mecanismo

La comunicación WMI se inicia siempre en el puerto TCP 135 (RPC/DCOM) y luego salta a un puerto alto dinámico. Desde Linux, wmiexec.py de Impacket ofrece una shell semi-interactiva por WMI con usuario y contraseña:

wmiexec.py <domain>/<user>:'<pass>'@<ip>

Si no tenemos la contraseña pero sí el hash NT, WMI encaja con Pass-the-Hash. Invoke-WMIExec (de Invoke-TheHash, en PowerShell) ejecuta un comando pasando solo el hash:

Invoke-WMIExec -Target <host> -Domain <domain> -Username <user> -Hash <hash> -Command "<command>"

Y con un ticket Kerberos (Pass-the-Ticket), wmiexec.py autentica sin contraseña usando el TGT/TGS en caché:

KRB5CCNAME=<ticket>.ccache wmiexec.py -k -no-pass <host>

netexec (antes CrackMapExec) también sabe ejecutar por WMI eligiendo el método (--exec-method wmiexec), útil para lanzar el mismo comando contra varios hosts a la vez.

Requisitos

Credenciales (contraseña, hash NT o ticket Kerberos) de una cuenta que sea administrador local en el destino, y que el puerto 135 más el rango RPC dinámico sean accesibles (a menudo hay que atravesar la red con un proxy dinámico). Sin derechos de administrador local, WMI no da ejecución.

Cómo detectarlo. Delata el abuso la creación de procesos hijo de WmiPrvSE.exe (el host de proveedores WMI) lanzando cmd.exe o powershell.exe, los eventos 4688 con ese árbol, y la actividad de red hacia el 135 seguida de un puerto alto. wmiexec.py además escribe la salida en un recurso ADMIN$ mediante un nombre de fichero temporal, otra señal útil. El inicio de sesión asociado suele ser de tipo 3 (red) con la cuenta reutilizada.

Defensa. Restringir quién es administrador local (LAPS y tiering), segmentar el RPC/135 con el cortafuegos, exigir firma y vigilar los hijos de WmiPrvSE.exe; y reducir la reutilización de credenciales que habilita el salto. Es la alternativa discreta a PsExec dentro del Pass-the-Hash y encaja con Overpass-the-Hash y Pass-the-Ticket; suele venir tras volcar hashes con Mimikatz y explotar la reutilización de credenciales.