prathamanvekar/cyber-threat-intelligence-detection-system-ids
GitHub: prathamanvekar/cyber-threat-intelligence-detection-system-ids
一个基于机器学习的综合入侵检测系统,整合实时流量分析、恶意软件扫描、IP信誉检查和AI辅助查询,为安全运营提供一站式威胁检测与响应能力。
Stars: 0 | Forks: 0
# 网络威胁情报检测系统 (IDS)
一个全面的、基于 ML 的入侵检测系统,结合了机器学习、实时数据包捕获和威胁情报,以实时识别和响应网络威胁。
## 🎯 功能特性
### 核心检测与分析
- **基于 ML 的威胁分类**:使用集成模型(Random Forest、XGBoost、Voting Classifier、Isolation Forest)对网络流量进行分类并识别攻击模式
- **实时数据包捕获**:实时嗅探和分析网络数据包
- **特征提取**:自动提取相关的网络特征以进行威胁检测
- **攻击映射**:将检测到的威胁与已知攻击类型进行关联
### 安全运营
- **IP 封禁与白名单管理**:快速封禁恶意 IP 或将安全 IP 加入白名单
- **IP 信誉检查**:根据威胁情报数据库验证 IP(集成 AbuseIPDB)
- **文件扫描**:基于 YARA 的上传文件恶意软件检测
- **邮件告警**:检测到威胁时自动发送通知
### 用户界面与报告
- **交互式仪表盘**:实时可视化威胁、统计数据和系统健康状况
- **AI 聊天机器人**:基于 GROQ 的聊天机器人,用于查询威胁情报和系统状态
- **报告生成**:生成关于检测到的攻击的详细 PDF/可视化报告
- **WebSocket 支持**:通过 SocketIO 在所有连接的仪表盘上进行实时更新
### 数据管理
- **SQLite 数据库**:持久化存储攻击、扫描和告警
- **攻击历史**:跟踪所有检测到的威胁及其详细元数据
- **扫描日志**:完整的文件扫描和结果审计追踪
- **仪表盘分析**:汇总统计数据和趋势可视化
## 🚀 快速开始
### 前置条件
- **Python 3.10+**(推荐:3.11 或 3.12)
- **pip** 包管理器
- 管理员权限(用于 Windows 上的数据包捕获)
- 互联网连接(用于 AI 聊天机器人和 IP 信誉检查)
### 安装
1. **克隆仓库**
git clone https://github.com/yourusername/cyber-ids.git
cd cyber-ids
2. **创建虚拟环境**
**PowerShell:**
python -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
**Git Bash/Linux/macOS:**
python -m venv venv
source venv/Scripts/activate
python -m pip install --upgrade pip
3. **安装依赖**
pip install -r requirements.txt
4. **配置环境变量**
在项目根目录创建一个 `.env` 文件:
# Flask 配置
SECRET_KEY=your-random-secret-key-here-change-in-production
FLASK_ENV=development
# 网络设置(可选 - 留空则自动检测)
NETWORK_INTERFACE=
# GROQ AI API(用于聊天机器人功能)
GROQ_API_KEY=your-groq-api-key
GROQ_MODEL=llama-3.1-8b-instant
# 邮件警报(可选)
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-email@gmail.com
SMTP_PASSWORD=your-app-password
ALERT_EMAIL_FROM=your-email@gmail.com
ALERT_EMAIL_TO=recipient@example.com,another@example.com
# IP 信誉(可选)
ABUSEIPDB_API_KEY=your-abuseipdb-key
### 运行应用
```
python app.py
```
你将看到如下输出:
```
============================================================
INITIALIZING CYBER THREAT IDS
============================================================
Loading ML models...
✓ Classifier loaded successfully
✓ Feature extractor initialized
✓ IP Blocker initialized
✓ File Scanner initialized
✓ Report Generator initialized
============================================================
SYSTEM READY
============================================================
Starting Flask server...
Access the dashboard at: http://127.0.0.1:5001
```
## 📊 访问仪表盘
打开浏览器并导航至:
- **主仪表盘**: http://127.0.0.1:5001
- **IDS 监控**: http://127.0.0.1:5001/dashboard/ids
- **文件扫描器**: http://127.0.0.1:5001/dashboard/scanner
- **IP 信誉**: http://127.0.0.1:5001/dashboard/ip_reputation
- **AI 聊天机器人**: http://127.0.0.1:5001/dashboard/chatbot
- **报告**: http://127.0.0.1:5001/dashboard/reports
## 🔧 API 端点
### 捕获控制
```
# 检查捕获状态
curl http://127.0.0.1:5001/api/capture/status
# 开始数据包捕获
curl -X POST http://127.0.0.1:5001/api/capture/start
# 停止数据包捕获
curl -X POST http://127.0.0.1:5001/api/capture/stop
```
### 威胁分类
```
# 测试分类器 (PowerShell)
$body = @{ attack_type = 'normal' } | ConvertTo-Json -Compress
Invoke-RestMethod -Method Post -Uri 'http://127.0.0.1:5001/api/test/classify' `
-ContentType 'application/json' -Body $body
# 测试分类器 (Bash)
curl -X POST http://127.0.0.1:5001/api/test/classify \
-H "Content-Type: application/json" \
-d '{"attack_type":"normal"}'
```
### 文件扫描
```
# 上传文件进行恶意软件扫描 (PowerShell)
$file = @{file=([System.IO.FileInfo](Get-Item "path/to/file")).OpenRead()}
Invoke-RestMethod -Method Post -Uri 'http://127.0.0.1:5001/api/scan' `
-Form $file
# 上传文件 (Bash)
curl -X POST http://127.0.0.1:5001/api/scan \
-F "file=@path/to/file"
```
### IP 信誉
```
# 检查 IP 信誉
curl "http://127.0.0.1:5001/api/ip/check?ip=192.168.1.1"
```
## 📁 项目结构
```
cyber-ids/
├── app.py # Main Flask application
├── config.py # Configuration settings
├── requirements.txt # Python dependencies
├── database/
│ ├── __init__.py
│ ├── db.py # SQLite database interface
│ └── schema.sql # Database schema
├── modules/
│ ├── classifier.py # ML threat classifier
│ ├── packet_capture.py # Network packet sniffing
│ ├── feature_extractor.py # Feature engineering
│ ├── file_scanner.py # YARA-based malware detection
│ ├── ip_blocker.py # IP blocking/whitelist
│ ├── ip_reputation.py # IP reputation checking
│ ├── email_alerts.py # Email notifications
│ ├── chatbot.py # AI chatbot (GROQ)
│ └── report_generator.py # Report generation
├── models/
│ ├── voting_classifier.pkl # Ensemble ML model
│ ├── isolation_forest.pkl # Anomaly detection model
│ ├── feature_config.json # Feature mappings
│ └── service_mapping.json # Service definitions
├── templates/ # HTML dashboard templates
├── static/
│ ├── css/ # Dashboard styles
│ └── js/ # Dashboard scripts
└── database/
└── ids_database.db # SQLite database (auto-created)
```
## ⚙️ 配置
### `config.py` 中的关键设置
- `SECRET_KEY`: Flask 会话加密(在生产环境中请更改)
- `DATABASE_PATH`: SQLite 数据库位置
- `NETWORK_INTERFACE`: 用于数据包捕获的网络适配器(如果为 None 则自动检测)
- `MAX_CONTENT_LENGTH`: 最大文件上传大小(默认 50MB)
- `GROQ_API_KEY`: AI 聊天机器人 API 密钥
- `SMTP_*`: 邮件告警配置
### 功能配置
编辑 `models/feature_config.json` 以自定义:
- 要提取的网络特征
- 攻击类型分类
- 检测阈值
## 🔐 安全注意事项
- **更改 `SECRET_KEY`**:在生产环境中将其更改为随机、安全的值
- **使用 HTTPS**:部署到生产环境时请使用 HTTPS
- **限制文件上传大小**:根据您的系统资源进行调整
- **保护 SMTP 凭证**:使用环境变量,切勿硬编码
- **限制 API 访问**:在生产环境中添加身份验证
- **以非管理员身份运行**:尽可能以非管理员身份运行(除了数据包捕获,它需要提升的权限)
## 🐛 故障排除
### 常见问题
| 问题 | 解决方案 |
| ------------------------------------ | ------------------------------------------------------------------------ |
| **端口已被占用** | 在 `config.py` 中更改端口,或终止占用端口 5001 的进程 |
| **数据包捕获权限被拒绝** | 以管理员身份运行终端/PowerShell |
| **YARA 规则未加载** | 确保 `yara_rules/` 目录存在且包含 YARA 规则文件 |
| **聊天机器人无响应** | 在 `.env` 中验证 `GROQ_API_KEY` 并确保 API 配额可用 |
| **ML 模型未加载** | 检查 `models/` 目录中是否存在模型文件 |
| **邮件告警发送失败** | 在 `.env` 中验证 SMTP 凭证(Gmail 需要应用专用密码) |
### 启用调试模式
添加到 `.env`:
```
FLASK_DEBUG=1
FLASK_ENV=development
```
## 📚 依赖项
- **Flask**: Web 框架
- **scikit-learn, XGBoost**: 机器学习模型
- **Scapy**: 数据包捕获与分析
- **YARA**: 恶意软件模式匹配
- **GROQ**: AI 聊天机器人 API 客户端
- **ReportLab, Matplotlib**: 报告生成
- **SocketIO**: 实时仪表盘更新
完整列表请参阅 [requirements.txt](requirements.txt)。
## 🤝 贡献
欢迎贡献!请:
1. Fork 本仓库
2. 创建一个功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交您的更改 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开一个 Pull Request
## 📄 许可证
本项目基于 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
## 📧 支持
如有问题、疑问或建议:
- 在 GitHub 上开启一个 issue
- 查阅 `setup.md` 中的现有文档
- 查看上面的故障排除部分
## 🎓 工作原理
1. **网络监控**:系统从您的网络接口捕获实时网络数据包
2. **特征提取**:处理网络流以提取与 ML 相关的特征
3. **威胁分类**:集成 ML 模型分析特征并预测威胁类型
4. **文件扫描**:根据 YARA 恶意软件签名扫描上传的文件
5. **IP 情报**:根据威胁数据库检查检测到的 IP
6. **告警与响应**:威胁触发邮件告警和 IP 封禁操作
7. **报告**:生成用于安全分析的综合报告
## 🔄 实时更新
仪表盘使用 WebSocket 连接显示:
- 实时威胁检测(即时更新)
- 数据包捕获统计
- 扫描结果
- 系统健康指标
打开多个浏览器标签页,查看所有仪表盘之间的实时同步。
**为网络安全专业人员和威胁猎人用 ❤️ 构建**
标签:AI聊天机器人, Apex, CTF工具, IP信誉, Random Forest, SocketIO, XGBoost, YARA, 云资产可视化, 仪表盘, 入侵检测系统, 威胁情报, 安全数据湖, 实时抓包, 开发者工具, 机器学习, 漏洞搜索, 网络安全, 自动封禁, 逆向工具, 邮件告警, 防御系统, 隐私保护, 集成学习