Herramientas y automatización para WMI
El workflow WMI separa el modelo WMI de sus transportes. Una consulta CIM por WS-Man y wmiexec por DCOM no recorren la misma ruta ni generan los mismos artefactos.
Selección
Sección titulada «Selección»| Pregunta | Herramienta | Diferencia |
|---|---|---|
| ¿qué clase puede leer la cuenta? | Get-CimInstance |
consulta nativa y filtrable |
| ¿funciona WS-Man o DCOM? | New-CimSession |
transporte explícito |
| ¿qué endpoints RPC existen? | Impacket rpcdump |
RPC, no autorización WMI |
| ¿puede invocar métodos remotos? | wmiexec |
modifica estado y usa SMB para output |
PowerShell usa WS-Man por defecto:
$credential = Get-Credential -Credential 'DOMAIN\USERNAME'$session = New-CimSession -ComputerName FQDN -Credential $credentialGet-CimInstance -CimSession $session -ClassName Win32_OperatingSystemRemove-CimSession $session-OperationTimeoutSec 60 limita cuánto espera una operación del servidor. Un valor inferior a la ventana de recuperación de conexión de tres minutos impide recuperar una interrupción de red que dure más que ese timeout. Por ello, el valor sirve para una consulta acotada y no como valor universal. La sesión debe retirarse aunque la consulta falle:
$credential = Get-Credential -Credential 'DOMAIN\USERNAME'$session = $nulltry { $session = New-CimSession -ComputerName FQDN ` -Credential $credential -OperationTimeoutSec 60 ` -ErrorAction Stop Get-CimInstance -CimSession $session ` -ClassName Win32_OperatingSystem -ErrorAction Stop}finally { if ($null -ne $session) { Remove-CimSession $session }}Para DCOM, crea opciones explícitas:
$option = New-CimSessionOption -Protocol Dcom$session = New-CimSession -ComputerName FQDN ` -Credential $credential -SessionOption $optionGet-CimInstance -CimSession $session -ClassName Win32_Service ` -Filter "State='Running'"Remove-CimSession $sessionLos filtros reducen objetos transferidos y eventos. Registra namespace, clase, propiedades solicitadas y transporte.
Impacket
Sección titulada «Impacket»rpcdump.py enumera interfaces RPC visibles:
impacket-rpcdump 'DOMAIN/USERNAME@TARGET_IP'wmiexec.py invoca Win32_Process.Create y recupera output mediante un recurso SMB. No es una herramienta de solo lectura:
impacket-wmiexec 'DOMAIN/USERNAME@TARGET_IP'La acción crea un proceso y puede crear un archivo temporal. Solo se usa después de confirmar permiso de método, canal SMB para retorno y cleanup. Una shell exitosa no demuestra acceso a todos los namespaces.
NSE y diagnóstico
Sección titulada «NSE y diagnóstico»Nmap puede identificar Endpoint Mapper en 135/tcp, pero no dispone de un script general que sustituya una consulta WMI autenticada. Usa -sV -p 135 para el primer endpoint y comprueba los puertos dinámicos devueltos.
Si WS-Man funciona y DCOM no, revisa RPC dinámico y firewall. Si DCOM conecta pero la clase devuelve Access denied, el problema está en namespace, clase o token. Si wmiexec ejecuta sin output, separa WMI de SMB.