
Parlez directement à votre Intel Management Engine — outil Python sans dépendance. Détecte les fuites mémoire, le manifeste de partition, le sondage MKHI en direct. Premier HECI Spy public.
« Votre ordinateur contient un second ordinateur secret. Nous l'avons trouvé, cartographié, et documenté ce qui s'y cache. »
Un script Python. Zéro dépendance. Parlez directement à votre Intel Management Engine.
python scripts/heci_spy.py
# Requirements: Windows, Python 3.6+, Run as Administrator
Ce qu'il fait :
Nous l'avons exécuté sur un 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!)
Nous avons confirmé : 7/12 commandes MKHI répondent. Le ME est vivant, il parle et fuit de la mémoire.
▶️ Regardez la démo de 35 secondes — (clic droit « enregistrer sous », ou téléversez sur YouTube pour une lecture intégrée)
📊 Voir la présentation complète de 21 diapositives
Ceci est la toute première divulgation publique de la structure interne complète du firmware Intel CSME 16.x (Alder Lake), décodée à partir d'un matériel en direct.
Personne n'a jamais publié :
Tout cela à partir d'un Lenovo IdeaPad Gaming 3 équipé d'un Intel Core i7-12650H (12e génération Alder Lake).
L'Intel Management Engine (ME) est un microcontrôleur caché intégré dans chaque CPU Intel moderne. Il exécute son propre système d'exploitation, possède son propre processeur (Synopsys ARC EM), et fonctionne 24h/24 et 7j/7 — même lorsque votre PC est complètement éteint. La plupart des gens savent qu'il existe. Presque personne n'a regardé à l'intérieur.
Ce projet l'a fait.
Nous avons réussi à :
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
L'Intel ME (également appelé Intel Management Engine ou CSME) est un sous-système autonome intégré dans le Platform Controller Hub (PCH). Il est présent dans tous les chipsets grand public Intel depuis 2008.
+-------------------------------------------------------+
| YOUR COMPUTER |
| |
| +-----------+ +-----------+ +---------------+ |
| | | | | | | |
| | Windows | | Linux | | Intel ME | |
| | (your OS)| | (maybe) | | (secret OS) | |
| | | | | | | |
| +-----------+ +-----------+ +---------------+ |
| | | | |
| +------- CPU ---+------- PCH ----+ |
| |
| You control this You NEVER see this |
+-------------------------------------------------------+
Nous avons découvert les 29 modules qui composent le système d'exploitation interne du ME :
Lenovo BIOS Update (JMCN48WW) -> Extracted Win_JMCN.BIN (34.1 MB)
Utilisation d'outils standard d'extraction de BIOS pour extraire l'image firmware brute du package de mise à jour officiel de Lenovo.
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)
Utilisation des outils d'ingénierie officiels d'Intel pour communiquer avec le matériel ME via l'interface HECI/MEI.
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
D'après les requêtes en direct sur le matériel ME :
Traduction : Cette instance du ME est verrouillée en permanence au niveau matériel. Il n'existe aucune méthode uniquement logicielle pour la modifier, la désactiver ou la contourner. Une programmation physique de la flash SPI avec des outils matériels serait nécessaire — et même dans ce cas, les fusibles grillés à l'intérieur du PCH ne peuvent pas être défaits.
MEAnalyzer v1.311.0 plante avec KeyError: '01' lors de l'analyse du firmware ADL CSME 16.x en raison d'une recherche non prise en charge dans le dictionnaire du système de fichiers EFS.
Correctif : Fonction efs_anl() corrigée pour utiliser un accès sécurisé au dictionnaire (dict.get() au lieu d'un indexage direct par clé) et appel d'analyse EFS encapsulé dans un bloc 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
Ce projet est à des fins éducatives et de recherche uniquement. Les outils et techniques présentés ici ne doivent être utilisés que sur du matériel vous appartenant. L'accès non autorisé à des systèmes informatiques est illégal. Cette recherche vise à améliorer la compréhension de la sécurité matérielle à des fins défensives.
Conçu avec de la curiosité et de la caféine. Ce projet démontre que la recherche en sécurité matérielle est accessible — vous n'avez pas besoin d'un laboratoire ou d'équipement coûteux. Seulement un ordinateur portable, de la détermination et les bons outils.
Si ce projet vous a aidé à comprendre la sécurité matérielle, laissez-lui une étoile. Si vous avez trouvé quelque chose de nouveau, ouvrez une issue. Rendons la recherche en sécurité matérielle ouverte et accessible à tous.
| Propriété | Valeur |
|---|
| Portable | Lenovo IdeaPad Gaming 3 15IAH7 (82S9) |
| CPU | Intel Core i7-12650H (12e génération Alder Lake) |
| Version du ME | CSME 16.0.15.1735 |
| SKU du ME | Consumer LP |
| Date du ME | 2022-02-17 |
| Build | JMCN48WW |
| PCH | ADL Device 5182, Rev A1 |
| Module | Taille | Fonction |
|---|
kernel | 106 Ko | Le noyau de l'OS — le cerveau de l'ordinateur secret |
bup | 312 Ko | Boot Up — premier code exécuté lors de la mise sous tension |
syslib | 148 Ko | Bibliothèque système — fonctions de base de l'OS |
loadmgr | 28 Ko | Chargeur de modules — charge dynamiquement les autres modules |
vfs | 92 Ko | Système de fichiers virtuel — gère le stockage interne du ME |
evtdisp | 16 Ko | Répartiteur d'événements — gère les interruptions et événements |
maestro | 16 Ko | Moteur d'orchestration — coordonne les sous-systèmes |
| Module | Taille | Fonction |
|---|
crypto | 216 Ko | AES/RSA/HMAC — chiffre tout ce que le ME touche |
policy | 36 Ko | Moteur de politique de sécurité — décide de ce que VOUS pouvez faire |
fpf | 20 Ko | Fusibles de protection fusionnés — clés ancrées dans le matériel |
rot.key | 2 Ko | Clé de racine de confiance — identité cryptographique du ME |
mca_boot | 16 Ko | Authentification au démarrage — vérifie l'intégrité du firmware |
mca_srv | 28 Ko | Sécurité à l'exécution — surveille le système en continu |
| Module | Taille | Fonction |
|---|
heci | 36 Ko | Host Embedded Controller Interface — bus CPU<->ME |
ipc_drv | 16 Ko | Communication inter-processus — messagerie entre modules |
sec_msg | 4 Ko | Messagerie sécurisée — messages internes chiffrés |
prtc | 8 Ko | Gestionnaire de protocoles — protocoles de communication |
smbus | 8 Ko | Interface SMBus — communication avec les capteurs matériels |
busdrv | 8 Ko | Pilote de bus — communication interne |
| Module | Taille | Fonction |
|---|
ptt | 164 Ko | Intel PTT — remplacement du TPM par firmware |
pm | 16 Ko | Gestionnaire d'alimentation — états veille/réveil |
pmdrv | 12 Ko | Pilote de gestion d'alimentation |
fwupdate | 36 Ko | Mise à jour du firmware — met à jour le ME silencieusement |
storage | 72 Ko | Stockage flash — lit/écrit la flash SPI |
gpio | 8 Ko | Contrôleur GPIO — contrôle des broches physiques |
| Module | Taille | Fonction |
|---|
intl.cfg | 18 Ko | Configuration Intel — paramètres de la plateforme |
FTPR.man | 1 Ko | Manifeste du firmware — métadonnées d'intégrité |
fitc.cfg | 0 Ko | Configuration de l'outil d'image flash (espace réservé vide) |
intl.cfg.met | 72 o | Somme de contrôle des métadonnées de configuration |
| Caractéristique de sécurité | Statut | Signification |
|---|
| FPF Committed | Oui | Fusibles à usage unique grillés de manière permanente |
| PCH Unlocked | Désactivé | Verrou au niveau matériel actif |
| Flash Protection | Protégé | Flash SPI verrouillée en écriture |
| BootGuard Profile | 3 (Complet) | Vérification de démarrage maximale |
| Measured Boot | Activé | Chaque composant de démarrage est haché |
| NVAR Config | Verrouillée | La configuration ne peut pas être modifiée |
| EOM Settings | Verrouillé | Fin de fabrication verrouillée |
| FWUpdate Support | Non | Les mises à jour du firmware sont désactivées |
| CPU Debugging | Activé | Intel peut déboguer (pas vous) |
| Outil | Fonction |
|---|
| heci_spy.py 🔥 | Notre HECI Spy — parlez à l'Intel ME en direct, zéro dépendance |
| Intel MEInfoWin64 v16.1 | Requête matérielle ME en direct |
| Intel FPTW64 v16.1 | Extraction flash SPI en direct |
| Intel MEManufWin64 v16.1 | Auto-tests de fabrication |
| MEAnalyzer v1.311.0 | Analyse des métadonnées du firmware |
| Radare2 6.1.8 | Désassemblage binaire |
| Python 3.14 | Scripts d'analyse personnalisés |
| Ghidra 11.3.2 | Ingénierie inverse du firmware |