# DS0017 — Command
## Descrição
**Command** representa uma diretiva dada a um programa de computador que atua como um interpretador — como `cmd.exe`, `PowerShell`, `bash`, `python`, `wscript` ou ferramentas de gerenciamento como `WMI` e `PowerShell Remoting` — para executar uma tarefa específica. Essa fonte de dados cobre tanto comandos interativos digitados por usuários quanto instruções emitidas programaticamente por scripts, agentes de automação e frameworks de C2.
É uma das fontes de detecção mais densas e de maior cobertura no modelo MITRE ATT&CK, sendo relevante para práticamente todas as táticas após o acesso inicial. A execução de comandos é o mecanismo central pelo qual adversários realizam reconhecimento interno ([[t1082-system-information-discovery|T1082]]), estabelecem persistência ([[t1053-scheduled-task-job|T1053]]), se movem lateralmente ([[t1021-remote-services|T1021]]) e exfiltram dados. Campanhas de ransomware que afetam organizações brasileiras — como operações do [[lockbit]], [[g1024-akira|akira-ransomware]] e [[blackcat]] — dependem extensivamente de PowerShell e `cmd.exe` para desabilitar defesas, enumerar compartilhamentos de rede e executar o payload final.
A profundidade de cobertura desta fonte depende diretamente da configuração de logging no endpoint: sem Script Block Logging, Module Logging e Process Creation auditado, uma parcela significativa da atividade adversarial permanece invisível mesmo para SIEMs bem configurados.
```mermaid
graph TB
A["⌨️ Interpretador de Comandos<br/>PowerShell / cmd / bash<br/>WMI / Python"] --> B["📝 Logging de Comandos<br/>EID 4104 Script Block<br/>EID 4688 + linha de comando"]
B --> C["🔍 Sysmon / auditd<br/>ID 1 Process Creaté<br/>execve syscall"]
C --> D["📥 SIEM<br/>Normalização MITRE<br/>Sigma rules"]
D --> E{"🎯 Análise<br/>LOLBin? Ofuscação?<br/>WMI persistence?"}
E -->|"Suspeito"| F["🚨 Alerta SOC<br/>T1059 / T1047 / T1053"]
E -->|"Legítimo"| G["✅ Baseline<br/>Comportamento esperado"]
```
## Componentes de Dados
| Componente | ID | Descrição |
|------------|----|-----------|
| Script Execution | [[dc0029-script-execution\|DC0029]] | Execução de arquivo de texto contendo código via interpretador |
| WMI Creation | [[dc0008-wmi-creation\|DC0008]] | Criação de objetos ou subscrições via Windows Management Instrumentation |
## Como Coletar
### Windows — PowerShell Logging
A configuração mais crítica para cobertura de DS0017 em ambientes Windows é o PowerShell Script Block Logging:
```powershell
# Via Group Policy (recomendado em produção)
# Computer Configuration → Administrative Templates → Windows Components →
# Windows PowerShell → Turn on Script Block Logging
# Via Registry (para aplicação imediata)
$path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
New-Item -Path $path -Force
Set-ItemProperty -Path $path -Name "EnableScriptBlockLogging" -Value 1
Set-ItemProperty -Path $path -Name "EnableScriptBlockInvocationLogging" -Value 1
```
| Event ID (PowerShell) | Canal | Descrição |
|-----------------------|-------|-----------|
| 4103 | Microsoft-Windows-PowerShell/Operational | Module Logging — saída de módulos e pipelines |
| 4104 | Microsoft-Windows-PowerShell/Operational | Script Block Logging — código executado (incluindo deofuscado) |
| 4105/4106 | Microsoft-Windows-PowerShell/Operational | Start/Stop de invocação de Script Block |
| 400/800 | Windows PowerShell | Início/Fim de sessão PowerShell (legado) |
### Windows — Process Creation e Command Line
```xml
<!-- Sysmon config — captura command line completa em Process Creaté (Event ID 1) -->
<RuleGroup name="ProcessCreaté" groupRelation="or">
<ProcessCreaté onmatch="include">
<CommandLine condition="contains">powershell</CommandLine>
<CommandLine condition="contains">cmd.exe</CommandLine>
<CommandLine condition="contains">wscript</CommandLine>
<CommandLine condition="contains">cscript</CommandLine>
<CommandLine condition="contains">mshta</CommandLine>
<CommandLine condition="contains">certutil</CommandLine>
<CommandLine condition="contains">bitsadmin</CommandLine>
</ProcessCreaté>
</RuleGroup>
```
| Event ID (Security) | Descrição |
|--------------------|-----------|
| 4688 | Criação de processo — **requer "Include command line" habilitado** |
| 4689 | Término de processo |
Habilitar captura de linha de comando no Event 4688:
```
GPO: Computer Configuration → Policies → Administrative Templates →
System → Audit Process Creation → Include command line in process creation events
```
### Windows — WMI
| Event ID | Canal | Descrição |
|---------|-------|-----------|
| 5857 | Microsoft-Windows-WMI-Activity/Operational | Invocação de provider WMI |
| 5858 | Microsoft-Windows-WMI-Activity/Operational | Erro de operação WMI |
| 5859/5860/5861 | Microsoft-Windows-WMI-Activity/Operational | Registro/modificação de assinatura de evento WMI (persistência!) |
| Sysmon ID 19/20/21 | — | WmiEvent Filter/Consumer/Binding |
### Linux / macOS — Shell History e auditd
```bash
# auditd — capturar execução de comandos (syscall execve)
auditctl -a always,exit -F arch=b64 -S execve -k command_exec
auditctl -a always,exit -F arch=b32 -S execve -k command_exec
# Bash — configurar histórico amplo e imediato
echo 'export HISTTIMEFORMAT="%F %T "' >> /etc/profile
echo 'export HISTSIZE=10000' >> /etc/profile
echo 'export HISTFILESIZE=10000' >> /etc/profile
echo 'shopt -s histappend' >> /etc/profile
echo 'PROMPT_COMMAND="history -a"' >> /etc/profile
# macOS — Endpoint Security Framework (via EDR) ou auditd legacy
sudo audit -s # Verificar status do BSM auditing
```
### Containers e ESXi
```bash
# Kubernetes — captura de kubectl exec via audit log
# Verbos: creaté em recursos pods/exec, pods/attach
# ESXi — comandos executados via ESXCLI
/var/log/shell.log # Comandos executados no ESXi Shell
/var/log/hostd.log # Operações via API vSphere (incluem comandos de VM)
# Habilitar shell log remoto
esxcli system syslog config set --loghost='tcp://siem.empresa.com:514'
```
### Dispositivos de Rede
```bash
# Cisco IOS — auditoria de comandos de configuração
# Habilitar AAA command accounting
aaa accounting commands 15 default start-stop group tacacs+
archive
log config
logging enable
logging size 1000
notify syslog contenttype plaintext
```
## Técnicas Detectadas
| Técnica | ID | Descrição |
|---------|-----|-----------|
| Command and Scripting Interpreter | [[t1059-command-and-scripting-interpreter\|T1059]] | Uso de PowerShell, bash, Python, cmd.exe para execução de código adversarial |
| Windows Management Instrumentation | [[t1047-windows-management-instrumentation\|T1047]] | Uso do WMI para execução remota e persistência via event subscriptions |
| Scheduled Task / Job | [[t1053-scheduled-task-job\|T1053]] | Criação de tarefas agendadas via `schtasks.exe` ou `at.exe` |
| System Information Discovery | [[t1082-system-information-discovery\|T1082]] | Enumeração do sistema com `systeminfo`, `ipconfig`, `whoami` |
| Impair Defenses — Disable or Modify Tools | [[t1562-001-disable-or-modify-tools\|T1562.001]] | Desabilitação de AV/EDR via PowerShell ou `sc.exe` |
## Gaps de Cobertura Brasil/LATAM
**Gaps comuns identificados em organizações brasileiras:**
1. **Script Block Logging desabilitado:** A grande maioria dos ambientes Windows no Brasil não tem PowerShell Script Block Logging (Event ID 4104) configurado. Isso cria um ponto cego crítico para obfuscação de comandos — técnica padrão em ransomware e RATs bancários como [[mekotio]] e [[s0531-grandoreiro]] que operam extensamente via PowerShell.
2. **Event ID 4688 sem command line:** Mesmo quando o processo de criação é auditado, muitos ambientes não habilitam a captura da linha de comando completa via Group Policy, tornando o evento inútil para detecção de LOLBins (Living off the Land Binaries).
3. **Logging de WMI ignorado:** Os canais `Microsoft-Windows-WMI-Activity/Operational` raramente são encaminhados para SIEM em empresas brasileiras. Persistência via WMI Event Subscription — técnica favorita de APTs — passa completamente despercebida.
4. **Linux sem auditd configurado:** Servidores Linux em ambientes brasileiros frequentemente rodam sem `auditd` ou com configuração mínima, sem regras de `execve`. Ataques pós-comprometimento via shell (como escalonamento com `sudo` ou execução de reverse shells) não deixam rastros no SIEM.
5. **ESXi Shell habilitado permanentemente:** É comum encontrar o ESXi Shell habilitado sem timeout em data centers brasileiros, sem coleta de `/var/log/shell.log`, expondo comandos de administração a adversários sem rastreabilidade.
**Recomendações:**
- Habilitar PowerShell Script Block Logging e Module Logging via GPO em todos os domínios
- Configurar Event ID 4688 com command line via GPO ("Include command line in process creation events")
- Encaminhar `Microsoft-Windows-WMI-Activity/Operational` para SIEM
- Implantar Sysmon com templaté de configuração (SwiftOnSecurity ou Florian Roth) em todos os endpoints Windows
- Configurar `auditd` com regras `execve` em todos os servidores Linux
## Referências
- [[dc0029-script-execution|DC0029 — Script Execution]] — execução de scripts via interpretador
- [[dc0008-wmi-creation|DC0008 — WMI Creation]] — criação de objetos WMI
- [[ds0009-process|DS0009 — Process]] — criação de processos relacionada a comandos
- [[ds0015-application-log|DS0015 — Application Log]] — logs de aplicação com contexto de comando
- [[t1059-command-and-scripting-interpreter|T1059 — Command and Scripting Interpreter]] — técnica principal
- [[t1047-windows-management-instrumentation|T1047 — Windows Management Instrumentation]] — WMI
- [[t1562-001-disable-or-modify-tools|T1562.001 — Disable or Modify Tools]] — evasão via comando
---
*Fonte: [MITRE ATT&CK — DS0017](https://attack.mitre.org/datasources/DS0017)*