opandey1/alertmind

GitHub: opandey1/alertmind

该项目构建了一个集成了 Wazuh SIEM 和 LLM 助手的微型安全运营中心,旨在实证测量人工智能辅助对安全告警分类处理时间的实际影响。

Stars: 0 | Forks: 0

# AlertMind — AI 辅助的微型 SOC **毕业项目:** AI/GenAI 驱动的网络安全 PG 认证 — IIT Roorkee × Futurense,第 1 期 · EC-Council SOC 基础课程 · 项目 `CAP-SCE-3W` · 个人模式 **当前状态:** 核心 SOC 构建、检测、仪表盘、剧本、助手、固定语料库评估、基础性审查和技术报告均已完成。答辩演示文稿尚待制作。实时的 Wazuh 到助手集成和生产级 RBAC 仍属于已记录的目标状态工作,尚未成为已完成的功能。 有关完整的方法论、证据索引、局限性和结果,请参阅[技术报告](report.md)。 ## 已交付内容 | 组件 | 交付状态 | |---|---| | Wazuh SIEM | 位于隔离的 VirtualBox 实验室中的 Wazuh 4.14.5 多合一管理器、索引器和仪表盘 | | 端点遥测 | 装有 Sysmon 和 Wazuh agent 的 Windows 11;装有 auditd 和 Wazuh agent 的 Ubuntu | | 检测工程 | 24 条自定义 Wazuh 规则已验证触发:Linux `100100–100116` 和 Windows `100200–100206`;内置规则 61138 涵盖 Windows 服务创建 | | ATT&CK 覆盖范围 | 执行、持久化、凭据访问、权限提升、防御规避、横向移动、数据泄露和命令与控制场景 | | 仪表盘 | 每日 SOC 简报和 ATT&CK 热力图,已作为 Wazuh `.ndjson` 对象导出至 `siem/dashboards/` 下 | | IR 剧本 | 针对网络钓鱼、恶意软件和账号被盗的剧本,符合 NIST SP 800-61r2 标准 | | LLM 助手 | 具备本地、托管和确定性模拟 provider 的 Python/Streamlit 助手;严格的 JSON 输出、脱敏处理、视图、审计日志记录和评分 | | 粘贴与检查 | 临时 JSON 告警分类,包含限制、脱敏追踪、注入标记、边界门控、端点感知同意以及净化的证明/审计输出 | | 评估 | 固定的 20 条告警语料库:14 个受控攻击加上 6 个历史良性误报;配对计时、自动化评分和手动基础性审查 | ## 架构与信任边界 实验室虚拟机共享一个隔离的 VirtualBox NAT 网络(`LabNet`,`10.0.2.0/24`)。SIEM 具有一个用于访问仪表盘的 Host-Only 适配器。该助手并未直接串接在检测或执行链路中。 ``` flowchart LR WIN["Windows 11
Sysmon + Wazuh agent"] -->|events| SIEM["Wazuh manager
indexer + dashboard"] LIN["Ubuntu
auditd + Wazuh agent"] -->|events| SIEM ATT["Controlled attack simulation"] -.-> WIN ATT -.-> LIN SIEM --> DASH["SOC dashboards"] CORPUS["Frozen corpus or
analyst-pasted alert"] --> ASSIST["AlertMind assistant
redact → view → inspect → LLM → validate"] ASSIST --> DRAFT["DRAFT output
mandatory analyst review"] SIEM -. "planned: alert-scoped read-only API" .-> ASSIST ``` 当前助手的输入为固定的语料库和分析人员粘贴的 JSON。虚线的 Wazuh API 路径是生产目标,**尚未实现**。相应地,目标身份 `socanalyst` 和 `assistant-svc` 仍处于计划阶段;实验室目前使用 `admin` 进行设置和验证。 ## 关键测量结果 该项目特意将检测延迟与分析人员的分类时间区分开来: - **MTTD:** 攻击时间戳 → Wazuh 告警时间戳。中位数为 **2.32 秒**;这是检测和转发的属性,而不是助手的属性。 - **分类时间:** 分析人员打开告警 → 处置完成。模型推理是预先生成的,并单独报告。 ### 计时的 llama3.1 辅助测试 | 告警类别 | n | 无辅助中位数 | 辅助中位数 | 结果 | |---|---:|---:|---:|---| | 攻击,助手处置正确 | 14 | 11.43 分钟 | 8.00 分钟 | **−30%**;全部 14 项均变快 | | 良性误报,助手处置错误 | 6 | 5.58 分钟 | 7.70 分钟 | **+38%**;配对中位数成本 **+1.68 分钟** | | 所有告警 | 20 | 10.50 分钟 | 8.00 分钟 | 总计 −24% 掩盖了相反类别的影响 | 在两次测试中,分析人员的处置准确率保持在 **20/20**,因为每个错误的助手处置都被覆盖了。这表明在这项单人分析的研究中,人工审查发挥了作用,但也表明审查具有可衡量的成本。 ### 严格的减少标签助手比较 运营告警包含其规则编写的 ATT&CK 标签。单独的评估视图在评分前会移除带有测试标签的字段,以避免衡量简单的标签复制。 | 指标 | `llama3.1:8b` | `gpt-5.5-2026-04-23` | |---|---:|---:| | 攻击技术,精确/宽松 | 1/14 · 1/14 | **8/14 · 12/14** | | 处置,所有告警 | 14/20 | **16/20** | | 清除的良性误报 | **0/6** | **3/6**,其中 3 个含糊其辞,0 个确信错误 | | 完全支持的运营摘要 | 15/20 | **20/20** | | 可运行的运营调查查询 | **0/20** | **20/20** | | 匹配的运营 + 评估运行中的有效 JSON | 40/40 | 40/40 | 这是一次探索性的系统级比较,而非受控的模型基准测试:模型的规模、训练、托管、推理和采样同时存在差异。GPT-5.5 在每个视图中仅为一个随机样本,并且未使用它重复进行计时的辅助测试。 语料库被冻结在 `measurement/alert-corpus.json`: ``` SHA-256 4E842637F3CBCBB6E0704320824B64BDEB63C7D7EE7E22DB0278E4D96C58B929 ``` ## LLM 助手 实现位于 [`assistant/`](assistant/)。报告使用的基准测试运行日志保留在 `assistant/outputs/runs/` 下,每次运行对应一个非覆盖目录。 对于每条告警,助手返回: 1. 最多五行的摘要。 2. 一个或多个 MITRE ATT&CK 技术 ID,或 `null`。 3. 两到三个建议的调查查询。 4. 发送给受影响用户或系统所有者的草稿消息。 5. 处置建议和校准后的置信度。 批处理路径: ``` redact → apply view → construct prompt → call model → parse → validate → audit → score ``` 临时粘贴与检查路径: ``` parse → limits → redact with trace → apply view → scan keys/values → boundary gate → egress consent → one model call → validate → draft/audit ``` 粘贴与检查是一项操作演示,被排除在固定基准测试之外。 ### 护栏声明与边界 - **无自主操作:** 模型没有工具、执行路径或写入能力;每个结果都是需要分析人员审查的草稿。 - **脱敏优先:** 已测试的凭据类和敏感键值会在构建 prompt 之前被移除。文件哈希作为调查 IOC 保留。 - **脱敏即降低风险:** 未知的、编码过的或未标记的密钥仍属于残留风险。 - **Prompt 注入处理:** 已测试的指令标记会从 JSON 键和值中浮现出来,并且保留的 `` 定界符尝试会在模型调用之前被阻止。 - **无通用注入防护声明:** 其他标记文本可能仍作为证据到达受非信任数据块内的模型,并可能影响其推理。Schema 验证检查的是结构,而不是正确性。 - **影响遏制:** 脱敏的输入、无工具/写入能力、仅输出草稿以及强制审查限制了错误响应的后果。 - **端点感知同意:** 非 loopback 模型端点需要明确同意才能将告警数据发送到外部。 - **净化的临时证据:** 原始粘贴的输入不会被持久化;证明和审计记录存储净化后的数据和相关性哈希。可选的追踪相关性通过 `ALERTMIND_TRACE_HMAC_KEY` 使用带密钥的 HMAC。 - **可审计性:** 批处理调用会在非覆盖运行目录中记录模型/配置、prompt 和脱敏哈希、延迟、解析状态、使用情况以及原始/解析后的响应。 ## 仓库结构图 ``` project-alertmind/ ├── README.md # repository landing page ├── report.md # final technical report and evidence index ├── WEEKLOG.md # implementation chronology ├── assistant/ # assistant package, Paste & inspect UI, tests, run logs ├── detections/ │ ├── auditd/alertmind.rules # Linux collection rules │ └── sigma/notes.md # Sigma-to-Wazuh crosswalk and tuning notes ├── siem/ │ ├── wazuh/ # deployed Wazuh/Sysmon configuration exports │ └── dashboards/ # final and earlier dashboard exports ├── playbooks/ # phishing, malware, account-compromise ├── measurement/ │ ├── alert-corpus.json # frozen 20-alert corpus │ ├── timing-log*.csv # unassisted and assisted timing │ ├── analysis.ipynb # re-runnable metric derivation │ └── grounding/ # manual free-text review worksheets └── evidence/ # screenshots and command-output evidence ``` ## 运行助手 以下示例从仓库根目录使用 PowerShell。 ``` cd assistant python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -r requirements.txt ``` 运行离线冒烟测试和 UI: ``` python runner.py --provider mock --view operational --limit 1 python -m streamlit run app.py ``` 使用本地 Ollama 运行: ``` python preflight.py --provider ollama --model llama3.1 python runner.py --provider ollama --model llama3.1 --view evaluation ``` 使用固定的托管模型运行: ``` $env:OPENAI_API_KEY="" $env:OPENAI_BASE_URL="https://api.openai.com/v1" $env:ALERTMIND_MAX_TOKENS="25000" python preflight.py --provider openai --model gpt-5.5-2026-04-23 python runner.py --provider openai --model gpt-5.5-2026-04-23 --view evaluation ``` 请勿提交包含内容的 `.env`;将密钥保留在仓库外部,并使用 `.env.example` 作为模板。 ## 测试与可重现性 运行助手回归测试套件: ``` cd assistant python -m unittest discover -s tests -p "test_*.py" ``` 当前的套件包含 **58 个测试**,涵盖 provider 请求构建、schema/错误元数据、脱敏、严格视图标签泄漏、注入标记、边界阻止、同意、临时审计语义和 Streamlit 状态处理。 通过从头到尾运行 [`measurement/analysis.ipynb`](measurement/analysis.ipynb) 来重现分析。基础性工作表和审查者注释位于 [`measurement/grounding/`](measurement/grounding/) 下。包含主要结果的运行目录有: - `assistant/outputs/runs/20260718_180713_ollama_eval_baseline/` - `assistant/outputs/runs/20260718_183704_openai_eval_baseline/` - `assistant/outputs/runs/20260717_073045_openai_oper_baseline/` - `assistant/outputs/runs/20260717_074112_openai_eval_baseline/` ## 检测与响应内容 - 检测交叉核对和调优决策:[`detections/sigma/notes.md`](detections/sigma/notes.md) - Linux auditd 收集规则:[`detections/auditd/alertmind.rules`](detections/auditd/alertmind.rules) - 已部署的 Wazuh 规则:[`siem/wazuh/local_rules.xml`](siem/wazuh/local_rules.xml) - Wazuh 仪表盘:[`siem/dashboards/`](siem/dashboards/) - 网络钓鱼剧本:[`playbooks/phishing.md`](playbooks/phishing.md) - 恶意软件剧本:[`playbooks/malware.md`](playbooks/malware.md) - 账号被盗剧本:[`playbooks/account-compromise.md`](playbooks/account-compromise.md) ## 当前局限性与剩余工作 - 这项 20 条告警、单人分析的实验室研究具有方向性指导意义,但缺乏统计学功效;辅助测试也是在清洗期后的无辅助测试之后进行的。 - 本地和托管模型的结果不是受控的能力比较,托管结果仅为单次随机样本。 - 其中一个合成攻击 payload 在解码后会将其自身识别为 AlertMind 测试,这造成了已记录的建构效度局限。 - 脱敏不能保证移除未知的或编码过的密钥。 - Prompt 注入标记提供的是检测和可见性;只有保留的边界尝试会被确定性地阻止。语义层面的模型影响仍然可能存在。 - RBAC 身份 `socanalyst` 和 `assistant-svc` 以及实时的只读 Wazuh API 摄取仍然是目标状态工作。 - 具有显式审计覆盖的高置信度注入隔离仍是未来的工作。 - 实时的云端摄取是一个可选的延伸目标;本项目使用指定的 Windows 和 Linux 数据源。 ## 负责任的 AI、道德与归属 所有攻击模拟均限制在隔离的实验室内。语料库包含合成实验室事件和历史的实验室误报,而非客户数据。仅在进行公开的比较运行时,才会将脱敏后的合成告警发送到托管模型;本地的测量运行没有发生告警数据外传。 告警摘要的起点改编自作者之前的 [AI-SOC-Assistant](https://github.com/opandey1/AI-SOC-Assistant) 项目。AlertMind 增加了 SOC 特定的 prompt、provider 抽象、脱敏、严格视图、schema 验证、审计/评分流水线、可重复的评估、基础性审查和 Streamlit 工作流。开发协助的使用情况已在 `report.md` 中披露;报告的结果均源自保留的日志和可重新运行的产物。 ## 参考 - [MITRE ATT&CK](https://attack.mitre.org/) - [NIST SP 800-61r2](https://csrc.nist.gov/pubs/sp/800/61/r2/final) - [NIST Cybersecurity Framework 2.0](https://www.nist.gov/cyberframework) - [Wazuh 文档](https://documentation.wazuh.com/) *为 IIT Roorkee × Futurense AI/GenAI 驱动的网络安全 PG 认证第 1 期而构建。*
标签:AI风险缓解, DNS 反向解析, IP 地址批量处理, Kubernetes, PE 加载器, Wazuh, 安全运营, 库, 应急响应, 扫描框架, 逆向工具