ilurulokesh/soc-triage-agent

GitHub: ilurulokesh/soc-triage-agent

一款结合规则引擎、机器学习与 LLM 的 SOC 警报自动化分诊 Agent,解决安全告警疲劳与人工研判效率问题。

Stars: 0 | Forks: 0

# SOC 警报分类 Agent 这是一款 AI Agent,它的警报分类方式与 SOC(安全运营中心)二级分析师如出一辙:它接收连接日志,通过混合检测引擎(确定性规则 + 机器学习)进行处理;对于任何可疑情况,它会调用 LLM 用通俗易懂的英语解释风险、分配优先级,并建议具体的下一步操作。 本项目作为 B.Tech 毕业设计开发——将经典的 IDS/日志监控技术与基于 LLM 的 Agent 层及 n8n 自动化工作流相结合。 ## 为什么开发这个项目 大多数学生 IDS 项目仅停留在“标记异常,打印标签”的阶段。而真正的 SOC 分析师的实际工作是分类:决定每天数百个警报中*哪些*是重要的,解释*为什么*,并决定*做什么*。本项目正是将这一推理步骤自动化,而不仅仅是检测步骤。 ## 架构 ``` Connection log → Rule Engine ─┐ ├─→ is_suspicious? ─→ AI Triage Agent (Claude) → Dashboard / Slack / Sheet Connection log → ML Models ──┘ ``` - **规则引擎** (`src/rule_engine.py`) — 确定性启发式规则,镜像了经典 IDS 签名:暴力登录尝试、端口扫描扇出、SYN 洪泛模式、提权、批量文件创建、LAND 攻击。 - **ML 检测** (`src/train_model.py`, `src/pipeline.py`) — 在 NSL-KDD 上训练的 RandomForest 分类器,用于预测攻击类别(正常 / DoS / probe / R2L / U2R),外加一个用于无监督/新型异常检测的 IsolationForest。 - **AI 分类 Agent** (`src/triage_agent.py`) — Claude Sonnet,被设定为 SOC 分析师副驾驶。仅在规则引擎或 ML 模型已标记的事件中被调用,以控制成本/延迟——这与真实 SOC 在一级自动化告警和二级人工分析之间使用的升级模式相同。 - **仪表盘** (`dashboard/app.py`) — Streamlit UI,显示实时警报源、严重性颜色编码、AI 解释和处理指标。 - **API** (`src/api.py`) — FastAPI 封装,使流水线可被仪表盘、n8n 或任何外部系统调用。 - **n8n 工作流** (`n8n/soc_triage_workflow.json`) — webhook 接入 → 检测 API → 条件性 AI 分类 → 针对严重事件的 Slack 警报 → Google Sheets 审计日志。可直接导入 n8n。 ## 数据集 [NSL-KDD](https://www.unb.ca/cic/datasets/nsl.html) — 经典 KDD Cup 1999 IDS 数据集的改进版本,在学术 IDS 研究中被广泛使用。选择它而不是原始 KDD'99 是因为它移除了重复记录并重新平衡了难度,从而得出更真实的评估数据。 ## 设置 ``` git clone cd soc-triage-agent python3 -m venv venv && source venv/bin/activate pip install -r requirements.txt # 获取 dataset bash scripts/download_data.sh # 训练 models(需要 ~1-2 分钟) python3 src/train_model.py # 设置你的 API key cp .env.example .env # then edit .env with your ANTHROPIC_API_KEY export $(cat .env | xargs) ``` ## 运行说明 **仪表盘:** ``` streamlit run dashboard/app.py ``` **API 服务器(用于 n8n / 外部调用):** ``` cd src && uvicorn api:app --reload --port 8000 ``` **n8n 工作流:** 在你的 n8n 实例中,选择 Import from File → `n8n/soc_triage_workflow.json`。添加 Anthropic 凭据以及(可选的)`SLACK_WEBHOOK_URL` / `ALERT_LOG_SHEET_ID` 环境变量,然后将连接记录 POST 到 n8n 提供的 webhook URL。 ## 模型性能 在 NSL-KDD 官方的训练集/测试集划分上进行训练(测试集刻意包含了训练集中未出现的攻击子类型——这是该数据集一个已知且被引用的挑战,比原始的 KDD'99 划分更能反映真实的零日泛化能力): - 整体准确率:**73.9%** - DoS 检测:96% 精确率 / 77% 召回率 - 正常流量:64% 精确率 / 97% 召回率 - 有关哪些特征驱动预测,请参见 `models/feature_importances.csv`。 ## 项目结构 ``` soc-triage-agent/ ├── data/ # NSL-KDD dataset (downloaded, not committed) ├── models/ # trained models (generated, not committed) ├── src/ │ ├── preprocess.py # dataset loading, encoding, attack categorization │ ├── rule_engine.py # deterministic IDS-style heuristics │ ├── train_model.py # trains RandomForest + IsolationForest │ ├── triage_agent.py # Claude-based AI triage logic │ ├── pipeline.py # ties it all together │ └── api.py # FastAPI wrapper ├── dashboard/app.py # Streamlit dashboard ├── n8n/soc_triage_workflow.json ├── scripts/download_data.sh └── docs/ # project report, diagrams ``` ## 未来改进 - 实时数据包捕获 (Scapy/Zeek),而不是静态数据集重放 - 针对特定组织的日志格式进行 fine-tuning - 反馈循环:分析师的修正覆盖操作会随着时间的推移重新训练模型 - 多 Agent 设置:分离的分类 Agent + 响应建议 Agent ## 作者 I. Sai Lokesh Iluru — B.Tech CSE, SVR Engineering College [GitHub](https://github.com/ilurulokesh) · [LinkedIn](https://linkedin.com/in/iluru-sai-lokesh-78a657351)
标签:Apex, DLL 劫持, Kubernetes, 告警分诊, 大语言模型, 安全运营, 扫描框架, 机器学习, 逆向工具