bioless/sift-crs-argus
GitHub: bioless/sift-crs-argus
一个以证据为中心的 DFIR 网络推理系统,通过登记证据、运行类型化取证工具、确定性验证与有限自我纠正,生成可审计的结构化调查报告。
Stars: 1 | Forks: 0
# SIFT-CRS Argus
SIFT-CRS 是一个受 Team-Atlanta 启发、为 Protocol 设计的 DFIR 网络推理系统
SIFT。它将取证调查转化为一个受控循环:
```
Register evidence -> run typed MCP tools -> generate candidate findings -> verify -> self-correct -> report
```
不可商榷的规则:
```
No evidence reference -> no finding.
No verifier pass -> no confirmed claim.
No execution log -> no report inclusion.
```
本仓库目前实现了第 1 至第 6 阶段:
- 仓库和 Python 包骨架
- JSON Schemas 和验证用的 JSON 示例文件
- 使用 SHA-256 哈希的证据登记
- 证据账本写入
- 仅追加执行的 JSONL 日志
- 类型化的模拟取证工具以及一个真实的 EVTX 解析器封装,具备
经过 schema 验证的输入与输出
- 从工具输出中生成候选发现
- 针对发现状态和置信度的确定性验证器决策
- 包含针对性类型化工具后续操作的有限确定性自我纠正
- 仅基于已验证和
降级的发现生成结构化的 Markdown 调查报告
- 包含报告、账本、验证器输出和
仅追加执行日志的审计包导出
- 针对模式、证据登记、类型化工具以及
验证器/自我纠正/报告行为的确定性单元测试
它不实现任意 shell 执行或 Web UI。
## 本地设置
使用 Python 3.10 或更新版本。在本机上,解释器为 `python3`。建议使用
虚拟环境,因为某些 Linux 发行版会阻止直接的
系统级 `pip` 安装。
```
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[test]'
```
运行测试套件:
```
python3 -m pytest -q
```
如果使用本机已有的系统包进行免安装检出,请在
CLI 命令前加上 `PYTHONPATH=src`。
## 演示证据登记
登记内置的演示证据夹具:
```
python -m sift_crs demo examples/demo_evidence.txt --case-id case-001 --analysis-root analysis
```
免安装等效命令:
```
PYTHONPATH=src python3 -m sift_crs demo examples/demo_evidence.txt --case-id case-001 --analysis-root analysis
```
预期的第 2 阶段输出:
```
analysis/
case-001/
evidence_ledger.json
execution_log.jsonl
```
显式登记任何本地证据文件:
```
python -m sift_crs register-evidence /path/to/evidence.bin --case-id case-001 --analysis-root analysis --evidence-id ev-disk01
```
登记过程会读取证据字节以计算 SHA-256 和文件大小。它不会
写入证据路径。可变的项目输出保存在选定的
分析根目录下。
## 验证器演示
运行第 4 阶段的验证器演示:
```
PYTHONPATH=src python3 -m sift_crs verifier-demo examples/demo_evidence.txt --case-id case-001 --analysis-root analysis --evidence-id ev-demo
```
演示会登记证据,运行类型化的 `mock_analyze_prefetch` 工具,写入
一个从 Prefetch 执行输出中过度声称持久性的候选发现,
并确定性地将其降级。预期输出包括:
```
analysis/
case-001/
evidence_ledger.json
execution_log.jsonl
findings.json
verifier_report.json
tool_runs/
```
验证器决策会作为
`finding_verifier_decision` 事件追加到 `execution_log.jsonl` 中。被拒绝的发现不可报告;
面向报告的发现仅限于 `verified`、`downgraded` 或
`needs_human_review`。
## 真实的 EVTX 解析器
`parse_evtx_real` 是一个围绕 python-evtx 的
`evtx_dump` 构建的类型化只读封装。它只接受已注册的 `evidence_id`;原始证据路径会
被输入 schema 拒绝。
该封装会在 `PATH` 中查找 `evtx_dump` 或 `evtx_dump.py`,然后是在
`~/.local/bin`,最后是
`/usr/local/bin/evtx_dump.py`。它以
只读子进程的方式针对已注册的证据路径运行该二进制文件,并仅在案例分析的 `tool_runs/` 目录下写入规范化的
JSON。
示例:
```
PYTHONPATH=src python3 -m sift_crs register-evidence /cases/security.evtx --case-id case-001 --analysis-root analysis --evidence-id ev-security
```
```
PYTHONPATH=src python3 - <<'PY'
from pathlib import Path
from sift_crs.evidence import CaseStore
from sift_crs.tools import builtin_tool_registry
store = CaseStore(Path("analysis"), "case-001")
tool_run = builtin_tool_registry().run(
"parse_evtx_real",
{"case_id": "case-001", "evidence_id": "ev-security"},
store,
)
print(tool_run["status"])
print(tool_run["output_path"])
PY
```
解析器输出包含 `artifact_type`、`evidence_id`、源 SHA-256、
记录数,以及带有 EventID、channel、provider、timestamp
和源记录元数据的规范化记录。如果 `evtx_dump` 缺失、文件为空、
输入不是 `.evtx`,或者子进程失败,类型化的工具运行将返回
`status: failure`,并写入一个结构化的失败工件,而不是崩溃。
## 自我纠正演示
运行第 5 阶段的有限自我纠正演示:
```
PYTHONPATH=src python3 -m sift_crs self-correction-demo examples/demo_evidence.txt --case-id case-001 --analysis-root analysis --evidence-id ev-demo --max-iterations 2
```
演示会登记证据,运行 `mock_analyze_prefetch`,写入一个
从 Prefetch 输出中过度声称持久性的候选发现,让验证器
将其降级,然后运行针对性的 `mock_parse_registry_run_key` 后续操作。
只有在该类型化工具输出存在之后,发现才会被重新验证。
预期的第 5 阶段输出包括:
```
analysis/
case-001/
evidence_ledger.json
execution_log.jsonl
findings.json
verifier_report.json
correction_trace.json
tool_runs/
```
纠正操作会作为
`self_correction_iteration` 事件追加到 `execution_log.jsonl` 中。每个事件记录迭代索引、
触发器、选定的类型化操作和结果。严格的 `--max-iterations` 上限
可防止失控的纠正尝试。
## 报告生成
在验证器或
自我纠正输出存在后,生成第 6 阶段的结构化调查报告:
```
PYTHONPATH=src python3 -m sift_crs report --case-id case-001 --analysis-root analysis --reports-root reports
```
预期输出:
```
reports/
case-001/
final_report.md
```
报告是叙述性的,而不是原始的执行日志。它包括:
- 执行摘要
- 仅基于 `verified` 和
`downgraded` 发现构建的结构化调查叙述
- 带有 evidence-ID 链接和选定审计日志链接的发现表
- 自我纠正摘要
- 包含 ID、路径、SHA-256、大小和只读意图的证据附录
被拒绝的发现会从报告结论中排除。
## 审计包导出
将案例审计工件打包到一个导出目录中:
```
PYTHONPATH=src python3 -m sift_crs audit-package --case-id case-001 --analysis-root analysis --reports-root reports --export-root exports
```
预期输出:
```
exports/
case-001/
audit_package/
evidence_ledger.json
execution_log.jsonl
findings.json
verifier_report.json
correction_trace.json
final_report.md
```
导出命令首先重新生成 `final_report.md`,追加一个
`audit_package_exported` 事件,然后将仅追加的执行日志复制到
包中。
## Schema 示例
`examples/*.json` 中的示例针对 `schemas/` 中的 schema 进行验证。
单元测试使用 `jsonschema` 执行此验证。
标签:EVTX解析, Python, 安全规则引擎, 数字取证, 无后门, 自动化脚本, 逆向工具