# DC0012 - Script Execution > [!info] Componente que monitora a execução de scripts via interpreters (PowerShell, Python, VBScript, JavaScript). Fundamental para detectar ataques fileless e payloads em memória que evitam gravação em disco. ## Descrição Script Execution monitora a execução de arquivos de texto que contêm código via interpreters como PowerShell, Python, JavaScript, VBScript, Bash e outros. É um dos data components mais relevantes para detecção de ataques modernos, pois scripts são amplamente abusados por adversários para execução de payloads fileless, automação de tarefas maliciosas e evasão de soluções baseadas em hash de arquivo. O PowerShell Script Block Logging é a principal fonte de visibilidade neste componente no Windows. ## Fonte de Dados Parent: [[ds0012-script|DS0012 - Script]] ## Pipeline de Detecção ```mermaid graph TB A["📜 Script Iniciado<br/>PS / VBS / JS / Python"] --> B["🔍 Script Block Logging<br/>Event ID 4104"] B --> C["🧠 Análise de Conteúdo<br/>AMSI Runtime Scan"] C --> D{"⚠️ Padrões<br/>Suspeitos?"} D -->|IEX / enc / download| E["🚨 Alerta P1<br/>Possível Fileless"] D -->|Ofuscação / Base64| F["🚨 Alerta P2<br/>Ofuscação Detectada"] D -->|Limpo| G["✔️ Log Retido<br/>Para Baseline"] classDef alert1 fill:#e74c3c,color:#ecf0f1 classDef alert2 fill:#e67e22,color:#ecf0f1 classDef ok fill:#2ecc71,color:#2c3e50 classDef proc fill:#2c3e50,color:#ecf0f1 class E alert1 class F alert2 class G ok class A,B,C,D proc ``` ## O Que Monitorar - PowerShell Event ID 4104 (Script Block Logging) - conteúdo completo de scripts - PowerShell Event ID 4103 (Module Logging) - módulos e cmdlets executados - WScript/CScript executando arquivos .vbs ou .js de locais suspeitos - Scripts Python ou Perl executando comandos de sistema - Conteúdo de scripts com caracteres ofuscados, Base64 ou download cradles - Uso de `Invoke-Expression` (`IEX`) ou `Invoke-WebRequest` (`IWR`) encadeados - Scripts executados diretamente da memória (fileless via `IEX (New-Object Net.WebClient).DownloadString()`) ## Técnicas Detectadas | Técnica | ID | Como Detectar | |---------|-----|---------------| | PowerShell | [[t1059-command-and-scripting-interpreter\|T1059.001]] | Script Block Logging com IEX, encodings, download cradles | | Visual Basic | [[t1059-command-and-scripting-interpreter\|T1059.005]] | VBScript com WScript.Shell ou ADODB.Stream | | JavaScript | [[t1059-command-and-scripting-interpreter\|T1059.007]] | JScript/HTA com ActiveXObject para execução de comandos | | Event Triggered Execution | [[t1546-event-triggered-execution\|T1546]] | Scripts em WMI subscriptions ou scheduled tasks | | Inter-Process Commúnication | [[t1559-inter-process-communication\|T1559]] | Scripts interagindo com COM objects suspeitos | ## Implementação **Habilitar PowerShell Script Block Logging:** ```powershell # Via GPO ou Registry Set-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging -Name "EnableScriptBlockLogging" -Value 1 ``` **SIEM - detecção de download cradle:** ``` index=windows EventCode=4104 | search ScriptBlockText="*IEX*" OR ScriptBlockText="*DownloadString*" OR ScriptBlockText="*-enc*" ``` **AMSI (Antimalware Scan Interface):** Integrar SIEM com eventos AMSI para capturar scripts maliciosos detectados em runtime, independente de arquivo. **Ferramentas:** PowerShell Script Block Logging, AMSI, Sysmon, CrowdStrike Falcon, Microsoft Defender for Endpoint, Elastic Agent. ## Consultas KQL — Microsoft Sentinel / Defender ### Detecção de Download Cradle PowerShell ```kql // DC0012 - PowerShell fileless: download cradle e IEX suspeitos SecurityEvent | where TimeGenerated > ago(1d) | where EventID == 4104 | where ScriptBlockText has_any ( "IEX", "Invoke-Expression", "DownloadString", "DownloadFile", "-EncodedCommand", "-enc ", "FromBase64String", "Net.WebClient", "WebClient" ) | project TimeGenerated, Computer, ScriptBlockText = substring(ScriptBlockText, 0, 500), ScriptBlockId, Path | order by TimeGenerated desc ``` ### PowerShell com Ofuscação por Base64 ```kql // DC0012 - Detecção de PowerShell ofuscado com Base64 DeviceEvents | where Timestamp > ago(7d) | where ActionType == "PowerShellCommand" | where AdditionalFields has_any ( "base64", "frombase64", "::FromBase64String", "[convert]::from" ) | extend DecodedHint = extract( @"[A-Za-z0-9+/]{40,}={0,2}", 0, tolower(tostring(AdditionalFields)) ) | summarize count(), make_set(DeviceName, 5) by bin(Timestamp, 1h), DecodedHint | where count_ > 3 | order by Timestamp desc ``` ## Contexto LATAM > [!latam] Relevância Regional > **PowerShell é o vetor primário de ataques fileless no Brasil.** Grupos especializados em fraude bancária como **Mekotio**, **BRATA** e campanhas do **Astaroth** usam intensamente PowerShell com download cradles e Base64 para carregar payloads diretamente em memória - evitando detecção por AV baseado em arquivo. Em 2024, o CERT.br registrou aumento de 38% em detecções de scripts maliciosos em infraestruturas corporativas brasileiras. O habilitação do Script Block Logging (Event ID 4104) é frequentemente inexistente em ambientes SMB no Brasil, criando ponto cego crítico. Recomendação para SOCs da região: habilitar logging de módulos e Script Block em toda a frota Windows como medida base. ## Referências - [MITRE ATT&CK - DS0012 Script](https://attack.mitre.org/datasources/DS0012/) - [PowerShell Script Block Logging - Microsoft](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_logging) - [AMSI Integration - Microsoft](https://learn.microsoft.com/en-us/windows/win32/amsi/antimalware-scan-interface-portal) - [Mekotio Banking Trojan - ESET LATAM](https://www.welivesecurity.com/la-es/)