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。
标签:云资产清单, 可视化界面, 固件安全, 子域名枚举, 底层固件, 硬件安全, 系统安全, 逆向工程, 通知系统