jonathanlooi/sift-on-arm
GitHub: jonathanlooi/sift-on-arm
该项目解决了 SANS SIFT 取证工作站在 ARM64(Apple Silicon)架构上无法直接安装的问题,通过修补 SaltStack 状态文件使绝大多数取证工具能在 UTM 虚拟化的 Ubuntu 22.04 ARM64 环境中正常运行。
Stars: 0 | Forks: 0
# ARM64 (Apple Silicon / UTM) 上的 SIFT Workstation
本文档介绍了如何在 **Ubuntu 22.04 LTS (Jammy) ARM64** 上安装 [SANS SIFT Workstation](https://github.com/teamdfir/sift-saltstack),包括在 Apple Silicon Mac 上的 [UTM](https://mac.getutm.app/) 中运行的过程。这是一项极具挑战性的任务——官方 SIFT 安装程序是为 x86-64 架构设计的,为了使其能在 ARM 上正常运行,我们需要修复若干问题。
## 所做的工作(以及困难所在)
### 安装程序:CAST
SIFT 不再使用 `sift-cli`。它现在使用 [**Cast**](https://github.com/ekristen/cast) (v1.0.8),这是一个基于 Go 的单二进制文件安装程序,底层通过 SaltStack 来执行任务。尽管 Cast 提供了 `arm64` 的 `.deb` 安装包,但底层的 SIFT SaltStack 状态主要仍是为 amd64 编写的。
在 ARM64 上运行 `sudo cast install teamdfir/sift-saltstack` 会遇到几个问题,需要在运行前和运行期间进行修复。
## 遇到的问题及应用修复
### 1. `sift/repos/docker.sls` — YAML 渲染失败
**问题:** 原始的 `docker.sls` 导致了致命的 SaltStack 渲染错误:
```
[CRITICAL] Rendering SLS 'base:sift.repos.docker' failed: could not find expected ':'; line 45
```
Docker 仓库源代码块未指定架构,这导致了在 ARM 上发生 YAML 解析冲突。
**修复:** 在 Docker apt 源代码块中添加了 `Architectures: arm64`:
```
sift-docker-repo:
file.managed:
- name: /etc/apt/sources.list.d/docker.sources
- contents: |
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: {{ grains['lsb_distrib_codename'] }}
Components: stable
Signed-By: /usr/share/keyrings/DOCKER-PGP-KEY.asc
Architectures: arm64 # <-- added for ARM64
```
### 2. `sift/repos/ubuntu-universe.sls` — ARM64 需要 `ubuntu-ports`
**问题:** 在 ARM64 Ubuntu 22.04 上,universe/multiverse 软件包位于 `ports.ubuntu.com/ubuntu-ports/`,而不是标准的 `archive.ubuntu.com`。原始的 SLS 文件仅尝试在现有源文件中启用 `universe` 组件——这在 ARM 上无法运行。这也导致了渲染错误:
```
[CRITICAL] Rendering SLS 'base:sift.repos.ubuntu-universe' failed: could not find expected ':'; line 17
```
**修复:** 添加了一个 ARM64 分支,用于追加 `ubuntu-ports` 仓库:
```
{%- if grains["osarch"] == "aarch64" or grains["osarch"] == "arm64" -%}
sift-ubuntu-ports-repo-universe:
file.append:
- name: /etc/apt/sources.list.d/ubuntu.sources
- text: |
Types: deb
URIs: http://ports.ubuntu.com/ubuntu-ports/
Suites: noble
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: arm64
- unless:
- grep -q "URIs: http://ports.ubuntu.com/ubuntu-ports/" /etc/apt/sources.list.d/ubuntu.sources
{% else %}
# ... 原始 x86 逻辑 ...
{%- endif %}
```
### 3. `sift/packages/radare2.sls` — ARM64 二进制文件支持
**问题:** 原始的 radare2 安装程序仅下载 `amd64.deb`。
**修复:** 添加了架构检测功能,以便从 radare2 的 GitHub releases 中下载 `arm64.deb`:
```
{%- if grains["osarch"] == "aarch64" or grains["osarch"] == "arm64" -%}
{%- set hash = "c5b958a6ea59003431fd9f2117d71722f557db87b58e75dda17e072b1f9f50d3" -%}
{%- set filename = "radare2_" ~ version ~ "_arm64.deb" -%}
{%- else -%}
{%- set hash = "596c2b2e5cd95f38827f5e29d93547f7535e49c5bba0d5bd845b36f7e2488974" -%}
{%- set filename = "radare2_" ~ version ~ "_amd64.deb" -%}
{%- endif -%}
```
### 4. Microsoft 仓库 — 仅限 amd64
Microsoft 仓库 (`packages.microsoft.com`) 配置为 `Architectures: amd64` —— PowerShell 仅提供 x86-64 架构版本。SIFT SaltStack 状态已为此设置了保护措施:
```
- onlyif:
- fun: match.grain
tgt: 'osarch:amd64'
```
因此 PowerShell 在 ARM 上被**优雅地跳过** —— 没有错误,也没有任何操作。
## ARM64 软件包状态
### 被安装程序遗漏 —— 请使用 `apt install` 进行修复
这些软件包**确实存在 ARM64 版本**,但在 SIFT salt 运行期间未能安装,因为 `ubuntu-ports` 仓库的修复是在初次尝试之后才应用的。自动化的 `install.sh` 脚本会处理此问题,但如果您是手动运行 `cast install`,请自行安装这些软件包:
```
sudo apt install afflib-tools aircrack-ng autopsy sleuthkit xmount
```
| 软件包 | 状态 |
|---|---|
| `afflib-tools` | 在 ubuntu-ports (noble) 中可用 |
| `aircrack-ng` | 在 ubuntu-ports (jammy) 中可用 |
| `autopsy` | 在 ubuntu-ports (noble) 中可用 |
| `sleuthkit` | 在 ubuntu-ports (noble) 中可用 |
| `xmount` | 在 ubuntu-ports (noble) 中可用 |
### ARM64 上真正不可用的软件包
这些软件包根本没有 ARM64 构建版本。它们在安装期间会静默失败——其他所有内容均可正常安装。
**GIFT PPA 仅为整个 libyal 系列发布 amd64 构建版本:**
| 软件包 | 影响 |
|---|---|
| `libbde` / `libbde-tools` | BitLocker 加密卷支持 |
| `libewf-tools` | 专家见证格式 (EWF/E01) CLI 工具 |
| `libfvde` / `libfvde-tools` | FileVault 2 加密卷支持 |
| `libesedb` / `libesedb-tools` | ESE/EDB 数据库支持(如 IE 历史记录) |
| `libevt` / `libevt-tools` | Windows EVT 事件日志支持 |
| `libevtx` / `libevtx-tools` | Windows EVTX 事件日志支持 |
| `libmsiecf` | MS IE 缓存文件支持 |
| `libolecf` | OLE 复合文件支持 |
| `libregf` / `libregf-tools` | Windows 注册表支持 (CLI 工具) |
| `libvshadow` / `libvshadow-tools` | 卷影副本支持 |
| `libfsapfs-tools` | Apple 文件系统 (APFS) 支持 |
| `libvmdk` | VMware VMDK 支持 (CLI 工具) |
| `libewf-python3`, `libregf-python3`, `libvshadow-python3` | 上述工具的 Python 绑定 |
| `python3-pytsk3` | The Sleuth Kit 的 Python 绑定 |
| `python3-dfvfs` | 依赖于上述所有包 —— 无法安装 |
| `plaso-tools` (log2timeline) | 依赖于 `python3-dfvfs` —— 无法安装 |
**在任何地方均不存在 ARM64 构建版本:**
| 软件包 | 备注 |
|---|---|
| `aeskeyfind` | 任何仓库中都没有 ARM64 软件包 |
| `bulk-extractor` | GIFT PPA 仅限 amd64;未发布 ARM64 构建 |
| `cmospwd` | 从本质上讲是特定于 x86 的工具(读取 CMOS 硬件) |
| `liblightgrep` | 没有可用的 ARM64 软件包 |
| `rar` | RAR 的 Linux 构建版本仅限 x86;已安装 `unrar-free` 作为替代 |
**设计上仅限 amd64:**
| 软件包 | 备注 |
|---|---|
| `powershell` | Microsoft 的 Linux 软件包仅限 amd64;安装程序已优雅地跳过 |
## 分步安装指南
### 前置条件
- 带有 Apple Silicon (M1/M2/M3/M4) 的 **macOS**,并已安装 [UTM](https://mac.getutm.app/)
- Ubuntu 22.04 LTS ARM64 ISO —— 请参阅第 1 步中关于此点的注意事项
### 第 1 步 — 获取 Ubuntu 22.04 ARM64 ISO 并设置 UTM
**下载服务器版 ISO:**
- 前往 `https://cdimage.ubuntu.com/releases/22.04/release/`
- 下载 `ubuntu-22.04.x-live-server-arm64.iso`
**创建 UTM 虚拟机:**
1. 在 UTM 中,创建一个新的虚拟机:**Virtualize → Linux**
2. 选择您下载的 ARM64 服务器版 ISO
3. 分配至少 **4 GB RAM**(推荐 8 GB)和 **60 GB 磁盘**
4. 完成服务器版安装程序(不会显示桌面选项——这是正常现象)
**第 1b 步 — 安装桌面环境**
服务器版安装完成并通过控制台或 SSH 登录后,请安装 Ubuntu 桌面环境:
```
sudo apt update
sudo apt install -y ubuntu-desktop
sudo reboot
```
重启后,将出现 GDM 登录界面。以您的用户身份登录,您将拥有完整的 GNOME 桌面环境。
### 第 2 步 — 下载并安装 CAST
CAST 提供了官方的 ARM64 `.deb` 包。请下载最新版本:
```
# 查看 https://github.com/ekristen/cast/releases 以获取最新版本
CAST_VERSION="1.0.8"
wget "https://github.com/ekristen/cast/releases/download/v${CAST_VERSION}/cast-v${CAST_VERSION}-linux-arm64.deb"
sudo dpkg -i "cast-v${CAST_VERSION}-linux-arm64.deb"
```
验证:
```
cast --version
# cast 版本 v1.0.8
```
### 第 3 步 — 运行 SIFT 安装程序
```
sudo cast install teamdfir/sift-saltstack
```
此操作将:
- 从 GitHub 下载 SIFT SaltStack 状态
- 运行 Salt 安装约 150 多个取证工具
- 需耗时 20–40 分钟,具体取决于您的网络速度
### 第 4 步 — 验证安装
```
# 检查一些关键工具
which wireshark
which radare2
which sleuthkit
which autopsy
exiftool -ver
```
## 安装内容(在 ARM64 上可正常运行的工具)
绝大多数 SIFT 工具都可以在 ARM64 上成功安装并运行:
- **磁盘/文件系统取证:** `sleuthkit`, `autopsy`, `testdisk`, `extundelete`, `scalpel`, `foremost`, `dc3dd`, `dcfldd`, `ewf-tools`, `afflib-tools`, `xmount`
- **内存/注册表:** `volatility3` (通过 pip 安装), `libregf1`, `libewf2`, `libvshadow1`(库已安装;但 GIFT PPA 的 CLI 工具未安装)
- **恶意软件分析:** `radare2`, `yara`, `ssdeep`, `upx-ucl`, `vbindiff`, `ghex`
- **网络取证:** `wireshark`, `tcpflow`, `ngrep`, `ssldump`, `tcpreplay`, `scapy`
- **密码/加密:** `hashdeep`, `samdump2`, `ophcrack`, `hydra`, `aeskeyfind`
- **元数据:** `exiftool` (13.x,从源码编译), `exif`
- **通用工具:** `docker`, `git`, `python3`, `jq`, `vim`, `wget`, `curl`, `netcat` 等。
## 打包 / 自动化
请查看本仓库中的 `install.sh`,获取完全自动化的安装脚本。
## 背景
SIFT (SANS Investigative Forensic Toolkit) 是由 SANS Institute 维护的广泛使用的免费 DFIR Linux 发行版。历史上,它以预构建的虚拟机映像(仅限 amd64)形式分发。随着向 CAST + SaltStack 的转变,它变得可以在任何 Ubuntu 基础系统上安装——但 ARM64 路径仍需进行一些修改。
为了造福社区,本仓库记录了通过 UTM 使其在 Apple Silicon Mac 上运行所需的操作。ARM64 笔记本电脑和台式机市场正在快速增长,DFIR 从业者理应获得原生 ARM 的 SIFT 体验。
## 贡献 / 问题反馈
SaltStack 状态中针对 ARM64 的修复最好能提交至 [teamdfir/sift-saltstack](https://github.com/teamdfir/sift-saltstack) 的上游。所需的关键 PR 包括:
1. 修复 `docker.sls` 以支持 ARM64 架构固定
2. 修复 `ubuntu-universe.sls` 以支持 ARM64 ports 仓库
3. 为 `radare2.sls` 添加 ARM64 支持(可能已在上游合并)
如果您发现其他需要针对 ARM64 进行修复的软件包,请在此处或上游提出问题。
标签:Apple Silicon, ARM64, Cast, Cutter, Docker, Linux部署, PB级数据处理, SaltStack, SANS SIFT, SIFT Workstation, Ubuntu 22.04, UTM, 安全运维, 安全防御评估, 安装指南, 数字取证, 日志审计, 系统配置, 自动化脚本, 虚拟化, 请求拦截, 逆向工具