seuros/intel_ma

GitHub: seuros/intel_ma

一款用于检查、剥离和禁用 Intel ME/TXE/CSME 管理固件并审计 AMD PSP 及各类厂商锁的底层固件工具。

Stars: 5 | Forks: 0

# intel_ma - Intel:管理引擎缺失(Management Absent) 检查并去除随出厂固件附带、运行于操作系统底层的管理固件。 `intel_ma` 能够剥离并禁用 Intel ME/TXE/CSME,检查 AMD PSP,并审计闪存镜像上的厂商锁(Boot Guard、BIOS Guard、Secure Boot)。 禁用 Intel Management Engine *就意味着*让管理功能缺失(Absent)。名字正是由此而来。 ## 状态 一个核心库(`src/lib.rs`)搭配一个轻量级 CLI(`src/main.rs`)。 已支持: - 镜像检测:ME/TXE 区域镜像和完整的 SPI 转储(Intel Flash Descriptor) - `$FPT` 分区表解析;FTPR/CODE 定位;IFWI `$CPD` 发现 - 第 1 至 7 代:ME 6 Ignition,ME 6-10(AltMeDisable),CSME 11-16(HAP),以及 TXE 和 SPS 变体 - 分区移除(支持白/黑名单),FPT 校验和修复,EFFS 标志位清除 - 模块移除:第 2 代(`$MME`、LLUT/Huffman)和第 3 代(`$CPD`) - FTPR 重定位(`-r`)与截断(`-t`) - HAP / AltMeDisable / meDisable 软禁用(`-S` / `-s`) - Descriptor 加固:撤销 ME 对其他区域的读写权限(`-d`) - Descriptor / ME 提取(`-D` / `-M`) - FTPR RSA 签名验证(2048 位 modpow + SHA-256) - **FIT 解析**(microcode、ACM)与 **Boot Guard 检测** - 在你向强制启用 Boot Guard 的主板上刷入未签名镜像前发出警告 - **`locks`** - 一键盘点所有厂商锁:Boot Guard、BIOS Guard (AMI PFAT)、Secure Boot 密钥材料,以及 FLMSTR 描述符访问矩阵 (当 ME 能够写入你的 BIOS 区域时进行标记) - **AMD PSP** - 解析 Embedded Firmware Structure / FET 以及 `$PSP`/`$BHD` 目录(bootloader、public key、SMU、ABL、APCB/APOB 等)。 PSP 位于裸片内部且由熔丝强制锁定,因此这部分仅支持检查 - **BIOS 区域**(`bios`) - 遍历 UEFI 固件卷和 FFS 文件并列出模块;通过 `efi-compress` crate 解压 EFI/Tiano 和 LZMA 区段。 检测传统的 PCI option ROM(video BIOS)并支持使用 `--extract-roms ` 进行提取 - **GbE 区域**(`gbe`) - Intel LAN NVM:MAC 地址、各 bank 校验和与 当前活动 bank,以及 LAN 控制器型号(I217/I218/I219、82577/82579)。 支持接收完整转储或单独的 `flashregion_3_gbe.bin` ## 用法 ``` # 检查镜像 intel_ma info firmware.bin # 验证完整性(FTPR RSA 签名、布局) intel_ma check firmware.bin # 解析 FIT - 列出 microcode/ACMs 并在刷写前检测 Boot Guard intel_ma fit firmware.bin # 盘点每个厂商锁:Boot Guard, BIOS Guard, Secure Boot, descriptor intel_ma locks firmware.bin # 检查 AMD PSP 固件(FET、目录、条目) intel_ma amd firmware.bin # 遍历 BIOS region:UEFI 卷、模块(解压 EFI/Tiano + LZMA) intel_ma bios firmware.bin # 将任何 PCI option ROMs / video BIOS 提取到目录 intel_ma bios firmware.bin --extract-roms ./roms # 读取 GbE region:MAC、LAN controller、NVM banks intel_ma gbe firmware.bin # 剥离并禁用 ME。除非指定 -O,否则原地写入。 intel_ma clean firmware.bin -O cleaned.bin # 完全去 Blob:剥离 + 重定位 + HAP 软禁用 + descriptor 加固 intel_ma clean dump.bin -S -r -d -O cleaned.bin # 保留额外的分区(例如 MFS),然后截断仅含 ME 的镜像 intel_ma clean me.bin -w MFS -t -O me_small.bin ``` ### `clean` 标志位 | 标志位 | 含义 | |------|---------| | `-O, --output` | 写入到单独的文件 | | `-S, --soft-disable` | 同时设置 MeAltDisable/HAP 位(完整转储) | | `-s, --soft-disable-only` | 仅设置 MeAltDisable/HAP 位(完整转储) | | `-r, --relocate` | 将 FTPR 移动到 ME 区域顶部 | | `-t, --truncate` | 截断空余尾部(仅 ME 镜像 / `-M`) | | `-k, --keep-modules` | 不移除 FTPR 模块 | | `-w, --whitelist` | 额外保留的分区列表(以逗号分隔) | | `-b, --blacklist` | 需要移除的分区列表(以逗号分隔) | | `-d, --descriptor` | 撤销 ME 对其他闪存区域的读写权限 | | `-D, --extract-descriptor` | 将闪存 descriptor 导出为文件 | | `-M, --extract-me` | 将 ME 固件导出为文件 | ## 编译与测试 ``` cargo build --release cargo test cargo clippy --all-targets ``` ## 库 ``` let mut buf = std::fs::read("firmware.bin")?; let info = intel_ma::analyze(&buf)?; // read-only analysis let report = intel_ma::clean(&mut buf, &intel_ma::Options { soft_disable: true, ..Default::default() })?; ``` ## 免责声明 仅供对自有硬件进行研究、维修权(Right-to-Repair)及固件解放工作使用。 刷入错误的镜像可能会导致主板变砖 - 请务必备份一份已知完好的转储,并备好硬件 编程器(CH347 / FlashcatUSB / 外部 SPI)以防万一。 ## 谨以此纪念 MINIX 感谢 **Andrew S. Tanenbaum**,[MINIX](https://www.minix3.org/) 的作者: 那套被 Intel 窃取并用于打造 Intel ME 的操作系统。 MINIX 3 运行在数十亿台设备中 Management Engine 的核心上 - 悄无声息地成为了已知宇宙中部署最广泛的操作系统。真正的 MINIX 3 可以运行数以千计的 NetBSD 软件包(包括 Doom);而 Intel 嵌入的版本却被 阉割成了一个盲目、无屏幕且没有任何用户空间的核心 - 它本可以运行 Doom,但 Intel 没有给它留下任何可用于绘图的载体。操作系统从来都不是囚徒。是 Intel 建造了这座牢笼。 它的作者从未被征询过意见,从未获得署名,甚至从未被告知;他是 从新闻中得知此事的,并就此向 Intel 写了[一封公开 信](https://www.cs.vu.nl/~ast/intel/)。 ## 许可证 GPL-3.0-or-later。
标签:云资产清单, 可视化界面, 固件安全, 子域名枚举, 底层固件, 硬件安全, 系统安全, 逆向工程, 通知系统