CodeCrafter3-0-2/Team_Config_SecureSense-CC3H-162

GitHub: CodeCrafter3-0-2/Team_Config_SecureSense-CC3H-162

一个基于 XGBoost 机器学习模型的 AI 辅助 SOC 威胁情报仪表盘,整合实时流量分类、规则检测、异常评分和人机协同审查,为安全分析师提供端到端的威胁监控与研判平台。

Stars: 0 | Forks: 0

# SOC AI 威胁情报仪表盘 一个 AI 辅助的安全运营中心 (SOC) 仪表盘,用于接收 Web/网络日志,使用经过训练的 CICIDS2017 XGBoost 模型对流量进行分类,呈现未知威胁以供审查,并为分析师提供基于浏览器的实时监控 UI。 该项目结合了: - 一个 FastAPI 后端,用于预测、日志接收、WebSocket 流传输、审查操作和聊天机器人响应。 - 一个位于 `ui.html` 中的单页仪表盘,包含图表、实时警报、示例日志提交、审查队列控制和 SOC 助手面板。 - 一个独立的 `login.html` 页面,通过浏览器的 `localStorage` 与仪表盘连接。 - 一个训练好的 XGBoost 模型工件、标签编码器和选定特征列表。 - 一个轻量级 pipeline,用于解析原始日志、创建流特征、应用规则、检测异常和广播结果。 ## 项目结构 ``` D:\CT_HACKS |-- main.py # FastAPI backend and HTML serving routes |-- login.html # Login page; redirects to ui.html after auth |-- ui.html # Main SOC dashboard UI |-- index.html # Older/simple dashboard page |-- xgb_cicids2017.json # Trained XGBoost model artifact |-- label_encoder.pkl # Label encoder used by model outputs |-- selected_features.json # Feature order expected by the model |-- model_train.py # Full model training pipeline |-- model1.py # Alternate/experimental model script |-- model.md # Short model-training notes |-- confusion_matrix.png # Training/evaluation artifact |-- feature_importance.png # Training/evaluation artifact |-- training_curve.png # Training/evaluation artifact |-- pipeline\ | |-- parser.py # Converts raw logs into normalized fields | |-- flow.py # Aggregates logs into per-IP/endpoint flows | |-- features.py # Builds CICIDS-like feature dictionaries | |-- rules.py # Rule-based detections | |-- anomly.py # Statistical anomaly scoring | |-- blocker.py # Optional iptables-based blocking helper | `-- chatbot.py # SOC assistant response generation |-- tools\ | |-- local_rules.py # Additional local rule helpers | `-- virustotal.py # VirusTotal integration helper `-- soc-dashboard\ # Separate React/Vite dashboard experiment ``` ## 核心功能 - **前端登录流程** - 打开 `/` 或 `/login.html`。 - 使用当前的演示凭据登录:`admin` / `admin123`。 - 成功登录后,会将 `auth=true` 存储在 `localStorage` 中并打开 `ui.html`。 - `ui.html` 会将未经身份验证的用户重定向回 `login.html`。 - **实时仪表盘** - 显示日志总数、检测到的攻击、已拦截/模拟拦截的事件以及正常流量。 - 显示最近的流量和警报卡片。 - 连接到 `ws://localhost:8000/ws/logs` 以获取实时检测更新。 - 当无法访问 WebSocket/API 时回退到模拟数据。 - **ML 检测 pipeline** - 解析原始日志。 - 构建流级别特征。 - 首先应用基于规则的检测。 - 运行经过训练的 XGBoost CICIDS2017 模型。 - 增加针对未知或低置信度行为的统计异常检测。 - 将可疑的未知事件排入队列以供人工审查。 - **人机协同审查** - 未知威胁被添加到 `suspicious_queue`。 - 仪表盘轮询 `/review-queue`。 - 分析师可以通过 `/review-action` 允许或拦截队列中的项目。 - **SOC 助手** - `/chat` 使用最近的检测上下文来回答分析师的问题。 - 旨在提供简洁的安全摘要、指标和建议的操作。 ## 要求 推荐的运行时: - Python 3.10+ - pip - 现代浏览器 后端/训练脚本使用的 Python 包包括: ``` fastapi uvicorn numpy pandas joblib xgboost pydantic scikit-learn matplotlib seaborn groq langchain-core python-dotenv requests ``` 如果您还没有 `requirements.txt`,请手动安装运行时依赖: ``` python -m pip install fastapi uvicorn numpy pandas joblib xgboost pydantic scikit-learn groq langchain-core python-dotenv requests ``` 对于模型训练和图表生成,还需安装: ``` python -m pip install matplotlib seaborn ``` ## 配置 为外部集成创建或更新 `.env`: ``` GROQ_API_KEY="your-groq-api-key" VIRUS_TOTAL_API="your-virustotal-api-key" ABUSE_IPDB="your-abuseipdb-api-key" ``` 重要的安全提示:不要提交真实的 API 密钥。如果密钥已经被提交或共享,请从提供商的仪表盘中轮换它们。 ## 运行应用程序 从项目根目录: ``` cd D:\CT_HACKS python main.py ``` 或者直接运行 Uvicorn: ``` uvicorn main:app --reload ``` 然后打开: ``` http://localhost:8000/ ``` 后端提供: - `/` -> `login.html` - `/login.html` -> 登录页 - `/ui.html` -> 仪表盘页 - `/api/status` -> JSON 健康检查/状态响应 ## 登录流程 当前的演示凭据: ``` Username: admin Password: admin123 ``` 这仅是用于前端演示的身份验证。它对项目演示很有用,但不是生产级身份验证。对于生产环境,请将其替换为后端会话、签名 token、密码哈希、HTTPS 以及对 API/WebSocket 端点的访问控制。 ## API 参考 ### GET / 提供登录页面。 ### GET /login.html 直接提供登录页面。 ### GET /ui.html 提供 SOC 仪表盘。 ### GET /api/status 返回模型/服务器状态和模型类别标签。 示例响应: ``` { "status": "ok", "classes": ["BENIGN", "DDoS", "PortScan"] } ``` 实际类别取决于 `label_encoder.pkl`。 ### POST /predict 对特征 payload 运行直接的模型预测。 示例请求: ``` { "Flow Duration": 1.2, "Total Fwd Packets": 5, "Flow Bytes/s": 1200, "Flow Packets/s": 4, "Average Packet Size": 240 } ``` 示例响应: ``` { "predicted_class": "BENIGN", "confidence": 0.9821, "all_probabilities": { "BENIGN": 0.9821, "DDoS": 0.0179 } } ``` ### POST /logs/ingest 仪表盘使用的主要 SOC 接收端点。接收原始日志,进行解析,更新流状态,运行规则/ML/异常逻辑,存储最近的上下文,将未知威胁排入队列,并通过 WebSocket 广播结果。 示例请求: ``` { "raw_log": "192.168.1.10 GET /index.html 200 1024" } ``` 示例响应: ``` { "ip": "192.168.1.10", "final_prediction": "Normal Traffic", "confidence": 0.94, "blocked": "Not Blocked", "anomaly": false } ``` ### POST /chat 使用最近的检测上下文向 SOC 助手提问。 示例请求: ``` { "question": "Summarize the current suspicious IPs." } ``` 示例响应: ``` { "response": "..." } ``` ### GET /review-queue 返回等待分析师审查的可疑或未知项目。 示例响应: ``` { "items": [ { "ip": "10.10.0.21", "raw_log": "...", "features": {}, "score": 0.99 } ] } ``` ### POST /review-action 对排队的项目应用分析师操作。 示例请求: ``` { "ip": "10.10.0.21", "action": "block" } ``` UI 当前支持的操作值: - `allow` - `block` - `remove` ### WebSocket /ws/logs 向仪表盘流式传输实时检测更新。 示例消息: ``` { "ip": "10.0.0.55", "prediction": "Suspicious / Unknown Threat", "confidence": 0.99, "blocked": "Simulated Block", "anomaly": true, "needs_review": true } ``` ## 检测 Pipeline 主要的 `/logs/ingest` 路由遵循以下顺序: 1. **原始日志验证** - 需要 `raw_log`。 - 如果缺失则返回 HTTP 400。 2. **基于规则的检测** - 检查已知的特征,例如 SQL 注入和 ARP 异常/MITM 风格的日志。 - 规则匹配优先于 ML 预测。 3. **解析** - `pipeline/parser.py` 提取: - 时间戳 - 源 IP - 方法 - endpoint - 状态 - 字节数 4. **流追踪** - `pipeline/flow.py` 按 `(src_ip, endpoint)` 聚合重复事件。 - 追踪数据包数量、总字节数、开始时间和结束时间。 5. **特征提取** - `pipeline/features.py` 将流状态转换为特征字典。 - `main.py` 将特征与 `selected_features.json` 对齐。 6. **XGBoost 预测** - 加载 `xgb_cicids2017.json`。 - 使用 `label_encoder.pkl` 获取可读的类名。 - 返回预测的类别、置信度和所有类别的概率。 7. **异常覆盖** - `pipeline/anomly.py` 计算基于简单 z-score 的异常分数。 - 极端的字节数、服务器错误、未知标记和低置信度的预测可以被标记为 `Suspicious / Unknown Threat`。 8. **审查队列和广播** - 未知威胁被附加到 `suspicious_queue`。 - 检测结果通过 WebSocket 推送到已连接的仪表盘客户端。 ## 模型训练 训练流程在 `model.md` 中有简要记录,主要在 `model_train.py` 中实现。 训练 pipeline 亮点: - 加载并清理 CICIDS2017 风格的流数据。 - 使用 `LabelEncoder` 编码标签。 - 使用样本权重处理类别不平衡。 - 训练 XGBoost 分类器。 - 使用正则化: - L1:`reg_alpha` - L2:`reg_lambda` - `gamma` - `max_depth` - `min_child_weight` - `subsample` - `colsample_bytree` - `colsample_bylevel` - `learning_rate` - 提前停止 - 导出: - `xgb_cicids2017.json` - `label_encoder.pkl` - `selected_features.json` - `training_curve.png` - `confusion_matrix.png` - `feature_importance.png` 要重新训练,请确保训练脚本中预期的 CICIDS2017 数据集路径存在,然后运行: ``` python model_train.py ``` ## 仪表盘使用 1. 启动后端。 2. 打开 `http://localhost:8000/`。 3. 使用演示凭据登录。 4. 使用示例日志按钮提交正常、类 DDoS、类扫描或类暴力破解的日志。 5. 观察卡片、图表、最近的流量和警报源的更新。 6. 在审查队列中审查未知威胁。 7. 向 SOC 助手询问有关最近活动的问题。 ## 手动测试示例 健康/状态: ``` Invoke-RestMethod http://localhost:8000/api/status ``` 提交一条看起来正常的日志: ``` Invoke-RestMethod ` -Uri http://localhost:8000/logs/ingest ` -Method Post ` -ContentType "application/json" ` -Body '{"raw_log":"192.168.1.10 GET /index.html 200 1024"}' ``` 提交一条异常日志: ``` Invoke-RestMethod ` -Uri http://localhost:8000/logs/ingest ` -Method Post ` -ContentType "application/json" ` -Body '{"raw_log":"10.0.0.55 GET /api/v1/data 200 1500000"}' ``` 获取审查队列: ``` Invoke-RestMethod http://localhost:8000/review-queue ``` ## 故障排除 ### `/login.html` 或 `/ui.html` 的 `404 Not Found` 确保您从项目根目录运行更新后的 FastAPI 应用: ``` cd D:\CT_HACKS uvicorn main:app --reload ``` 路由在 `main.py` 中定义;通过其他服务器打开原始文件可能不会使用这些路由。 ### 仪表盘重定向回登录页 `ui.html` 检查: ``` localStorage.getItem("auth") === "true" ``` 首先通过 `login.html` 登录,或者清除浏览器存储并再次登录。 ### 仪表盘显示模拟数据 当 WebSocket 无法连接时,仪表盘会回退到模拟。确认后端正在运行,并且浏览器可以访问: ``` ws://localhost:8000/ws/logs ``` ### `/chat` 失败 检查 Groq API 密钥是否已配置且有效。当前的 `pipeline/chatbot.py` 应该更新为从 `.env` 读取,而不是将密钥直接嵌入源代码中。 ### 模型加载失败 确认项目根目录中存在以下文件: - `xgb_cicids2017.json` - `label_encoder.pkl` - `selected_features.json` 从 `D:\CT_HACKS` 运行服务器,因为当前的路径是相对的。 ### `iptables` 在 Windows 上拦截失败 `pipeline/blocker.py` 使用 Linux `iptables`。在 Windows 上,除非您用 Windows 防火墙实现替换该拦截器,否则拦截将由仪表盘/后端逻辑模拟。 ## 已知问题和清理建议 - `pipeline/chatbot.py` 当前包含硬编码的 API 密钥。请将其移至 `.env` 并使用 `os.getenv` 加载。 - `main.py` 有两个名为 `ingest_log` 的函数映射到不同的路由。FastAPI 仍然可以注册这两个路由,但唯一的函数名会更清晰。 - `pipeline/rules.py` 两次定义了 `rule_based_detection`;第二个定义覆盖了第一个。将这两个规则集合并到一个函数中。 - `pipeline/anomly.py` 拼写错误。考虑将其重命名为 `anomaly.py` 并更新导入。 - 登录系统仅是前端演示身份验证。在超出受控演示范围使用之前,请添加真正的后端身份验证。 - 此工作区中的 `cicids2017_cleaned.csv` 当前为空。重新训练需要真实的数据集文件。 - `soc-dashboard` 中的 React/Vite 应用似乎与活跃的 `ui.html` 仪表盘相互独立。决定是将其作为实验保留,还是将 UI 完全迁移到 React。 ## 安全提示 本项目适用于演示、实验和受控的实验室环境。在生产使用之前: - 从源文件中移除硬编码的密钥。 - 轮换任何暴露的密钥。 - 添加后端身份验证和授权。 - 保护 WebSocket 和 API 路由。 - 添加请求验证和速率限制。 - 将审查队列和日志存储在持久化数据库中,而不是内存列表中。 - 使用 HTTPS。 - 避免在没有强大安全防护和审计日志的情况下执行防火墙命令。 ## 许可证 目前未包含许可证文件。在分发或发布项目之前,请添加 `LICENSE` 文件。
标签:Apex, AV绕过, CICIDS2017, DevSecOps, FastAPI, IP 地址批量处理, Python, Sysdig, WebSocket, XGBoost, 上游代理, 人工智能, 仪表盘, 依赖分析, 单页应用, 后端开发, 安全运营中心, 异常检测, 数据流处理, 无后门, 机器学习, 机器学习模型训练, 流量分类, 用户模式Hook绕过, 网络威胁情报, 网络安全, 网络日志分析, 网络映射, 逆向工具, 隐私保护