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, 安全运维, 安全防御评估, 安装指南, 数字取证, 日志审计, 系统配置, 自动化脚本, 虚拟化, 请求拦截, 逆向工具