Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - TH.11 - Hunting de Endpoint

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

TH.11 - Hunting de Endpoint

Nota do grupo HNT (Threat Hunting) do Framework CTH, seção "15 - Framework CTH - Controles".
Deriva do Capítulo 13, controle TH.11, e opera sobre a telemetria definida em DAT.1 e DAT.4.
Papel no programa: caçar atividade adversária direto nos endpoints, onde payloads executam,
persistência é instalada e a maioria das técnicas ATT&CK deixa rastro antes de qualquer alerta.

1. Contexto e Posicionamento no Framework CTH

O hunting de endpoint é o controle TH.11 do grupo HNT e representa a camada de investigação mais próxima do comportamento real do
adversário. A maior parte da cadeia de ataque se desenrola na máquina: o payload executa, a persistência é registrada, as credenciais
são acessadas e os dados começam a se mover. Ferramentas automatizadas como antivírus e regras de EDR cobrem parte desse espaço, mas
técnicas living-off-the-land, malware fileless e uso criativo de binários nativos frequentemente passam sem disparar um único alerta.

Este controle assume que a organização já coleta telemetria de endpoint por meio de DAT.1 (logs de endpoints), com Sysmon ou
equivalente, e que essa telemetria chega ao SIEM por DAT.4. O hunter não cria dados novos aqui: ele formula hipóteses com o método de
TH.4 e TH.6, prioriza em TH.5 e executa consultas repetíveis sobre o acervo existente. Quando a telemetria de longo prazo não alcança o
que se procura, TH.3 fornece o ambiente isolado e o Velociraptor oferece coleta sob demanda, tema tratado mais adiante nesta nota.

A diferença entre hunting de endpoint e resposta a incidentes é de intenção e de escopo. A resposta a incidentes parte de um alerta ou
denúncia confirmada; o hunting parte de hipótese não confirmada e busca evidências em massa de dados que ninguém olhou antes. O
resultado positivo de um hunt qualifica uma atividade suspeita, gera caso de IR quando confirmado e produz detecções novas quando
confirmado como benigno, alimentando o ciclo de melhoria contínua do framework.

2. Telemetria de Endpoint como Campo de Caça

O campo de caça principal é o conjunto de fontes que descreve o que aconteceu na máquina. Em ordem de valor para o hunter, destacam-se
as seguintes fontes, todas cobertas pelo guia de coleta de DAT.1.

Fonte Eventos típicos O que revela ao hunter
Criação de processo Sysmon 1, Windows 4688 Cadeia parent-child, linha de comando completa, hash do binário
Linha de comando Campo CommandLine do Sysmon 1 Flags de ofuscação, download, codificação e execução indireta
Registro do Windows Sysmon 12, 13, 14 Run keys, serviços, AppInit_DLLs, mudanças em associação de arquivo
Image load Sysmon 7 DLLs carregadas de caminhos inesperados, side-loading e hijacking
Serviços e tarefas Windows 7045, 4698, Sysmon 1 Persistência via serviço novo ou tarefa agendada com ação incomum
PowerShell Windows 4103, 4104 Blocos de script, comandos decodificados, módulos carregados
Arquivo escrito Sysmon 11 Binários soltos em temp, AppData, staging de exfiltração
Rede do processo Sysmon 3 Conexões originadas por processo, pivô para TH.12

A regra prática é que cada hipótese de endpoint deve citar explicitamente qual dessas fontes vai consumir e qual campo vai examinar. Um
hunt sem fonte definida vira exploração aleatória e consome horas sem produzir decisão. O mapeamento ATT&CK de TH.1 fornece a ligação
entre técnica adversária, fonte de dados e evento concreto, e vale reabrir esse inventário antes de escrever a consulta.

3. Padrões de Suspeita Recorrentes

Alguns padrões aparecem em quase toda caça de endpoint madura. Eles não são maliciosos por si só, mas formam a base estatística das
hipóteses de TH.6 e merecem domínio de cor pelo analista.

3.1 LOLBins e binários nativos

Living-off-the-land é o uso de binários assinados e presentes por padrão no sistema para fins adversários. Os campeões de frequência em
relatos de incidentes são os seguintes, com o padrão que costuma diferenciá-los do uso legítimo.

Binário Uso adversário típico Assinatura suspeita
rundll32.exe Executar função exportada de DLL remota ou shellcode Linha de comando com URL, javascript, ou DLL fora de system32
regsvr32.exe Carregar DLL maliciosa com register Chamadas para caminhos em temp ou UNC de rede externa
mshta.exe Executar HTA com script embutido HTA baixado por URL, executado por processo de Office
certutil.exe Baixar arquivo com urlcache ou encode Flag urlcache ou url combinada com domínio externo
bitsadmin.exe Transferência discreta de payload Comando transfer seguido de execução imediata
wmic.exe Execução remota e lateral (process call create) Processo filho de wmic em host que não é ferramenta de gestão

3.2 Execução de temp e AppData

Binários executados de diretórios graváveis pelo usuário são o padrão clássico de queda inicial de malware. Executáveis em temp,
AppData Local, AppData Roaming e em caminhos de descompactação de browser merecem hunt permanente. A variação útil é comparar
assinatura e editor: um binário legítimo de software corporativo quase nunca roda desses caminhos, e quando roda, tem publisher
reconhecível e estável no tempo.

3.3 Ofuscação em PowerShell

PowerShell com o flag -enc entrega a linha de comando em Base64, o que esconde o conteúdo real do analista desatento. Padrões de caça
incluem: comando codificado seguido de downloadString ou Invoke-Expression, concatenação de strings para montar comandos, uso de
backtick ou aspas quebradas para evitar correspondência de assinatura, e execução com -w hidden ou -nop -noni. O evento 4104 do
PowerShell permite ver o bloco de script decodificado, e o hunt deve cruzar 4104 com o Sysmon 1 para ligar o que foi escrito ao
processo que executou.

3.4 Persistência em Run keys e tarefas agendadas

Mecanismos de persistência que sobrevivem a reboot são o objetivo quase universal do adversário após acesso inicial. Os pontos de caça
prioritários são: escrita em Run e RunOnce por processo não instalador, criação de serviço com binário em caminho gravável pelo
usuário, tarefa agendada com gatilho de logon e ação apontando para temp ou PowerShell codificado, e WMI subscription por evento. O
evento 4698 registra a criação de tarefa com a ação em texto plano, e o Sysmon 13 cobre as escritas de registro com o valor final
gravado.

3.5 Mapeamento rápido para ATT&CK

Os padrões desta seção se conectam direto ao mapeamento de técnica usado nas hipóteses de TH.6. Ter o mapeamento à mão evita retrabalho
na hora de registrar o hunt e de propor a detecção correspondente.

Padrão desta nota Técnicas ATT&CK mais próximas
LOLBins com parâmetros incomuns T1059, T1218 (System Binary Proxy Execution)
Execução de temp e AppData T1105, T1074, execução de payload não assinado
PowerShell ofuscado com -enc T1059.001, T1027 (Ofuscação)
Run keys e tarefas agendadas T1547.001, T1053.005
DLL hijacking e side-loading T1574.001, T1574.002
Serviço novo em caminho gravável T1543.003 (Windows Service)

4. Consultas de Exemplo em KQL

A consulta a seguir procura linha de comando com combinação de download e execução indireta, reduzindo ruído com whitelist de caminhos
de ferramenta interna.

DeviceProcessEvents
| where Timestamp > ago(7d)
| where FileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe", "mshta.exe",
                      "rundll32.exe", "certutil.exe", "bitsadmin.exe")
| where ProcessCommandLine has_any ("-enc", "FromBase64String",
      "downloadstring", "IEX ", "Invoke-Expression", "urlcache",
      "-w hidden", "-nop", "http://", "https://")
| where InitiatingProcessFileName !~ ("sccm agent.exe", "chef-client.exe")
| where ProcessCommandLine !contains "microsoft.com"
| project Timestamp, DeviceName, FileName, ProcessCommandLine,
          InitiatingProcessFileName, InitiatingProcessCommandLine,
          AccountName
| sort by Timestamp desc

A segunda consulta busca processos de Office iniciando filhos incomuns, padrão de entrega de phishing com macro ou exploração de
documento.

DeviceProcessEvents
| where Timestamp > ago(30d)
| where InitiatingProcessFileName in~ ("winword.exe", "excel.exe",
      "powerpnt.exe", "outlook.exe")
| where FileName !in~ ("regsvr32.exe", "winword.exe", "excel.exe")
| where FileName in~ ("cmd.exe", "powershell.exe", "wscript.exe",
      "cscript.exe", "mshta.exe", "rundll32.exe", "certutil.exe")
| summarize NetCount = dcount(ProcessCommandLine), Hosts = dcount(DeviceName)
          by InitiatingProcessFileName, FileName, AccountName
| where NetCount > 1
| sort by Hosts desc

5. Coleta Sob Demanda com Velociraptor

Quando a hipótese exige dado que não está no SIEM, como inventário atual de tarefas agendadas ou listing de Run keys em centenas de
hosts, o Velociraptor resolve com coleta sob demanda. A consulta VQL abaixo, por exemplo, lista tarefas agendadas cujo executável está
em caminho gravável pelo usuário, resultado direto de uma hipótese de persistência.

SELECT TaskName, Path, Action,
       concat(Action.Executable, " ", Action.Arguments) AS FullCommand
FROM Artifact.Windows.System.TaskScheduler()
WHERE FullCommand =~ "(?i)(temp|appdata|powershell|-enc|http)"

O padrão de trabalho recomendado é implantar o cliente do Velociraptor com agentes de longa duração em TH.3, criar o hunt como artefato
versionado, executar contra o fleet inteiro ou contra um grupo de hosts críticos e armazenar o resultado para análise offline. Cada
coleta deve registrar data, hosts alvo e artefato usado, para que o hunt seja reprodutível por outro analista. Essa reprodutibilidade é
o que distingue hunting profissional de curiosidade ad hoc.

6. Correlação de Eventos para Qualificar um Achado

Um processo suspeito isolado quase nunca fecha um hunt: é a correlação de três planos que qualifica o achado como incidente em
potencial. O plano de execução mostra o processo, o plano de arquivo mostra o que ele escreveu no disco e o plano de rede mostra para
onde ele falou. A tabela abaixo resume a checagem padrão de qualificação.

Plano Fonte Pergunta de qualificação
Execução Sysmon 1, 4104 Pai é legítimo? Linha de comando faz sentido para a função do host?
Arquivo Sysmon 11, 15 Escreveu binário ou script? Onde? Hash conhecido em PLT.x ou sandbox?
Rede Sysmon 3, logs DNS Conectou a domínio novo, IP de reputação baixa ou canal incomum?
Persistência Sysmon 12/13, 4698, 7045 Sobrevive a reboot? Entrou em Run key, serviço ou tarefa?
Identidade 4624, 4625 A conta do processo tem logons simultâneos de hosts diferentes?

Um exemplo encadeado: rundll32 com URL na linha de comando, filho de winword, que escreveu DLL em AppData Roaming, resolveu domínio
recém-registrado e criou tarefa agendada com -enc é caso fechado de IR, não é hunt pendente. Já rundll32 com URL disparado por software
de gestão reconhecido, sem escrita de arquivo e sem persistência, tende a ser falso positivo de gestão interna, anotado no registro do
hunt e transformado em exceção de detecção.

7. Salvaguardas por Nível de Maturidade

As salvaguardas abaixo seguem o padrão de subcontroles do framework, do nível Básico ao Avançado, e descrevem o compromisso mínimo de
cada patamar.

Nível Salvaguarda
Básico TH.11.1: hunts regulares de árvore de processos em endpoints críticos, com análise de cadeia parent-child e execução a partir de caminhos incomuns
Básico TH.11.2: monitoramento de tarefas agendadas criadas ou modificadas, verificando se a ação executada é legítima e se o gatilho é esperado
Intermediário TH.11.3: investigação de modificações em registro e arquivos de configuração que indiquem persistência, incluindo Run keys, serviços, systemd units e crontab
Intermediário TH.11.4: hunting de DLL hijacking e side-loading por image load (Sysmon 7), com foco em DLLs de caminhos graváveis e processos assinados
Avançado TH.11.5: detecção de LotL avançado com baseline por binário, comparando parâmetros históricos contra uso atual de PowerShell, WMI, certutil, mshta e rundll32

8. Erros Comuns e Pontos de Atenção

O erro mais frequente é tratar processo suspeito como evidência fechada. Software legítimo de backup, agente de gestão, deploy e até
ferramentas de TI interna usam exatamente os padrões que o hunter procura: execução de temp, linha de comando longa, conexão a domínio
externo. Antes de escalar, o analista precisa validar publisher do binário, presença do mesmo padrão em outros hosts da mesma função e
histórico do par processo e pai no baseline de TH.2. Sem essa validação, o hunt vira fonte de alarme falso e perde crédito interno.

Scripts de gestão interna são a segunda armadilha. Equipes de infraestrutura criam tarefas agendadas com PowerShell codificado, baixam
pacotes de repositórios internos e executam binários de caminhos não padrão, e tudo isso aparece no hunt como suspeito. A mitigação é
documentar essas ferramentas com o time de TI e embutir a lista no processo de qualificação, em vez de descartar achados manualmente a
cada execução. Outra falha comum é caçar apenas por nome de binário, ignorando a linha de comando: rundll32 sem argumento é ruído,
rundll32 com função exportada suspeita é sinal, e só a linha de comando separa os dois.

A conversão em detecção fecha o ciclo: todo achado recorrente benigno deve virar regra de supressão documentada, e todo achado
malicioso deve virar detecção de alta confiança no DET.x ou regra Sigma versionada no pipeline de AUT.3. A integração natural deste
controle é com TH.12, que pega a ponta de rede do mesmo achado, com TH.13, quando a suspeita exige análise de memória, e com IR.1,
quando a qualificação confirma comprometimento real.