ThreatSentry AI est un tableau de bord intelligent de chasse aux menaces qui exploite l'apprentissage automatique pour identifier et hiérarchiser de manière proactive les risques dans votre réseau. Il automatise le processus de collecte des informations sur les appareils, leur enrichissement avec des données de vulnérabilité et l'évaluation des niveaux de risque, permettant aux équipes de sécurité de se concentrer sur les menaces les plus critiques.
Automatisez la découverte d'actifs externes, enrichissez intelligemment avec des données multi-sources et exploitez l'apprentissage automatique d'ensemble pour prédire et prioriser les risques. Transformez la fatigue liée aux alertes en renseignements exploitables.
ThreatSentry AI élimine la fatigue liée aux alertes de sécurité et permet une chasse aux menaces proactive grâce à une priorisation intelligente des risques. Il combine la découverte automatisée d'actifs, l'enrichissement de données multi-sources et l'apprentissage automatique avancé pour transformer les données brutes de sécurité en renseignements exploitables.
Chef de projet : EclipseManic
Note de développement : Cette plateforme de sécurité d'entreprise complète a été conçue et développée par un seul développeur avec l'aide d'outils de développement IA pour la génération de code, l'optimisation et la documentation, démontrant la viabilité de l'ingénierie logicielle assistée par IA pour les systèmes complexes.
Les équipes de sécurité modernes sont confrontées à des défis sans précédent :
ThreatSentry AI résout ces problèmes via :
![Modèle d'e-mail d'alerte de sécurité automatisé]

E-mail formaté en HTML avec résumé des risques, détails CVE et conseils de correction envoyé via SendGrid
![Tableau de bord ThreatSentry AI - Interface principale de chasse aux menaces]

Visualisation en temps réel des risques avec tableau des appareils triable et graphique à barres de distribution des risques
![Tableau des appareils avec indicateurs de risque]

Liste des appareils triable et filtrable avec niveaux de risque codés par couleur (Vert=Faible, Jaune=Moyen, Rouge=Élevé)
![Filtres avancés - Plage CVSS, Organisation, Pays, Niveau de risque]
Contrôles de filtrage puissants avec filtres de plage CVSS, organisation, pays et niveau de risque + bouton "Tout effacer"
![Entrée de recherche - Recherche multi-colonnes dans toute la base de données]
Recherche intelligente qui couvre l'ensemble de la base de données des appareils, pas seulement les lignes actuellement affichées
![Bouton Load More - Contrôles de pagination]
Système de pagination optimisé pour gérer efficacement des milliers d'appareils
![Onglet Analyses - Tendances des risques et analyse CVE]

Tendances historiques des risques, analyse des vulnérabilités et métriques de sécurité par organisation
![Onglet Outils - Statut du modèle et export de données]

Informations sur l'entraînement du modèle, métriques de performance, export de données et options de filtrage avancées

![E-mail d'alerte de sécurité automatisé]
E-mail formaté en HTML avec résumé exécutif, détails des vulnérabilités et conseils de correction
![Boîte de dialogue de déclenchement d'analyse]

Exécuter l'enrichissement Shodan + NVD avec rapport d'erreur détaillé et indication de progression
| Couche | Technologies |
|---|---|
| Backend | Python 3.9+, SQLAlchemy ORM, APScheduler |
| ML/AI | Scikit-learn (Random Forest, Gradient Boosting, MLP), NumPy, Joblib |
| Frontend | PyQt5, Matplotlib, Custom theme manager |
| Données | Pandas, NumPy, SQLite3 |
| API | Shodan, NVDLib, SendGrid, Requests |
| Utilitaires | Python-dotenv, Logging module, Config management |
┌─────────────────────────────────────────────────────────────┐ │ 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 Traitement des Données
1. **Phase de Découverte** (Intervalle configurable, par défaut 30 min)
- Scan Shodan avec requêtes configurables
- Enrichissement NVD avec corrélation CVE
- Enrichissement du système interne pour le contexte
2. **Phase d'Analyse**
- Ingénierie des caractéristiques à partir de 40+ attributs
- Prédiction du modèle d'ensemble (Random Forest 40% + Gradient Boosting 40% + MLP 20%)
- Génération d'étiquettes de risque (0=Faible, 1=Moyen, 2=Élevé)
- Score de confiance
3. **Phase d'Alerte**
- Vérification des nouveaux actifs à haut risque
- Génération et envoi d'alertes par e-mail via SendGrid
- Mise à jour du statut de notification
4. **Réentraînement du Modèle** (Intervalle configurable, par défaut 60 min)
- Chargement de toutes les données historiques
- Extraction des caractéristiques
- Entraînement de l'ensemble avec des poids de classe équilibrés
- Validation des métriques de performance
- Sauvegarde des métadonnées pour audit
---
## 📋 Pour Commencer
### Prérequis
- **Python** : 3.9 ou ultérieur
- **Clés API** (requises) :
- Clé API Shodan (https://www.shodan.io/)
- Clé API SendGrid (https://sendgrid.com/) - pour les alertes par e-mail
- **Clés API Optionnelles** (pour un enrichissement amélioré) :
- Point de terminaison et identifiants CMDB
- Point de terminaison et identifiants SIEM
- Point de terminaison et identifiants du système de gestion des correctifs
- Point de terminaison et identifiants de supervision réseau
### Installation
#### Étape 1 : Cloner le Dépôt```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
#### Étape 3: Installer les dépendances```bash
pip install -r requirements.txt
Créez un fichier .env dans la racine du projet:```bash
cp .env.example .env # If provided, or create new
Modifiez `.env` avec vos identifiants:```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()"
#### Étape 6 : Exécuter l'application```bash
python run.py
Le tableau de bord se lancera avec le planificateur s'exécutant en arrière-plan.
![Interface principale du tableau de bord avec tous les onglets] Onglets Aperçu, Analyses et Outils pour une évaluation complète des menaces
![Filtres par organisation et pays avec liste d'appareils] Tableau d'appareils triable avec indicateurs de risque codés par couleur (Vert=Faible, Jaune=Moyen, Rouge=Élevé)
![Graphique à barres de répartition des risques] Visualisation de la posture de sécurité globale avec le nombre d'appareils par niveau de risque
![Panneau d'analyses - Tendances et métriques des risques]
 pour les directives.
Domaines d'amélioration :
- Implémentations de collecteurs supplémentaires (intégration Nessus, Tenable, Qualys)
- API Web pour un accès programmatique
- Prise en charge multi-utilisateur avec contrôle d'accès basé sur les rôles
- Visualisation avancée (intégration Grafana/ELK)
- Prise en charge du déploiement Kubernetes
---
## 📄 Licence
Ce projet est sous licence MIT — voir le fichier [LICENSE](https://github.com/eclipsemanic/threatsentry-ai/blob/main/LICENSE) pour les détails.
---
## 📞 Support et contact
- **Problèmes** : GitHub Issues pour les rapports de bogues et les demandes de fonctionnalités
- **Documentation** : Voir le répertoire [docs/](https://github.com/eclipsemanic/threatsentry-ai/blob/main/docs) pour la documentation technique détaillée
- **Email** : Informations du responsable dans [CODE_OF_CONDUCT.md](https://github.com/eclipsemanic/threatsentry-ai/blob/main/CODE_OF_CONDUCT.md)
---
## 🙏 Remerciements
- **Shodan** : Pour la découverte complète des appareils exposés sur Internet
- **NVD/NIST** : Pour les données de vulnérabilité faisant autorité
- **Scikit-learn** : Bibliothèques ML robustes et documentation
- **PyQt5** : Excellent framework d'interface graphique
- **Communauté** : Tous les contributeurs et utilisateurs fournissant des retours
---
**Fait avec ❤️ par EclipseManic | Sécuriser l'infrastructure de demain aujourd'hui**
pip install -r requirements.txt```
---
## 🔐 Configuration
### 1. Environment Variables (`.env` file)
Create a `.env` file in the root directory with the following structure:
```bash
# --- Clé API Shodan (Obligatoire) ---
SHODAN_API_KEY="YOUR_SHODAN_API_KEY"
# --- Alertes e-mail SendGrid (Obligatoire) ---
SENDGRID_API_KEY="YOUR_SENDGRID_API_KEY"
SENDER_EMAIL="[email protected]"
ALERT_RECIPIENTS="[email protected],[email protected]"
# --- Base de données ---
SQLITE_PATH="threat_sentric_ai.db"
# --- Modèle ---
MODEL_PATH="threatsentry_model.pkl"
# --- Planificateur ---
SCAN_INTERVAL_MINUTES="30"
RETRAIN_INTERVAL_MINUTES="60"
RETRAIN_ON_SCHEDULE="True"
# --- Contrôle du comportement des requêtes Shodan ---
SHODAN_QUERY=""
SHODAN_QUERY_EMPTY_TO_PRESET="True"
# --- Journalisation ---
LOG_LEVEL="INFO" # DEBUG, INFO, WARNING, ERROR, CRITICAL
# --- Informations d'identification internes du système (Optionnel - Ajoutez selon les besoins de vos collecteurs) ---
# 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
# Générer 1000 enregistrements
python scripts/generate_realistic_training_data.py --count 1000
# Afficher les options de nettoyage
python scripts/clear_db_enhanced.py --help
# Supprimer tous les appareils et vulnérabilités
python scripts/clear_db_enhanced.py --delete-devices --delete-vulns
# Réinitialiser le drapeau notifié
python scripts/clear_db_enhanced.py --reset-notified
# Réinitialisation complète dangereuse
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.