> [!warning] Aviso Importante > Este playbook é para threat hunters com experiência em análise de tráfego de rede e DFIR. Falsos positivos são comuns em hunting de exfiltração. Sempre correlacione múltiplos indicadores antes de escalar. --- ## Visão Geral Exfiltração de dados é a fase final do ciclo de ataque onde o atacante transfere dados coletados para infraestrutura controlada por ele. É frequentemente a mais lucrativa para o ator e a mais custosa para a vítima — com implicações legais (LGPD), reputacionais e financeiras significativas. **Contexto Brasil:** - Grupos como [[s0531-grandoreiro]] e [[g0099-blind-eagle-apt-c-36]] exfiltram dados bancários via HTTP para IPs dinâmicos - [[g0016-apt29]] usou exfiltração de e-mails via regras de transporte do Exchange comprometidas - [[lockbit]] usa **StealBit** para exfiltração HTTP PUT paralela antes da criptografia - APTs com foco em LATAM frequentemente usam Mega.nz, OneDrive e Telegram como destinos **Canais de exfiltração mais comuns:** | Canal | Técnica | Ferramenta | |-------|---------|-----------| | HTTP/HTTPS | [[t1041-exfiltration-c2\|T1041]], [[t1567-004-exfiltration-over-webhook\|T1567]] | curl, StealBit, Cobalt Strike | | DNS | [[t1048-001-exfiltration-over-symmetric-encrypted-non-c2-protocol\|T1048.001]] | dnscat2, iodine, CobaltStrike | | FTP/SFTP | [[t1048-003-exfiltration-over-unencrypted-non-c2-protocol\|T1048.003]] | ftp.exe nativo, WinSCP | | Serviços cloud | [[t1567-002-exfiltration-to-cloud-storage\|T1567.002]] | OneDrive, Google Drive, Mega.nz | | E-mail | [[t1048-003-exfiltration-over-unencrypted-non-c2-protocol\|T1048.003]] | Scripts Outlook, Exchange transport rules | | Protocolo de compressão | [[t1560-archive-collected-data\|T1560]] | RAR, 7zip com senha antes de enviar | | Canais alternativos | [[t1048-exfiltration-alternative-protocol\|T1048]] | ICMP, SMB, RDP clipboard | --- ## Fluxo de Hunting ```mermaid flowchart TD A([🔍 Início do Hunting<br/>de Exfiltração]) --> B[Coletar Baseline<br/>de Tráfego Normal] B --> C{Fonte de\nDados Disponível?} C -->|NetFlow/IPFIX| D[Análise Volumétrica<br/>nfdump / ntopng] C -->|Proxy Logs| E[Análise de URLs<br/>e User-Agents Suspeitos] C -->|DNS Logs| F[Análise de DNS<br/>Tunneling / Beaconing] C -->|EDR Logs| G[Análise de Processos<br/>com Alto I/O de Arquivo] D --> H[Hipótese 1:<br/>Alto Volume de Saída] E --> I[Hipótese 2:<br/>Cloud Storage Não Autorizado] F --> J[Hipótese 3:<br/>DNS Tunneling] G --> K[Hipótese 4:<br/>Compressão + Transferência] H --> L{Evidência\nSubstancial?} I --> L J --> L K --> L L -->|Sim| M[ESCALAR PARA IR<br/>Declarar Incidente] L -->|Não| N[Documentar Hipótese<br/>e Continuar Hunting] N --> O[Próxima Hipótese] O --> H M --> P([🚨 Incidente Ativo]) style A fill:#6600cc,color:#fff style M fill:#ff4444,color:#fff style P fill:#ff0000,color:#fff ``` --- ## Ferramentas Recomendadas ### Análise de Rede | Ferramenta | Uso | Comando Chave | |------------|-----|---------------| | **Zeek (Bro)** | Análise profunda de tráfego - logs de DNS, HTTP, SSL | Scripts para detectar beaconing e tunneling | | **NetworkMiner** | Extração de arquivos e credenciais de capturas PCAP | Abrir `.pcap` e filtrar por transferências de arquivo | | **nfdump** | Análise de NetFlow | `nfdump -r flows/ -s ip/bytes 'proto TCP and port 443'` | | **ntopng** | Dashboard de tráfego em tempo real | Filtrar por top IPs de destino externos | | **Wireshark** | Análise manual de captura | `tcp.len > 1400` para grandes transferências | | **Suricata** | IDS/IPS - regras para exfiltração | ET Rules para protocols de exfiltração | ### DLP e Monitoramento de Endpoint | Ferramenta | Uso | |------------|-----| | **Microsoft Purview DLP** | Detectar transferência de dados sensíveis via M365 | | **Forcepoint DLP** | Monitoramento de canais de saída - e-mail, web, USB | | **Symantec DLP** | Fingerprinting de dados + detecção de exfiltração | | **Velociraptor** | Hunting - identificar arquivos comprimidos recentemente criados | `velociraptor artifacts collect Windows.Detection.Compression` | | **KAPE** | Coletar evidências de compressão e staging | Target: `FileSystem, $MFT` | ### Threat Intelligence | Ferramenta | Uso | |------------|-----| | **VirusTotal** | Verificar domínios/IPs de destino de exfiltração | | **Shodan** | Identificar infraestrutura C2 de exfiltração | | **IPinfo.io** | Verificar ASN e geolocalização de destinos suspeitos | | **URLScan.io** | Analisar URLs para verificar se são destinos de exfiltração | --- ## Hipótese 1 - Alto Volume de Dados Saindo para IPs Externos **Hipótese:** Uma máquina específica está enviando volumes anormalmente altos de dados para IPs externos fora do padrão de negócio. **Threshold sugerido:** > 500MB em uma única sessão ou > 1GB em 24h para um único destino externo ### Query Splunk - Top Transferências de Saída ```spl index=netflow direction=outbound | stats sum(bytes_out) AS total_bytes by src_ip, dest_ip | eval total_gb = round(total_bytes / 1073741824, 2) | where total_bytes > 524288000 | lookup geoip dest_ip OUTPUT country, city | where NOT country IN ("Brazil", "Brasil") | sort -total_gb ``` ### Query Splunk - Sessões Longas em Porta Não-Padrão ```spl index=firewall action=allow dest_port!=80 dest_port!=443 dest_port!=53 | stats sum(bytes) AS total avg(duration) AS avg_duration count by src_ip, dest_ip, dest_port | where total > 10485760 AND avg_duration > 300 | sort -total ``` ### Query KQL - Sentinel - Alto Volume de Transferência de Dados ```kql DeviceNetworkEvents | where RemoteIPType == "Public" | where RemotePort !in (80, 443, 53, 123) | summarize TotalBytes = sum(SentBytes), Sessions = count() by DeviceName, RemoteIP, bin(Timestamp, 1h) | where TotalBytes > 52428800 // 50MB | order by TotalBytes desc ``` --- ## Hipótese 2 - Uso de Cloud Storage Não Autorizado **Hipótese:** Um usuário ou processo está enviando dados para serviços cloud não autorizados (Mega.nz, pessoais OneDrive, Box pessoal) que não são plataformas corporativas aprovadas. ### Indicadores - Conexões HTTPS para `mega.nz`, `g.api.mega.co.nz`, `storage.googleapis.com` (pessoal), `api.anonfiles.com` - User-Agent de linha de comando (curl, Python requests) conectando a cloud storage - Download de cliente MEGASync em endpoint corporativo - Upload via `rclone` - ferramenta legítima frequentemente usada por atacantes ### Query Splunk - Acesso a Cloud Storage Suspeito ```spl index=proxy | where dest IN ( "mega.nz", "g.api.mega.co.nz", "storage.googleapis.com", "gofile.io", "anonfiles.com", "pixeldrain.com", "transfer.sh", "tmpfiles.org", "file.io", "wetransfer.com" ) | stats sum(bytes_out) AS total_upload count by src_ip, dest, user | sort -total_upload ``` ### Query KQL - Sentinel - Upload Suspeito via Browser ```kql DeviceNetworkEvents | where RemoteUrl has_any ("mega.nz", "gofile.io", "anonfiles.com", "transfer.sh", "file.io") | summarize UploadSessions = count(), Devices = make_set(DeviceName) by RemoteUrl, bin(Timestamp, 1h) | order by UploadSessions desc ``` ### Suricata - Regra para Exfiltração via MEGA ``` alert tls $HOME_NET any -> $EXTERNAL_NET 443 ( msg:"RunkIntel DATA EXFIL MEGA Upload Detected"; flow:established,to_server; tls.sni; content:"mega.nz"; nocase; flowbits:set,mega.upload; sid:9002001; rev:1; classtype:policy-violation; ) ``` --- ## Hipótese 3 - DNS Tunneling **Hipótese:** Um processo está usando consultas DNS para exfiltrar dados de forma oculta, codificando dados em subdomínios de consultas DNS. **Padrões típicos de DNS tunneling:** - Subdomínios muito longos (> 40 caracteres) - Subdomínios em base32/base64/hex - Alto volume de consultas para um único domínio pai - Registro `TXT` queries com respostas incomuns - NX domains com padrão consistente (parte do handshake dnscat2) ### Query Splunk - Subdomínios Longos (DNS Tunnel) ```spl index=dns message_type="QUERY" | where len(query) > 50 | rex field=query "(?P<subdomain>.+?)\.(?P<domain>[^\.]+\.[^\.]+)quot; | stats count by domain, subdomain, src_ip | where count > 3 | sort -count ``` ### Query Splunk - Alto Volume de Queries para Domínio (Beaconing) ```spl index=dns message_type="QUERY" | rex field=query "(?P<domain>[^\.]+\.[^\.]+)quot; | stats count dc(query) AS unique_queries by domain, src_ip | where count > 100 AND unique_queries > 20 | sort -count ``` ### Query KQL - Sentinel - DNS Anomaly (Long Subdomain) ```kql DnsEvents | where QueryType == "A" or QueryType == "AAAA" or QueryType == "TXT" | extend QueryLength = strlen(Name) | where QueryLength > 50 | extend SubdomainPart = extract("^(.+)\\.\\w+\\.\\w+quot;, 1, Name) | where strlen(SubdomainPart) > 30 | summarize Count = count(), Sources = make_set(ClientIP) by Name | order by Count desc ``` ### Zeek - Script para Detectar DNS Tunneling ```zeek @load base/protocols/dns event dns_request(c: connection, msg: dns_msg, query: string, qtype: count, qclass: count) { if ( strlen(query) > 50 ) { print fmt("Possible DNS tunnel - long query: %s from %s", query, c$id$orig_h); NOTICE([$note=DNS::Tunnel_Candidaté, $conn=c, $msg=fmt("Long DNS query: %s (%d chars)", query, strlen(query))]); } } ``` --- ## Hipótese 4 - Compressão + Staging + Transferência **Hipótese:** Um atacante está coletando, comprimindo e preparando dados para exfiltração — padrão característico de operações APT e ransomware pré-criptografia. **Padrão típico:** 1. `dir /s /b *.docx > file_list.txt` - inventário de arquivos 2. `7za.exe a -p<senha> archive.7z C:\Users\target\Documents\` - compressão com senha 3. Transferência do arquivo comprimido via HTTP/FTP/cloud para C2 ### Query Splunk - Compressão Seguida de Transferência ```spl index=sysmon EventCode=1 Image IN ("*\\7za.exe", "*\\7z.exe", "*\\rar.exe", "*\\winrar.exe") CommandLine="*-p*" | stats count by Computer, User, CommandLine, _time | sort -_time ``` ### Query Splunk - Arquivo Comprimido Criado + Acesso de Rede Subsequente (Correlação) ```spl index=sysmon EventCode=11 TargetFilename IN ("*.7z", "*.rar", "*.zip", "*.gz", "*.tar") | join type=left Computer [ search index=sysmon EventCode=3 dest_ip!=10.0.0.0/8 dest_ip!=192.168.0.0/16 | stats count by Computer, dest_ip, _time ] | where count > 0 | table _time, Computer, User, TargetFilename, dest_ip ``` ### Query KQL - Sentinel - Compressão + Upload (Correlação Temporal) ```kql let compressions = DeviceFileEvents | where ActionType == "FileCreated" | where FileName endswith ".7z" or FileName endswith ".rar" or FileName endswith ".zip" | project DeviceName, FileName, Timestamp; let network = DeviceNetworkEvents | where RemoteIPType == "Public" | where SentBytes > 1048576 | project DeviceName, RemoteIP, SentBytes, NetworkTimestamp = Timestamp; compressions | join kind=inner network on DeviceName | where NetworkTimestamp between (Timestamp .. (Timestamp + 30m)) | project DeviceName, FileName, RemoteIP, SentBytes, Timestamp | order by Timestamp desc ``` --- ## Hipótese 5 - Exfiltração via E-mail **Hipótese:** Um atacante está usando regras de encaminhamento de e-mail ou e-mails massivos com anexos para exfiltrar dados do ambiente. **Padrões APT29 conhecidos:** - Exchange transport rules adicionadas para encaminhar todos os e-mails de contas VIP - Inbox rules para auto-forward para endereço externo controlado pelo atacante - Exfiltração de arquivos `.pst` do Exchange via WebDAV ou OAB ### Query KQL - Sentinel - Regras de Encaminhamento Criadas ```kql OfficeActivity | where Operation in ("New-InboxRule", "Set-InboxRule") | where Parameters has "ForwardTo" or Parameters has "RedirectTo" | project TimeGenerated, UserId, Parameters, ClientIP | order by TimeGenerated desc ``` ### Query KQL - Sentinel - Mass Download do SharePoint/OneDrive ```kql OfficeActivity | where Operation == "FileDownloaded" | summarize DownloadCount = count(), Files = make_set(SourceFileName) by UserId, ClientIP, bin(TimeGenerated, 1h) | where DownloadCount > 50 | order by DownloadCount desc ``` --- ## Gantt de Hunting de Exfiltração ```mermaid gantt title Ciclo de Hunting de Exfiltração (Semanal) dateFormat YYYY-MM-DD section Segunda Baseline de volume de rede :2026-03-23, 1d Hipótese 1 — volumétrico :2026-03-23, 1d section Terça Hipótese 2 — cloud storage não autorizado :2026-03-24, 1d Revisar logs de proxy da semana anterior :2026-03-24, 1d section Quarta Hipótese 3 — DNS tunneling :2026-03-25, 1d Análise de Zeek DNS logs :2026-03-25, 1d section Quinta Hipótese 4 — staging e compressão :2026-03-26, 1d Hipótese 5 — exfiltração via e-mail :2026-03-26, 1d section Sexta Correlação de achados :2026-03-27, 1d Relatório de hunting :2026-03-27, 1d ``` --- ## Checklist de Hunting ### Preparação - [ ] Confirmar disponibilidade de logs de NetFlow/IPFIX (mínimo 30 dias) - [ ] Confirmar disponibilidade de logs de proxy web (mínimo 30 dias) - [ ] Confirmar disponibilidade de logs de DNS queries (mínimo 90 dias) - [ ] Confirmar disponibilidade de logs de DLP (se implementado) - [ ] Estabelecer baseline de volume de dados de saída por host e por usuário - [ ] Identificar serviços cloud corporativos aprovados vs. não aprovados ### Execução das Hipóteses - [ ] H1: Alto volume de saída - verificar top transferências acima do baseline - [ ] H2: Cloud storage não autorizado - verificar destinos em lista de monitoramento - [ ] H3: DNS tunneling - subdomínios longos, alto volume para domínio único - [ ] H4: Compressão + staging - 7zip/RAR com senha + transferência subsequente - [ ] H5: E-mail exfiltration - regras de encaminhamento, downloads em massa de SharePoint ### Documentação - [ ] Registrar cada hipótese testada e resultado (TP/FP/Inconclusivo) - [ ] Escalar True Positives para IR imediatamente - [ ] Atualizar lista de destinos suspeitos no SIEM - [ ] Documentar falsos positivos para refinar queries futuras --- ## Indicadores a Buscar ### IPs e Domínios Associados a Exfiltração ``` # Serviços frequentemente abusados para exfiltração mega.nz gofile.io anonfiles.com transfer.sh file.io tmpfiles.org pixeldrain.com storj.io (se não autorizado) # Padrões de User-Agent suspeitos em transferências curl/ python-requests/ Go-http-client/ Wget/ rclone/ MEGAcmdShell ``` --- ## Comúnicação ### Escalonamento para IR ``` Para: IR Lead / CISO Assunto: [HUNTING FINDING] Possível Exfiltração de Dados — [Host/Usuário] SUMÁRIO Durante hunting de exfiltração, identificamos atividade suspeita consistente com [tipo de exfiltração]. HOST AFETADO: [nome] USUÁRIO: [usuário] DESTINO: [IP/domínio] VOLUME ESTIMADO: [bytes/GB] JANELA TEMPORAL: [início] a [fim] HIPÓTESE: [descrição da hipótese e evidências] EVIDÊNCIAS: - [Query executada e resultado] - [Screenshot ou log relevante] RECOMENDAÇÃO: [Isolamento imediato / Investigação aprofundada / Monitoramento] Classificação: [True Positive / Possível TP / Requer Investigação] ``` --- ## Lições Aprendidas ### Questões Obrigatórias 1. A exfiltração foi detectada em tempo real ou apenas via hunting retroativo? 2. O canal de exfiltração estava coberto pelos controles de DLP? 3. Qual o volume estimado de dados exfiltrados? 4. Qual o tipo de dados afetados? (pessoais? estratégicos? código-fonte?) 5. Existia visibilidade de rede suficiente para detectar o canal utilizado? ### Melhorias Recomendadas - [ ] Implementar solução DLP com cobertura de canais web, e-mail e endpoint - [ ] Bloquear acesso a sites de file sharing não corporativos no proxy (Mega.nz, GoFile) - [ ] Implementar inspeção TLS no proxy para visibilidade de uploads HTTPS - [ ] Habilitar auditoria de regras de encaminhamento de e-mail (Exchange/M365) - [ ] Configurar Zeek com scripts de detecção de DNS tunneling - [ ] Implementar CASB (Cloud Access Security Broker) para visibilidade de shadow IT --- ## Referências - [[t1048-exfiltration-alternative-protocol|T1048 - Exfiltration Over Alternative Protocol]] - técnica MITRE ATT&CK - [[t1041-exfiltration-c2|T1041 - Exfiltration Over C2 Channel]] - exfiltração via canal C2 - [[t1567-exfiltration-over-web-service|T1567 - Exfiltration Over Web Service]] - uso de serviços cloud - [[t1560-archive-collected-data|T1560 - Archive Collected Data]] - compressão antes de exfiltrar - [[t1041-exfiltration-c2|T1020 - Automated Exfiltration]] - exfiltração automatizada (StealBit) - [[g0016-apt29]] - grupo conhecido por exfiltração via Exchange transport rules - [[lockbit]] - grupo que usa StealBit para exfiltração paralela pré-criptografia - [[hunting-lateral-movement]] - playbook complementar - [[hunting-supply-chain-compromise]] - playbook complementar - [[ta0010-exfiltration|MITRE ATT&CK - Exfiltration Tactic]] - [SANS - Data Exfiltration Detection](https://www.sans.org/reading-room/whitepapers/detection/detecting-dns-tunneling-34152) - [Zeek DNS Tunneling Detection](https://github.com/corelight/zeek-long-connections) --- *Última revisão: 2026-03-23 | Próxima revisão recomendada: 2026-09-23*