O que Análise de Log de Bloco de Script do PowerShell faz?
Quando Usar
- Ao investigar incidentes de segurança que exigem análise de log de bloco de script do PowerShell
- Ao criar regras de detecção ou consultas de caça a ameaças para este domínio
- Quando analistas de SOC precisam de procedimentos estruturados para este tipo de análise
- Ao validar a cobertura de monitoramento de segurança para técnicas de ataque relacionadas
Pré-requisitos
- Familiaridade com conceitos e ferramentas de operações de segurança
- Acesso a um ambiente de teste ou laboratório para execução segura
- Python 3.8+ com as dependências necessárias instaladas
- Autorização apropriada para quaisquer atividades de teste
Instruções
- Instalar dependências:
pip install python-evtx lxml - Coletar logs operacionais do PowerShell:
Microsoft-Windows-PowerShell%4Operational.evtx - Analisar entradas do ID do Evento 4104 usando python-evtx para extrair ScriptBlockText, ScriptBlockId e MessageNumber/MessageTotal para reconstrução de scripts com várias partes.
- Aplicar heurísticas de detecção:
- Comandos codificados em Base64 (
-EncodedCommand,FromBase64String) - Cradles de download (
DownloadString,DownloadFile,Invoke-WebRequest,Net.WebClient) - Padrões de bypass de AMSI (
AmsiUtils,amsiInitFailed) - Indicadores de ofuscação (alta entropia, inserção de acentos, concatenação de strings)
- Comandos codificados em Base64 (
- Gerar um relatório com scripts reconstruídos, pontuações de risco e mapeamentos MITRE ATT&CK.
python scripts/agent.py --evtx-file /caminho/para/PowerShell-Operational.evtx --output ps_analysis.json
Exemplos
Detectar Execução 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 Bloco de Script com Múltiplas Partes
Scripts divididos em vários eventos 4104 compartilham um ScriptBlockId. Concatene os blocos ordenados por MessageNumber para recuperar o script completo.