03 - Exercício de Threat Hunting - Caça Baseada em Hipótese
video: https://youtu.be/... no frontmatter da nota.Exercício de Threat Hunting - Caça Baseada em Hipótese
Terceira nota do capítulo 16 - Exercícios Práticos. Exercício guiado de caça orientada por hipótese, do formato SE-ENTÃO à promoção do achado em detecção permanente, sobre o abuso de ferramenta administrativa legítima para persistência.
A hipótese do exercício cruza WMI e tarefa agendada (T1047 e T1053.005), a execução usa KQL completo passo a passo, a análise aplica stack counting com baseline de exceções e a documentação segue o padrão do caderno de caça.
Dialoga com a nota 02 do capítulo 06 (hipótese), com o capítulo 07 (processo), com as notas 01 e 02 do capítulo 08 (persistência e movimento lateral) e com as salvaguardas TH.6 e TH.8 do capítulo 15.
1. Contexto e Posicionamento na Biblioteca
Os dois exercícios anteriores treinaram a esteira de resposta e o ciclo analítico; este treina a competência central do hunter, formular uma hipótese sobre o próprio ambiente e executá-la até o veredicto documentado. O cenário é o mais produtivo para treinar: abuso de ferramenta administrativa legítima, porque é o padrão que o antivírus ignora por definição, que o alerta de assinatura não pega e que só a caça descobre. A hipótese cruza duas técnicas que raramente aparecem juntas em automação legítima, execução remota com WMI e criação de tarefa agendada, e o que dá força à hipótese é exatamente essa conjunção no mesmo host, na mesma janela e pela mesma conta.
O exercício dura três horas e exige um SIEM ou plataforma equivalente com os eventos preparados na seção 2. O formato é guiado como os anteriores, mas com um giro deliberado: as consultas entregues são o roteiro, e não a resposta, e o leitor deve ajustar nomes de campo, contas de automação e exceções do próprio ambiente antes de acreditar em qualquer saída. O veredicto da caça, confirmado, refutado ou inconclusivo, é tão válido quanto o achado, e o exercício pontua a honestidade da conclusão tanto quanto a detecção do anômalo.
A caça descrita é fictícia no cenário, mas a estrutura, hipótese, execução, stack, relato e promoção, é a mesma aplicada no caso real HUNT-2025-014 documentado no capítulo 07, e o leitor que já estudou aquela nota reconhecerá o esqueleto; a diferença está no par de técnicas, aqui WMI e tarefa, lá contas de serviço fora do padrão.
2. Preparação: Dados Necessários e Escopo
| Item | Descrição |
|---|---|
| Dados de entrada | Telemetria de execução e de tarefa agendada centralizada nos últimos 30 dias |
| Ação | Verificar cobertura das fontes, definir escopo e montar o pacote de exceções documentadas |
| Resultado esperado | Ambiente pronto com as consultas executando sem erro e baseline de automação em mãos |
A caça morre na preparação quando o dado não existe, e a verificação de cobertura é o primeiro passo executável:
| Fonte | Eventos | Papel na caça |
|---|---|---|
| Security (Windows) | 4688 com linha de comando, 4698, 4700 e 4702 | Execução de wmic e criação ou modificação de tarefa |
| Sysmon | 1 (processo), 11 (arquivo), 3 (rede) | Contexto de cadeia de processo e artefatos gerados |
| EDR (MDE ou equivalente) | DeviceProcessEvents e correlatos | Confirmação cruzada da cadeia e rastro de arquivo |
| CMDB e registro de mudanças | Automação documentada de TI | Baseline de exceções do stack counting |
O escopo recomendado é de 30 dias, suficiente para capturar cadências de automação mensal e pequeno o bastante para iterar consultas rápido, e o pacote de exceções deve nascer aqui, com as contas de deploy, help desk e backup que o ambiente declara documentadas, porque o stack counting da seção 5 depende desse pacote para não confundir volume com ataque. A lacuna de telemetria é registrada nesta fase: se 4688 não captura linha de comando em parte do parque, o exercício registra a lacuna como achado de preparação, no padrão da nota 03 do capítulo 07, e segue com o dado que existe.
3. Geração e Priorização da Hipótese
A hipótese segue a gramática SE-ENTÃO da salvaguarda TH.6, com critério de validação explícito e mapeamento ATT&CK declarado:
HIPOTESE HYP-2026-009 - Abuso de ferramenta administrativa para persistência
SE um invasor com credencial válida abusa de ferramentas administrativas
legítimas para manter acesso, ENTÃO serão observadas, no mesmo host e em
janela de minutos, execuções de wmic.exe com os argumentos process call
create e criações de tarefa agendada (4698) cujo conteúdo chama
interpretadores (powershell, cmd, mshta, wscript), executadas por conta
interativa fora do pacote de automação documentado.
CRITÉRIO DE VALIDAÇÃO: par wmic mais tarefa correlacionado por host e
conta, com conta ausente da lista de automação e comando fora da janela
de mudança declarada.
ATT&CK: T1047 (Windows Management Instrumentation), T1053.005
(Scheduled Task). Fontes: 4688, 4698, Sysmon 1, telemetria de EDR.
A priorização justifica por que essa hipótese entre outras da fila, e a tabela do exercício usa os três eixos do capítulo 07: dor que a técnica representa, dado disponível e lacuna de detecção atual:
| Eixo | Avaliação | Justificativa |
|---|---|---|
| Dor | Alta | Persistência sobrevive a reinício e a troca de credencial, e o vetor é comum em intrusões de acesso inicial |
| Dado | Alto | 4688 com linha de comando e 4698 já centralizados com 30 dias de retenção |
| Lacuna | Alta | Nenhuma detecção correlaciona as duas técnicas; a existente cobra tarefa agendada isolada |
Com os três eixos altos, a hipótese sobe no backlog, e o exercício registra a decisão de priorização com data e responsável, porque backlog sem registro vira fila de simpatia. O erro clássico desta fase é formular a hipótese depois da consulta; quem escreve o SE-ENTÃO primeiro se protege da caça dirigida pelo que a consulta já sabe fazer.
4. Execução Passo a Passo com KQL
O passo 1 caça a execução remota com WMI, com janela fixa e filtro que evita varredura desnecessária:
SecurityEvent
| where TimeGenerated > ago(30d)
| where EventID == 4688
| where NewProcessName has "wmic.exe"
| where CommandLine has "process call create"
| project TimeGenerated, Computer, SubjectUserName, CommandLine, ParentProcessName
| order by TimeGenerated asc
O passo 2 caça as tarefas agendadas cujo conteúdo chama interpretadores, usando o campo de conteúdo validado por ambiente como a nota 01 do capítulo 08 orienta:
SecurityEvent
| where TimeGenerated > ago(30d)
| where EventID in (4698, 4702)
| where TaskContentNew has_any ("powershell", "cmd ", "mshta", "wscript", "rundll32", "regsvr32")
| project TimeGenerated, Computer, SubjectUserName, TaskName, TaskContentNew
O passo 3 correlaciona os dois sinais por host em janela de 10 minutos, que é a materialização do critério de validação da hipótese:
let wmic = SecurityEvent
| where TimeGenerated > ago(30d) and EventID == 4688
| where NewProcessName has "wmic.exe" and CommandLine has "process call create"
| project T_wmic = TimeGenerated, Computer, SubjectUserName;
let tarefas = SecurityEvent
| where TimeGenerated > ago(30d) and EventID == 4698
| project T_task = TimeGenerated, Computer, SubjectUserName, TaskName;
wmic | join kind=inner tarefas on Computer, SubjectUserName
| where abs(datetime_diff("minute", T_wmic, T_task)) <= 10
| project Computer, SubjectUserName, T_wmic, T_task, TaskName
O passo 4 empilha os eventos por host e conta, preparando a leitura de stack counting da seção seguinte:
let wmic = SecurityEvent
| where TimeGenerated > ago(30d) and EventID == 4688
| where NewProcessName has "wmic.exe" and CommandLine has "process call create"
| summarize Execucoes = count() by Computer, SubjectUserName;
let tarefas = SecurityEvent
| where TimeGenerated > ago(30d) and EventID == 4698
| summarize Tarefas = count() by Computer, SubjectUserName;
wmic | join kind=fullouter tarefas on Computer, SubjectUserName
| extend Execucoes = coalesce(Execucoes, 0), Tarefas = coalesce(Tarefas, 0)
| order by Execucoes desc
Cada consulta é salva com comentário, data e hipótese no cabeçalho, e a regra do exercício é que nenhuma consulta se perde em histórico de editor: o ambiente de análise isolado da salvaguarda TH.3 é o lugar delas, porque a reprodutibilidade é parte do produto da caça.
5. Análise de Resultados com Stack Counting
Stack counting, a técnica TH.8 do capítulo 15, transforma milhares de eventos em pilhas por atributo e lê os extremos: o topo é automação, a base raramente é interessante, e o que interessa é a pilha que quebra o padrão de volume e de conta. A saída esperada do passo 4, com os dados do exercício:
| Host | Execuções wmic | Tarefas com interpretador | Conta | Veredicto |
|---|---|---|---|---|
| SRV-DEP-01 | 214 | 210 | svc-deploy | Baseline documentado de deploy |
| SRV-DEP-02 | 198 | 196 | svc-deploy | Baseline documentado de deploy |
| SRV-ADM-01 | 46 | 44 | svc-helpdesk | Baseline documentado de help desk |
| WS-FIN-12 | 1 | 1 | r.almeida | Anômalo: volume mínimo e conta fora do pacote |
| SRV-RH-03 | 0 | 12 | svc-backup | Tarefas legítimas de backup, sem wmic |
A leitura correta do stack inverte a intuição de novato: a pilha de 214 execuções é a menos suspeita da tabela, porque volume alto e conta de serviço estável é a assinatura de automação declarada, e a pilha suspeita é a de execução única por conta humana em host que não é servidor de gestão. A confirmação do caso WS-FIN-12 desce ao passo 3, que mostra o par correlacionado: wmic com process call create às 14:02 e tarefa SysHealthTask executando powershell com linha codificada às 14:04, ambos pela conta r.almeida fora da janela de mudança. O exercício termina a análise com o confronto do par contra o pacote de exceções da seção 2, e a conta r.almeida não está nele, o que fecha o critério de validação da hipótese.
6. Documentação do Achado
O relato segue o template do capítulo 07, e o exercício exige as cinco seções preenchidas antes de qualquer promoção:
# Relato de Caça: HUNT-2026-002
Hipótese: HYP-2026-009 | Janela: 30 dias | Fontes: 4688, 4698, MDE
Veredicto: CONFIRMADO (1 host) | Refutado (4 hosts) | Inconclusivo: nenhum
Evidências: 4688 14:02 wmic.exe process call create powershell -enc ...
4698 14:04 SysHealthTask com powershell -enc, conta r.almeida
Baselines: svc-deploy, svc-helpdesk e svc-backup documentados e excluídos
Lacunas: 4688 sem linha de comando em 40 estações do parque legado
Próximos passos: Sigma derivada, caça recorrente mensal, requisito de coleta
O veredicto separado por host, e não agregado, é o detalhe que evita o relato genérico: a caça confirmou a hipótese em um host e não encontrou nos demais, e essa contagem alimenta diretamente a métrica de caças do capítulo 11. A lacuna de telemetria do parque legado entra no relato com o mesmo peso do achado, porque o requisito de coleta que ela gera é produto tão válido quanto a detecção, e o capítulo 07 defende exatamente esse critério de sucesso.
7. Promoção para Detecção
A detecção permanente derivada do relato traduz a correlação para Sigma, versão do formato que o capítulo 18 adota como padrão de detecção como código:
title: Execução remota com wmic seguida de criação de tarefa agendada
id: 4b7d2c91-8e3a-4f1e-9c55-0a2f6d1b7e33
status: experimental
description: Derivada de HUNT-2026-002; cobre T1047 e T1053.005 em janela de 10 minutos.
logsource:
product: windows
service: security
detection:
selecao_wmic:
EventID: 4688
NewProcessName|endswith: '\wmic.exe'
CommandLine|contains|all:
- 'process call create'
selecao_tarefa:
EventID: 4698
condition: selecao_wmic | near selecao_tarefa
falsepositives:
- Automação de deploy e help desk documentada no baseline do programa
level: high
A promoção só se completa com os dois casos de teste, o positivo gerado com Atomic Red Team no laboratório da nota 05 do capítulo 12, e o negativo com a execução da automação documentada de deploy, que não deve disparar. A regra entra versionada no repositório com dono, revisão de 90 dias e a citação do relato de origem, e a caça é convertida em rotina mensal recorrente com a mesma consulta, no padrão da nota 06 do capítulo 07, até que a detecção comprove recall suficiente para a caça passar a investigar outra hipótese.
8. Tabela de Checkpoints
| Checkpoint | O que comprova | Evidência |
|---|---|---|
| CP1 | Dados disponíveis e escopo definido | Consultas executam sem erro sobre 30 dias |
| CP2 | Hipótese registrada antes da consulta | HYP com SE-ENTÃO, critério de validação e ATT&CK |
| CP3 | Execução reproduzível | Consultas salvas com comentário no ambiente isolado |
| CP4 | Stack analisado com baseline | Tabela de veredictos por host com exceções citadas |
| CP5 | Achado documentado | Relato HUNT com evidências e lacunas registradas |
| CP6 | Detecção promovida e testada | Sigma com caso positivo e negativo executados |
9. Critérios de Avaliação
- Hipótese antes da consulta: o SE-ENTÃO existe por escrito com critério de validação, e a execução é dirigida por ele; consulta que saiu caçando sem hipótese perde o principal que o exercício treina.
- Disciplina de consulta: janela de tempo fixa, filtro de evento e nenhuma varredura de tabela inteira, com as consultas salvas e reprodutíveis por qualquer par.
- Leitura honesta de stack: volume alto interpretado como automação até prova em contrário, exceções confrontadas com o pacote documentado, e nenhuma pilha julgada por impressão.
- Documentação completa: relato com veredicto por host, evidências citadas com horário e lacunas de telemetria declaradas no mesmo peso do achado.
- Promoção efetiva: detecção escrita, testada com caso positivo e negativo, versionada com dono, e caça convertida em rotina recorrente.
- Tempo e postura: exercício completo em até 3 horas, com o analista devolvendo ao SIEM as consultas comentadas e o backlog atualizado com a hipótese seguinte.
10. Integração com o Restante da Biblioteca
O exercício executa na prática a cadeia TH.6, TH.8 e TH.10 do capítulo 15, formulação de hipótese estruturada, stack counting e busca por IOA, e usa as técnicas das notas 01 e 02 do capítulo 08 como repertório: persistência por tarefa agendada e movimento lateral com WMI são exatamente os dois capítulos que sustentam cada passo da execução. A estrutura de documentação vem das notas 05 do capítulo 07, e a conversão do achado em detecção segue o capítulo 18, com a métrica de conversão alimentando os KPIs de hunting do capítulo 11.
O diálogo com o exercício 01 deste capítulo é de complemento de domínio: lá o ponto de partida foi um IOC de campanha externa, aqui é uma hipótese comportamental sem indicador nenhum, e o time que executa os dois no mesmo trimestre treina os dois modos de entrada do framework do capítulo 10. O fechamento recomendado é agendar a caça recorrente derivada no calendário do programa, escolher a próxima hipótese da fila pelo mesmo critério de priorização da seção 3 e escrevê-la em SE-ENTÃO antes de abrir o SIEM, porque o hábito que este exercício instala é esse: primeiro a pergunta escrita, depois o dado.