rjvareed/ai_soc_assistant

GitHub: rjvareed/ai_soc_assistant

一款将威胁报告自动转化为结构化分析师报告的 AI SOC 分诊工具,提取 IOC、映射 MITRE ATT&CK 并生成 Sigma 检测规则草稿。

Stars: 0 | Forks: 0

# ai_soc_assistant 一个 Python 的概念验证工具,能将威胁报告、博客文章和应急响应记录转化为结构化的分析师报告。它将确定性的 regex 分析与 Claude AI 相结合,以提取 IOC,映射 MITRE ATT&CK 技术,并起草 Sigma 风格的检测规则。 **所有 AI 输出均为草稿。每一项发现都需要在采取行动前经过分析师的审核。** ## 它的功能 1. **接收**基于文本的威胁报告(最大 500 KB) 2. **安全检查** — 在文本到达 LLM 之前,检测 prompt injection 尝试和敏感数据 3. **Regex IOC 提取** — 确定性地查找 IPv4、domain、URL、hash (MD5/SHA1/SHA256) 和 email 4. **LLM 分析** — 将报告发送给 Claude (`claude-opus-4-8`) 以获取执行摘要、攻击者行为、额外的 IOC 候选项、MITRE ATT&CK 建议、检测假设和不确定性 5. **合并** regex 和 LLM 提取的 IOC;分配置信度(HIGH = regex 确认,MEDIUM = LLM + regex 验证有效,LOW = 仅 LLM) 6. **MITRE 映射** — 关键词字典 + LLM 候选项,去重并进行置信度评分 7. **起草检测规则** — 针对 IOC 类型和 MITRE 技术的 Sigma 风格 YAML 规则,以及 LLM 假设的存根 8. **Markdown 报告** — 包含 IOC 表格、MITRE 表格、检测规则和强制性分析师审核清单的结构化输出 ## 项目结构 ``` ai_soc_assistant/ ├── main.py # CLI entrypoint ├── schemas.py # Pydantic data models ├── ingest.py # File loading and text normalization ├── safety.py # Prompt injection + sensitive data detection ├── ioc_extract.py # Regex IOC extraction and LLM merge ├── mitre_mapper.py # Keyword-to-ATT&CK mapping + LLM merge ├── detection_generator.py # Draft Sigma-style rule generation ├── report_writer.py # Markdown report renderer ├── llm_client.py # Claude API integration ├── requirements.txt ├── .env.example # API key template ├── sample_reports/ # Example threat reports for testing └── outputs/ # Generated reports go here ``` ## 安装说明 ``` # 需要 Python 3.11+ pip install -r requirements.txt ``` ### API key 复制示例 env 文件,并从 [console.anthropic.com](https://console.anthropic.com) → API Keys 添加你的 key: ``` cp .env.example .env # 编辑 .env 并将占位符替换为你的真实密钥 ``` `.env` 内容: ``` ANTHROPIC_API_KEY=sk-ant-api03-your-key-here ``` 该工具在启动时会通过 `python-dotenv` 自动加载 `.env`。该文件已在 `.gitignore` 中列出,不会被提交。 或者,直接在你的 shell 环境中设置 key: ``` export ANTHROPIC_API_KEY=sk-ant-... ``` ## 运行说明 ``` python main.py --input sample_reports/report.txt --output outputs/report.md --verbose ``` **选项:** | Flag | 描述 | |------|-------------| | `--input FILE` | 输入威胁报告的路径 | | `--output FILE` | 输出 Markdown 报告的路径 | | `--model MODEL` | 要使用的 Claude 模型 ID(默认:`claude-opus-4-8`) | | `--skip-llm` | 仅本地模式(无 API 调用) — 用于在没有 API key 的情况下进行测试 | | `--verbose` | 将进度输出到 stderr | ### 选择模型 默认使用 `claude-opus-4-8`,它能产生最详尽的 IOC 提取和 MITRE 映射。`claude-haiku-4-5-20251001` 在质量仅有微小下降的情况下,速度更快且成本大幅降低 —— 适合大批量分类或初步筛选。 ``` # 完整质量(默认) python main.py --input report.txt --output out.md # 更快且更便宜 python main.py --input report.txt --output out.md --model claude-haiku-4-5-20251001 # 显式 Opus python main.py --input report.txt --output out.md --model claude-opus-4-8 ``` 在 8 份测试报告中观察到的质量差异(无论使用哪种模型,仅通过 regex 提取的 IOC 都是相同的): | | Opus 4.8 | Haiku 4.5 | |---|---|---| | LLM 发现的额外 IOC | 更完整 —— 能提取文件名、工具名、间接指标 | 较少 —— 更容易遗漏上下文 IOC | | MITRE 映射 | 保守、准确 | 略有过度生成;需审核是否存在误报 | | Prompt injection 抵抗力 | 通过 | 通过 | ## 仅本地测试(无需 API key) ``` python main.py --input sample_reports/report.txt --output outputs/report.md --skip-llm --verbose ``` 运行 regex IOC 提取,并在不包含 LLM 摘要、行为或 MITRE 建议的情况下生成报告。 ## 置信度级别 | 级别 | 含义 | |-------|---------| | HIGH | 经 regex 模式确认;同时出现在 regex 和(可选)LLM 输出中 | | MEDIUM | LLM 建议且通过 regex 验证,但未在原始文本中被 regex 发现 | | LOW | LLM 建议;未通过 regex 验证 —— 分析师必须手动核实 | ## 安全模型 - **Prompt injection**:14 种 regex 模式可检测报告中嵌入的试图覆盖 LLM 指令的行为(例如:“ignore all previous instructions”、system-tag 注入、persona 覆盖)。报告仍会被处理,但发现的结果会被标记。 - **敏感数据**:9 种模式可检测凭据、API key、私钥、AWS 凭据和 SSN。匹配到的值在报告摘录中会被脱敏处理。 - **LLM 加固**:system prompt 明确指示 Claude 将所有报告内容视为不受信任的,并且不遵循其中嵌入的任何指令。 ## 安全态势 这是一个**概念验证**。在生产环境使用之前: - 在 API 边界添加速率限制和输入清理 - 将 API key 存储在 secrets manager 中,而不是环境变量中 - 在沙箱环境中运行,除 Anthropic API 外不具有任何网络访问权限 - 为所有 LLM 调用和分析师操作添加审计日志 - 如果是多用户环境,请实施身份验证和访问控制 - 在任何部署之前,让检测工程师审核检测规则 ## 依赖项 - `anthropic` — Anthropic Python SDK - `pydantic` — 数据验证和 schema 强制执行 - `python-dotenv` — 在启动时从 `.env` 加载 `ANTHROPIC_API_KEY` ## 示例报告和记录的输出 `sample_reports/` 中包含了八份示例报告。每份报告都通过完整的 pipeline 分别使用 `claude-opus-4-8` (Opus) 和 `claude-haiku-4-5-20251001` (Haiku) 进行了处理,输出结果保存在 `outputs/` 中。除非另有说明,以下结果均来自 Opus 的运行记录。 ### `report.txt` — Operation Rusty Anchor **场景:** 金融服务公司通过鱼叉式网络钓鱼 ISO 附件遭到入侵。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 32 | 16 | | MITRE 候选项 | 17 | 15 | | 检测规则 | 17 | 16 | | 安全标记 | 0 | 0 | ### `ransomware_healthcare.txt` — BlackMatter Affiliate / 医疗勒索软件 **场景:** 针对医院和制药公司的多受害者勒索软件活动。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 20 | 19 | | MITRE 候选项 | 19 | 23 | | 检测规则 | 18 | 19 | | 安全标记 | 0 | 0 | ### `web_app_attack.txt` — 电商 SQL Injection + Web Shell **场景:** 面向公众的 Web 应用程序通过 SQLi 遭到利用;DNS 隧道数据渗出。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 28 | 21 | | MITRE 候选项 | 11 | 12 | | 检测规则 | 13 | 13 | | 安全标记 | 0 | 0 | ### `apt_espionage.txt` — APT29 / Cozy Bear 智库活动 **场景:** 通过滥用 OAuth 和 Microsoft Graph API C2 进行的国家级间谍活动。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 23 | 12 | | MITRE 候选项 | 16 | 15 | | 检测规则 | 10 | 11 | | 安全标记 | 3(在“OAuth token”上出现 bearer-token 误报) | 3 | 此报告中的三个安全标记属于误报 —— `bearer-token` 模式匹配到了描述性文字中的短语“OAuth token”。分析师在审核后应将其忽略。 ### `volt_typhoon.txt` — Volt Typhoon / 中国关键基础设施 **场景:** 中国国家行为者利用 LOLBins 和 SOHO 设备代理在美国关键基础设施中进行预先布局。基于公开的 Microsoft MSTIC 披露(2023 年 5 月)。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 19 | 19 | | MITRE 候选项 | 19 | 18 | | 检测规则 | 10 | 14 | | 安全标记 | 0 | 0 | 注意:由于大量 SHA256 hash,Opus 的运行最初在 4096 个 token 处因 JSON 截断错误而失败。这促使我们在 `llm_client.py` 中将 `max_tokens` 提高到了 8192。 ### `salt_typhoon_telecom.txt` — Salt Typhoon / 美国电信间谍活动 **场景:**与中国 MSS 有关的攻击者入侵美国运营商 CALEA 合法拦截系统。基于公开的 CISA/FBI 联合公告(2024 年 12 月)。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 19 | 12 | | MITRE 候选项 | 17 | 30 | | 检测规则 | 15 | 20 | | 安全标记 | 0 | 0 | 在此报告中,Haiku 生成了 30 个 MITRE 候选项,而 Opus 生成了 17 个 —— 数量较多反映了过度推断。分析师在审核此报告的 Haiku 输出时应更加彻底。 ### `scattered_spider.txt` — Scattered Spider / 社会工程学 + 勒索软件 **场景:**通过帮助台 vishing 绕过 MFA、滥用 Okta、ALPHV 附属机构勒索软件。基于公开的 CISA/FBI 联合公告(2023 年 10 月)。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 17 | 9 | | MITRE 候选项 | 19 | 22 | | 检测规则 | 12 | 18 | | 安全标记 | 0 | 0 | 巨大的 IOC 差距(17 对 9)反映了 Opus 能够提取 Haiku 遗漏的工具名称、攻击者控制的 domain 模式以及程序性 artifacts。 ### `prompt_injection_test.txt` — 恶意 npm 包(包含嵌入式注入尝试) **场景:**通过受损的 npm package 发起的供应链攻击。该报告故意包含了四次 prompt injection 尝试,以测试安全加固情况。 | | Opus 4.8 | Haiku 4.5 | |---|---|---| | IOC | 14 | 9 | | MITRE 候选项 | 9 | 9 | | 检测规则 | 9 | 10 | | 安全标记 | **4** | **4** | 所有四次注入尝试在到达 LLM 之前都被安全检查器捕获: - `ignore-instructions` — “IGNORE ALL PREVIOUS INSTRUCTIONS” - `system-prompt-injection` — “New system prompt:” - `system-tag-injection` — `` XML tag - `instruction-tag-injection` — `[INST]` tag 两个模型都正确忽略了注入内容,并针对实际威胁生成了一份有价值的报告。
标签:AI辅助分析, IOC提取, IP 地址批量处理, Python, Sigma规则, 威胁情报, 安全运营, 开发者工具, 扫描框架, 无后门, 目标导入, 网络信息收集, 自动化报告, 逆向工具