
Ferramenta CLI em Python para análise rápida de IOC (IPs, Domínios, CVEs) usando 6 APIs gratuitas de Threat Intel. Saídas: Excel com cores, JSON, CSV. Usa: VT, Shodan, AbuseIPDB.
Investigue IPs, domínios, hashes e CVEs em 6 APIs gratuitas de inteligência de ameaças — sem alternar entre abas do navegador.
Início Rápido · Uso · Arquitetura · Chaves de API · Capturas de Tela · Contribuindo
🚀 Orgulhosamente destacado no repositório oficial Awesome OSINT.
ThreatLens é uma ferramenta de linha de comando única que unifica consultas de inteligência de ameaças nas fontes OSINT gratuitas mais confiáveis. Em vez de colar um IP em cinco sites diferentes, o ThreatLens consulta todos em paralelo, normaliza os resultados e fornece um veredito claro — no terminal, ou em um relatório refinado e com código de cores em Excel/JSON/CSV.
Criado para analistas de SOC, respondedores de incidentes, caçadores de ameaças e qualquer pessoa que queira enriquecimento rápido e confiável de IOCs sem sair do shell.
|
Por que ThreatLens
|
Não indicado para
|
| Recurso | Detalhes |
|---|---|
| 🎯 Tipos de IOC | IP, Domínio, URL, Hash de Ficheiro (MD5 / SHA1 / SHA256), CVE |
| 🔌 APIs Integradas | AbuseIPDB, VirusTotal, AlienVault OTX, Shodan, URLScan.io, NVD, CISA KEV, EPSS |
| 📄 Análise de Logs | Extração automática de IOCs a partir de texto simples/ficheiros de log, além de suporte nativo para Zeek, Suricata eve.json, Sysmon (JSON) e JSONL genérico |
| 🧭 Cartões de Decisão de CVE | Recomendação determinística e explicável de Patch / Isolate / Monitor / Not affected por CVE, baseada em CISA KEV, EPSS, CVSS e exposição correlacionada de ativos |
| 🗂️ Inventário de Ativos | Importação de um CSV de hosts/IPs com criticidade e estado de exposição à internet; correlacionado com os resultados de CVE |
| 📤 Exportação para SIEM | Exportação opcional para Splunk HEC, Elastic _bulk e Microsoft Sentinel (API moderna de Ingestão de Logs) |
| 🧾 Pacotes de Evidências | Exportação em ZIP de uma investigação com um manifesto SHA-256 para cadeia de custódia básica |
| 📊 Relatórios | Excel (com código de cores), JSON, CSV |
| 💾 Cache Local | Cache SQLite com TTL configurável — evita reconsultar IOCs conhecidos, além de um feed CISA KEV em cache (TTL de 24h) |
| 🛡️ Segurança | Bloqueio de redirecionamentos, lista de permissões de hosts, ocultação de chaves de API nos logs, neutralização de fórmulas de folhas de cálculo, limites de DoS para CSV/logs |
| 🔒 Lockfile | requirements.lock com hashes SHA-256 para instalações reproduzíveis |
| 💻 Experiência CLI | Barras de progresso Rich, tabelas coloridas e um resumo de veredicto claro |
| 🧩 Arquitetura | Enrichers/parsers/exporters modulares, modelos tipados, separação estrita de responsabilidades |
| ✅ Testado | 155 testes unitários e de integração com pytest; CI via GitHub Actions |
| ⚡ Resiliente | Uma API ou destino SIEM com falha nunca bloqueia os restantes — os erros são isolados e registados |
# 1. Clone & install
git clone https://github.com/AbdaullahAG/threatlens.git
cd threatlens
pip install -r requirements.txt
# 2. Configure your API keys
cp config/keys.env.example config/keys.env
# → edit config/keys.env and fill in your keys
# 3. Run your first scan
python main.py -i 45.33.32.156
💡 O NVD (consultas de CVE) funciona imediatamente, sem necessidade de chave de API. Todas as outras APIs oferecem um nível gratuito cujo registo demora menos de 2 minutos — consulte Chaves de API abaixo.
pip install --require-hashes -r requirements.lock
| Consulta básica de IOC único |
| Combine e alterne tipos de IOC em uma única execução |
| Investigue em massa diretamente a partir de logs brutos |
| Saída legível por máquina para pipelines |
| Restringir o enriquecimento a fontes selecionadas |
| Excel + JSON + CSV em uma única execução |
| Enriquecimento de CVE via NIST NVD (gratuito, sem chave) |
| Registro completo de requisição/resposta para solução de problemas |
| Recomendação de aplicar patch / isolar / monitorar / não afetado |
| Ingestão de logs do SOC → exportação para SIEM |
| ZIP com um manifesto SHA-256 para cadeia de custódia |