
A exfiltração de dados continua sendo uma das ameaças mais perniciosas enfrentadas por organizações modernas. Os adversários estão constantemente evoluindo suas táticas, enterrando tentativas de exfiltração em meio ao tráfego legítimo. Usando ferramentas como o ELK Stack (Elasticsearch, Logstash, Kibana), equipes de segurança podem descobrir essas atividades clandestinas. Neste guia abrangente, vamos cobrir desde os fundamentos da exfiltração de dados até técnicas avançadas de detecção usando ferramentas modernas de SIEM (Gerenciamento de Eventos e Informações de Segurança), com exemplos do mundo real e amostras de código acionável.
Exfiltração de dados é a transferência intencional não autorizada e clandestina de dados de um computador ou dispositivo, frequentemente por um agente de ameaça que infiltrou um rede (IBM - Data Exfiltration). O objetivo é roubar informações sensíveis ou confidenciais, como propriedade intelectual, credenciais, dados financeiros ou informações pessoais sem detecção.
A exfiltração de dados pode ser:
Uma vez exfiltrados, esses dados podem ser vendidos, usados para chantagem, habilitar ataques futuros ou causar dano reputacional.
A maioria das organizações implanta ferramentas de prevenção de perda de dados (DLP) e perímetro. Contudo, técnicas de exfiltração de dados ocultos são projetadas para se misturar com o tráfego normal da rede, tornando sua identificação complicada. Os atacantes podem se disfarçar como:
Desafio: Os controles de segurança frequentemente se baseiam em assinaturas conhecidas de más práticas ou anomalias de volume, mas muitos canais escondidos exfiltram dados em volumes que parecem normais e evitam levantar sinais de alerta imediatos.
Os atacantes enviam dados codificados dentro de consultas DNS para um servidor externo que controlam. Uma vez que o DNS é frequentemente permitido através de firewalls e é monitorado menos rigorosamente do que HTTP ou FTP, é um favorito para exfiltração clandestina.
Dados enviados via POSTs HTTP aparentemente legítimos, uploads para pastebin ou ocultos em cabeçalhos/agentes de usuário. A criptografia HTTPS dificulta a inspeção profunda sem interceptação SSL.
Dados são ocultados dentro de arquivos de imagem, vídeo ou áudio antes de serem exfiltrados por canais legítimos, como anexos de e-mail ou postagens em redes sociais.
Exfiltração de arquivos via armazenamento em nuvem pessoal ou não autorizado (por exemplo, Google Drive, Dropbox), aplicativos de mensagens instantâneas ou ferramentas de sincronização de arquivos.
A técnica MITRE ATT&CK T1048 - Exfiltração por Protocolo Alternativo refere-se a atacantes utilizando protocolos incomuns ou menos vigiados para mover dados para fora do ambiente da vítima, como DNS, SMB ou mesmo protocolos desenvolvidos no próprio ambiente sobre portas permitidas. Reconhecer e caçar atividades relacionadas ao T1048 é vital para uma defesa preventiva contra ameaças.
Monitoramento de fluxos de dados de rede, identificando anomalias e inspecionando cargas para padrões suspeitos.
Detecta preparação de dados, execução de scripts e tentativas suspeitas de saída de rede diretamente nos endpoints.
O ELK Stack (Elasticsearch, Logstash, Kibana) é um conjunto poderoso de código aberto para agregar, indexar, buscar e visualizar logs e telemetria de endpoints, firewalls, dispositivos de rede e fontes de nuvem. Quando enriquecido com conteúdo de segurança, o ELK pode:
Vamos descrever a configuração prática para detectar tentativas de exfiltração de dados com ELK.
Fontes de Dados:
input {
file {
path => "/var/log/dns_queries.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{IPV4:client_ip} %{WORD:query_type} %{HOSTNAME:query}" }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "dns-queries-%{+YYYY.MM.dd}"
}
}
Desenvolva regras de detecção para descobrir padrões como:
Buscar consultas DNS com comprimentos anormais de subdomínios (típico para tunelamento):
GET dns-queries-*/_search
{
"query": {
"script": {
"script": {
"source": "doc['query.keyword'].value.length() > 60"
}
}
}
}
Crie dashboards para:
Cenário: O endpoint de um funcionário é comprometido. Malware codifica arquivos sensíveis como base32 e os envia, pouco a pouco, através de subdomínios falsos em consultas DNS.
Suponha que /var/log/dns.log contenha:
2024-05-01T10:02:35Z 10.0.0.5 IN Q example.abcd3lk21j23lkj4lkj2lk34.external.com
2024-05-01T10:02:37Z 10.0.0.5 IN Q example.a9f8a7f98e7a6f87.external.com
Extrair e listar consultas incomumente longas:
awk '{ if (length($4) > 60) print $0 }' /var/log/dns.log
Verificar IPs de clientes gerando >1000 solicitações em uma hora:
awk '{print $2}' /var/log/dns.log | sort | uniq -c | awk '$1 > 1000'
No Kibana, visualize contagens de subdomínios únicos por IP ao longo do tempo. Um pico pode indicar atividade de tunelamento.
Cenário: Um workstation comprometido envia dados sensíveis via solicitações POST HTTP para um host aleatório, nunca antes visto na Internet.
GET http-logs-*/_search
{
"query": {
"bool": {
"must": [
{ "match": { "method": "POST" } },
{ "range": { "content_length": { "gte": 1000000 } } } // Acima de 1MB
],
"must_not": [
{ "terms": { "dest_domain.keyword": ["approved-api.example.com", "known-good.com"] } }
]
}
}
}
Analise logs para POSTs excessivos para hosts raros:
import csv
from collections import Counter
with open('http_logs.csv') as f:
rows = csv.DictReader(f)
hosts = [row['dest_domain'] for row in rows if row['method'] == "POST"]
for host, count in Counter(hosts).most_common():
if count > 50:
print(f"Postagens excessivas suspeitas para {host}: {count}")
A maioria das soluções SIEM pode automatizar alertas, mas a correlação e triagem frequentemente se beneficiam de scripts personalizados.
Detectar consultas DNS suspeitamente longas:
grep -E '.{60,}' /var/log/dns_queries.log
Encontrar principais clientes gerando o máximo de conexões de saída:
awk '{print $2}' /var/log/firewall_outbound.log | sort | uniq -c | sort -nr | head
Analise subdomínios codificados em base64 (tunelamento DNS):
import base64
import re
def is_base64(s):
try:
return base64.b64encode(base64.b64decode(s)).decode() == s
except Exception:
return False
dns_queries = ['abcd3lk21j23lkj4lkj2lk34.external.com', 'normal.example.com']
for q in dns_queries:
subdomain = q.split('.')[0]
if is_base64(subdomain):
print(f"Possível exfiltração: {q}")
Detectar exfiltração clandestina de dados demanda defesas em camadas, inteligência de ameaças e análises robustas:
Lembre-se: Os atacantes se baseiam na furtividade e em sua ignorância sobre suas técnicas. Monitoramento, automação e melhoria contínua nos processos de detecção são fundamentais para interromper a exfiltração clandestina em seu caminho.
Interessado em implementar essas estratégias? Considere implantar um ambiente de teste do ELK Stack e comece ingerindo logs de DNS, firewall e proxy web. Crie suas próprias detecções e veja quantas técnicas de exfiltração clandestina você pode capturar!
Se você achou este conteúdo valioso, imagine o que você poderia alcançar com nosso programa de treinamento de elite abrangente de 47 semanas. Junte-se a mais de 1.200 alunos que transformaram suas carreiras com as técnicas da Unidade 8200.