
ThreatSentry AIは、機械学習を活用してネットワーク内のリスクをプロアクティブに特定・優先順位付けするインテリジェントな脅威ハンティングダッシュボードです。デバイス情報の収集、脆弱性データの補完、リスクレベルの評価を自動化し、セキュリティチームが最も重要な脅威に集中できるようにします。
外部資産の発見を自動化し、マルチソースデータでインテリジェントにエンリッチし、アンサンブル機械学習を活用してリスクを予測・優先順位付けします。アラート疲れを実行可能なインテリジェンスに変えます。
ThreatSentry AI は、インテリジェントなリスク優先順位付けにより、セキュリティアラート疲れを解消し、プロアクティブな脅威ハンティングを可能にします。自動資産発見、マルチソースデータエンリッチメント、高度な機械学習を組み合わせて、生のセキュリティデータを実行可能なインテリジェンスに変換します。
プロジェクトリーダー: EclipseManic
開発ノート: この包括的なエンタープライズセキュリティプラットフォームは、コード生成、最適化、ドキュメント作成にAI開発ツールの支援を受けた単一の開発者によって設計・開発されました。これは、複雑なシステムにおけるAI支援ソフトウェアエンジニアリングの実行可能性を示しています。
現代のセキュリティチームは前例のない課題に直面しています:
ThreatSentry AI はこれらの問題を以下で解決します:
![自動セキュリティアラートメールテンプレート]
リスクサマリー、CVE詳細、修復ガイダンスを含むHTMLフォーマットのメール(SendGrid経由送信)
![ThreatSentry AIダッシュボード - メイン脅威ハンティングインターフェース]
ソート可能なデバイステーブルとリスク分布棒グラフによるリアルタイムリスク可視化
![リスクインジケータ付きデバイステーブル]
ソート・フィルタ可能なデバイス一覧、色分けされたリスクレベル(緑=低、黄=中、赤=高)
![高度なフィルター - CVSS範囲、組織、国、リスクレベル]
CVSS範囲、組織、国、リスクレベルによる強力なフィルター制御 + 「すべてクリア」ボタン
![検索入力 - データベース全体にわたるマルチカラム検索]
現在表示されている行だけでなく、デバイスデータベース全体を対象とするインテリジェント検索
![さらに読み込むボタン - ページネーションコントロール]
数千のデバイスを効率的に処理するための最適化されたページネーションシステム
![分析タブ - リスクトレンドとCVE分析]
過去のリスクトレンド、脆弱性分析、組織別セキュリティメトリック
![ツールタブ - モデルステータスとデータエクスポート]
モデルトレーニング情報、パフォーマンスメトリック、データエクスポート、高度なフィルタリングオプション
![自動セキュリティアラートメール]
エグゼクティブサマリー、脆弱性詳細、修復ガイダンスを含むHTMLフォーマットのメール
![スキャントリガーダイアログ]
詳細なエラーレポートと進捗表示付きのShodan + NVDエンリッチメント実行
┌─────────────────────────────────────────────────────────────┐ │ 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
### データ処理パイプライン
1. **発見フェーズ** (設定可能な間隔、デフォルト30分)
- Shodanスキャン(設定可能なクエリ)
- CVE相関を用いたNVDエンリッチメント
- コンテキストのための内部システムエンリッチメント
2. **分析フェーズ**
- 40以上の属性からの特徴量エンジニアリング
- アンサンブルモデル予測(ランダムフォレスト40% + 勾配ブースティング40% + MLP 20%)
- リスクラベル生成(0=低、1=中、2=高)
- 信頼度スコアリング
3. **アラートフェーズ**
- 新しい高リスク資産の確認
- SendGrid経由でのメールアラートの生成と送信
- 通知ステータスの更新
4. **モデル再トレーニング** (設定可能な間隔、デフォルト60分)
- すべての履歴データの読み込み
- 特徴量の抽出
- バランスの取れたクラス重みでアンサンブルをトレーニング
- パフォーマンスメトリクスの検証
- 監査用のメタデータ保存
---
## 📋 はじめに
### 前提条件
- **Python**: 3.9以降
- **APIキー** (必須):
- Shodan APIキー (https://www.shodan.io/)
- SendGrid APIキー (https://sendgrid.com/) - メールアラート用
- **オプションのAPIキー** (拡張エンリッチメント用):
- CMDBエンドポイントと認証情報
- SIEMエンドポイントと認証情報
- パッチ管理システムのエンドポイントと認証情報
- ネットワーク監視エンドポイントと認証情報
### インストール
#### ステップ1: リポジトリのクローン```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
#### ステップ3: 依存関係のインストール```bash
pip install -r requirements.txt
プロジェクトルートに .env ファイルを作成します:```bash
cp .env.example .env # If provided, or create new
`.env` をあなたの認証情報で編集してください:```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()"
#### ステップ6: アプリケーションを実行する```bash
python run.py
ダッシュボードはスケジューラがバックグラウンドで実行されている状態で起動します。
![すべてのタブを含むダッシュボードメインインターフェース] 概要、分析、ツールのタブで包括的な脅威評価を実施
![組織と国のフィルターとデバイスリスト] 並べ替え可能なデバイステーブル。色分けされたリスクインジケータ(緑=低、黄=中、赤=高)
![リスク分布棒グラフ] リスクレベルごとのデバイス数による全体的なセキュリティ状況の可視化
![分析パネル - リスク傾向とメトリクス]
 をご覧ください。
改善が期待される領域:
- 追加のコレクター実装(Nessus、Tenable、Qualysとの統合)
- プログラムアクセスのためのWeb API
- ロールベースアクセスによるマルチユーザーサポート
- 高度な可視化(Grafana/ELK統合)
- Kubernetesデプロイメントサポート
---
## 📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細は [LICENSE](https://github.com/eclipsemanic/threatsentry-ai/blob/main/LICENSE) ファイルをご覧ください。
---
## 📞 サポートとコンタクト
- **Issue**: バグ報告や機能リクエストはGitHub Issuesへ
- **ドキュメント**: 詳細な技術ドキュメントは [docs/](https://github.com/eclipsemanic/threatsentry-ai/blob/main/docs) ディレクトリを参照
- **メール**: メンテナー情報は [CODE_OF_CONDUCT.md](https://github.com/eclipsemanic/threatsentry-ai/blob/main/CODE_OF_CONDUCT.md) に記載
---
## 🙏 謝辞
- **Shodan**: インターネットに露出したデバイスの包括的な発見に感謝
- **NVD/NIST**: 信頼性の高い脆弱性データに感謝
- **Scikit-learn**: 堅牢なMLライブラリとドキュメントに感謝
- **PyQt5**: 優れたGUIフレームワークに感謝
- **コミュニティ**: フィードバックを提供してくださったすべてのコントリビューターとユーザーに感謝
---
**EclipseManic が ❤️ を込めて制作 | 明日のインフラを今日から守る**
pip install -r requirements.txt```
---
## 🔐 Configuration
### 1. Environment Variables (`.env` file)
Create a `.env` file in the root directory with the following structure:
```bash
# --- Shodan API キー (必須) ---
SHODAN_API_KEY="YOUR_SHODAN_API_KEY"
# --- SendGrid メールアラート (必須) ---
SENDGRID_API_KEY="YOUR_SENDGRID_API_KEY"
SENDER_EMAIL="[email protected]"
ALERT_RECIPIENTS="[email protected],[email protected]"
# --- データベース ---
SQLITE_PATH="threat_sentric_ai.db"
# --- モデル ---
MODEL_PATH="threatsentry_model.pkl"
# --- スケジューラー ---
SCAN_INTERVAL_MINUTES="30"
RETRAIN_INTERVAL_MINUTES="60"
RETRAIN_ON_SCHEDULE="True"
# --- Shodan クエリ動作制御 ---
SHODAN_QUERY=""
SHODAN_QUERY_EMPTY_TO_PRESET="True"
# --- ロギング ---
LOG_LEVEL="INFO" # DEBUG, INFO, WARNING, ERROR, CRITICAL
# --- 内部システム認証情報 (オプション - コレクターに応じて追加) ---
# 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
# 1000件のレコードを生成
python scripts/generate_realistic_training_data.py --count 1000
# クリーンアップオプションを表示
python scripts/clear_db_enhanced.py --help
# すべてのデバイスと脆弱性を削除
python scripts/clear_db_enhanced.py --delete-devices --delete-vulns
# 通知フラグをリセット
python scripts/clear_db_enhanced.py --reset-notified
# 危険な完全リセット
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.
| レイヤー | 技術 |
|---|
| バックエンド | Python 3.9+, SQLAlchemy ORM, APScheduler |
| ML/AI | Scikit-learn (Random Forest, Gradient Boosting, MLP), NumPy, Joblib |
| フロントエンド | PyQt5, Matplotlib, Custom theme manager |
| データ | Pandas, NumPy, SQLite3 |
| API | Shodan, NVDLib, SendGrid, Requests |
| ユーティリティ | Python-dotenv, Logging module, Config management |