安全、动手操作的实验室,用于理解 xz-utils 供应链后门 — 专为防御者、学生和蓝队成员而建。
[!WARNING] 本项目处理真实的、在野的恶意软件(xz 5.6.0 / 5.6.1 后门)。其提供严格用于防御性教育和授权研究。所有操作均在可丢弃的隔离虚拟机中运行,无互联网路由。不要在您关心的机器上、在您无法控制的网络上或针对任何未经授权测试的系统运行这些工件。请参阅 SECURITY.md。
| 实验 | 功能描述 | 是否执行载荷? |
|---|---|---|
| 实验 1 — 检查 | 启动一个一次性沙盒,离线获取恶意 tarball,并观察伪装:git 与 tarball 的 build-to-host.m4 差异、测试夹具载荷、魔术标记。 | 否 — 仅静态检查 |
| 实验 2 — 引爆 | 构建一个隔离的三虚拟机网络(analyst / compromised / normal,无 Docker)。从分析师跳板机,SSH 到两台主机比较延迟和pcap,然后使用您自己的 Ed448 密钥(通过 xzbot)触发 compromised 上被植入后门的 sshd,实现预认证 root RCE — 而 normal 主机保持免疫。 | 是 — 隔离的虚拟机,离线,您自己的密钥 |
一场持续两年的社会工程学攻击使一个恶意维护者获得了 xz-utils 的发布权限。载荷仅包含在发布 tarball 中(而非 git),隐藏在测试夹具中,并在 x86-64 glibc 系统构建时激活。运行时,它利用 glibc IFUNC 挂钩 RSA_public_decrypt(可通过 sshd → libsystemd → liblzma 访问),使密钥持有者获得预认证 RCE — 该命令隐藏在 SSH 证书的 RSA 模数中,经 ChaCha20 加密并用 Ed448 签名。它不是 C2 也不是魔法登录。2024 年 3 月 29 日由 Andres Freund 通过约 500 毫秒的 SSH 减速发现,当时尚未进入稳定发行版。
make setup # 安装/前置检查(Multipass 或 Docker、tcpdump 等)
make lab1 # 检查沙盒
make lab2 # 构建隔离的 3 虚拟机引爆网络,然后:multipass shell analyst
make clean # 拆除所有,清理虚拟机 / pcaps / 生成的密钥
前提条件和每个实验的详细指南位于 docs/。
sshd 仅绑定到回环/内部桥接,如果虚拟机可以访问互联网,实验室拒绝运行。MIT.