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