AppliedIR/aiir
GitHub: AppliedIR/aiir
一个将 AI 能力引入数字取证与事件响应的平台,通过人工审批签名和证据监管链机制确保调查结论的可追责性。
Stars: 7 | Forks: 0
# AIIR
[](https://github.com/AppliedIR/aiir/actions/workflows/ci.yml)
[](https://appliedir.github.io/aiir/)
[](https://github.com/AppliedIR/aiir/blob/main/LICENSE)
AI Incident Response 平台,根据您的部署需求提供不同级别的人工介入审查和控制。CLI 和架构参考。
**[平台文档](https://appliedir.github.io/aiir/)** ·
[CLI 参考](https://appliedir.github.io/aiir/cli-reference/)
## AIIR Lite — 几分钟内快速上手
在最简单的形式下,AIIR Lite 为 Claude Code 提供取证知识以及关于如何执行取证严谨性、展示发现供人工审查以及审计所采取行动的指令。MCP server 通过提供权威信息来增强准确性 —— 一个取证知识 RAG 和一个 Windows 审查数据库 —— 外加可选的 OpenCTI 威胁情报和 REMnux 恶意软件分析。
**快速版** — 取证规范、MCP 包和配置。无数据库(<70 MB):
```
git clone https://github.com/AppliedIR/sift-mcp.git
cd sift-mcp
./quickstart-lite.sh --quick
```
**推荐版** — 添加 RAG 知识库(来自 23 个安全来源的 22,000+ 条记录)和 Windows 审查数据库(260 万条基线记录)。需要约 14 GB 磁盘空间:
- ~7 GB — RAG embedding model 所需的 ML 依赖项
- ~6 GB — Windows 审查基线数据库(260 万行,解压后)
- ~1 GB — RAG 索引、源代码和其他所有内容
```
git clone https://github.com/AppliedIR/sift-mcp.git
cd sift-mcp
./quickstart-lite.sh
```
此一次性设置大约需要 15-30 分钟,具体取决于
互联网速度和 CPU。后续运行将重用现有的数据库和索引。
```
claude
/welcome
```
要更新现有的 AIIR Lite 安装,请从更新后的克隆中重新运行安装程序(第一步进入初始安装时安装 sift-mcp repo 的位置):
```
cd sift-mcp
git pull
./quickstart-lite.sh
```
安装程序是幂等的 —— 它重用现有的 venv,如果数据库
和 RAG 索引已存在则跳过,并重新部署配置文件。
#### AIIR Lite
```
graph LR
subgraph analyst ["Analyst Machine"]
CC["Claude Code
(human interface)"] FR["forensic-rag-mcp
Knowledge search"] WTR["windows-triage-mcp
Baseline validation"] CC -->|stdio| FR CC -->|stdio| WTR end ``` #### AIIR Lite 及可选附加组件 ``` graph LR subgraph analyst ["Analyst Machine"] CC["Claude Code
(human interface)"] FR["forensic-rag-mcp
Knowledge search"] WTR["windows-triage-mcp
Baseline validation"] OC["opencti-mcp
Threat intelligence"] CC -->|stdio| FR CC -->|stdio| WTR CC -->|stdio| OC end subgraph octi ["OpenCTI Instance"] OCTI[OpenCTI] end subgraph remnux ["REMnux Workstation"] RAPI["remnux-mcp API
:3000"] RMX["remnux-mcp
Malware analysis"] RAPI --> RMX end subgraph winbox ["Windows Forensic Workstation"] WAPI["wintools-mcp API
:4624"] WMX["wintools-mcp
Windows tool execution"] WAPI --> WMX end subgraph internet ["Internet"] ML["MS Learn MCP
(HTTPS)"] ZE["Zeltser IR Writing MCP
(HTTPS)"] end CC -->|"streamable-http"| RAPI CC -->|"streamable-http"| WAPI CC -->|"HTTPS"| ML CC -->|"HTTPS"| ZE OC -->|"HTTP(S)"| OCTI ``` | 连接 | 协议 | 说明 | |-----------|----------|-------| | Claude Code → forensic-rag-mcp | stdio | 本地 Python 进程,始终存在 | | Claude Code → windows-triage-mcp | stdio | 本地 Python 进程,始终存在 | | Claude Code → opencti-mcp | stdio | 本地 Python 进程,通过 HTTP(S) 连接到 OpenCTI | | opencti-mcp → OpenCTI Instance | HTTP(S) | opencti-mcp 在本地运行,调用 OpenCTI server | | Claude Code → remnux-mcp | streamable-http | 远程,位于其自己的 REMnux 工作站上 | | Claude Code → wintools-mcp | streamable-http | 远程,位于其自己的 Windows 工作站上 | | Claude Code → MS Learn MCP | HTTPS | `https://learn.microsoft.com/api/mcp` — .mcp.json 中的 streamable-http 类型 | | Claude Code → Zeltser IR Writing MCP | HTTPS | `https://website-mcp.zeltser.com/mcp` — .mcp.json 中的 streamable-http 类型 | 无 gateway,无沙箱,无拒绝规则。Claude 通过 Bash 直接运行取证工具。取证规范通过 prompt hook 和参考文档进行建议和强化,但 Claude Code 可以选择忽略它们。有关详细信息和可选附加组件,请参阅 [sift-mcp README](https://github.com/AppliedIR/sift-mcp#aiir-lite--get-started-in-minutes)。 ## Full AIIR — 结构化强制执行 对于需要更明确的人工介入审批的用例,完整的 AIIR 套件通过加密签名、密码门控审批和多层控制来确保问责制并强制执行对发现的人工审查。 Full AIIR **与 LLM client 无关** —— 通过 gateway 连接任何兼容 MCP 的客户端。支持的客户端包括 Claude Code, Claude Desktop, LibreChat, Cherry Studio,以及任何支持带有 Bearer token 认证的 Streamable HTTP 传输的纯 MCP 客户端。取证规范在结构上由 gateway 和 MCP 层提供,而不是通过特定于客户端的 prompt engineering,因此无论哪个 AI 模型或客户端驱动调查,都适用相同的严谨性。 ## 平台架构 LLM client、案件 dashboard 和 aiir CLI 是三个面向人的接口。**案件 dashboard** 是由 gateway 提供服务的基于浏览器的审查界面 —— 检查人员在浏览器中完全通过挑战-响应认证来审查、编辑、批准、拒绝和提交发现。**aiir CLI** 在 SIFT 工作站上运行,用于案件管理、证据处理和验证。当 LLM client 在单独的机器上运行(路径 2)时,检查人员通过 gateway(HTTPS)访问 dashboard,并且只需要 SSH 进行 CLI 专用操作(case init, evidence register, unlock, exec, verify)。 ### 核心组件映射 ``` graph TB subgraph analyst ["Analyst Machine (Path 2)"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] end subgraph sift ["SIFT Workstation"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM["forensic-mcp
Findings + discipline"] CM["case-mcp
Case management"] RM["report-mcp
Report generation"] SM["sift-mcp
Linux tool execution"] FR["forensic-rag-mcp
Knowledge search"] WTR["windows-triage-mcp
Baseline validation"] OC["opencti-mcp
Threat intelligence"] CD["case-dashboard
Review + approval"] FK["forensic-knowledge
(shared YAML data package)"] CASE["Case Directory"] GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC GW --> CD FM --> FK SM --> FK FM --> CASE CM --> CASE RM --> CASE CD --> CASE CLI --> CASE end subgraph winbox ["Windows Forensic Workstation (optional)"] WAPI["wintools-mcp API
:4624"] WM["wintools-mcp
Windows tool execution"] FK2["forensic-knowledge"] WAPI --> WM WM --> FK2 end CC -->|"streamable-http"| GW CC -->|"streamable-http"| WAPI BR -->|"HTTPS"| GW WM -->|"SMB"| CASE ``` 在路径 1(同机部署)中,一切都在 SIFT 上运行 —— 不需要远程访问。在路径 2 中,LLM client 和浏览器在分析员机器上运行;浏览器通过 gateway 上的 HTTPS 连接到 dashboard。 ### 人工介入工作流 所有发现和时间线事件均由 AI 暂存为 DRAFT 状态。只有人工检查员才能批准或拒绝它们 —— 通过案件 dashboard(浏览器)或 aiir CLI。两条路径都产生相同的 HMAC 签名批准记录。AI 不能批准自己的发现。 ``` sequenceDiagram participant AI as LLM + MCP Tools participant Case as Case Directory participant Human as Examiner
(Dashboard or CLI) AI->>Case: record_finding() → DRAFT AI->>Case: record_timeline_event() → DRAFT Note over Case: Staged for review Human->>Case: Review, edit, approve/reject Human->>Case: Commit (password + HMAC signing) Note over Case: Only APPROVED items
appear in reports Human->>Case: aiir report --full ``` **案件 dashboard** 是主要的审查界面。检查人员审查发现和时间线事件,编辑字段(confidence, justification, observation, interpretation, MITRE IDs, IOCs),批准或拒绝项目,并提交决定 —— 所有这些都在浏览器中完成。提交按钮 (Shift+C) 使用挑战-响应认证:浏览器从检查员的密码派生 PBKDF2 key 并通过 HMAC 证明知识 —— 密码永远不会离开浏览器。CLI 的 `aiir approve` 从终端提供相同的功能。   ### 运行位置 | 组件 | 运行位置 | 端口 | 用途 | |-----------|---------|------|---------| | sift-gateway | SIFT | 4508 | 将 SIFT 本地 MCP 聚合在一个 HTTP 端点后 | | forensic-mcp | SIFT | (via gateway) | 发现、时间线、证据、TODOs、规范(12 个工具 + 14 个资源) | | case-mcp | SIFT | (via gateway) | 案件管理、审计查询、证据注册(14 个工具) | | report-mcp | SIFT | (via gateway) | 报告生成,包含配置文件、IOC 聚合、MITRE 映射(6 个工具) | | sift-mcp | SIFT | (via gateway) | Linux/SIFT 上受拒绝列表保护的取证工具执行(6 个工具) | | forensic-rag-mcp | SIFT | (via gateway) | 对 Sigma, MITRE ATT&CK, Atomic Red Team 等进行语义搜索 | | windows-triage-mcp | SIFT | (via gateway) | 离线 Windows 基线验证 | | opencti-mcp | SIFT | (via gateway) | 来自 OpenCTI 的威胁情报(10 个工具) | | case-dashboard | SIFT | (via gateway) | 基于浏览器的审查、批准和提交界面。主要审查 UI —— 无需 SSH。 | | wintools-mcp | Windows | 4624 | Windows 上受目录门控的取证工具执行(7 个工具) | | aiir CLI | SIFT | -- | 仅限人工:case init, evidence management, verification, exec。批准也可通过 dashboard 进行。远程检查员只需要 SSH 进行 CLI 专用操作。 | | forensic-knowledge | 任何地方 | -- | 共享 YAML 数据包(工具、工件、规范) | Gateway 将每个后端公开为单独的 MCP endpoint。客户端可以连接到聚合端点或单个后端: ``` http://localhost:4508/mcp # Aggregate (all tools) http://localhost:4508/mcp/forensic-mcp http://localhost:4508/mcp/case-mcp http://localhost:4508/mcp/report-mcp http://localhost:4508/mcp/sift-mcp http://localhost:4508/mcp/windows-triage-mcp http://localhost:4508/mcp/forensic-rag-mcp http://localhost:4508/mcp/opencti-mcp ``` ### 部署拓扑 两种主要的部署路径: - **路径 1 — 同机部署。** LLM client 直接在 SIFT 工作站上运行。无需 TLS 或 token 认证。应用所有取证控制(沙箱、审计 hook、密码门)。最简单的设置 —— 单机,一个安装程序。 - **路径 2 — 远程编排器。** LLM client 在单独的机器(笔记本电脑、台式机)上运行。通过带有 TLS 和 Bearer token 认证的网络连接到 gateway。检查员通过浏览器中的案件 dashboard(也由 gateway 提供服务)审查和提交发现。只有 CLI 专用操作才需要 SSH:case init, evidence register, evidence unlock, 和 exec。运行 `setup-sift.sh --remote` 以生成 TLS 证书并将 gateway 绑定到所有接口。纯 MCP 客户端(Claude Desktop, LibreChat)非常适合此路径 —— 它们只能通过经审计的 MCP 工具访问 SIFT,并且 dashboard 处理所有审查需求。 #### SIFT 上的独立分析员(路径 1) ``` graph LR subgraph sift ["SIFT Workstation"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM[forensic-mcp] CM[case-mcp] RM[report-mcp] SM[sift-mcp] FR[forensic-rag-mcp] WTR[windows-triage-mcp] OC[opencti-mcp] CASE[Case Directory] CC -->|"streamable-http"| GW BR -->|"HTTPS"| GW GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC FM --> CASE CM --> CASE RM --> CASE CLI --> CASE end ``` #### SIFT + Windows 取证工作站 ``` graph LR subgraph sift ["SIFT Workstation"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM[forensic-mcp] CM[case-mcp] RM[report-mcp] SM[sift-mcp] FR[forensic-rag-mcp] WTR[windows-triage-mcp] OC[opencti-mcp] CASE[Case Directory] CC -->|"streamable-http"| GW BR -->|"HTTPS"| GW GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC FM --> CASE CM --> CASE RM --> CASE CLI --> CASE end subgraph winbox ["Windows Forensic Workstation"] WAPI["wintools-mcp API
:4624"] WM["wintools-mcp
Windows tool execution"] WAPI --> WM end CC -->|"streamable-http"| WAPI WM -->|"SMB"| CASE ``` #### 带可选外部 MCP 的远程编排器(路径 2) ``` graph LR subgraph analyst ["Analyst Machine"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] end subgraph sift ["SIFT Workstation"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM[forensic-mcp] CM[case-mcp] RM[report-mcp] SM[sift-mcp] FR[forensic-rag-mcp] WTR[windows-triage-mcp] OC[opencti-mcp] FK[forensic-knowledge] CASE[Case Directory] GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC FM --> FK SM --> FK FM --> CASE CM --> CASE RM --> CASE CLI --> CASE end subgraph winbox ["Windows Forensic Workstation"] WAPI["wintools-mcp API
:4624"] WM["wintools-mcp
Windows tool execution"] WAPI --> WM end subgraph octi ["OpenCTI Instance"] OCTI[OpenCTI] end subgraph remnux ["REMnux Workstation"] RAPI["remnux-mcp API
:3000"] RMX["remnux-mcp
Malware analysis"] RAPI --> RMX end subgraph internet ["Internet"] ML["MS Learn MCP
(HTTPS)"] ZE["Zeltser IR Writing MCP
(HTTPS)"] end CC -->|"streamable-http"| GW CC -->|"streamable-http"| WAPI CC -->|"streamable-http"| RAPI CC -->|"HTTPS"| ML CC -->|"HTTPS"| ZE OC -->|"HTTP(S)"| OCTI BR -->|"HTTPS"| GW WM -->|"SMB"| CASE ``` #### 多检查员团队 ``` graph LR subgraph e1 ["Examiner 1 — SIFT Workstation"] CC1["LLM Client
(human interface)"] BR1["Browser
(human interface)"] CLI1["aiir CLI"] GW1["sift-gateway
:4508"] MCPs1["forensic-mcp · case-mcp · report-mcp
sift-mcp · forensic-rag-mcp
windows-triage-mcp · opencti-mcp"] CASE1["Case Directory"] CC1 -->|"streamable-http"| GW1 BR1 -->|"HTTPS"| GW1 GW1 -->|stdio| MCPs1 MCPs1 --> CASE1 CLI1 --> CASE1 end subgraph e2 ["Examiner 2 — SIFT Workstation"] CC2["LLM Client
(human interface)"] BR2["Browser
(human interface)"] CLI2["aiir CLI"] GW2["sift-gateway
:4508"] MCPs2["forensic-mcp · case-mcp · report-mcp
sift-mcp · forensic-rag-mcp
windows-triage-mcp · opencti-mcp"] CASE2["Case Directory"] CC2 -->|"streamable-http"| GW2 BR2 -->|"HTTPS"| GW2 GW2 -->|stdio| MCPs2 MCPs2 --> CASE2 CLI2 --> CASE2 end CASE1 <-->|"export / merge"| CASE2 ``` ### 案件目录结构 ``` cases/INC-2026-0219/ ├── CASE.yaml # Case metadata (name, status, examiner) ├── evidence/ # Original evidence (read-only after registration) ├── extractions/ # Extracted artifacts ├── reports/ # Generated reports ├── findings.json # F-alice-001, F-alice-002, ... ├── timeline.json # T-alice-001, ... ├── todos.json # TODO-alice-001, ... ├── evidence.json # Evidence registry ├── actions.jsonl # Investigative actions (append-only) ├── evidence_access.jsonl # Chain-of-custody log ├── approvals.jsonl # Approval audit trail ├── pending-reviews.json # Dashboard edits awaiting approval └── audit/ ├── forensic-mcp.jsonl ├── sift-mcp.jsonl ├── claude-code.jsonl # PostToolUse hook captures (Claude Code only) └── ... ``` ### 外部依赖项 - **Zeltser IR Writing MCP** — 报告生成所需。由 `aiir setup client` 自动配置。URL: https://website-mcp.zeltser.com/mcp (HTTPS, 无认证) ## 快速开始 ### SIFT Workstation 需要 Python 3.11+ 和 sudo 访问权限。安装程序处理一切:MCP server、gateway、aiir CLI、HMAC 验证账本、检查员身份和 LLM client 配置。当您选择 Claude Code 时,将部署额外的取证控制(kernel-level 沙箱、案件数据拒绝规则、PreToolUse 保护 hook、PostToolUse 审计 hook、来源强制执行、带 HMAC 签名的密码门控人工批准)。其他客户端仅获取 MCP 配置。 **快速版** — 仅核心平台,无数据库(~70 MB): ``` curl -fsSL https://raw.githubusercontent.com/AppliedIR/sift-mcp/main/quickstart.sh -o /tmp/aiir-quickstart.sh && bash /tmp/aiir-quickstart.sh ``` **推荐版** — 添加 RAG 知识库(来自 23 个安全来源的 22,000+ 条记录)和 Windows 审查数据库(260 万条基线记录),作为预构建快照下载。需要约 14 GB 磁盘空间: - ~7 GB — RAG embedding model 所需的 ML 依赖项 - ~6 GB — Windows 审查基线数据库(260 万行,解压后) - ~1 GB — RAG 索引、源代码和其他所有内容 ``` curl -fsSL https://raw.githubusercontent.com/AppliedIR/sift-mcp/main/quickstart.sh -o /tmp/aiir-quickstart.sh && bash /tmp/aiir-quickstart.sh --recommended ``` **自定义版** — 单独选择包、OpenCTI 集成或带 TLS 的远程访问: ``` git clone https://github.com/AppliedIR/sift-mcp.git cd sift-mcp ./setup-sift.sh ``` ### Windows 取证工作站(可选) ``` # 选项 1:git clone git clone https://github.com/AppliedIR/wintools-mcp.git; cd wintools-mcp # 选项 2:下载 ZIP (无需 git) Invoke-WebRequest https://github.com/AppliedIR/wintools-mcp/archive/refs/heads/main.zip -OutFile wintools.zip Expand-Archive wintools.zip -DestinationPath .; cd wintools-mcp-main ``` 然后运行安装程序: ``` .\scripts\setup-windows.ps1 ``` ## 安全注意事项 所有 AIIR 组件均假定在私有取证网络上运行,受防火墙保护,并且不暴露于来自互联网或潜在敌对系统的传入连接。该设计假定始终使用专用、隔离的系统。 加载到系统或其组件虚拟机、计算机或实例中的任何数据都面临暴露于底层 AI 的风险。仅将您愿意发送给 AI 提供商的数据放置在这些系统上。 传出互联网连接是报告生成(Zeltser IR Writing MCP)所需的,并可选用于威胁情报和文档。不应允许来自外部系统的传入连接。 AIIR 的设计使得 AI 交互通过 MCP 工具流动,从而实现安全控制和审计跟踪。具有直接 shell 访问权限的客户端(如 Claude Code)也可以在 MCP 之外运行,但 `aiir setup client` 为 Claude Code 部署取证控制:kernel-level 沙箱限制 Bash 写入,拒绝规则阻止对案件数据文件的 Edit/Write,PreToolUse hook 防止 Bash 重定向到受保护文件,PostToolUse hook 将每个 Bash 命令捕获到审计跟踪,来源强制执行确保发现可追溯到证据,HMAC 验证账本提供已批准发现未被篡改的加密证明。AIIR 并非设计用于防御恶意 AI 或约束您部署的 AI client。 ## 命令 大多数 `aiir` CLI 操作通过 case-mcp、forensic-mcp 和 report-mcp 具有 MCP 等效项。当使用连接 MCP 的客户端工作时,您可以要求 AI 处理案件管理、证据注册、报告生成等 —— AI 通过经审计的 MCP 工具而不是直接 CLI 调用来操作。 下面需要在终端(`/dev/tty`)进行人工交互的命令**不能**委托给 AI。这些是有意的人工介入检查点 —— 它们使用密码输入、交互式审查或终端确认来确保人工检查员保持对批准、拒绝和安全敏感操作的控制。 ### 仅限人工命令(需要终端) 这些命令直接从 `/dev/tty` 读取,无法由 AI client 运行,即使是 via Bash。这是设计使然 —— 它们是人工介入控制,确保检查员审查并批准所有发现。 #### 批准 ``` aiir approve # Interactive review of all DRAFT items aiir approve F-alice-001 F-alice-002 T-alice-001 # Approve specific IDs aiir approve F-alice-001 --edit # Edit in $EDITOR before approving aiir approve F-alice-001 --note "Malware family unconfirmed" # Approve with examiner note aiir approve --by jane # Filter to IDs with jane's examiner prefix aiir approve --findings-only # Skip timeline events aiir approve --timeline-only # Skip findings aiir approve --review # Apply pending dashboard edits ``` 需要通过 `/dev/tty` 入密码。批准的发现使用 PBKDF2 派生密钥进行 HMAC 签名。`--review` 标志应用在 dashboard 中所做的编辑(存储在 `pending-reviews.json` 中),重新计算内容哈希和 HMAC 签名,然后删除待处理文件。或者,使用 dashboard 的提交按钮 (Shift+C),它通过挑战-响应认证执行相同的操作 —— 密码永远不会离开浏览器。 #### 拒绝 ``` aiir reject F-alice-003 --reason "Insufficient evidence for attribution" aiir reject F-alice-003 T-alice-002 --reason "Contradicted by memory analysis" ``` 需要通过 `/dev/tty` 确认密码。 #### 执行 ``` aiir exec --purpose "Extract MFT from image" -- fls -r -m / image.E01 ``` 需要 `/dev/tty` 确认。记录到 `audit/cli-exec.jsonl`。当不通过 MCP 操作时,使用此命令进行带有审计跟踪的手动工具执行。 #### evidence 解锁 ``` aiir unlock-evidence # Directory chmod 755, files remain 444 aiir evidence unlock ``` 需要 `/dev/tty` 确认。解锁证据允许对证据目录进行写入。 #### 密码管理 ``` aiir config --setup-password # Set approval password (PBKDF2-hashed, min 8 chars) aiir config --reset-password # Reset password (requires current, re-signs ledger) ``` 密码输入通过 termios 使用 `/dev/tty` 的掩码输入。无回显,无 stdin —— AI 无法读取或提供密码。 #### HMAC 验证 ``` aiir review --findings --verify # Cross-check content hashes + HMAC verification aiir review --findings --verify --mine # HMAC verification for current examiner only ``` 验证需要检查员的密码来派生 HMAC key 并确认完整性。 ### 所有命令 其余命令在使用连接 MCP 的客户端时也可以通过 MCP 工具(case-mcp, forensic-mcp, report-mcp)执行。此处的 CLI 等效项列出供参考和在 MCP 会话之外使用。 #### 仪表板 ``` aiir dashboard # Open case review dashboard in browser ``` 打开活动案件的 case-dashboard Web UI。Dashboard 是主要的审查界面 —— 检查员可以在浏览器中完全审查、编辑、批准、拒绝和提交发现。使用提交按钮 (Shift+C) 通过挑战-响应认证应用决定。或者,`aiir approve --review` 从 CLI 应用待处理的编辑。 #### case ``` aiir case init "Ransomware Investigation" # Create a new case aiir case close INC-2026-02191200 # Close a case by ID aiir case activate INC-2026-02191200 # Set active case aiir case migrate # Migrate to flat layout (see below) ``` #### 审查 ``` aiir review # Case summary (counts by status) aiir review --findings # Findings table aiir review --findings --detail # Full finding detail aiir review --iocs # IOCs grouped by approval status aiir review --timeline # Timeline events aiir review --timeline --status APPROVED # Filter timeline by status aiir review --timeline --start 2026-01-01 --end 2026-01-31 # Filter by date range aiir review --timeline --type execution # Filter by event type aiir review --evidence # Evidence registry and access log aiir review --audit --limit 100 # Audit trail (last N entries) aiir review --todos --open # Open TODOs ``` #### 待办 ``` aiir todo # List open TODOs aiir todo --all # Include completed aiir todo add "Run volatility on server-04" --assignee jane --priority high --finding F-alice-003 aiir todo complete TODO-alice-001 aiir todo update TODO-alice-002 --note "Waiting on third party" --priority low ``` #### evidence ``` aiir register-evidence /path/to/image.E01 --description "Disk image from workstation" aiir lock-evidence # All files chmod 444, directory chmod 555 aiir evidence register /path/to/image.E01 --description "Disk image" aiir evidence list aiir evidence verify aiir evidence log [--path]
aiir evidence lock
```
#### 导出 / 合并
```
aiir export --file steve-findings.json # Export findings for sharing
aiir merge --file jane-findings.json # Merge another examiner's findings
```
#### 报告
```
aiir report --full [--save ]
aiir report --executive-summary [--save ]
aiir report --timeline [--from --to ] [--save ]
aiir report --ioc [--save ]
aiir report --findings F-alice-001,F-alice-002 [--save ]
aiir report --status-brief [--save ]
```
#### 审计
```
aiir audit log [--limit 100] [--mcp sift-mcp] [--tool run_command]
aiir audit summary
```
#### 服务
```
aiir service status # Show running backends + health
aiir service start forensic-rag # Start a backend
aiir service stop windows-triage # Stop a backend
aiir service restart sift-mcp # Restart a backend
```
#### case 迁移
```
aiir case migrate # Migrate primary examiner data to flat layout
aiir case migrate --examiner alice # Specify examiner
aiir case migrate --import-all # Merge all examiners' data
```
#### 配置
```
aiir config --examiner "jane.doe" # Set examiner identity
aiir config --show # Show current configuration
```
#### 更新
```
aiir update # Pull latest, reinstall, redeploy, restart
aiir update --check # Check for updates without applying
aiir update --no-restart # Skip gateway restart after update
```
#### 加入
```
aiir join --sift SIFT_URL --code CODE # Join from remote machine using join code
aiir join --sift SIFT_URL --code CODE --wintools # Join as wintools machine (registers backend)
```
用一次性加入代码交换 gateway 凭证。在远程机器(分析员笔记本电脑或 Windows 取证工作站)上运行。加入代码通过 SIFT 上的 `aiir setup join-code` 生成。凭证以受限权限 (0600) 保存到 `~/.aiir/config.yaml`。
#### 设置
```
aiir setup client # Interactive client configuration (recommended)
aiir setup test # Test MCP server connectivity
```
#### 设置客户端
为您的 LLM client 生成 Streamable HTTP 配置:
```
aiir setup client # Interactive wizard
aiir setup client --client=claude-code --sift=http://127.0.0.1:4508 -y # Local solo
aiir setup client --sift=SIFT_IP:4508 --windows=WIN_IP:4624 # SIFT + Windows
```
对于远程编排器设置(路径 2),远程检查员运行特定于平台的设置脚本,该脚本创建包含 MCP 配置、取证控制和规范文档的 `~/aiir/` 工作区:
```
# Linux
curl -sSL https://raw.githubusercontent.com/AppliedIR/aiir/main/setup-client-linux.sh \
| bash -s -- --sift=https://SIFT_IP:4508 --code=XXXX-XXXX
# macOS
curl -sSL https://raw.githubusercontent.com/AppliedIR/aiir/main/setup-client-macos.sh \
| bash -s -- --sift=https://SIFT_IP:4508 --code=XXXX-XXXX
```
```
# Windows
Invoke-WebRequest -Uri https://raw.githubusercontent.com/AppliedIR/aiir/main/setup-client-windows.ps1 -OutFile setup-client-windows.ps1
.\setup-client-windows.ps1 -Sift https://SIFT_IP:4508 -Code XXXX-XXXX
```
始终从 `~/aiir/` 或子目录启动您的 LLM client。取证控制仅在从工作区内启动时适用。要卸载,请使用 `--uninstall` (Linux/macOS) 或 `-Uninstall` (Windows) 重新运行设置脚本。
Claude Desktop 的配置文件仅支持 stdio 传输。[mcp-remote](https://www.npmjs.com/package/mcp-remote) bridge 用于连接到 gateway。`aiir setup client --client=claude-desktop` 自动生成正确的 mcp-remote 配置。
| 客户端 | 平台 | 配置文件 | 附加项 |
|--------|-----------|-------------|--------|
| Claude Code | Linux, macOS, Windows | `~/aiir/.mcp.json` 或 `~/.claude.json` (SIFT) | `CLAUDE.md`, `settings.json`, 沙箱, 审计 hook |
| Claude Desktop | macOS, Windows | `claude_desktop_config.json` (见说明) | 需要 mcp-remote bridge。来自 AGENTS.md 的项目指令 |
| Cherry Studio | Linux, macOS, Windows | JSON 导入(手动) | `baseUrl` 字段, `streamableHttp` 类型 |
| LibreChat | 任意(浏览器) | `librechat.yaml`(`mcpServers` 部分) | AIIR 生成要合并的 `librechat_mcp.yaml` 参考 |
| 其他 | 任意 | `aiir-mcp-config.json` | 手动集成 |
Windows 上的 Claude Code 需要 Git for Windows(提供 Git Bash)或 WSL。Claude Desktop 在 Linux 上不可用。Claude Desktop 的配置文件仅支持 stdio 传输 —— `aiir setup client` 向导自动生成 mcp-remote bridge 配置。配置路径特定于平台:macOS 上为 `~/Library/Application Support/Claude/claude_desktop_config.json`,Windows 上为 `%APPDATA%\Claude\claude_desktop_config.json`。任何支持带有 Bearer token 认证标头的 Streamable HTTP 传输的 MCP 客户端都可以工作 —— gateway 不是特定于客户端的。
## 检查员身份
每次批准、拒绝和命令执行都记录检查员身份。解析顺序:
| 优先级 | 来源 | 示例 |
|----------|--------|---------|
| 1 | `--examiner` 标志 | `aiir approve --examiner jane.doe F-jane-001` |
| 2 | `AIIR_EXAMINER` 环境变量 | `export AIIR_EXAMINER=jane.doe` |
| 3 | `~/.aiir/config.yaml` | `examiner: jane.doe` |
| 4 | `AIIR_ANALYST` 环境变量 | 已弃用的回退 |
| 5 | OS 用户名 | 如果未配置则发出警告 |
## 仓库映射
| 仓库 | 用途 |
|------|---------|
| [sift-mcp](https://github.com/AppliedIR/sift-mcp) | Monorepo:11 个 SIFT 包(forensic-mcp, case-mcp, report-mcp, sift-mcp, sift-gateway, case-dashboard, forensic-knowledge, forensic-rag, windows-triage, opencti, sift-common) |
| [wintools-mcp](https://github.com/AppliedIR/wintools-mcp) | Windows 取证工具执行(7 个工具,22 个目录条目) |
| [aiir](https://github.com/AppliedIR/aiir) | CLI、架构参考 |
## 更新
### 完整 AIIR
```
aiir update # Pull latest code, reinstall packages, redeploy controls, restart gateway
aiir update --check # Check for updates without applying
aiir update --no-restart # Update without restarting the gateway
```
update 命令从两个 repo(sift-mcp 和 aiir)拉取最新代码,
重新安装所有包,重新部署取证控制,重启 gateway,
并运行连接性冒烟测试。
## 从 Lite 升级到 Full
两种模式共享相同的 Python venv、审查数据库和 RAG 索引。Full
AIIR 添加了 gateway(一个 HTTP 端点后的 7 个 MCP 后端)、4 个额外的
MCP server(forensic-mcp, case-mcp, report-mcp, sift-mcp)、基于 Web 的审查
dashboard、结构化案件管理、沙箱强制执行和 HMAC 签名
批准。
要升级,请从现有的 sift-mcp 克隆中运行 `setup-sift.sh`。
安装程序重用现有的 venv 和数据库。Lite 案件数据(markdown
文件)不会自动迁移到完整案件数据(结构化 JSON)—— 从头开始
或手动转移发现。
## 证据处理
切勿将原始证据放置在任何 AIIR 系统上。仅使用具有经过验证的原始件或备份的工作副本。AIIR 工作站通过连接 AI 的工具处理证据,加载到这些系统中的任何数据都可能传输到配置的 AI 提供商。将所有 AIIR 系统视为分析环境,而非证据存储。
证据完整性通过注册时记录的 SHA-256 哈希进行验证。检查员可以选择通过 `aiir evidence lock` 将证据锁定为只读。适当的证据完整性取决于在此平台之外存在的经过验证的哈希、写保护器和监管链程序。
案件目录可以驻留在外部或可移动媒体上。ext4 是首选以完全支持权限。NTFS 和 exFAT 是可接受的,但文件权限控制(只读保护)将悄然失效。由于 4 GB 文件大小限制,不建议使用 FAT32。
## 负责任的使用
本项目演示了 AI 辅助事件响应的能力。虽然已采取措施执行人工介入控制,但最终每位检查员都有责任确保其发现准确且完整。最终责任在于人。AI 就像十六进制编辑器一样,是供受过适当培训的事件响应专业人员使用的工具。用户有责任确保其使用符合适用法律、法规和组织政策。
## 致谢
架构和方向由 Steve Anson 负责。实现由 Claude Code (Anthropic) 完成。
## 明确声明
我从事 DFIR。我不是开发者。如果没有 Claude Code 处理实现,这个项目就不会存在。虽然在设计、测试和审查方面投入了大量精力,但我充分承认,我在某些地方可能一直在努力工作,而不是聪明地工作。我的意图是围绕如何利用这项技术提高事件响应效率的方式展开讨论,同时确保准确性的最终责任仍由人工检查员承担。
## 许可证
MIT License - 见 [LICENSE](LICENSE)
(human interface)"] FR["forensic-rag-mcp
Knowledge search"] WTR["windows-triage-mcp
Baseline validation"] CC -->|stdio| FR CC -->|stdio| WTR end ``` #### AIIR Lite 及可选附加组件 ``` graph LR subgraph analyst ["Analyst Machine"] CC["Claude Code
(human interface)"] FR["forensic-rag-mcp
Knowledge search"] WTR["windows-triage-mcp
Baseline validation"] OC["opencti-mcp
Threat intelligence"] CC -->|stdio| FR CC -->|stdio| WTR CC -->|stdio| OC end subgraph octi ["OpenCTI Instance"] OCTI[OpenCTI] end subgraph remnux ["REMnux Workstation"] RAPI["remnux-mcp API
:3000"] RMX["remnux-mcp
Malware analysis"] RAPI --> RMX end subgraph winbox ["Windows Forensic Workstation"] WAPI["wintools-mcp API
:4624"] WMX["wintools-mcp
Windows tool execution"] WAPI --> WMX end subgraph internet ["Internet"] ML["MS Learn MCP
(HTTPS)"] ZE["Zeltser IR Writing MCP
(HTTPS)"] end CC -->|"streamable-http"| RAPI CC -->|"streamable-http"| WAPI CC -->|"HTTPS"| ML CC -->|"HTTPS"| ZE OC -->|"HTTP(S)"| OCTI ``` | 连接 | 协议 | 说明 | |-----------|----------|-------| | Claude Code → forensic-rag-mcp | stdio | 本地 Python 进程,始终存在 | | Claude Code → windows-triage-mcp | stdio | 本地 Python 进程,始终存在 | | Claude Code → opencti-mcp | stdio | 本地 Python 进程,通过 HTTP(S) 连接到 OpenCTI | | opencti-mcp → OpenCTI Instance | HTTP(S) | opencti-mcp 在本地运行,调用 OpenCTI server | | Claude Code → remnux-mcp | streamable-http | 远程,位于其自己的 REMnux 工作站上 | | Claude Code → wintools-mcp | streamable-http | 远程,位于其自己的 Windows 工作站上 | | Claude Code → MS Learn MCP | HTTPS | `https://learn.microsoft.com/api/mcp` — .mcp.json 中的 streamable-http 类型 | | Claude Code → Zeltser IR Writing MCP | HTTPS | `https://website-mcp.zeltser.com/mcp` — .mcp.json 中的 streamable-http 类型 | 无 gateway,无沙箱,无拒绝规则。Claude 通过 Bash 直接运行取证工具。取证规范通过 prompt hook 和参考文档进行建议和强化,但 Claude Code 可以选择忽略它们。有关详细信息和可选附加组件,请参阅 [sift-mcp README](https://github.com/AppliedIR/sift-mcp#aiir-lite--get-started-in-minutes)。 ## Full AIIR — 结构化强制执行 对于需要更明确的人工介入审批的用例,完整的 AIIR 套件通过加密签名、密码门控审批和多层控制来确保问责制并强制执行对发现的人工审查。 Full AIIR **与 LLM client 无关** —— 通过 gateway 连接任何兼容 MCP 的客户端。支持的客户端包括 Claude Code, Claude Desktop, LibreChat, Cherry Studio,以及任何支持带有 Bearer token 认证的 Streamable HTTP 传输的纯 MCP 客户端。取证规范在结构上由 gateway 和 MCP 层提供,而不是通过特定于客户端的 prompt engineering,因此无论哪个 AI 模型或客户端驱动调查,都适用相同的严谨性。 ## 平台架构 LLM client、案件 dashboard 和 aiir CLI 是三个面向人的接口。**案件 dashboard** 是由 gateway 提供服务的基于浏览器的审查界面 —— 检查人员在浏览器中完全通过挑战-响应认证来审查、编辑、批准、拒绝和提交发现。**aiir CLI** 在 SIFT 工作站上运行,用于案件管理、证据处理和验证。当 LLM client 在单独的机器上运行(路径 2)时,检查人员通过 gateway(HTTPS)访问 dashboard,并且只需要 SSH 进行 CLI 专用操作(case init, evidence register, unlock, exec, verify)。 ### 核心组件映射 ``` graph TB subgraph analyst ["Analyst Machine (Path 2)"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] end subgraph sift ["SIFT Workstation"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM["forensic-mcp
Findings + discipline"] CM["case-mcp
Case management"] RM["report-mcp
Report generation"] SM["sift-mcp
Linux tool execution"] FR["forensic-rag-mcp
Knowledge search"] WTR["windows-triage-mcp
Baseline validation"] OC["opencti-mcp
Threat intelligence"] CD["case-dashboard
Review + approval"] FK["forensic-knowledge
(shared YAML data package)"] CASE["Case Directory"] GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC GW --> CD FM --> FK SM --> FK FM --> CASE CM --> CASE RM --> CASE CD --> CASE CLI --> CASE end subgraph winbox ["Windows Forensic Workstation (optional)"] WAPI["wintools-mcp API
:4624"] WM["wintools-mcp
Windows tool execution"] FK2["forensic-knowledge"] WAPI --> WM WM --> FK2 end CC -->|"streamable-http"| GW CC -->|"streamable-http"| WAPI BR -->|"HTTPS"| GW WM -->|"SMB"| CASE ``` 在路径 1(同机部署)中,一切都在 SIFT 上运行 —— 不需要远程访问。在路径 2 中,LLM client 和浏览器在分析员机器上运行;浏览器通过 gateway 上的 HTTPS 连接到 dashboard。 ### 人工介入工作流 所有发现和时间线事件均由 AI 暂存为 DRAFT 状态。只有人工检查员才能批准或拒绝它们 —— 通过案件 dashboard(浏览器)或 aiir CLI。两条路径都产生相同的 HMAC 签名批准记录。AI 不能批准自己的发现。 ``` sequenceDiagram participant AI as LLM + MCP Tools participant Case as Case Directory participant Human as Examiner
(Dashboard or CLI) AI->>Case: record_finding() → DRAFT AI->>Case: record_timeline_event() → DRAFT Note over Case: Staged for review Human->>Case: Review, edit, approve/reject Human->>Case: Commit (password + HMAC signing) Note over Case: Only APPROVED items
appear in reports Human->>Case: aiir report --full ``` **案件 dashboard** 是主要的审查界面。检查人员审查发现和时间线事件,编辑字段(confidence, justification, observation, interpretation, MITRE IDs, IOCs),批准或拒绝项目,并提交决定 —— 所有这些都在浏览器中完成。提交按钮 (Shift+C) 使用挑战-响应认证:浏览器从检查员的密码派生 PBKDF2 key 并通过 HMAC 证明知识 —— 密码永远不会离开浏览器。CLI 的 `aiir approve` 从终端提供相同的功能。   ### 运行位置 | 组件 | 运行位置 | 端口 | 用途 | |-----------|---------|------|---------| | sift-gateway | SIFT | 4508 | 将 SIFT 本地 MCP 聚合在一个 HTTP 端点后 | | forensic-mcp | SIFT | (via gateway) | 发现、时间线、证据、TODOs、规范(12 个工具 + 14 个资源) | | case-mcp | SIFT | (via gateway) | 案件管理、审计查询、证据注册(14 个工具) | | report-mcp | SIFT | (via gateway) | 报告生成,包含配置文件、IOC 聚合、MITRE 映射(6 个工具) | | sift-mcp | SIFT | (via gateway) | Linux/SIFT 上受拒绝列表保护的取证工具执行(6 个工具) | | forensic-rag-mcp | SIFT | (via gateway) | 对 Sigma, MITRE ATT&CK, Atomic Red Team 等进行语义搜索 | | windows-triage-mcp | SIFT | (via gateway) | 离线 Windows 基线验证 | | opencti-mcp | SIFT | (via gateway) | 来自 OpenCTI 的威胁情报(10 个工具) | | case-dashboard | SIFT | (via gateway) | 基于浏览器的审查、批准和提交界面。主要审查 UI —— 无需 SSH。 | | wintools-mcp | Windows | 4624 | Windows 上受目录门控的取证工具执行(7 个工具) | | aiir CLI | SIFT | -- | 仅限人工:case init, evidence management, verification, exec。批准也可通过 dashboard 进行。远程检查员只需要 SSH 进行 CLI 专用操作。 | | forensic-knowledge | 任何地方 | -- | 共享 YAML 数据包(工具、工件、规范) | Gateway 将每个后端公开为单独的 MCP endpoint。客户端可以连接到聚合端点或单个后端: ``` http://localhost:4508/mcp # Aggregate (all tools) http://localhost:4508/mcp/forensic-mcp http://localhost:4508/mcp/case-mcp http://localhost:4508/mcp/report-mcp http://localhost:4508/mcp/sift-mcp http://localhost:4508/mcp/windows-triage-mcp http://localhost:4508/mcp/forensic-rag-mcp http://localhost:4508/mcp/opencti-mcp ``` ### 部署拓扑 两种主要的部署路径: - **路径 1 — 同机部署。** LLM client 直接在 SIFT 工作站上运行。无需 TLS 或 token 认证。应用所有取证控制(沙箱、审计 hook、密码门)。最简单的设置 —— 单机,一个安装程序。 - **路径 2 — 远程编排器。** LLM client 在单独的机器(笔记本电脑、台式机)上运行。通过带有 TLS 和 Bearer token 认证的网络连接到 gateway。检查员通过浏览器中的案件 dashboard(也由 gateway 提供服务)审查和提交发现。只有 CLI 专用操作才需要 SSH:case init, evidence register, evidence unlock, 和 exec。运行 `setup-sift.sh --remote` 以生成 TLS 证书并将 gateway 绑定到所有接口。纯 MCP 客户端(Claude Desktop, LibreChat)非常适合此路径 —— 它们只能通过经审计的 MCP 工具访问 SIFT,并且 dashboard 处理所有审查需求。 #### SIFT 上的独立分析员(路径 1) ``` graph LR subgraph sift ["SIFT Workstation"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM[forensic-mcp] CM[case-mcp] RM[report-mcp] SM[sift-mcp] FR[forensic-rag-mcp] WTR[windows-triage-mcp] OC[opencti-mcp] CASE[Case Directory] CC -->|"streamable-http"| GW BR -->|"HTTPS"| GW GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC FM --> CASE CM --> CASE RM --> CASE CLI --> CASE end ``` #### SIFT + Windows 取证工作站 ``` graph LR subgraph sift ["SIFT Workstation"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM[forensic-mcp] CM[case-mcp] RM[report-mcp] SM[sift-mcp] FR[forensic-rag-mcp] WTR[windows-triage-mcp] OC[opencti-mcp] CASE[Case Directory] CC -->|"streamable-http"| GW BR -->|"HTTPS"| GW GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC FM --> CASE CM --> CASE RM --> CASE CLI --> CASE end subgraph winbox ["Windows Forensic Workstation"] WAPI["wintools-mcp API
:4624"] WM["wintools-mcp
Windows tool execution"] WAPI --> WM end CC -->|"streamable-http"| WAPI WM -->|"SMB"| CASE ``` #### 带可选外部 MCP 的远程编排器(路径 2) ``` graph LR subgraph analyst ["Analyst Machine"] CC["LLM Client
(human interface)"] BR["Browser
(human interface)"] end subgraph sift ["SIFT Workstation"] CLI["aiir CLI"] GW["sift-gateway
:4508"] FM[forensic-mcp] CM[case-mcp] RM[report-mcp] SM[sift-mcp] FR[forensic-rag-mcp] WTR[windows-triage-mcp] OC[opencti-mcp] FK[forensic-knowledge] CASE[Case Directory] GW -->|stdio| FM GW -->|stdio| CM GW -->|stdio| RM GW -->|stdio| SM GW -->|stdio| FR GW -->|stdio| WTR GW -->|stdio| OC FM --> FK SM --> FK FM --> CASE CM --> CASE RM --> CASE CLI --> CASE end subgraph winbox ["Windows Forensic Workstation"] WAPI["wintools-mcp API
:4624"] WM["wintools-mcp
Windows tool execution"] WAPI --> WM end subgraph octi ["OpenCTI Instance"] OCTI[OpenCTI] end subgraph remnux ["REMnux Workstation"] RAPI["remnux-mcp API
:3000"] RMX["remnux-mcp
Malware analysis"] RAPI --> RMX end subgraph internet ["Internet"] ML["MS Learn MCP
(HTTPS)"] ZE["Zeltser IR Writing MCP
(HTTPS)"] end CC -->|"streamable-http"| GW CC -->|"streamable-http"| WAPI CC -->|"streamable-http"| RAPI CC -->|"HTTPS"| ML CC -->|"HTTPS"| ZE OC -->|"HTTP(S)"| OCTI BR -->|"HTTPS"| GW WM -->|"SMB"| CASE ``` #### 多检查员团队 ``` graph LR subgraph e1 ["Examiner 1 — SIFT Workstation"] CC1["LLM Client
(human interface)"] BR1["Browser
(human interface)"] CLI1["aiir CLI"] GW1["sift-gateway
:4508"] MCPs1["forensic-mcp · case-mcp · report-mcp
sift-mcp · forensic-rag-mcp
windows-triage-mcp · opencti-mcp"] CASE1["Case Directory"] CC1 -->|"streamable-http"| GW1 BR1 -->|"HTTPS"| GW1 GW1 -->|stdio| MCPs1 MCPs1 --> CASE1 CLI1 --> CASE1 end subgraph e2 ["Examiner 2 — SIFT Workstation"] CC2["LLM Client
(human interface)"] BR2["Browser
(human interface)"] CLI2["aiir CLI"] GW2["sift-gateway
:4508"] MCPs2["forensic-mcp · case-mcp · report-mcp
sift-mcp · forensic-rag-mcp
windows-triage-mcp · opencti-mcp"] CASE2["Case Directory"] CC2 -->|"streamable-http"| GW2 BR2 -->|"HTTPS"| GW2 GW2 -->|stdio| MCPs2 MCPs2 --> CASE2 CLI2 --> CASE2 end CASE1 <-->|"export / merge"| CASE2 ``` ### 案件目录结构 ``` cases/INC-2026-0219/ ├── CASE.yaml # Case metadata (name, status, examiner) ├── evidence/ # Original evidence (read-only after registration) ├── extractions/ # Extracted artifacts ├── reports/ # Generated reports ├── findings.json # F-alice-001, F-alice-002, ... ├── timeline.json # T-alice-001, ... ├── todos.json # TODO-alice-001, ... ├── evidence.json # Evidence registry ├── actions.jsonl # Investigative actions (append-only) ├── evidence_access.jsonl # Chain-of-custody log ├── approvals.jsonl # Approval audit trail ├── pending-reviews.json # Dashboard edits awaiting approval └── audit/ ├── forensic-mcp.jsonl ├── sift-mcp.jsonl ├── claude-code.jsonl # PostToolUse hook captures (Claude Code only) └── ... ``` ### 外部依赖项 - **Zeltser IR Writing MCP** — 报告生成所需。由 `aiir setup client` 自动配置。URL: https://website-mcp.zeltser.com/mcp (HTTPS, 无认证) ## 快速开始 ### SIFT Workstation 需要 Python 3.11+ 和 sudo 访问权限。安装程序处理一切:MCP server、gateway、aiir CLI、HMAC 验证账本、检查员身份和 LLM client 配置。当您选择 Claude Code 时,将部署额外的取证控制(kernel-level 沙箱、案件数据拒绝规则、PreToolUse 保护 hook、PostToolUse 审计 hook、来源强制执行、带 HMAC 签名的密码门控人工批准)。其他客户端仅获取 MCP 配置。 **快速版** — 仅核心平台,无数据库(~70 MB): ``` curl -fsSL https://raw.githubusercontent.com/AppliedIR/sift-mcp/main/quickstart.sh -o /tmp/aiir-quickstart.sh && bash /tmp/aiir-quickstart.sh ``` **推荐版** — 添加 RAG 知识库(来自 23 个安全来源的 22,000+ 条记录)和 Windows 审查数据库(260 万条基线记录),作为预构建快照下载。需要约 14 GB 磁盘空间: - ~7 GB — RAG embedding model 所需的 ML 依赖项 - ~6 GB — Windows 审查基线数据库(260 万行,解压后) - ~1 GB — RAG 索引、源代码和其他所有内容 ``` curl -fsSL https://raw.githubusercontent.com/AppliedIR/sift-mcp/main/quickstart.sh -o /tmp/aiir-quickstart.sh && bash /tmp/aiir-quickstart.sh --recommended ``` **自定义版** — 单独选择包、OpenCTI 集成或带 TLS 的远程访问: ``` git clone https://github.com/AppliedIR/sift-mcp.git cd sift-mcp ./setup-sift.sh ``` ### Windows 取证工作站(可选) ``` # 选项 1:git clone git clone https://github.com/AppliedIR/wintools-mcp.git; cd wintools-mcp # 选项 2:下载 ZIP (无需 git) Invoke-WebRequest https://github.com/AppliedIR/wintools-mcp/archive/refs/heads/main.zip -OutFile wintools.zip Expand-Archive wintools.zip -DestinationPath .; cd wintools-mcp-main ``` 然后运行安装程序: ``` .\scripts\setup-windows.ps1 ``` ## 安全注意事项 所有 AIIR 组件均假定在私有取证网络上运行,受防火墙保护,并且不暴露于来自互联网或潜在敌对系统的传入连接。该设计假定始终使用专用、隔离的系统。 加载到系统或其组件虚拟机、计算机或实例中的任何数据都面临暴露于底层 AI 的风险。仅将您愿意发送给 AI 提供商的数据放置在这些系统上。 传出互联网连接是报告生成(Zeltser IR Writing MCP)所需的,并可选用于威胁情报和文档。不应允许来自外部系统的传入连接。 AIIR 的设计使得 AI 交互通过 MCP 工具流动,从而实现安全控制和审计跟踪。具有直接 shell 访问权限的客户端(如 Claude Code)也可以在 MCP 之外运行,但 `aiir setup client` 为 Claude Code 部署取证控制:kernel-level 沙箱限制 Bash 写入,拒绝规则阻止对案件数据文件的 Edit/Write,PreToolUse hook 防止 Bash 重定向到受保护文件,PostToolUse hook 将每个 Bash 命令捕获到审计跟踪,来源强制执行确保发现可追溯到证据,HMAC 验证账本提供已批准发现未被篡改的加密证明。AIIR 并非设计用于防御恶意 AI 或约束您部署的 AI client。 ## 命令 大多数 `aiir` CLI 操作通过 case-mcp、forensic-mcp 和 report-mcp 具有 MCP 等效项。当使用连接 MCP 的客户端工作时,您可以要求 AI 处理案件管理、证据注册、报告生成等 —— AI 通过经审计的 MCP 工具而不是直接 CLI 调用来操作。 下面需要在终端(`/dev/tty`)进行人工交互的命令**不能**委托给 AI。这些是有意的人工介入检查点 —— 它们使用密码输入、交互式审查或终端确认来确保人工检查员保持对批准、拒绝和安全敏感操作的控制。 ### 仅限人工命令(需要终端) 这些命令直接从 `/dev/tty` 读取,无法由 AI client 运行,即使是 via Bash。这是设计使然 —— 它们是人工介入控制,确保检查员审查并批准所有发现。 #### 批准 ``` aiir approve # Interactive review of all DRAFT items aiir approve F-alice-001 F-alice-002 T-alice-001 # Approve specific IDs aiir approve F-alice-001 --edit # Edit in $EDITOR before approving aiir approve F-alice-001 --note "Malware family unconfirmed" # Approve with examiner note aiir approve --by jane # Filter to IDs with jane's examiner prefix aiir approve --findings-only # Skip timeline events aiir approve --timeline-only # Skip findings aiir approve --review # Apply pending dashboard edits ``` 需要通过 `/dev/tty` 入密码。批准的发现使用 PBKDF2 派生密钥进行 HMAC 签名。`--review` 标志应用在 dashboard 中所做的编辑(存储在 `pending-reviews.json` 中),重新计算内容哈希和 HMAC 签名,然后删除待处理文件。或者,使用 dashboard 的提交按钮 (Shift+C),它通过挑战-响应认证执行相同的操作 —— 密码永远不会离开浏览器。 #### 拒绝 ``` aiir reject F-alice-003 --reason "Insufficient evidence for attribution" aiir reject F-alice-003 T-alice-002 --reason "Contradicted by memory analysis" ``` 需要通过 `/dev/tty` 确认密码。 #### 执行 ``` aiir exec --purpose "Extract MFT from image" -- fls -r -m / image.E01 ``` 需要 `/dev/tty` 确认。记录到 `audit/cli-exec.jsonl`。当不通过 MCP 操作时,使用此命令进行带有审计跟踪的手动工具执行。 #### evidence 解锁 ``` aiir unlock-evidence # Directory chmod 755, files remain 444 aiir evidence unlock ``` 需要 `/dev/tty` 确认。解锁证据允许对证据目录进行写入。 #### 密码管理 ``` aiir config --setup-password # Set approval password (PBKDF2-hashed, min 8 chars) aiir config --reset-password # Reset password (requires current, re-signs ledger) ``` 密码输入通过 termios 使用 `/dev/tty` 的掩码输入。无回显,无 stdin —— AI 无法读取或提供密码。 #### HMAC 验证 ``` aiir review --findings --verify # Cross-check content hashes + HMAC verification aiir review --findings --verify --mine # HMAC verification for current examiner only ``` 验证需要检查员的密码来派生 HMAC key 并确认完整性。 ### 所有命令 其余命令在使用连接 MCP 的客户端时也可以通过 MCP 工具(case-mcp, forensic-mcp, report-mcp)执行。此处的 CLI 等效项列出供参考和在 MCP 会话之外使用。 #### 仪表板 ``` aiir dashboard # Open case review dashboard in browser ``` 打开活动案件的 case-dashboard Web UI。Dashboard 是主要的审查界面 —— 检查员可以在浏览器中完全审查、编辑、批准、拒绝和提交发现。使用提交按钮 (Shift+C) 通过挑战-响应认证应用决定。或者,`aiir approve --review` 从 CLI 应用待处理的编辑。 #### case ``` aiir case init "Ransomware Investigation" # Create a new case aiir case close INC-2026-02191200 # Close a case by ID aiir case activate INC-2026-02191200 # Set active case aiir case migrate # Migrate to flat layout (see below) ``` #### 审查 ``` aiir review # Case summary (counts by status) aiir review --findings # Findings table aiir review --findings --detail # Full finding detail aiir review --iocs # IOCs grouped by approval status aiir review --timeline # Timeline events aiir review --timeline --status APPROVED # Filter timeline by status aiir review --timeline --start 2026-01-01 --end 2026-01-31 # Filter by date range aiir review --timeline --type execution # Filter by event type aiir review --evidence # Evidence registry and access log aiir review --audit --limit 100 # Audit trail (last N entries) aiir review --todos --open # Open TODOs ``` #### 待办 ``` aiir todo # List open TODOs aiir todo --all # Include completed aiir todo add "Run volatility on server-04" --assignee jane --priority high --finding F-alice-003 aiir todo complete TODO-alice-001 aiir todo update TODO-alice-002 --note "Waiting on third party" --priority low ``` #### evidence ``` aiir register-evidence /path/to/image.E01 --description "Disk image from workstation" aiir lock-evidence # All files chmod 444, directory chmod 555 aiir evidence register /path/to/image.E01 --description "Disk image" aiir evidence list aiir evidence verify aiir evidence log [--path
标签:AI事件响应, Claude, Cloudflare, CVE检测, DAST, FTP漏洞扫描, HTTPS请求, HTTP工具, MCP服务器, MITRE ATT&CK, Mr. Robot, OpenCanary, OpenCTI, Python, PyTorch, RAG知识库, REMnux, SOAR, Windows取证, 人工智能安全, 人机协同, 合规性, 后渗透, 大语言模型应用, 威胁情报, 安全编排, 实时处理, 密码管理, 开发者工具, 恶意软件分析, 插件系统, 数字取证, 无后门, 无线安全, 时序数据库, 流量嗅探, 网络安全, 网络安全审计, 自动化应急响应, 自动化脚本, 证据管理, 逆向工具, 隐私保护