
Общайтесь со своим Intel Management Engine напрямую — Python-инструмент без зависимостей. Находит утечки памяти, манифест разделов, live-опрос MKHI. Первый публичный HECI Spy.
«В вашем компьютере есть скрытый второй компьютер. Мы нашли его, нанесли на карту и задокументировали, что в нём спрятано.»
Один Python-скрипт. Ноль зависимостей. Общайтесь с вашим 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!)
Мы подтвердили: 7 из 12 команд MKHI отвечают. ME жив, разговаривает и допускает утечку памяти.
▶️ Смотреть 35-секундное демо — (правый клик «Сохранить как» или загрузите на YouTube для встроенного воспроизведения)
📊 Смотреть полную презентацию из 21 слайда
Это первое в истории публичное раскрытие полной внутренней структуры прошивки Intel CSME 16.x (Alder Lake), декодированной с живого оборудования.
Никто и никогда не публиковал:
И всё это — с Lenovo IdeaPad Gaming 3 на Intel Core i7-12650H (12-е поколение Alder Lake).
Intel Management Engine (ME) — это скрытый микроконтроллер, встроенный в каждый современный процессор Intel. Он работает под собственной операционной системой, имеет собственный процессор (Synopsys ARC EM) и функционирует 24/7 — даже когда ваш ПК полностью выключен. Большинство людей знает, что он существует. Почти никто не заглядывал внутрь.
Этот проект заглянул.
Нам удалось:
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). Она присутствует в каждом потребительском чипсете Intel с 2008 года.
+-------------------------------------------------------+
| YOUR COMPUTER |
| |
| +-----------+ +-----------+ +---------------+ |
| | | | | | | |
| | Windows | | Linux | | Intel ME | |
| | (your OS)| | (maybe) | | (secret OS) | |
| | | | | | | |
| +-----------+ +-----------+ +---------------+ |
| | | | |
| +------- CPU ---+------- PCH ----+ |
| |
| You control this You NEVER see this |
+-------------------------------------------------------+
Мы обнаружили все 29 модулей, из которых состоит внутренняя операционная система ME:
Lenovo BIOS Update (JMCN48WW) -> Extracted Win_JMCN.BIN (34.1 MB)
Использовали стандартные инструменты извлечения BIOS, чтобы получить образ сырой прошивки из официального пакета обновления 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)
Использовали собственные инженерные инструменты Intel для взаимодействия с оборудованием ME через интерфейс 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
По результатам запросов к живому оборудованию ME:
Простыми словами: этот экземпляр ME навсегда заблокирован на аппаратном уровне. Не существует программного способа изменить, отключить или обойти его. Потребовалось бы физическое программирование SPI-флеша аппаратными инструментами — и даже тогда пережжённые предохранители внутри PCH невозможно восстановить.
MEAnalyzer v1.311.0 падает с ошибкой KeyError: '01' при анализе прошивки CSME 16.x ADL из-за неподдерживаемого поиска в словаре файловой системы EFS.
Исправление: пропатчили функцию 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
Этот проект предназначен только для образовательных и исследовательских целей. Инструменты и методы, продемонстрированные здесь, следует использовать только на оборудовании, которое принадлежит вам. Несанкционированный доступ к компьютерным системам противозаконен. Это исследование направлено на улучшение понимания аппаратной безопасности в защитных целях.
Создано на любопытстве и кофеине. Этот проект показывает, что исследования в области аппаратной безопасности доступны каждому — не нужна ни лаборатория, ни дорогое оборудование. Достаточно ноутбука, решимости и правильных инструментов.
Если этот проект помог вам разобраться в аппаратной безопасности — поставьте ему звезду. Если вы нашли что-то новое — откройте issue. Давайте сделаем исследования аппаратной безопасности открытыми и доступными для всех.
| Свойство | Значение |
|---|
| Ноутбук | Lenovo IdeaPad Gaming 3 15IAH7 (82S9) |
| Процессор | 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 | Host Embedded Controller Interface — шина 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 Configuration — настройки платформы |
FTPR.man | 1 KB | Манифест прошивки — метаданные целостности |
fitc.cfg | 0 KB | Конфигурация Flash Image Tool (пустая заглушка) |
intl.cfg.met | 72 B | Контрольная сумма метаданных конфигурации |
| Функция безопасности | Статус | Значение |
|---|
| FPF Committed | Да | Одноразовые предохранители пережжены навсегда |
| PCH Unlocked | Отключено | Аппаратная блокировка активна |
| Flash Protection | Защищено | Запись в SPI-флеш заблокирована |
| BootGuard Profile | 3 (Full) | Максимальная проверка загрузки |
| Measured Boot | Включено | Каждый компонент загрузки хэшируется |
| NVAR Config | Заблокировано | Конфигурацию невозможно изменить |
| EOM Settings | Lock | Конец производства (End-of-Manufacturing) заблокирован |
| FWUpdate Support | Нет | Обновления прошивки отключены |
| CPU Debugging | Включено | 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 | Реверс-инжиниринг прошивки |