
インテル・マネジメントエンジンと直接対話 — 依存関係ゼロのPythonツール。メモリリークの発見、パーティションマニフェスト、ライブMKHIプロービング。初の公開HECI Spy。
「あなたのコンピュータの中には、秘密の第二のコンピュータが存在します。私たちはそれを見つけ、マッピングし、そこに何が隠されているかを記録しました。」
Pythonスクリプト1つ。依存関係ゼロ。Intel Management Engineに直接話しかけられます。
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!)
確認結果: MKHIコマンド12件中7件が応答しました。MEは生きていて、応答し、メモリをリークしています。
▶️ 35秒のデモを見る — (右クリックで「名前を付けて保存」、またはYouTubeにアップロードしてインライン再生)
これは、ライブハードウェアからデコードされたIntel CSME 16.x(Alder Lake)ファームウェアの完全な内部構造の、史上初の公開です。
これまで誰も公開したことがないもの:
すべて、Intel Core i7-12650H(第12世代 Alder Lake)を搭載したLenovo IdeaPad Gaming 3から得られたものです。
Intel Management Engine(ME)は、最新のIntel CPUすべてに組み込まれている隠されたマイクロコントローラです。独自のオペレーティングシステムを実行し、独自のプロセッサ(Synopsys ARC EM)を持ち、24時間365日動作しています — PCが完全にシャットダウンされているときでも。 多くの人がその存在を知っていますが、内部を調べた人はほとんどいません。
このプロジェクトはそれを実行しました。
私たちは以下を成功させました:
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 Management EngineまたはCSMEとも呼ばれる)は、Platform Controller Hub(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)
公式のLenovoアップデートパッケージから生のファームウェアイメージを取り出すため、標準的な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
このプロジェクトは教育および研究目的のみです。ここで紹介するツールと技術は、所有するハードウェアでのみ使用してください。コンピュータシステムへの不正アクセスは違法です。この研究は、防御目的でハードウェアセキュリティの理解を深めることを目的としています。
好奇心とカフェインで作られました。このプロジェクトは、ハードウェアセキュリティ研究が誰にでも可能であることを示しています — 実験室や高価な機材は必要ありません。必要なのはノートPC、決意、そして適切なツールだけです。
このプロジェクトがハードウェアセキュリティの理解に役立ったなら、スターを付けてください。何か新しいことを発見したら、issueを開いてください。ハードウェアセキュリティ研究を、誰にでも開かれたものにしましょう。
| プロパティ | 値 |
|---|
| ノートPC | 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 | OSカーネル — 秘密のコンピュータの頭脳 |
bup | 312 KB | ブートアップ — PCの電源投入時に最初に実行されるコード |
syslib | 148 KB | システムライブラリ — 中核のOS機能 |
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 (Full) | 最大のブート検証 |
| 測定ブート | 有効 | すべてのブートコンポーネントがハッシュ化 |
| NVAR設定 | ロック済み | 設定を変更できない |
| EOM設定 | ロック | 製造終了(EOM)ロック済み |
| FWUpdateサポート | なし | ファームウェアアップデート無効 |
| 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 | ファームウェアリバースエンジニアリング |