Registros de eventos de PowerShell en el análisis forense: todos los ID que importan
Un mapa de los event ID forenses de PowerShell en los registros Operational y clásico Windows PowerShell (4104, 4103, 400, 403, 600, 800) y de lo que demuestra cada uno.
En resumen. La evidencia forense de PowerShell reside en dos registros de eventos. El registro moderno Microsoft-Windows-PowerShell/Operational contiene el 4104 (Script Block Logging) y el 4103 (Module Logging). El registro clásico Windows PowerShell contiene el 400/403 (inicio/parada del motor), el 600 (proveedor) y el 800 (ejecución de canalizaciones). Recopile ambos y léalos juntos. Abra el parser para fusionarlos en una única línea de tiempo.
Los dos registros
PowerShell es anterior a los canales modernos del registro de eventos, así que mantuvo su registro clásico original "Windows PowerShell" y más adelante añadió un registro Operational por proveedor. Una investigación necesita ambos:
| Event ID | Registro | Contenido |
|---|---|---|
| 4104 | Operational | Script Block Logging: el código compilado y desofuscado |
| 4103 | Operational | Module Logging: detalles de ejecución de la canalización y parámetros enlazados |
| 400 | Windows PowerShell | Estado del motor → Available (se inició un host) |
| 403 | Windows PowerShell | Estado del motor → Stopped (un host finalizó) |
| 600 | Windows PowerShell | Ciclo de vida de los proveedores (p. ej., Registry, Certificate) |
| 800 | Windows PowerShell | Detalles de ejecución de la canalización |
Lectura de los eventos clásicos
Los eventos 400 y 403 marcan la vida útil de un host de PowerShell. Su bloque de detalle contiene HostName, HostApplication (la línea de comandos completa, a menudo el campo más útil: aquí aparece un -EncodedCommand o un -WindowStyle Hidden), EngineVersion y RunspaceId. Un HostApplication que inicia powershell.exe -Version 2 es un intento de degradación clásico para escapar del registro de la v5 y de AMSI.
El evento 800 registra la línea de comandos de una canalización y, según la configuración, los detalles del enlace de parámetros. En los hosts sin Script Block Logging suele ser el mejor registro de lo que se ejecutó. El PowerShell Parser analiza los bloques de detalle Key=Value de los eventos 400/600/800 y los convierte en campos que puede ordenar y exportar.
¿Cuáles están activados de forma predeterminada?
El registro clásico Windows PowerShell (400/600/800) está habilitado de fábrica. El Module Logging (4103) y el Script Block Logging completo (4104) se controlan mediante directiva de grupo en Plantillas administrativas → Componentes de Windows → Windows PowerShell (Microsoft). La ausencia de 4104 no significa que no ocurriera nada: revise el 800 y los bloques 4104 de nivel Warning que PowerShell registra por su cuenta.
Recopilar y analizar
Consulte cómo recopilar los registros, el historial y las transcripciones de PowerShell y, después, analícelos en su navegador sin instalar nada.
Preguntas frecuentes
¿En qué registros escribe PowerShell?
En dos. Microsoft-Windows-PowerShell/Operational contiene los eventos modernos (4103 de Module Logging, 4104 de Script Block Logging). El registro clásico Windows PowerShell contiene el ciclo de vida del motor y de los proveedores (400/403/600) y la ejecución de canalizaciones (800).
¿Qué diferencia hay entre el 4103 y el 4104?
El 4104 (Script Block Logging) registra el código que se compiló; el 4103 (Module Logging) registra los detalles de ejecución de la canalización: los comandos y los parámetros enlazados tal como se ejecutaron. Se complementan entre sí.
¿Hay algo de esto activado de forma predeterminada?
El registro clásico Windows PowerShell (400/600/800) está activado de forma predeterminada. El Module Logging (4103) y el Script Block Logging completo (4104) requieren una directiva, aunque PowerShell sigue registrando los bloques sospechosos con nivel Warning sin ella.