O que Análise de Indicadores de Compromisso faz?
Quando Usar
Use esta habilidade quando:
- Um e-mail de phishing ou alerta gerar IOCs (URLs, endereços IP, hashes de arquivos) que exigem triagem rápida
- Feeds automatizados entregarem IOCs em lote que precisam de pontuação de confiança antes da ingestão em controles de bloqueio
- Uma investigação de incidente exigir enriquecimento contextual de artefatos de rede observados
Não use esta habilidade isoladamente para decisões de bloqueio de alto risco — sempre combine o enriquecimento automatizado com o julgamento do analista, especialmente para infraestrutura compartilhada (CDNs, provedores de nuvem).
Pré-requisitos
- Chave da API VirusTotal (gratuita ou Enterprise) para consulta multi-AV e sandbox
- Chave da API AbuseIPDB para verificações de reputação de IP
- Instância MISP ou TIP para referência cruzada com campanhas conhecidas
- Python com as bibliotecas
requestsevt-py, ou plataforma SOAR com conectores pré-construídos
Fluxo de Trabalho
Etapa 1: Normalizar e Classificar Tipos de IOC
Antes de enriquecer, classifique cada IOC:
- Endereço IPv4/IPv6: Verificar se é privado RFC 1918 (pular enriquecimento externo), validar formato
- Domínio/FQDN: Desarmar para manuseio seguro (
evil[.]com), extrair domínio registrado via tldextract - URL: Extrair domínio + caminho separadamente; verificar redirecionadores
- Hash de arquivo: Identificar o tipo de hash (MD5/SHA-1/SHA-256); preferir SHA-256 para unicidade
- Endereço de e-mail: Dividir em domínio (verificar MX/DMARC) e parte local para análise de padrões
Desarme os IOCs na documentação (substitua . por [.] e :// por [://]) para evitar cliques acidentais.
Etapa 2: Enriquecimento Multi-Fonte
VirusTotal (hash de arquivo, URL, IP, domínio):
import vt
client = vt.Client("SUA_CHAVE_VT")
# Consulta de hash de arquivo
file_obj = client.get_object(f"/files/{sha256_hash}")
detections = file_obj.last_analysis_stats
print(f"Malicioso: {detections['malicious']}/{sum(detections.values())}")
# Análise de domínio
domain_obj = client.get_object(f"/domains/{dominio}")
print(domain_obj.last_analysis_stats)
print(domain_obj.reputation)
client.close()
AbuseIPDB (endereços IP):
import requests
response = requests.get(
"https://api.abuseipdb.com/api/v2/check",
headers={"Key": "SUA_CHAVE", "Accept": "application/json"},
params={"ipAddress": "1.2.3.4", "maxAgeInDays": 90}
)
data = response.json()["data"]
print(f"Confiança: {data['abuseConfidenceScore']}%, Relatórios: {data['totalReports']}")
MalwareBazaar (hashes de arquivos):
response = requests.post(
"https://mb-api.abuse.ch/api/v1/",
data={"query": "get_info", "hash": sha256_hash}
)
result = response.json()
if result["query_status"] == "ok":
print(result["data"][0]["tags"], result["data"][0]["signature"])
Etapa 3: Contextualizar com Atribuição de Campanha
Consulte MISP para eventos existentes que correspondam ao IOC:
from pymisp import PyMISP
misp = PyMISP("https://misp.example.com", "API_KEY")
results = misp.search(value="dominio-malicioso.com", type_attribute="domain")
for event in results:
print(event["Event"]["info"], event["Event"]["threat_level_id"])
Verifique o Shodan para contexto do IP (provedor de hospedagem, portas abertas, banners) para identificar se o IP pertence a hospedagem antiderrubada ou a um provedor de nuvem legítimo (risco de falso positivo).
Etapa 4: Atribuir Pontuação de Confiança e Disposição
Aplique um framework de decisão em níveis:
- Bloquear (Alta Confiança ≥ 70%): ≥15 detecções de AV no VT, score AbuseIPDB ≥70, corresponde a família de malware ou campanha conhecida
- Monitorar/Alerta (Média 40–69%): 5–14 detecções de AV, score AbuseIPDB moderado, sem atribuição de campanha
- Lista de permissão/Investigar (Baixa <40%): ≤4 detecções de AV, nenhum relatório de abuso, serviço legítimo (IPs de CDN Google, Cloudflare)
- Falso Positivo: Serviço comercial legítimo sinalizado incorretamente; documentar e excluir de alertas futuros
Etapa 5: Documentar e Distribuir
Registre as descobertas no TIP/MISP com:
- Todos os dados de enriquecimento coletados (carimbos de data/hora, fonte, pontuação)
- Decisão de disposição e justificativa
- Ações de bloqueio tomadas (firewall, proxy, DNS sinkhole)
- Número do ticket do incidente relacionado
Exportar para objeto de indicador STIX com o campo de confiança configurado adequadamente.
Conceitos Chave
| Termo | Definição |
|---|---|
| IOC | Indicador de Compromisso — artefato observável de rede ou host que indica possível comprometimento |
| Enriquecimento | Processo de adicionar dados contextuais a um IOC bruto a partir de múltiplas fontes de inteligência |
| Desarmamento | Modificação de IOCs (substituindo . por [.]) para evitar ativação acidental em documentação |
| Taxa de Falso Positivo | Percentual de artefatos benignos sinalizados incorretamente como maliciosos; crítico para ajustar limites de bloqueio |
| Sinkhole | Servidor DNS que redireciona consultas de domínios maliciosos para um IP benigno para detecção sem bloquear totalmente o tráfego |
| TTL | Tempo de vida de um IOC em controles de bloqueio; indicadores IP devem expirar após 30 dias, domínios após 90 dias |
Ferramentas e Sistemas
- VirusTotal: Scanner de malware multi-mecanismo e plataforma de inteligência de ameaças com mais de 70 mecanismos AV, relatórios de sandbox e comentários da comunidade
- AbuseIPDB: Banco de dados de reputação de IP mantido pela comunidade com histórico de relatórios de abuso de 90 dias
- MalwareBazaar (abuse.ch): Repositório gratuito de hashes de malware com associações de regras YARA e rotulagem de família de malware
- URLScan.io: Serviço gratuito de análise de URL que captura screenshots, DOM e requisições de rede para triagem de URLs de phishing
- Shodan: Dados de varredura de Internet em escala global que fornecem provedor de hospedagem, portas abertas e informações de banner para enriquecimento de IP
Armadilhas Comuns
- Bloqueio de infraestrutura compartilhada: IPs de CDN (Cloudflare 104.21.x.x, AWS CloudFront) podem hospedar conteúdo malicioso legitimamente, mas bloquear o IP interrompe milhares de sites legítimos.
- Obsessão por pontuação do VT: Baixa contagem de detecção no VT não significa benigno — malware zero-day e ferramentas APT personalizadas frequentemente pontuam 0 inicialmente. Verifique comportamento em sandbox, MISP e DNS passivo.
- Falta de desarmamento: Colar IOCs vivos em e-mails ou documentos do Confluence pode acionar scanners de URL automatizados ou ferramentas de phishing.
- Sem política de expiração: IOCs sem TTL se acumulam em listas de bloqueio indefinidamente, gerando falsos positivos à medida que a infraestrutura é reaproveitada por usuários legítimos.
- Dependência excessiva de uma única fonte: VirusTotal agrega opiniões de AV — todas podem estar erradas ou atrasadas em relação a malware emergente. Use 3+ fontes independentes para decisões de alto risco.