“你的电脑里藏着一台秘密的第二台电脑。我们找到了它,绘制了它的地图,并记录下了里面隐藏的东西。”
一个 Python 脚本。零依赖。直接与你的 Intel 管理引擎对话。
python scripts/heci_spy.py
# Requirements: Windows, Python 3.6+, Run as Administrator
它的功能:
刚刚在一台 Lenovo IdeaPad Gaming 3(i7-12650H,CSME 16.0.15.1735) 上运行:
MKHI v3.1 | FW 16.0.1735.15 | 8 partitions found | GEN.1B: 0x00C344CA (changes each run!)
我们确认:7/12 个 MKHI 命令有响应。ME 是活的,正在通信,并且在泄漏内存。
▶️ 观看 35 秒演示 — (右键另存为,或上传到 YouTube 以便内联播放)
这是首次公开披露 Intel CSME 16.x(Alder Lake)固件的完整内部结构,且这些结构是从真实硬件上解码得出的。
从未有人公开过:
全部来自一台搭载 Intel Core i7-12650H(第 12 代 Alder Lake) 的 Lenovo IdeaPad Gaming 3。
Intel 管理引擎(ME)是嵌入每一颗现代 Intel CPU 中的隐藏微控制器。它运行自己的操作系统,拥有自己的处理器(Synopsys ARC EM),并且 全天候运行 — 即使你的电脑完全关机。 大多数人知道它的存在。但几乎没有人真正探究过它的内部。
而这个项目做到了。
我们成功做到了:
IfwiRoot/ (THE ENTIRE FIRMWARE)
├── BiosRegion (Your BIOS — 24MB)
├── DescriptorRegion (Flash layout)
│ ├── FDBAR/ (Flash Database)
│ │ ├── FLASH_VALID_SIGNATURE
│ │ ├── FLMAP0-4 (Component maps)
│ │ └── EcRegionPointer ← EC firmware pointer
│ ├── PchStraps (PCH hardware config)
│ │ ├── PCH_Strap_DMI_OPDMI_TLS: "4 GT/s"
│ │ ├── PCH_Strap_DMI_OPD_LVO: "0.95 Volts"
│ │ └── PCH_Strap_FIA_LOSL0-3: USB3/PCIe config
│ ├── MipDesc/ (Management Engine descriptors)
│ │ ├── PmcStraps (PMC config — Type-C ports)
│ │ └── DbCStraps (Debug Capability)
│ ├── MasterAccessPermissions ← SECURITY LOCKS
│ ├── OEM (Lenovo OEM data)
│ └── VsccTable (SPI flash component table)
│
├── CseRegion (THE INTEL ME — 4.8MB)
│ ├── RomBypass ← HIDDEN BOOT MECHANISM
│ ├── RomBypassVector (Jump table)
│ ├── BPDT1/ (Boot Partition Table 1)
│ │ ├── FTPR (Fault Tolerant Recovery — 2.2MB)
│ │ ├── RBE (ROM Bypass Engine)
│ │ ├── PMC (Power Management)
│ │ ├── IOM (Intel Orchestrator Manager)
│ │ ├── NPHY (Network PHY firmware)
│ │ ├── IDLM (Dynamic Link Manager)
│ │ ├── TBTP (Thunderbolt — 40KB readable)
│ │ ├── OEM_KM (OEM Key Manifest — Lenovo's keys)
│ │ └── PCHC (PCH Configuration)
│ ├── BPDT3/
│ │ ├── NFTP (Non-Fault Tolerant — 436KB readable)
│ │ ├── ISHC (Integrated Sensor Hub — 88KB)
│ │ ├── IUNIT (Intel Unit firmware)
│ │ └── GBST (Performance Boost)
│ └── DATA_PARTITION/
│ ├── FLOG (Flash Log)
│ ├── ELOG (Event Log)
│ ├── EFS (Encrypted File System)
│ ├── FITC/ (Flash Image Tool Config)
│ │ ├── HmrfpoNvar (HMRFPO config)
│ │ ├── ConfigRulesNvar (Configuration rules)
│ │ ├── PavpHdcpNvar (DRM/ HDCP config)
│ │ ├── ChipsetInit (Chipset initialization)
│ │ ├── EomNvar (End-of-Manufacturing config)
│ │ ├── TbtConfigDataNvar (Thunderbolt config)
│ │ └── CameraGpioNvar (Camera GPIO config)
│ ├── HVMP (Hypervisor Management Policy)
│ ├── IVBP (Intel Verified Boot Policy)
│ ├── IMDP (Intel Management Data Path)
│ └── UTOK (Unit Token — device authentication)
│
├── EcRegion (Embedded Controller firmware)
├── GbeRegion (Gigabit Ethernet MAC)
└── SigningContainer (Intel signing blob)
// Platform Identification (at ME+0x29C134)
{
"StrapsProject": "adp_p_straps.xml",
"HarnessProject": "ADP-P PCH (w/ADL-P / M CPU) RDL v1.0.2.5",
"HarnessLabel": "v1.30 ADP-P (Harness #50)",
"SelectedRvp": "ADL-P DDR4 (ADL-P + ADP-P)"
}
// PCH Strap Configuration (at ME+0x29C523)
{
"PCH_Strap_DMI_OPDMI_TLS": "4 GT/s",
"PCH_Strap_DMI_OPD_LVO": "0.95 Volts",
"PCH_Strap_FIA_LOSL0": "USB3",
"PCH_Strap_FIA_LOSL1": "USB3",
"PCH_Strap_FIA_LOSL2": "PCIe",
"PCH_Strap_FIA_LOSL3": "PCIe"
}
// PMC Type-C Port Configuration (at ME+0x29C753)
{
"PD0_Type_C_Port_Enabled": "Yes",
"PD0_USB2_Port": "USB2 Port 2",
"PD1_Type_C_Port_Enabled": "No",
"PD2_Type_C_Port_Enabled": "No",
"PD3_Type_C_Port_Enabled": "No"
}
// BootGuard Profile (at ME+0x29D38F)
{ "BtGuardProfileConfig": 3 }
Intel On-Die Root CA (ODCA CA2)
│ https://tsci.intel.com/.../ODCA_CA2_CSME_Indirect.crl
└── signs
CSME ADL ROM CA0 (Root of Trust — CPU fuses)
│ Serial: 0x01 | SHA-256: 86474ecc2fc0c74b
│ BURNED INTO HARDWARE — CANNOT be changed
├── signs
│ CSME ADL SVN01 Kernel CA0 (Core ME OS)
│ └── signs CSME ADL PAVP 01SVN0 (DRM)
│ └── signs PAVP SGX CP0 + Playready
└── signs
CSME ADL PTT 01SVN0 (Platform Trust)
└── signs 3 PTT signing certificates
Intel ME(也称为 Intel 管理引擎或 CSME)是嵌入在平台控制器中枢(PCH)中的自主子系统。自 2008 年以来,它一直存在于每一款 Intel 消费级芯片组中。
+-------------------------------------------------------+
| YOUR COMPUTER |
| |
| +-----------+ +-----------+ +---------------+ |
| | | | | | | |
| | Windows | | Linux | | Intel ME | |
| | (your OS)| | (maybe) | | (secret OS) | |
| | | | | | | |
| +-----------+ +-----------+ +---------------+ |
| | | | |
| +------- CPU ---+------- PCH ----+ |
| |
| You control this You NEVER see this |
+-------------------------------------------------------+
我们发现了构成 ME 内部操作系统的全部 29 个模块:
Lenovo BIOS Update (JMCN48WW) -> Extracted Win_JMCN.BIN (34.1 MB)
使用标准的 BIOS 提取工具,从联想官方更新包中提取原始固件镜像。
CSME System Tools v16.1
├── MEInfoWin64 -> Queried live ME hardware status
├── FPTW64 -> Dumped live ME firmware from SPI flash
└── MEManufWin64 -> Ran hardware self-tests (10/10 passed)
使用 Intel 自家的工程工具,通过 HECI/MEI 接口与 ME 硬件进行通信。
ME_region.bin (4,943,872 bytes)
├── $FPT at 0x216000 -> Flash Partition Table
├── $CPD at FTPR+0x00 -> Code Partition Directory (29 modules)
├── $MN2 at FTPR+0x2CC -> Manifest v2 (RSA signatures)
├── X.509 Cert -> "CSME ADL ROM CA0" (Root CA)
├── Entropy Analysis -> 85% encrypted, 15% readable
└── ARC Strings -> Processor architecture confirmed
FTPR Partition Layout:
Offset 0x0000 - 0x0014 CPD Header (20 bytes)
Offset 0x0014 - 0x049C CPD Entries (29 x 24 bytes)
Offset 0x02CC - 0x0840 FTPR.man (manifest)
Offset 0x0840 - 0x0888 intl.cfg.met (metadata)
Offset 0x1000 - 0x1798 rot.key (Root of Trust)
Offset 0x2000+ AES-encrypted modules
Unencrypted code at ME+0x1C1000 contains:
"ARC PARM" -> ARC Processor Parameters register
"DROM" -> ARC Data ROM constant storage
"EE_CIO" -> ARC Core I/O exception handler
"EE_DMA" -> ARC DMA exception handler
"EE_LC" -> ARC Loop Count exception
"PATCHES" -> Processor microcode patches
"APP EM" -> Application Emulation layer
来自 ME 实时硬件查询:
说明: 这个 ME 实例在硬件层面被永久锁定。没有任何纯软件方法可以修改、禁用或绕过它。需要使用硬件工具进行物理 SPI 闪存编程 — 即便如此,PCH 内部已熔断的熔丝也无法撤销。
MEAnalyzer v1.311.0 在分析 CSME 16.x ADL 固件时会因不支持的 EFS 文件系统字典查找而崩溃,报 KeyError: '01' 错误。
修复: 修补了 efs_anl() 函数,使用安全的字典访问(用 dict.get() 代替直接键索引),并将 EFS 分析调用包装在 try/except 块中。
# Before (crashes):
if 'EFST' in ftbl_dict[ftbl_plat_id][ftbl_dict_id]:
# After (safe):
if ftbl_plat_id in ftbl_dict and ftbl_dict_id in ftbl_dict[ftbl_plat_id] and 'EFST' in ftbl_dict[ftbl_plat_id][ftbl_dict_id]:
intel-me-research/
├── README.md # This file
├── scripts/
│ ├── heci_spy.py # 🔥 FLAGSHIP: Talk to your Intel ME directly
│ ├── analyze_cpd.py # Code Partition Directory parser
│ ├── analyze_me_region.py # Full ME region analysis
│ ├── extract_modules.py # Module extraction tool
│ └── patch_mea.py # MEAnalyzer fix for CSME 16.x
├── evidence/
│ ├── WORLD_FIRST_EVIDENCE.py # Master evidence presentation
│ ├── DEEPER_LAYER.py # Timestamp + EC + cert analysis
│ ├── NUCLEAR_SCAN.py # Complete flash + security map
│ ├── DEEP_SECRET_HUNT.py # Secret hunting script
│ ├── DEEP_DIVE_3.py # JSON config + cert decoding
│ ├── DECODE_CERTIFICATES.py # X.509 certificate decoder
│ └── certs/ # Extracted DER certificates (13)
├── docs/
│ ├── METHODOLOGY.md # Detailed methodology
│ └── FINDINGS.md # All findings with evidence
└── results/
├── modules_summary.csv # Module inventory
└── security_posture.csv # Security status results
本项目仅用于教育和研究目的。 此处展示的工具和技术只能用于你自己拥有的硬件。未经授权访问计算机系统是违法的。这项研究旨在提升对硬件安全的理解,以服务于防御目的。
用好奇心和咖啡因打造。这个项目证明了硬件安全研究并非高不可攀 — 你不需要实验室或昂贵的设备。只需一台笔记本电脑、决心和合适的工具。
如果这个项目帮助你理解了硬件安全,请给它一个 star。如果你发现了新的东西,请提出 issue。让我们推动硬件安全研究向所有人开放、触手可及。
| 属性 | 值 |
|---|
| 笔记本 | Lenovo IdeaPad Gaming 3 15IAH7 (82S9) |
| CPU | Intel Core i7-12650H(第 12 代 Alder Lake) |
| ME 版本 | CSME 16.0.15.1735 |
| ME SKU | Consumer LP |
| ME 日期 | 2022-02-17 |
| 构建 | JMCN48WW |
| PCH | ADL Device 5182,Rev A1 |
| 模块 | 大小 | 用途 |
|---|
kernel | 106 KB | 操作系统内核 — 秘密计算机的大脑 |
bup | 312 KB | 启动(Boot Up)— 电脑通电时首先运行的代码 |
syslib | 148 KB | 系统库 — 操作系统核心功能 |
loadmgr | 28 KB | 模块加载器 — 动态加载其他模块 |
vfs | 92 KB | 虚拟文件系统 — 管理 ME 内部存储 |
evtdisp | 16 KB | 事件分发器 — 处理中断和事件 |
maestro | 16 KB | 编排引擎 — 协调各子系统 |
| 模块 | 大小 | 用途 |
|---|
crypto | 216 KB | AES/RSA/HMAC — 加密 ME 所接触的一切 |
policy | 36 KB | 安全策略引擎 — 决定你能做什么 |
fpf | 20 KB | 熔丝保护(Fused Protection Fuses)— 硬件根密钥 |
rot.key | 2 KB | 信任根密钥 — ME 的加密身份 |
mca_boot | 16 KB | 启动认证 — 验证固件完整性 |
mca_srv | 28 KB | 运行时安全 — 持续监控系统 |
| 模块 | 大小 | 用途 |
|---|
heci | 36 KB | 主机嵌入式控制器接口 — CPU<->ME 总线 |
ipc_drv | 16 KB | 进程间通信 — 模块消息传递 |
sec_msg | 4 KB | 安全消息传递 — 加密的内部消息 |
prtc | 8 KB | 协议处理器 — 通信协议 |
smbus | 8 KB | SMBus 接口 — 硬件传感器通信 |
busdrv | 8 KB | 总线驱动程序 — 内部通信 |
| 模块 | 大小 | 用途 |
|---|
ptt | 164 KB | Intel PTT — 固件 TPM 替代方案 |
pm | 16 KB | 电源管理器 — 睡眠/唤醒状态 |
pmdrv | 12 KB | 电源管理驱动程序 |
fwupdate | 36 KB | 固件更新 — 静默更新 ME |
storage | 72 KB | 闪存存储 — 读写 SPI 闪存 |
gpio | 8 KB | GPIO 控制器 — 物理引脚控制 |
| 模块 | 大小 | 用途 |
|---|
intl.cfg | 18 KB | Intel 配置 — 平台设置 |
FTPR.man | 1 KB | 固件清单 — 完整性元数据 |
fitc.cfg | 0 KB | Flash Image Tool 配置(空占位符) |
intl.cfg.met | 72 B | 配置元数据校验和 |
| 安全功能 | 状态 | 含义 |
|---|
| FPF 已提交 | 是 | 一次性熔丝已永久熔断 |
| PCH 未锁定 | 已禁用 | 硬件级锁定生效 |
| 闪存保护 | 已保护 | SPI 闪存写锁定 |
| BootGuard 配置文件 | 3(完整) | 最大启动验证 |
| 测量启动 | 已启用 | 每个启动组件都经过哈希 |
| NVAR 配置 | 已锁定 | 配置无法更改 |
| EOM 设置 | 锁定 | 制造结束(End-of-Manufacturing)已锁定 |
| 固件更新支持 | 否 | 固件更新已禁用 |
| CPU 调试 | 已启用 | Intel 可以调试(你不行) |
| 工具 | 用途 |
|---|
| heci_spy.py 🔥 | 我们的 HECI Spy — 与 Intel ME 实时对话,零依赖 |
| Intel MEInfoWin64 v16.1 | ME 硬件实时查询 |
| Intel FPTW64 v16.1 | SPI 闪存实时转储 |
| Intel MEManufWin64 v16.1 | 制造自检 |
| MEAnalyzer v1.311.0 | 固件元数据分析 |
| Radare2 6.1.8 | 二进制反汇编 |
| Python 3.14 | 自定义分析脚本 |
| Ghidra 11.3.2 | 固件逆向工程 |