
ThreatSentry AI é um painel inteligente de caça a ameaças que utiliza aprendizado de máquina para identificar e priorizar proativamente riscos em sua rede. Ele automatiza o processo de coleta de informações dos dispositivos, enriquecendo-as com dados de vulnerabilidades e avaliando níveis de risco, permitindo que as equipes de segurança foquem nas ameaças mais críticas.
Automatize a descoberta de ativos externos, enriqueça inteligentemente com dados de múltiplas fontes e aproveite o aprendizado de máquina ensemble para prever e priorizar riscos. Transforme a fadiga de alertas em inteligência acionável.
ThreatSentry AI elimina a fadiga de alertas de segurança e possibilita a caça proativa a ameaças por meio da priorização inteligente de riscos. Combina descoberta automatizada de ativos, enriquecimento de dados de múltiplas fontes e aprendizado de máquina avançado para transformar dados brutos de segurança em inteligência acionável.
Líder do Projeto: EclipseManic
Nota de Desenvolvimento: Esta plataforma de segurança empresarial abrangente foi arquitetada e desenvolvida por um único desenvolvedor com auxílio de ferramentas de desenvolvimento de IA para geração de código, otimização e documentação—demonstrando a viabilidade da engenharia de software aumentada por IA para sistemas complexos.
As equipas de segurança modernas enfrentam desafios sem precedentes:
ThreatSentry AI resolve estes problemas através de:
![Modelo de Email de Alerta de Segurança Automatizado]

Email formatado em HTML com sumário de risco, detalhes de CVE e orientação de remediação enviado via SendGrid
![Painel do ThreatSentry AI - Interface Principal de Caça a Ameaças]

Visualização de risco em tempo real com tabela de dispositivos ordenável e gráfico de barras de distribuição de risco
![Tabela de Dispositivos com Indicadores de Risco]

Listagem de dispositivos ordenável e filtrável com níveis de risco codificados por cor (Verde=Baixo, Amarelo=Médio, Vermelho=Alto)
![Filtros Avançados - Intervalo CVSS, Organização, País, Nível de Risco]
Poderosos controlos de filtragem com filtro de intervalo CVSS, organização, país e nível de risco + botão "Limpar Tudo"
![Entrada de Pesquisa - Pesquisa em Múltiplas Colunas em Toda a Base de Dados]
Pesquisa inteligente que abrange toda a base de dados de dispositivos, não apenas as linhas atualmente exibidas
![Botão Carregar Mais - Controlos de Paginação]
Sistema de paginação otimizado para lidar com milhares de dispositivos de forma eficiente
![Separador de Análises - Tendências de Risco e Análise de CVE]

Tendências históricas de risco, análise de vulnerabilidades e métricas de segurança por organização
![Separador de Ferramentas - Estado do Modelo e Exportação de Dados]

Informações de treino do modelo, métricas de desempenho, exportação de dados e opções de filtragem avançada

![Email de Alerta de Segurança Automatizado]
Email formatado em HTML com sumário executivo, detalhes de vulnerabilidade e orientação de remediação
![Diálogo de Acionamento de Análise]

Execute Shodan + enriquecimento NVD com relatório de erro detalhado e indicação de progresso
| Camada | Tecnologias |
|---|---|
| Backend | Python 3.9+, SQLAlchemy ORM, APScheduler |
| ML/IA | Scikit-learn (Random Forest, Gradient Boosting, MLP), NumPy, Joblib |
| Frontend | PyQt5, Matplotlib, Gestor de tema personalizado |
| Dados | Pandas, NumPy, SQLite3 |
| APIs | Shodan, NVDLib, SendGrid, Requests |
| Utilitários | Python-dotenv, Módulo de logging, Gestão de configuração |
┌─────────────────────────────────────────────────────────────┐ │ ThreatSentry AI │ ├─────────────────────────────────────────────────────────────┤ │ Scheduler (APScheduler) │ ├──────────┬──────────────┬──────────────┬───────────┬─────────┤ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ Shodan NVD Lib CMDB SIEM Patch Network Collector Collector Collector Collector Mgmt Monitor
│ │ │ │ │
└──────────────┴──────────────┴───────────┴─────────┘
│
▼
┌─────────────────┐
│ SQLite DB │
│ (40+ Columns) │
└────────┬────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
Feature Engine Model Training Predictions │ │ │ └─────────┬───────┴──────────┬──────┘ ▼ ▼ ┌──────────────────────┐ │ Ensemble Model │ │ (RF + GB + MLP) │ └──────────┬───────────┘ │ ┌────────────┼────────────┐ ▼ ▼ ▼ PyQt5 GUI Email Alerts Analytics
### Pipeline de Processamento de Dados
1. **Fase de Descoberta** (Intervalo configurável, padrão 30 min)
- Varredura Shodan com consultas configuráveis
- Enriquecimento NVD com correlação CVE
- Enriquecimento interno do sistema para contexto
2. **Fase de Análise**
- Engenharia de recursos a partir de 40+ atributos
- Predição do modelo ensemble (Random Forest 40% + Gradient Boosting 40% + MLP 20%)
- Geração de rótulo de risco (0=Baixo, 1=Médio, 2=Alto)
- Pontuação de confiança
3. **Fase de Alerta**
- Verificar novos ativos de alto risco
- Gerar e enviar alertas por e-mail via SendGrid
- Atualizar status de notificação
4. **Re-treinamento do Modelo** (Intervalo configurável, padrão 60 min)
- Carregar todos os dados históricos
- Extrair recursos
- Treinar ensemble com pesos de classe balanceados
- Validar métricas de desempenho
- Salvar metadados para auditoria
---
## 📋 Primeiros Passos
### Pré-requisitos
- **Python**: 3.9 ou posterior
- **Chaves de API (obrigatório)**:
- Chave de API Shodan (https://www.shodan.io/)
- Chave de API SendGrid (https://sendgrid.com/) - para alertas por e-mail
- **Chaves de API opcionais (para enriquecimento aprimorado)**:
- Endpoint e credenciais CMDB
- Endpoint e credenciais SIEM
- Endpoint e credenciais do sistema de gerenciamento de patches
- Endpoint e credenciais de monitoramento de rede
### Instalação
#### Passo 1: Clonar Repositório```bash
git clone https://github.com/EclipseManic/ThreatSentry-AI.git
cd ThreatSentry-AI
python -m venv .venv .venv\Scripts\activate
python3 -m venv .venv source .venv/bin/activate
#### Passo 3: Instalar Dependências```bash
pip install -r requirements.txt
Crie um arquivo .env na raiz do projeto:```bash
cp .env.example .env # If provided, or create new
Edite `.env` com suas credenciais:```ini
# Required - Threat Discovery
SHODAN_API_KEY=your_shodan_api_key_here
SHODAN_QUERY= # Leave empty to use presets
SHODAN_QUERY_EMPTY_TO_PRESET=True # Use preset queries when SHODAN_QUERY is empty
# Optional - Email Alerts
SENDGRID_API_KEY=your_sendgrid_key_here
[email protected] # Must be verified in SendGrid
[email protected],[email protected]
# Optional - Internal Enrichment (Implement in collectors/)
CMDB_API_ENDPOINT=https://cmdb.internal/api
CMDB_API_KEY=your_cmdb_key
SIEM_API_ENDPOINT=https://siem.internal/api
SIEM_API_KEY=your_siem_key
# Configuration
SCAN_INTERVAL_MINUTES=30 # How often to scan for new assets
RETRAIN_INTERVAL_MINUTES=60 # How often to retrain the model
MAX_SHODAN_RESULTS=50 # Results per Shodan query
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
# Paths (Optional)
SQLITE_PATH=data/db/threat_sentric_ai.db
MODEL_PATH=data/models/rf_model.pkl
LOG_FILE_PATH=data/logs/threat_sentric_ai.log
python -c "from data import init_db; init_db()"
#### Etapa 6: Executar a Aplicação```bash
python run.py
O painel será iniciado com o agendador em execução em segundo plano.
![Interface Principal do Painel com Todas as Abas] Abas de Visão Geral, Análise e Ferramentas para avaliação abrangente de ameaças
![Filtros de Organização e País com Lista de Dispositivos] Tabela de dispositivos classificável com indicadores de risco codificados por cores (Verde=Baixo, Amarelo=Médio, Vermelho=Alto)
![Gráfico de Barras de Distribuição de Risco] Visualização da postura geral de segurança com contagens de dispositivos por nível de risco
![Painel de Análise - Tendências e Métricas de Risco]
 para diretrizes.
Áreas para melhoria:
- Implementações adicionais de coletores (integração com Nessus, Tenable, Qualys)
- API Web para acesso programático
- Suporte a múltiplos usuários com acesso baseado em funções
- Visualização avançada (integração com Grafana/ELK)
- Suporte a implantação em Kubernetes
---
## 📄 Licença
Este projeto está licenciado sob a Licença MIT—veja o arquivo [LICENSE](https://github.com/eclipsemanic/threatsentry-ai/blob/main/LICENSE) para detalhes.
---
## 📞 Suporte e Contato
- **Issues**: Issues do GitHub para relatórios de bugs e solicitações de funcionalidades
- **Documentação**: Consulte o diretório [docs/](https://github.com/eclipsemanic/threatsentry-ai/blob/main/docs) para documentação técnica detalhada
- **Email**: Informações do mantenedor em [CODE_OF_CONDUCT.md](https://github.com/eclipsemanic/threatsentry-ai/blob/main/CODE_OF_CONDUCT.md)
---
## 🙏 Agradecimentos
- **Shodan**: Pela descoberta abrangente de dispositivos voltados para a internet
- **NVD/NIST**: Pelos dados autoritativos de vulnerabilidades
- **Scikit-learn**: Bibliotecas de ML robustas e documentação
- **PyQt5**: Excelente framework de interface gráfica
- **Comunidade**: Todos os contribuidores e usuários que fornecem feedback
---
**Feito com ❤️ por EclipseManic | Protegendo a Infraestrutura de Amanhã Hoje**
pip install -r requirements.txt```
---
## 🔐 Configuration
### 1. Environment Variables (`.env` file)
Create a `.env` file in the root directory with the following structure:
```bash
# --- Chave de API do Shodan (Obrigatório) ---
SHODAN_API_KEY="YOUR_SHODAN_API_KEY"
# --- Alertas de E-mail do SendGrid (Obrigatório) ---
SENDGRID_API_KEY="YOUR_SENDGRID_API_KEY"
SENDER_EMAIL="[email protected]"
ALERT_RECIPIENTS="[email protected],[email protected]"
# --- Banco de Dados ---
SQLITE_PATH="threat_sentric_ai.db"
# --- Modelo ---
MODEL_PATH="threatsentry_model.pkl"
# --- Agendador ---
SCAN_INTERVAL_MINUTES="30"
RETRAIN_INTERVAL_MINUTES="60"
RETRAIN_ON_SCHEDULE="True"
# --- Controle de Comportamento da Consulta Shodan ---
SHODAN_QUERY=""
SHODAN_QUERY_EMPTY_TO_PRESET="True"
# --- Logging ---
LOG_LEVEL="INFO" # DEBUG, INFO, AVISO, ERRO, CRÍTICO
# --- Credenciais Internas do Sistema (Opcional - Adicione conforme necessário para seus coletores) ---
# CMDB_API_ENDPOINT="..."
# CMDB_API_KEY="..."
# SIEM_API_ENDPOINT="..."
# SIEM_API_KEY="..."
# PATCH_API_ENDPOINT="..."
# PATCH_API_KEY="..."
# NETWORK_MONITOR_ENDPOINT="..."
# NETWORK_MONITOR_KEY="..."```
> The app loads environment variables via `os.getenv()` in `config.py`.
> Never commit this file to version control.
---
## 🔍 Shodan Query Presets (`config.py`)
Modify the `SHODAN_QUERIES` dictionary to define your custom query presets:
```python
SHODAN_QUERIES = {
"default": "product:apache",
"org": 'org:"Your Company Name"',
"net": 'net:"123.45.67.0/24"',
"ssl": 'ssl:"yourcompany.com"',
"hostname": 'hostname:".yourcompany.com"',
"rdp": 'port:3389 "remote desktop"',
"mongodb": 'port:27017 "mongodb"',
"ics_modbus": 'port:502 "modbus"',
"vuln_example": 'vuln:CVE-2024-12345',
"http_login": 'http.title:"Login" org:"Your Company"'
}```
If `SHODAN_QUERY` in `.env` is empty **and** `SHODAN_QUERY_EMPTY_TO_PRESET=True`,
the scheduler will automatically cycle through these presets.
---
## 🧠 Implementing Internal Collectors
> ⚠️ **Important:** The internal collectors (`cmdb_collector.py`, `siem_collector.py`, `patch_collector.py`, `network_monitor_collector.py`) are **placeholders**.
> Replace the placeholder logic with real integrations to your systems.
You’ll need to:
- Fetch internal data using APIs, databases, or SDKs.
- Map fetched data to the `Device` model attributes.
- Update the database session with this enriched information.
Without these integrations, the model will lack context for accurate predictions.
---
## 🧪 Running the Application
### (Optional) Generate Initial Training Data
```bash
python scripts/generate_realistic_training_data.py --count 1000```
Creates `scripts/my_training_data.json`.
You can upload this file through the GUI’s **Upload** option to initialize training data.
### Launch the Application
```bash
python run.py```
The GUI will open and the scheduler will start scanning, enriching, and predicting automatically.
---
## ⚡ Quick Demo with Generated Data
1. Complete installation (steps 1–3).
2. Set up your `.env` file (even with placeholder keys).
3. Optionally adjust Shodan presets in `config.py`.
4. Generate data:
```bash
python scripts/generate_realistic_training_data.py --count 500 ```
5. Launch the app:
```bash
python run.py ```
6. In the GUI:
- Select **Upload** → Choose `scripts/my_training_data.json`
- Click **Refresh** to view populated device data and risk levels.
---
## 🛠️ Scripts and Usage Guide
| Script | Description |
|--------|--------------|
| **run.py** | Main entry point. Starts DB, scheduler, and GUI. |
| **scheduler.py** | Handles periodic scanning, enrichment, prediction, and retraining. |
| **scripts/generate_realistic_training_data.py** | Generates realistic training data for testing or bootstrapping. |
| **scripts/clear_db_enhanced.py** | Interactively clean database or reset notification flags. |
| **scripts/reset_db.py** | Completely resets the database. Use with caution. |
### Example Commands
```bash
# Gerar 1000 registros
python scripts/generate_realistic_training_data.py --count 1000
# Ver opções de limpeza
python scripts/clear_db_enhanced.py --help
# Excluir todos os dispositivos e vulnerabilidades
python scripts/clear_db_enhanced.py --delete-devices --delete-vulns
# Redefinir sinalizador notificado
python scripts/clear_db_enhanced.py --reset-notified
# Reinicialização completa perigosa
python scripts/reset_db.py```
---
## 💬 Feedback & Suggestions
This project was developed by **EclipseManic**.
While code contributions are currently closed, your **feedback and bug reports** are highly appreciated.
Please open an [Issue](https://github.com/EclipseManic/ThreatSentry-AI/issues) to share your thoughts or report a problem.
---
## 📄 License
This project is licensed under the **MIT License**.
See the [LICENSE](https://github.com/eclipsemanic/threatsentry-ai/blob/main/LICENSE) file for details.