Análisis de Registro de Bloques de Script de PowerShell
Cuándo Usarlo
- Al investigar incidentes de seguridad que requieren analizar el registro de bloques de script de PowerShell.
- Al construir reglas de detección o consultas de cacería de amenazas para este dominio.
- Cuando los analistas del SOC necesitan procedimientos estructurados para este tipo de análisis.
- Al validar la cobertura de monitoreo de seguridad para técnicas de ataque relacionadas.
Prerrequisitos
- Familiaridad con conceptos y herramientas de operaciones de seguridad.
- Acceso a un entorno de prueba o laboratorio para ejecución segura.
- Python 3.8+ con las dependencias requeridas instaladas.
- Autorización apropiada para cualquier actividad de prueba.
Instrucciones
- Instalar dependencias:
pip install python-evtx lxml - Recopilar los registros operacionales de PowerShell:
Microsoft-Windows-PowerShell%4Operational.evtx - Analizar las entradas con ID de evento 4104 usando python-evtx para extraer ScriptBlockText, ScriptBlockId y MessageNumber/MessageTotal para la reconstrucción de scripts multiparte.
- Aplicar heurísticas de detección:
- Comandos codificados en Base64 (
-EncodedCommand,FromBase64String) - Mecanismos de descarga (
DownloadString,DownloadFile,Invoke-WebRequest,Net.WebClient) - Patrones de bypass de AMSI (
AmsiUtils,amsiInitFailed) - Indicadores de ofuscación (alta entropía, inserción de marcas de verificación, concatenación de cadenas)
- Comandos codificados en Base64 (
- Generar un informe con los scripts reconstruidos, puntuaciones de riesgo y mapeos a MITRE ATT&CK.
python scripts/agent.py --evtx-file /path/to/PowerShell-Operational.evtx --output ps_analysis.json
Ejemplos
Detectar Ejecución de Comando Codificado
import base64
if "-encodedcommand" in script_text.lower():
encoded = script_text.split()[-1]
decoded = base64.b64decode(encoded).decode("utf-16-le")
Reconstruir Script Multi-Bloque
Los scripts divididos en múltiples eventos 4104 comparten un ScriptBlockId. Concatena los bloques ordenados por MessageNumber para recuperar el script completo.