Skip to content

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.

Publicado el 3 min de lectura

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 IDRegistroContenido
4104OperationalScript Block Logging: el código compilado y desofuscado
4103OperationalModule Logging: detalles de ejecución de la canalización y parámetros enlazados
400Windows PowerShellEstado del motor → Available (se inició un host)
403Windows PowerShellEstado del motor → Stopped (un host finalizó)
600Windows PowerShellCiclo de vida de los proveedores (p. ej., Registry, Certificate)
800Windows PowerShellDetalles 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.

Artículos relacionados

Qué registra el event ID 4104, cómo divide Windows los bloques de script largos en varios eventos, por qué aparecen bloques de nivel Warning sin el registro completo y cómo interpretarlo en un caso.
Paso a paso: abra registros .evtx de PowerShell, el historial de PSReadLine y las transcripciones en un visor gratuito en el navegador, reconstruya los bloques de script, decodifique comandos codificados y exporte a CSV o JSON.
Cómo se estructuran las transcripciones de PowerShell, qué registra el encabezado, cómo funcionan las marcas de tiempo de los comandos con -IncludeInvocationHeader y cómo investigarlas.