// INICIALIZANDO SISTEMA...
Falar no WhatsApp

Utilizamos cookies essenciais para o funcionamento do site. Ao continuar, você concorda com nossa Política de Privacidade e com a LGPD.

CyberZ
Fale Conosco
CyberWiki / Defesa & Hardening / Threat Hunting — Caça Proativa a Ameaças
● Avançado 25 min de leitura Threat Hunting MITRE ATT&CK Hypothesis IOC TTPs Velociraptor KQL Proativo

Threat Hunting — Caça Proativa a Ameaças

Threat Hunting é a busca proativa de ameaças que passaram pelos controles automatizados. Em vez de esperar por alertas, o hunter parte de hipóteses baseadas em TTPs conhecidos de adversários e vasculha ativamente logs e endpoints. Detecta comprometimentos que ficaram meses sem alertar.

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ática

Hunting 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, StdDev

LOLBin 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