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, 云资产可视化, 仪表盘, 入侵检测系统, 威胁情报, 安全数据湖, 实时抓包, 开发者工具, 机器学习, 漏洞搜索, 网络安全, 自动封禁, 逆向工具, 邮件告警, 防御系统, 隐私保护, 集成学习