Por que Threat Hunting Existe
O dwell time médio de um atacante em redes corporativas é de 16 dias antes da detecção (Mandiant M-Trends 2024). Muitos ataques sofisticados usam LOLBins e técnicas que não disparam alertas de SIEM. O threat hunter busca o que os algoritmos não encontraram.
Reativo (SIEM/SOC): Espera alerta → investiga → responde
Proativo (Hunting): Hipótese → busca → investiga → detecta
O hunter parte de perguntas como:
"Se um APT está na nossa rede, o que eu veria?"
"Existe algum beacon de C2 que não foi alertado?"
"Algum usuário tem acessos inconsistentes com seu perfil?"MITRE ATT&CK — Base do Hunting
# Framework com 14 táticas e 200+ técnicas de adversários reais
# https://attack.mitre.org
Táticas (o "porquê"):
TA0001 Initial Access → phishing, exploit de edge devices
TA0002 Execution → PowerShell, WMI, scripts
TA0003 Persistence → scheduled tasks, registry run keys
TA0004 Privilege Escalation→ token impersonation, BYOVD
TA0005 Defense Evasion → AMSI bypass, log clearing
TA0006 Credential Access → Mimikatz, LSASS dump
TA0007 Discovery → port scan, AD enum
TA0008 Lateral Movement → pass-the-hash, RDP
TA0009 Collection → keylogging, screenshot
TA0010 Exfiltration → DNS tunneling, HTTPS
TA0011 Command and Control → Cobalt Strike, Sliver
TA0040 Impact → ransomware, wipe
# Para cada técnica: exemplos de detecção e mitigação
# Navigator: visualizar cobertura de detecção
https://mitre-attack.github.io/attack-navigator/Metodologia de Hunt — Hipótese Guiada
Passo 1: Formular hipótese
"Adversários usando Cobalt Strike com HTTP malleable C2
podem estar presentes na rede com beacons que parecem
tráfego legítimo para CDNs."
Passo 2: Definir o que buscar (IoHs — Indicators of Hunting)
- Connections periódicas com jitter fixo para IPs CDN
- User-Agent string incomum (mas plausível)
- Beacon size constante (CS padrão = 1024 bytes)
- Conexões fora do horário comercial
Passo 3: Buscar nos dados
- SIEM queries nos logs de proxy/firewall/DNS
- EDR queries nos endpoints
Passo 4: Análise e investigação
- Falso positivo? Documentar e melhorar hipótese
- Positivo? Iniciar resposta a incidente
Passo 5: Criar detecção automatizada
- Hunt manual → regra de SIEM → detecção futura automáticaHunting na Prática — Queries
Beacon Detection (Cobalt Strike / C2)
# Splunk — conexões periódicas suspeitas
index=proxy
| eval hour=strftime(_time, "%H")
| stats count, values(url) as urls by src_ip, dest_ip, dest_port, hour
| where count > 50 AND count < 200 # beaconing tem frequência consistente
| eventstats stdev(count) as stddev by dest_ip
| where stddev < 5 # baixo desvio padrão = muito regular
# KQL (Microsoft Sentinel / Defender)
DeviceNetworkEvents
| where ActionType == "ConnectionSuccess"
| summarize
ConnectionCount = count(),
BytesSent = sum(LocalPort),
StdDev = stdev(LocalPort)
by DeviceName, RemoteIP, bin(Timestamp, 5m)
| where ConnectionCount between (10 .. 100)
and StdDev < 100
| project DeviceName, RemoteIP, ConnectionCount, StdDevLOLBin Abuse — Living off the Land
# Processos Windows suspeitos executando comandos de rede
# certutil download
index=windows EventCode=4688
| where CommandLine like "%certutil%" AND (
CommandLine like "%-urlcache%" OR
CommandLine like "%-decode%" OR
CommandLine like "%-encode%"
)
# mshta executando conteúdo remoto
| where ParentCommandLine like "%mshta%http%"
# regsvr32 script remote
| where CommandLine like "%regsvr32%scrobj.dll%"
# PowerShell encoded
| where CommandLine like "%powershell%" AND (
CommandLine like "%-enc %" OR
CommandLine like "%-EncodedCommand%" OR
CommandLine like "%-w hidden%"
)
# wmic lateral movement
| where CommandLine like "%wmic%process%call%create%"Credential Dumping
# Acesso ao processo LSASS
index=windows EventCode=4656
| where Object_Name like "%lsass%"
| where Access_Mask IN ("0x1fffff","0x1010","0x1438","0x143a")
| table _time, SubjectUserName, ProcessName, Object_Name, Access_Mask
# Mimikatz via padrões de comando
index=windows EventCode=4688
| where CommandLine like "%sekurlsa%" OR
CommandLine like "%lsadump%" OR
CommandLine like "%privilege::debug%" OR
CommandLine like "%token::elevate%"
# Volume Shadow Copy (precursor de ataque)
| where CommandLine like "%vssadmin%" OR
CommandLine like "%wmic%shadowcopy%"Exfiltração via DNS
# DNS queries com subdomain muito longo
index=dns
| rex field=query "(?P<subdomain>[^.]+)\."
| eval sub_len=len(subdomain)
| where sub_len > 40
| stats count by src_ip, query
| sort -count
# Domínios DGA (gerados algoritmicamente)
# Características: alta entropia, sem vogais em sequência, sem sentido
index=dns
| eval entropy=... (função customizada de entropia)
| where entropy > 3.5
| rex field=query "(?P<domain>[^.]+\.[^.]+)$"
| lookup known_domains domain OUTPUT is_known
| where isnull(is_known)Velociraptor — Endpoint Hunting em Escala
# Plataforma open source para hunting em endpoints
# Deploy agent em todos os endpoints → query centralizada
# Linguagem VQL (Velociraptor Query Language)
# Instalar
wget velociraptor-v0.7.x-linux-amd64
chmod +x velociraptor
./velociraptor config generate -i
./velociraptor --config server.config.yaml frontend
# Hunt: encontrar todos os processos fazendo conexões
SELECT Pid, Name, CommandLine, Username
FROM pslist()
WHERE
len(CommandLine) > 200 OR
Name =~ "^(cmd|powershell|wscript|cscript)\.exe$"
# Hunt: arquivos modificados nas últimas 24h em System32
SELECT OSPath, Size, Mtime, Ctime, Atime, MD5
FROM glob(globs="C:/Windows/System32/*.exe")
WHERE Mtime > now() - 86400
# Hunt: scheduled tasks suspeitas
SELECT Name, Command, Arguments, Enabled
FROM scheduled_tasks()
WHERE Command =~ "(powershell|cmd|wscript|mshta)"Documentação de Hunt
Hunt Report Template:
---
Data: 2026-04-02
Hunter: [nome]
Hipótese: [descrição]
Inspired by: MITRE T1071.004 (DNS C2)
Método:
- Queries executadas
- Fontes de dados usadas
- Período analisado
Resultados:
- [sistemas analisados]
- [X suspeitos encontrados]
- [N confirmados como maliciosos]
Ações Tomadas:
- Escalado para IR: [sim/não]
- Nova regra criada: [nome da regra]
- Gaps de telemetria identificados: [descrever]
---Maturidade de Threat Hunting
- Nível 0 — Reativo — sem hunting; apenas alertas de SIEM
- Nível 1 — Mínimo — hunting ad-hoc baseado em IoCs de feeds externos
- Nível 2 — Procedural — hunts regulares baseados em playbooks e MITRE ATT&CK
- Nível 3 — Inovador — hipóteses originais, machine learning, integração com inteligência de ameaças
- Nível 4 — Líder — hunting contínuo, automatizado, feedback loop com engenharia de detecção
Quer testar isso na prática?
A CyberZ realiza testes autorizados de segurança usando as técnicas descritas neste artigo — e muito mais. Identifique suas vulnerabilidades antes que os invasores o façam.
Falar com Especialista