Skip to content
PowerShell Operational

PowerShell Event ID 4104: Registro de bloques de script

Creando texto de bloque de scriptEl evento 4104 de PowerShell registra el texto de los bloques de script ejecutados, ya decodificado: el registro más completo de lo que ejecutó PowerShell.
4104
Event ID
4104
Registro
Microsoft-Windows-PowerShell/Operational
Proveedor
Microsoft-Windows-PowerShell
Archivo
Microsoft-Windows-PowerShell%4Operational.evtx
Categoría
PowerShell
Registro predeterminado
Requiere configuración

Qué significa el evento 4104

El evento 4104 lo escribe el motor de PowerShell cuando compila un bloque de script. El campo ScriptBlockText contiene el código tal como lo ve PowerShell: comandos escritos en el prompt, scripts completos, funciones y, lo más importante, código que estaba codificado en Base64, se descargó o se construyó en tiempo de ejecución, porque el registro se produce después de eliminar esa capa.

Los scripts grandes se dividen en varios eventos que comparten un ScriptBlockId; MessageNumber y MessageTotal indican cómo volver a unirlos. El campo Path se rellena cuando el bloque procede de un archivo de script.

Incluso sin ninguna directiva, PowerShell 5 y posteriores registran con nivel Warning los bloques de script que contienen palabras clave conocidas como sospechosas. El registro completo de cada bloque requiere la directiva Script Block Logging, que es lo que convierte al 4104 en la columna vertebral de las investigaciones de PowerShell.

Cuándo se registra

Directiva de auditoría / configuración

Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > Turn on PowerShell Script Block Logging (o el registro HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging\EnableScriptBlockLogging = 1).

Sin la directiva, Windows PowerShell 5.x sigue registrando como eventos 4104 de nivel Warning los bloques que considera sospechosos. PowerShell 7 escribe en el canal PowerShellCore/Operational y tiene su propia configuración de directivas.

Campos clave

CampoQué indica
ScriptBlockTextEl código del bloque de script, una vez eliminadas las capas de ofuscación como -EncodedCommand.
ScriptBlockIdGUID compartido por todas las partes de un bloque de script; agrupe por él para reconstruir los scripts largos.
MessageNumberNúmero de parte de este evento en un bloque de script dividido.
MessageTotalNúmero total de partes del bloque de script.
PathArchivo de script del que procede el bloque; vacío para el código interactivo o en memoria.

Orígenes legítimos habituales

  • Scripts administrativos, gestión de la configuración (SCCM, Intune, DSC) y agentes de monitorización.
  • Módulos propios de PowerShell y scripts de perfil que se cargan al iniciar.
  • Instaladores de software y automatizaciones de TI que usan PowerShell internamente.

Qué hacen los atacantes para generarlo

  • Download cradles como IEX (New-Object Net.WebClient).DownloadString(...) e Invoke-WebRequest descargando payloads.
  • Comandos codificados u ofuscados, recuperados aquí en forma legible.
  • Frameworks y herramientas ofensivas cargados en memoria (volcado de credenciales, reconocimiento de AD, intentos de evasión de AMSI).
  • Comandos de manipulación de defensas como Set-MpPreference -DisableRealtimeMonitoring.

Consejos de investigación

  • Filtre primero el nivel 3 (Warning): son los bloques que el propio PowerShell marcó como sospechosos.
  • Reconstruya los bloques divididos por ScriptBlockId en el orden de MessageNumber antes de leerlos.
  • Busque en ScriptBlockText indicadores de red (URL, IP), FromBase64String, Invoke-Expression, -bxor, Reflection.Assembly y cadenas relacionadas con AMSI.
  • Encuentre el proceso que ejecutó el bloque con Sysmon 1 / 4688 de Seguridad (línea de comandos de powershell.exe) y el evento 400 del registro clásico (HostApplication).

Técnicas MITRE ATT&CK

TécnicaTácticas
T1059.001 Command and Scripting Interpreter: PowerShellExecution
T1027.010 Obfuscated Files or Information: Command ObfuscationStealth
T1140 Deobfuscate/Decode Files or InformationStealth
T1105 Ingress Tool TransferCommand and Control

MITRE ATT&CK v19.2. Nombres de técnicas y tácticas según MITRE (en inglés).

Reglas Sigma para este evento

162 reglas de detección de SigmaHQ (versión r2026-07-01) apuntan a este evento. Se muestran las 25 reglas de mayor severidad.

  • Crítica · 2
  • Alta · 51
  • Media · 89
  • Baja · 20

Reglas de sus autores indicados, publicadas por SigmaHQ bajo la Detection Rule License (DRL) 1.1.

Ejecute estas reglas en sus registros

Suelte un archivo .evtx en el visor: las 2395 reglas SigmaHQ incluidas se ejecutan en su navegador. No se sube nada.

Guía detalladaEvent ID 4104: registro de bloques de script de PowerShell

Fuentes y lecturas adicionales