Threat Intelligence com OSINT: do IOC ao contexto com VirusTotal, AbuseIPDB e MISP
Threat Intelligence (inteligência de ameaças) é o processo de coletar, enriquecer e contextualizar informação sobre ameaças para apoiar decisões de defesa. OSINT é o combustível mais acessível desse processo: feeds públicos, plataformas de reputação e repositórios abertos fornecem a matéria-prima. O desafio não é achar indicadores, é dar contexto a eles.
Este artigo explica como sair do indicador cru e chegar à inteligência: o que é um IOC, como enriquecer com VirusTotal e AbuseIPDB, e como correlacionar e compartilhar no MISP.
IOC, TTP e os níveis da inteligência
Um IOC (Indicator of Compromise) é um artefato observável que sugere atividade maliciosa: um hash de arquivo, um IP, um domínio, uma URL. IOCs são valiosos, mas voláteis: um IP malicioso hoje pode ser inofensivo amanhã.
Acima deles estão as TTPs (Tactics, Techniques and Procedures), que descrevem o comportamento do adversário e mudam muito mais devagar. A Pirâmide da Dor, de David Bianco, resume a ideia: quanto mais alto o indicador na pirâmide (de hashes até TTPs), mais caro é para o atacante mudar e mais valioso ele é para a defesa.
A inteligência costuma ser dividida em três níveis:
- Tática: IOCs e regras de detecção para uso imediato.
- Operacional: campanhas, infraestrutura e TTPs de um ator.
- Estratégica: tendências e risco para apoiar decisão de alto nível.
Tipos de indicador
| Tipo de IOC | Exemplo | Onde enriquecer |
|---|---|---|
| Hash de arquivo | SHA-256 de um binário | VirusTotal |
| Endereço IP | 203.0.113.10 | AbuseIPDB, VirusTotal |
| Domínio / URL | exemplo-malicioso.tld | VirusTotal, urlscan.io |
| E-mail / remetente | phishing@dominio.tld | Fontes de phishing |
Enriquecimento com VirusTotal
O VirusTotal agrega o veredito de dezenas de motores antivírus e serviços de reputação, além de dados de relacionamento (domínios que resolvem para um IP, arquivos que contactam uma URL). Com uma chave de API gratuita você consulta a API v3 via curl.
Consultar a reputação de um IP:
curl --request GET \
--url "https://www.virustotal.com/api/v3/ip_addresses/203.0.113.10" \
--header "x-apikey: SUA_CHAVE_AQUI"
Consultar um hash de arquivo:
curl --request GET \
--url "https://www.virustotal.com/api/v3/files/HASH_SHA256" \
--header "x-apikey: SUA_CHAVE_AQUI"
A resposta JSON traz o bloco last_analysis_stats com contagens malicious, suspicious e harmless. Para filtrar só o essencial, use jq:
curl -s --url "https://www.virustotal.com/api/v3/files/HASH" \
--header "x-apikey: SUA_CHAVE" \
| jq ".data.attributes.last_analysis_stats"
Armadilha comum: tratar "1 motor marcou como malicioso" como veredito final. Avalie o consenso, verifique falsos positivos conhecidos e cruze com outras fontes. A conta gratuita também tem limite de requisições por minuto, então respeite o rate limit em consultas em lote.
Enriquecimento com AbuseIPDB
O AbuseIPDB é focado em endereços IP e mantém um histórico de denúncias de abuso (spam, força bruta, varreduras). O retorno-chave é o abuseConfidenceScore, de 0 a 100.
curl -G "https://api.abuseipdb.com/api/v2/check" \
--data-urlencode "ipAddress=203.0.113.10" \
--data "maxAgeInDays=90" \
--header "Key: SUA_CHAVE_ABUSEIPDB" \
--header "Accept: application/json"
Interprete o score com contexto: um IP de nuvem compartilhada pode acumular denúncias por vizinhança, não por ser o alvo da sua investigação. Combine o score com o número total de relatos e a distribuição temporal.
Correlação e compartilhamento com MISP
O MISP é uma plataforma open source para armazenar, correlacionar, enriquecer e distribuir indicadores. Nele, a unidade básica é o evento, que agrupa atributos (os IOCs) e objetos (estruturas que descrevem artefatos complexos).
Capacidades que fazem a diferença:
- Correlação automática: o MISP cruza atributos entre eventos e aponta quando o mesmo IP ou hash aparece em campanhas distintas.
- Módulos de expansão: enriquecem atributos consultando serviços externos, retornando categorização, famílias de malware, atores e pontuação de confiança.
- Feeds: importa listas abertas, como OTX da AlienVault, para dentro da sua base.
- Exportação: gera listas em formatos de detecção (Suricata, Snort, STIX) para alimentar seus controles.
Um fluxo típico: crie o evento, adicione os atributos enriquecidos (com o score do VirusTotal e do AbuseIPDB nos comentários), marque com taxonomias como TLP (Traffic Light Protocol) para controlar a divulgação e deixe a correlação revelar vínculos com eventos anteriores.
Passo a passo na prática
Enriquecimento de um IP suspeito encontrado num log de acesso aberto:
- Normalize o indicador e valide que é mesmo público e relevante.
- Consulte o VirusTotal pelo endpoint de IP e anote
last_analysis_statse relações (domínios associados). - Consulte o AbuseIPDB e registre o
abuseConfidenceScore, total de relatos e categorias. - Pivote: se o VirusTotal listar domínios que resolvem para o IP, investigue esses domínios como novos IOCs.
- Registre no MISP como evento, aplique TLP e deixe a correlação apontar reincidências.
- Classifique a confiança: alta se há consenso entre fontes, baixa se só uma fonte isolada reporta.
O objetivo nunca é o veredito "malicioso/limpo" isolado, é o contexto: quem, como, desde quando e com que grau de certeza.
Ética e legalidade
Threat intelligence com OSINT trabalha com infraestrutura e artefatos, não com a vida privada de pessoas. Ainda assim, dados de WHOIS e logs podem conter dados pessoais sujeitos à LGPD, portanto minimize a coleta e respeite finalidades legítimas de segurança. Nunca acesse sistemas sem autorização para "validar" um indicador: análise ativa é teste de intrusão e exige permissão. Use somente fontes abertas e serviços dentro de seus termos.
Convite
Monte seu primeiro fluxo de enriquecimento e traga suas dúvidas sobre MISP e APIs de reputação para a comunidade OsintHunters Brasil. Trocar playbooks eleva a defesa de todo mundo.
