
Habla directamente con tu Intel Management Engine — herramienta Python sin dependencias. Detecta fugas de memoria, manifiesto de partición, sondeo de MKHI en vivo. Primer HECI Spy público.
"Tu ordenador tiene un segundo ordenador secreto en su interior. Lo encontramos, lo mapeamos y documentamos lo que se esconde ahí dentro."
Un script de Python. Cero dependencias. Habla directamente con tu Intel Management Engine.
python scripts/heci_spy.py
# Requirements: Windows, Python 3.6+, Run as Administrator
Qué hace:
Lo acabamos de ejecutar en 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!)
Lo confirmamos: 7/12 comandos MKHI responden. El ME está vivo, hablando y filtrando memoria.
▶️ Ver la demo de 35 segundos — (clic derecho y guardar como, o súbelo a YouTube para reproducirlo en línea)
📊 Ver la presentación completa de 21 diapositivas
Esta es la primera divulgación pública de la estructura interna completa del firmware de Intel CSME 16.x (Alder Lake), decodificada desde hardware real en vivo.
Nadie ha publicado nunca:
Todo desde un Lenovo IdeaPad Gaming 3 con Intel Core i7-12650H (12.ª Gen Alder Lake).
Intel Management Engine (ME) es un microcontrolador oculto integrado en cada CPU moderna de Intel. Ejecuta su propio sistema operativo, tiene su propio procesador (Synopsys ARC EM) y funciona 24/7 — incluso cuando tu PC está completamente apagado. La mayoría de la gente sabe que existe. Casi nadie ha mirado en su interior.
Este proyecto lo hace.
Conseguimos con éxito:
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 (también llamado Intel Management Engine o CSME) es un subsistema autónomo integrado en el Platform Controller Hub (PCH). Está presente en todos los chipsets de consumo de Intel desde 2008.
+-------------------------------------------------------+
| YOUR COMPUTER |
| |
| +-----------+ +-----------+ +---------------+ |
| | | | | | | |
| | Windows | | Linux | | Intel ME | |
| | (your OS)| | (maybe) | | (secret OS) | |
| | | | | | | |
| +-----------+ +-----------+ +---------------+ |
| | | | |
| +------- CPU ---+------- PCH ----+ |
| |
| You control this You NEVER see this |
+-------------------------------------------------------+
Descubrimos los 29 módulos que componen el sistema operativo interno del ME:
Lenovo BIOS Update (JMCN48WW) -> Extracted Win_JMCN.BIN (34.1 MB)
Usamos herramientas estándar de extracción de BIOS para extraer la imagen de firmware bruta del paquete oficial de actualización 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)
Usamos las propias herramientas de ingeniería de Intel para comunicarnos con el hardware del ME a través de la interfaz 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
A partir de consultas en vivo al hardware del ME:
En resumen: Esta instancia del ME está bloqueada permanentemente a nivel de hardware. No existe ningún método exclusivamente de software para modificarla, deshabilitarla o saltársela. Se requeriría programación física de la flash SPI con herramientas de hardware — e incluso entonces, los fusibles grabados dentro del PCH no se pueden deshacer.
MEAnalyzer v1.311.0 falla con KeyError: '01' al analizar el firmware ADL de CSME 16.x debido a una consulta no soportada al diccionario del sistema de archivos EFS.
Corrección: Parcheamos la función efs_anl() para que utilice acceso seguro al diccionario (dict.get() en lugar de indexación directa por clave) y envolvimos la llamada de análisis EFS en un bloque 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
Este proyecto tiene fines exclusivamente educativos y de investigación. Las herramientas y técnicas demostradas aquí solo deben usarse en hardware de tu propiedad. El acceso no autorizado a sistemas informáticos es ilegal. Esta investigación tiene como objetivo mejorar la comprensión de la seguridad del hardware con fines defensivos.
Construido con curiosidad y cafeína. Este proyecto demuestra que la investigación de seguridad del hardware es accesible — no necesitas un laboratorio ni equipos caros. Solo un portátil, determinación y las herramientas adecuadas.
Si este proyecto te ayudó a comprender la seguridad del hardware, dale una estrella. Si encontraste algo nuevo, abre un issue. Hagamos que la investigación de seguridad del hardware sea abierta y accesible para todos.
| Propiedad | Valor |
|---|
| Portátil | Lenovo IdeaPad Gaming 3 15IAH7 (82S9) |
| CPU | Intel Core i7-12650H (12.ª Gen Alder Lake) |
| Versión del ME | CSME 16.0.15.1735 |
| SKU del ME | Consumer LP |
| Fecha del ME | 2022-02-17 |
| Compilación | JMCN48WW |
| PCH | ADL Device 5182, Rev A1 |
| Módulo | Tamaño | Propósito |
|---|
kernel | 106 KB | El núcleo del SO — el cerebro del ordenador secreto |
bup | 312 KB | Boot Up — primer código que se ejecuta al encender el PC |
syslib | 148 KB | Biblioteca del sistema — funciones principales del SO |
loadmgr | 28 KB | Cargador de módulos — carga dinámicamente otros módulos |
vfs | 92 KB | Sistema de archivos virtual — gestiona el almacenamiento interno del ME |
evtdisp | 16 KB | Despachador de eventos — gestiona interrupciones y eventos |
maestro | 16 KB | Motor de orquestación — coordina los subsistemas |
| Módulo | Tamaño | Propósito |
|---|
crypto | 216 KB | AES/RSA/HMAC — cifra todo lo que el ME toca |
policy | 36 KB | Motor de políticas de seguridad — decide lo que TÚ puedes hacer |
fpf | 20 KB | Fused Protection Fuses — claves ancladas al hardware |
rot.key | 2 KB | Clave Root of Trust — la identidad criptográfica del ME |
mca_boot | 16 KB | Autenticación de arranque — verifica la integridad del firmware |
mca_srv | 28 KB | Seguridad en tiempo de ejecución — monitoriza el sistema continuamente |
| Módulo | Tamaño | Propósito |
|---|
heci | 36 KB | Host Embedded Controller Interface — bus CPU<->ME |
ipc_drv | 16 KB | Comunicación entre procesos — mensajería entre módulos |
sec_msg | 4 KB | Mensajería segura — mensajes internos cifrados |
prtc | 8 KB | Gestor de protocolos — protocolos de comunicación |
smbus | 8 KB | Interfaz SMBus — comunicación con sensores de hardware |
busdrv | 8 KB | Controlador de bus — comunicación interna |
| Módulo | Tamaño | Propósito |
|---|
ptt | 164 KB | Intel PTT — reemplazo de TPM por firmware |
pm | 16 KB | Power Manager — estados de suspensión/activación |
pmdrv | 12 KB | Controlador de gestión de energía |
fwupdate | 36 KB | Actualización de firmware — actualiza el ME silenciosamente |
storage | 72 KB | Almacenamiento flash — lee/escribe la flash SPI |
gpio | 8 KB | Controlador GPIO — control físico de pines |
| Módulo | Tamaño | Propósito |
|---|
intl.cfg | 18 KB | Intel Configuration — ajustes de plataforma |
FTPR.man | 1 KB | Manifiesto de firmware — metadatos de integridad |
fitc.cfg | 0 KB | Config de Flash Image Tool (marcador vacío) |
intl.cfg.met | 72 B | Suma de verificación de metadatos de configuración |
| Característica de Seguridad | Estado | Significado |
|---|
| FPF Programado | Sí | Fusibles de un solo uso grabados permanentemente |
| Desbloqueo de PCH | Deshabilitado | Bloqueo a nivel de hardware activo |
| Protección de la Flash | Protegida | Flash SPI bloqueada contra escritura |
| Perfil BootGuard | 3 (Completo) | Verificación de arranque máxima |
| Arranque Medido | Habilitado | Cada componente de arranque se procesa con hash |
| Config NVAR | Bloqueada | La configuración no se puede cambiar |
| Configuración EOM | Bloqueada | Fin de fabricación bloqueado |
| Soporte de actualización de firmware | No | Actualizaciones de firmware deshabilitadas |
| Depuración de CPU | Habilitada | Intel puede depurar (tú no puedes) |
| Herramienta | Propósito |
|---|
| heci_spy.py 🔥 | Nuestro HECI Spy — habla con el Intel ME en vivo, cero dependencias |
| Intel MEInfoWin64 v16.1 | Consulta en vivo del hardware del ME |
| Intel FPTW64 v16.1 | Volcado en vivo de la flash SPI |
| Intel MEManufWin64 v16.1 | Autopruebas de fabricación |
| MEAnalyzer v1.311.0 | Análisis de metadatos del firmware |
| Radare2 6.1.8 | Desensamblado de binarios |
| Python 3.14 | Scripts de análisis personalizados |
| Ghidra 11.3.2 | Ingeniería inversa de firmware |