Jonnmy/ambar-forensics
GitHub: Jonnmy/ambar-forensics
Ámbar 是一款模块化的 Windows 数字取证获取框架,通过自动化哈希验证、监管链记录和命令日志,确保证据从获取到归档的全过程完整且可复现。
Stars: 0 | Forks: 0

**English** · [Español](README.es.md)
琥珀能将其包裹的任何物质完好无损地保存数百万年。本文撰写地——多米尼加共和国,坐落于世界上一些最丰富的琥珀矿床之上。这正是该项目名字的全部灵感来源:证据在其中存取都能保持原封不动,并附带如何到达那里的记录。
Ámbar 是一款模块化的取证工具,将标准的取证实用程序集成到一个控制台菜单背后,并自行处理 hash 计算、监管链和命令日志记录。它支持 Windows 主机、VirtualBox、VMware 和 Hyper-V 虚拟机、Docker 容器以及通过 ADB 连接的 Android 设备。
使用 Batch 和 PowerShell 编写,除了其调用的第三方工具外,无需安装任何其他内容。
这是位于圣多明各的 Instituto Tecnológico de las Américas (ITLA) 数字取证专业的毕业项目。
## 为什么需要
证据获取是一项容不得半点差错的重复性工作。漏算一个 hash、写入源磁盘,或者弄丢了运行过的命令记录,都会导致证据失去辩护力。这不是因为分析结果出错了,而是因为你再也无法证明这些结果是如何得来的。
手动驱动 `dc3dd`、KAPE、WinPmem 和 `qemu-img` 在当天处理的前几台机器上还能应付,但等到第四台时就会力不从心。这正是程序步骤被悄然遗漏的地方,而这些步骤恰恰是报告得以成立的基石。
因此,Ámbar 会自动记录这些关键信息:
* 对每个镜像进行 SHA-256 计算,并与获取工具自身的日志进行交叉核对
* 自动生成监管链记录,因此不会成为任何人遗忘的步骤
* 将每个外部命令及其输出追加到中央日志中
* 在读取任何数据之前,将源磁盘标记为只读
操作员只需选择目标。框架负责确保整个过程可复现。
这是真实菜单文本及其配色方案的渲染图,而非屏幕照片。
## 模块
| 模块 | 功能作用 | 调用工具 |
|---|---|---|
| **RAM 捕获** | 实时易失性内存转储,支持工具和架构选择 | DumpIt, WinPmem |
| **分流** | 选择性痕迹收集。目标和模块在运行时从本地 KAPE 仓库中枚举,而非硬编码 | KAPE |
| **磁盘获取** | 物理(全盘)和逻辑(文件或文件夹)镜像,带有交互式路径浏览器、格式选择和可配置的段大小 | dc3dd, dd, ewfacquire (E01), FTK Imager (RAW/S01) |
| **虚拟机** | 从虚拟机获取磁盘和内存。将 Hyper-V 保存的状态(`.vmrs`/`.bin`)转换为 Volatility 3 实际可读的 RAW 镜像 | VBoxManage, vmrun, vmware-vdiskmanager, qemu-img |
| **Docker** | 从运行中的容器获取证据 | Docker CLI |
| **Android** | 通过 ADB 进行逻辑提取和应用备份 | platform-tools |
| **写阻断器** | 设置和清除磁盘只读属性 | `Set-Disk` |
| **命令日志** | 回读本次会话执行的所有中央日志 | |
## 设计说明
**完整性是经过验证的,而非假定的。** 在执行 `dc3dd` 获取后,框架会解析该工具自身的日志,提取其报告的 SHA-256,并在与生成的镜像进行比较之前,验证该字符串的格式和长度。缺失、被截断或不匹配的 hash 将被报告为失败。任何问题都不会被静默放过。
**缺失组件只会降级,不会崩溃。** 在启动时,Ámbar 会探测 PowerShell、WMIC、Docker、ADB、Hyper-V、VMware、VirtualBox 和 WSL 2,然后将缺少依赖项的模块置灰。你从未安装的工具只会是一个禁用的菜单项,而不是在获取磁盘镜像到一半时抛出的错误。
**隔离 `CTRL+C`。** 通常情况下,中断 Batch 文件会产生 `Terminate batch job (Y/N)?` 提示,并使输出处于未知状态。该框架在 PowerShell 包装器内重新启动自身以捕获该信号,因此中止操作是可控的且会被记录。如果 PowerShell 不可用,系统会提示并继续在不使用包装器的情况下运行。
**提权具有降级方案。** 磁盘和 RAM 模块需要管理员权限,因此脚本会通过 `Start-Process -Verb RunAs` 重新启动自身。如果没有 PowerShell,它会指明受限的模块并继续执行,而不是直接退出。
**启动检查。** 在显示菜单之前,引导例程会报告操作系统名称和版本号、架构、权限级别、固件类型、Secure Boot 状态以及每个工具的可用性,最后以 `N components OK / M warnings` 的摘要结束。
**旧版 Windows 仍然适用。** ANSI 颜色仅在支持渲染的版本(10586 及以上)上启用,在其他版本上回退为单色。x86 和 x64 架构的二进制文件会在运行时根据 `PROCESSOR_ARCHITECTURE` 进行选择。
## 布局
```
ambar-forensics/
├── setup-tools.bat dependency checker and download helper
├── docs/
│ ├── Technical_Documentation.en.html English, source of the PDF
│ ├── Documentacion_Tecnica.es.html Spanish
│ ├── build-pdf.bat regenerates both PDFs
│ └── dfir_command_catalog.html DFIR command reference
└── Script/
├── Evidencias/ default output (git-ignored)
├── Logs/ Forensic_Commands.log (git-ignored)
└── Windows/
├── ForensicScript.bat entry point
└── Sistema/
├── lib/
│ ├── forensic_wrapper.ps1 execution wrapper and logging
│ ├── hv_savedstate_to_raw.ps1 Hyper-V saved state to RAW
│ └── launch_noctrlc.ps1 CTRL+C isolation
├── poc/ proof-of-concept scripts, not production modules
└── herramientas/ third-party binaries (not included)
```
## 环境要求
| | |
|---|---|
| 操作系统 | Windows 10 或 11,x86 或 x64。Build 10586 及以上支持 ANSI 颜色 |
| 权限 | 管理员权限,磁盘和 RAM 模块必需 |
| PowerShell | 推荐 5.1 或更高版本。2.0 也可用。如果没有它,框架将以降级模式运行 |
| 可选 | Docker Desktop, VMware Workstation, VirtualBox, Hyper-V, WSL 2, Python 3(用于 Volatility 3) |
## 设置
克隆仓库:
```
git clone https://github.com/Jonnmy/ambar-forensics.git
```
刚接触这个?[安装教程](INSTALL.md) 详细介绍了每一个步骤,包括你需要自行下载哪些工具,以及为什么它们的许可证阻止了在这里分发它们。
在仓库根目录下运行依赖助手:
```
setup-tools.bat
```
它不会在未经询问的情况下下载任何内容。菜单提供以下选项:
1. 检查哪些工具已经就位
2. 列出所有缺失的工具,提供官方下载页面和确切的目标文件夹
3. 自动下载可自由分发的工具(7-Zip, Android Platform-Tools, Sysinternals)
4. 将当前状态写入 `setup-report.txt`
5. 打开特定工具的下载页面
然后以管理员身份运行 Ámbar:
```
Script\Windows\ForensicScript.bat
```
你不需要准备齐所有工具才能开始。框架会根据当前找到的工具运行。
## 第三方工具
**此处不分发任何第三方二进制文件。** 每个工具都保留其各自的许可证,其中一些需要最终用户注册或接受 EULA。尤其是 KAPE,它是不可再分发的。
| 工具 | 用途 | 可用性 |
|---|---|---|
| [KAPE](https://www.kroll.com/kape) | 痕迹分流 | 需要注册,不可再分发 |
| [FTK Imager](https://www.exterro.com/ftk-product-downloads/ftk-imager) | 磁盘镜像 (RAW/S01) | 需要注册 |
| [DumpIt](https://www.magnetforensics.com/resources/magnet-dumpit-for-windows/) | RAM 捕获 | 需要注册 |
| [dc3dd](https://sourceforge.net/projects/dc3dd/) | 带有内联 hash 计算的磁盘镜像 | 免费 (GPL) |
| [dd for Windows](http://www.chrysocome.net/dd) | 磁盘镜像 | 免费 (GPL) |
| [libewf](https://github.com/libyal/libewf) | E01 格式 | 免费 (LGPL) |
| [WinPmem](https://github.com/Velocidex/WinPmem) | RAM 捕获 | 免费 (Apache 2.0) |
| [HashMyFiles](https://www.nirsoft.net/utils/hash_my_files.html) | hash 计算 | 免费软件 (NirSoft) |
| [QEMU](https://qemu.weilnetz.de/w64/) | 虚拟磁盘转换 | 免费 (GPL) |
| [Volatility 3](https://github.com/volatilityfoundation/volatility3) | 内存分析 | 免费 (VSL) |
| [Sysinternals](https://learn.microsoft.com/sysinternals/downloads/sysinternals-suite) | 辅助分析 | 免费软件 (Microsoft) |
| VMware, VirtualBox | 虚拟机操作 | 随 hypervisor 附带 |
## 已知限制
提前声明,因为隐瞒这些限制正是导致证据失去效力的原因。
* **写阻断器是基于软件的。** 它通过 `Set-Disk` 将磁盘设置为只读。这是一种有效的、可记录的缓解措施,但它**不等同于**硬件写阻断器,必须在监管链中如实记录。
* **Volatility 3 无法直接打开 Hyper-V 保存的状态**(`.vmrs`, `.bin`)。参见 [volatility3#1886](https://github.com/volatilityfoundation/volatility3/issues/1886)。`hv_savedstate_to_raw.ps1` 会首先将它们转换为 RAW 物理镜像。
* **获取正在运行的虚拟机快照会捕获本质上不一致的状态。** 务必记录虚拟机当时是处于运行、挂起还是关机状态。
* **`Sistema\poc\` 包含概念验证代码**,涉及客户机操作和加密。它不属于生产模块的一部分。
## 文档
| 文档 | 内容 |
|---|---|
| **技术文档** [PDF](docs/Technical_Documentation.en.pdf) · [HTML](docs/Technical_Documentation.en.html) | 十九章:涵盖架构、启动与能力检测、各个获取模块、完整性验证、中断处理核心、日志记录以及参考附录 |
| **Documentación técnica** [PDF](docs/Documentacion_Tecnica.es.pdf) · [HTML](docs/Documentacion_Tecnica.es.html) | 相同文档的西班牙语版本 |
| [项目网站](https://jonnmy.github.io/ambar-forensics/) | 双语模块概述、设计说明与设置指南 |
| [`docs/dfir_command_catalog.html`](docs/dfir_command_catalog.html) | DFIR 命令参考 |
## 标准
| 标准 | 应用于 |
|---|---|
| RFC 3227 | 证据收集和归档指南,易失性顺序 |
| UNE 197010 | ICT 鉴定报告标准 |
| 监管链 | 自动记录操作员、主机、时间戳、工具和 hash |
| SHA-256 | 所有获取证据的完整性验证 |
## 作者
**Euclides J. Ángeles Alcántara**,数字取证技术专家,ITLA。多米尼加共和国,圣多明各。
[LinkedIn](https://linkedin.com/in/euclides-j-angeles) · [EuclidesJ.Angeles@protonmail.com](mailto:EuclidesJ.Angeles@protonmail.com)
## 许可证
本仓库中的代码基于 [MIT 许可证](LICENSE) 发布。其调用的第三方工具受各自许可证的约束,如上所列。
标签:AI合规, Android, DSL, IPv6, PowerShell, 内存获取, 数字取证, 磁盘取证, 自动化脚本