# 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/)