rienman88/Blitz-DFIR
GitHub: rienman88/Blitz-DFIR
一个证据驱动的数字取证与应急响应分析流水线,编排多种确定性取证工具进行自动化证据提取、关联和报告生成。
Stars: 1 | Forks: 0
# 评委:提交合规性快速参考
| 要求 | 位置 |
|---|---|
| 公共仓库 | [`github.com/rienman88/Blitz-DFIR`](https://github.com/rienman88/Blitz-DFIR) |
| 许可证 | [`LICENSE`](LICENSE) (Apache 2.0) |
| 功能描述 | [概述](#overview) |
| 演示视频 | [YouTube — Blitz DFIR Demo 2026](https://www.youtube.com/watch?v=KVRA7pNhdnU&t=93s) |
| 架构图 |  |
| 数据集 | [`Combined run of Rocba Memory and E01`] |
| Blitz-DFIR-Results | [`findings, audit, reports`](https://github.com/rienman88/Blitz-DFIR-Results/tree/main) |
| 调查结论 | [`INVESTIGATION_CONCLUSION.md`](submission/packet/01_INVESTIGATION_CONCLUSION.md) |
| 运行摘要 | [`RUN_SUMMARY_COMPACT.json`](submission/packet/02_RUN_SUMMARY_COMPACT.json) |
| Rocba LLM agent 日志 | [`submission/rocba_llm_agent_logs`](submission/rocba_llm_agent_logs/) |
| Devpost Blitz DFIR | [`devpost post`](https://devpost.com/software/blitz-dfir?ref_content=user-portfolio&ref_feature=in_progress) |
# Blitz DFIR
Blitz DFIR 是一个证据驱动的调查分析 pipeline,它负责编排取证工具、关联发现结果、保留不确定性,并为数字取证和应急响应生成结构化报告。
简而言之:
- SIFT 工具负责进行取证提取。
- Blitz 负责选择已批准的工具路由、验证证据哈希、记录运行过程、标准化事件、关联可疑活动、验证声明并撰写报告。
- LLM 推理是可选的。Blitz 完全可以在没有 LLM 的情况下运行。
- 原始证据会在原位置被引用。公共运行器(runner)不会将大型原始文件复制到 `/cases` 中。
- LLM 输出仅被视为解释。发现结果必须来自确定性的工具、解析器、标准化、关联和验证层。
| 指南 | 位置 |
|---|---|
| 可写 Volatility 符号缓存的安装与设置 | [`Blitz DFIR 安装`](https://github.com/rienman88/Blitz-DFIR/edit/main/README.md) |
| 运行 Blitz DFIR 的方式 | [`如何运行 Blitz DFIR`](https://github.com/rienman88/Blitz-DFIR/blob/main/docs/Ways%20to%20run%20Blitz%20DFIR.md) |
| 实用命令 | [`命令`](https://github.com/rienman88/Blitz-DFIR/blob/main/docs/Helpful%20commands.md) |
| LLM 配置 | [LLM](https://github.com/rienman88/Blitz-DFIR/blob/main/docs/LLM%20Configurations.md) |
| 关于 Blitz DFIR 结果的一切 | [`每次成功运行后预期生成的文件`](https://github.com/rienman88/Blitz-DFIR/blob/main/docs/Where%20%20to%20find%20Blitz%20DFIR%20generated%20results.md) |
| 故障排除指南 | [常见问题](https://github.com/rienman88/Blitz-DFIR/blob/main/docs/Common%20Issues.md) |
#工作原理
“证据 → 工具路由 → 解析 → 标准化 → 关联 → 验证 → 可选 AI 解释 → 报告”
1. 提供证据 – 提供内存镜像、磁盘镜像、时间线或受支持的取证工件(artifacts)。在整个工作流程中,证据始终是事实来源。
2. 执行已批准的分析路由 – Blitz 编排确定性的 DFIR 工具和解析器,验证证据完整性,并记录执行细节以供审计和复现。
3. 解析并标准化工件 – 将来自多个来源的输出转换为通用的表示形式,以实现跨工件分析和关联。
4. 关联并评分发现结果 – 跨工件关联相关事件,以识别可疑活动并生成有证据支撑的发现结果。
5. 保留不确定性并验证声明 – 保留解析器的限制、警告、矛盾和覆盖缺口,以防止过度自信并支持透明的分析。
6. 生成可选的 AI 解释 – 启用时,AI 会总结并解释有证据支撑的发现结果。AI 不会创造证据、决定结论或修改发现结果。
7. 生成结构化报告 – Blitz 生成报告和调查工件,帮助分析师继续进行更深度的取证分析和应急响应活动。
## 最安全的测试顺序
在演示、评审和客户端测试时请使用此顺序:
1. 在不使用 LLM 的情况下运行一个小型或已知良好的证据项。
2. 检查状态并打开生成的报告。
3. 在启用 LLM 的情况下运行相同的证据。
4. 一起运行两个证据项(例如内存加 E01),不使用 LLM。
5. 在启用 LLM 的情况下运行相同的两个证据项。
6. 在得出任何结论之前,审查覆盖缺口、验证警告、未知项和 agent 日志。
每次全新的干净运行都会创建:
```
/cases//analysis/runs/_*
/cases//output/sess-*
```
`scripts/blitz_status.sh` 仅读取最近一次的运行。它不会继续、重启或修改分析。
## 环境要求
推荐环境:
- SANS SIFT Workstation 或安装了所需 SIFT 工具的 Ubuntu。
- Python 3.11 或更高版本。
- `/cases` 下的一个可写 case 目录。
- 可选的 Ollama 或其他兼容 OpenAI 的聊天补全(chat-completions)服务,用于 LLM 推理。
核心 Python 软件包要求位于:
```
requirements.txt
requirements-dev.txt
pyproject.toml
```
必需的 SIFT/工具检查:
```
which python3
which log2timeline.py
which psort.py
which pinfo.py
which vol
which mmls
which fls
which strings
```
可选工具:
```
which chainsaw || true
which tshark || true
which yara || true
```
## 下载并安装
在 SIFT 上:
```
cd /home/sansforensics/src
git clone https://github.com/rienman88/Blitz-DFIR
cd /home/sansforensics/src/Blitz-DFIR
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
```
快速健康检查:
```
cd /home/sansforensics/src/Blitz-DFIR
.venv/bin/python -m compileall -q app.py blitz_dfir tests
.venv/bin/python -m pytest -q
```
如果未安装测试依赖项:
```
.venv/bin/python -m pip install -r requirements-dev.txt
.venv/bin/python -m pytest -q
```
## Volatility 符号
Blitz 被配置为使用可写的 Volatility 符号缓存:
```
/cases/volatility_symbols
```
创建一次:
```
sudo mkdir -p /cases/volatility_symbols
sudo chown "$USER:$USER" /cases/volatility_symbols
chmod 700 /cases/volatility_symbols
```
当前生效的工具配置包含:
```
symbols_dir: "/cases/volatility_symbols"
```
这可以防止 Volatility 3 尝试将下载的 Windows 符号保存到 root 用户拥有的 Python 软件包目录中。
## 受支持的证据类型标签
在 `case.yaml` 或 `EVIDENCE*_TYPE` 中使用以下值:
```
E01
DD
MEMORY
EVTX
PCAP
REGISTRY_HIVE
FILESYSTEM_ARTIFACT
PLASO
CSV_TIMELINE
JSON_EXPORT
VOLATILITY_JSON
YARA_MATCHES
STRINGS_OUTPUT
PREPROCESSED_EVTX
THIRD_PARTY_EXPORT
```
常见测试路径:
- `MEMORY`:用于由 Volatility 处理的原始内存镜像。
- `E01` 和 `DD`:用于由 Plaso/log2timeline 处理的磁盘镜像,并在完整时间线提取失败时回退至 Sleuth Kit 磁盘分诊(triage)。
- `EVTX` 或 `PREPROCESSED_EVTX`:用于 Windows 事件日志。
- `PLASO` 和 `CSV_TIMELINE`:用于已生成的时间线数据。
- `PCAP`:在 `tshark` 可用时用于数据包捕获分诊。
对于公共运行流程,目前测试过的同时使用的最大原始数据集数量为两个。清单模型可以容纳更多记录,但评委/客户运行手册应使用一到两个证据输入,以便于进行可预测的审查。
## Windows 工件覆盖范围
默认的 Windows 配置文件是:
```
windows-light
```
当 Plaso 提供支持时,它会针对以下工件系列:
```
winevtx
prefetch
lnk
setupapi
windows_timeline
srum
amcache
bam
usbstor
usb devices
```
`mft` 和 `usnjrnl` 被刻意排除在轻量级默认设置之外,因为它们可能会产生海量数据。应将它们视为更深度的可选解析,而不是默认的演示路径。
## 允许的工具和模块
当前生效的允许列表(allowlist)位于:
```
config/tools.yaml
```
主要工具路由:
```
log2timeline -> E01/DD/Windows artifact timeline extraction
psort -> PLASO export
disk_triage -> Sleuth Kit fallback for E01/DD when full Plaso extraction fails
volatility -> MEMORY analysis
chainsaw -> EVTX triage when available
tshark -> PCAP triage when available
yara -> YARA matching when rules are configured
strings -> string extraction route
```
默认的 Volatility 插件:
```
windows.pslist
windows.pstree
windows.cmdline
windows.psscan
windows.netscan
windows.malfind
```
Blitz 不会通过其类型化的工具层暴露通用的 shell。工具执行受到清单证据类型、配置的可执行文件路径、列入允许列表的插件、输出目录和审计日志的限制。
## 清单基础
清单(manifest)用于告知 Blitz 正在分析哪个 case、结果应写入何处,以及哪些证据文件在范围内。
重要字段:
```
case_id Short case name. This becomes part of /cases/.
evidence_root Use external when raw files live anywhere on disk and should not be copied.
output_root Where Blitz writes reports, findings, audit files, and SQLite stores.
evidence One or more evidence records with id, path, type, sha256, and description.
```
对于从任意文件夹中选择的用户文件,请使用:
```
evidence_root: external
```
这允许使用绝对证据路径,同时将输出保留在 `/cases//output` 下。
标签:AI风险缓解, LLM推理, SIFT工具, 后端开发, 库, 应急响应, 数字取证, 日志关联, 自动化分析流水线, 自动化脚本, 逆向工具