Текст ниже — выжимка из нескольких постов по теме, опубликованные на Хабре.

В 2005 году компания Intel представила Active Management Technology (AMT) версии 1.0 — решение для удалённого администрирования (управление, инвентаризация, обновление, диагностика, устранение неполадок и т.д.) и защиты десткопных компьютерных систем, своего рода аналог технологии Intelligent Platform Management Interface (IPMI), использующейся в серверах. Архитектура AMT 1.0 основывается на интегрированном в чипсет микроконтроллере (Management Engine), наделённому весьма впечатляющими возможностями, например:

  • внеполосный (out-of-band) доступ к сетевому интерфейсу (Ethernet), который он разделяет с основным CPU, но, имея собственный контроллер канального уровня, осуществляет мониторинг всего входящего сетевого трафика, из которого «вырезает» (при помощи Packet Filter) пакеты, предназначенные для него. Для ОС (наличие и состояние которой, кстати, на работу AMT никак не влияет) этот трафик уже не виден;
  • внутренний веб-сервер с TLS-шифрованием;
  • доступ к периферийному оборудованию, получение и хранение в энергонезависимой памяти (там же, где и его прошивка) информации о нём

А ещё этот микроконтроллер начинает работать при подаче питания на материнскую плату компьютерной системы (т.е. при подключении компьютера к электрической сети, ещё до того, как пользователь нажмёт кнопку Power). AMT 1.0 была реализована на интегрированном в южный мост чипсета (Input/Output Controller Hub, ICH) сетевом модуле Intel 82573E series Gigabit Ethernet Controller. Затем, в 2006 году, начиная с AMT версии 2.0, микроконтроллер перенесли в северный мост чипсета (Graphics and Memory Controller Hub, GMCH). Именно тогда подсистему наименовали в Intel Management Engine (ME) версии 2.0. Одновременно с этим появился бренд Intel vPro, который обозначал комплекс реализованных на основе Intel ME технологий: AMT, Trusted Execution Technology (TXT) и Virtualization Technology (VT). Позже в этот список вошли Identity Protection Technology (IPT) и Anti-Theft (AT).

Тогда же Intel ME наделили ещё большим количеством впечатляющих возможностей, среди которых — полный доступ ко всему содержимому оперативной памяти компьютера через внутренний DMA-контроллер, а в дальнейшем появилась возможность мониторинга видеопотока, выводящегося на монитор (правда, только в случае использования встроенного графического ядра).

Постепенно на эту подсистему стали навешивать всё больше различных системных функций (некоторыми раньше занимался BIOS) для обеспечения работоспособности компьютерной платформы:

  1. часть функций Advanced Control and Power Interface (ACPI) и Alert Standard Format (ASF);
  2. Quiet System Technology (QST);
  3. Integrated Clock Control (ICC);
  4. Trusted Platform Module (TPM);

и других технологий.

AMT тоже не стояла на месте и активно развивалась: изменялся состав используемых протоколов (например, добавилась поддержка HTTPS через порт 16993), в версии 6.0 для удалённого администратора появилась фича Remote Desktop, она же KVM (Keyboard Video Mouse), и прочее. Тем не менее, из-за высокой стоимости реализации эта подсистема присутствовала (за несколькими исключениями) только на материнских платах с чипсетами Intel линейки Q: Q965, Q35, Q45

Читатель спросит — тогда к чему вся эта специфика железа с шильдиком vPro, которое мало кто (в РФ) приобретал ввиду высокой стоимости (ну и других причин)? Дело в том, что, начиная с 2010 года, вместе с переносом части функциональных блоков северного моста (графическое ядро, контроллер памяти, …) в корпус CPU, подсистему Intel ME стали встраивать во все чипсеты производства Intel. При этом ME-контроллер остался в корпусе чипсета – в Platform Controller Hub (PCH). А это уже чипсеты 5 серии и выше. Думаете только десктопы и ноутбуки? Ни черта подобного. Та же участь постигла и серверные платформы от Intel: подсистема встроена в них, но под другим именем — Intel Server Platform Services (SPS). Произошло появление и в SoC (System-on-a-Chip) под именем Intel Trusted Execution Engine (TXE).

В итоге архитектура каждой современной мобильной/лаптопной/дескопной/серверной компьютерной платформы с чипсетом/SoC от Intel включает в себя самую скрытную (от пользователя системы) и привилегированную среду исполнения — подсистему Intel ME. В случае наличия шильдика Intel vPro, в состав подсистемы Intel ME дополнительно входит BIOS-модуль ME BIOS Extenstion (MEBx), предоставляющий графический интерфейс, а также осуществляющий включение и конфигурирование AMT через MEI.

Первые версии этой подсистемы были основаны на двухкорпусных чипсетах Intel. Тогда в качестве базовой модели ME-контроллера использовался ARCtangent-A4 со стандартной системой команд ARC32:

Иллюстрация

В однокорпусных чипсетах уже использовались ARCtangent-A5/ARC600 с компактной системой команд ARCompact (ARC16/32):

Иллюстрация

Читатель вправе спросить — какие еще ARC- и SPARC-? Как их вообще реверсить-то? Тут дело такое — в самых последних платформах (Skylake, чипсеты 100-й серии, Intel ME 11.x) ME-контроллер имеет архитектуру… x86! Да-да, в чипсетах теперь живёт ещё один x86.

Рассмотрим аппаратную архитектуру ME-контроллера. Внутри, помимо микропроцессора ARC/SPARC/x86 содержится:

  • ME ROM – энергонезависимая неперезаписываемая память, в которой хранится стартовый код ME-контроллера;
  • ME SRAM – оперативная память используемая ME-контроллером при недоступности ME UMA, например, на ранних этапах работы;
  • кэш кода и кэш данных, для повышения производительности при работе с памятью;
  • C-Link (Controller Link) – шина, позволяющая ME-контроллеру взаимодействовать с периферийным аппаратным обеспечением в режимах S5 (System shutdown) / S3 (Sleep mode);
  • Различные аппаратные блоки: высокоточный таймер и WDT, контроллер прерываний, контроллеры памяти и DMA, интерфейс HECI/MEI, RNG, акселлератор криптографических функций и функций сжатия.

Список же компонентов подсистемы Intel ME не изменялся со второй версии:

  1. Регион ME в SPI флэш-памяти, в котором хранится разработанная и подписанная Intel прошивка ME-контроллера (поэтому, именно Intel ME firmware);
  2. ME UMA – скрытая ото всех, кроме ME-контроллера, область (16 — 32 МБ) в оперативной памяти компьютера, которой он пользуется в качестве runtime-memory для размещения и запуска прошивки;
  3. Management Engine Interface (MEI), ранее известный как Host Embedded Controller Interface (HECI), – набор регистров в конфигурационном пространстве PCI и область в MMIO, представляющие собой интерфейс для обмена информацией с ME-контроллером (по сути, единственный канал связи софта, исполняющегося на CPU, с подсистемой Intel ME);
  4. Отдельный MAC – контроллер канального уровня, предоставляющий ME-контроллеру out-of-band доступ к общему физическому сетевому интерфейсу для удалённого администрирования компьютерной системой;
  5. Некоторые модули в BIOS, отвечающие за инициализацию платформы и сообщающие о результатах своей работы ME-контроллеру через MEI.

Таким образом, у нас имеется среда исполнения ring -3 (так её условно называют) — 1 штука. Её привилегированность обуславливается способностями, которыми наделён ME-контроллер (о них написано выше), а скрытность — полным отсутствием возможности контроллировать программными (и даже аппаратными, в production-версиях плат) средствами.

Иллюстрация

Как читатель уже мог догадаться, подсистема Intel ME сегодня является неотъемлемой частью архитектуры современных компьютерных платформ (на основе чипсетов/SoC Intel). Очевидно, что её компрометация предоставляет потенциальному злоумышленнику безграничные возможности контроля над платформой: доступ ко всему содержимому оперативной памяти (системная память, память гипервизора, SMRAM, ACRAM, выделяемая память для графического ядра — GFX UMA), out-of-band доступ к сетевому интерфейсу (мониторинг всего сетевого трафика), удалённый контроль как часть штатной функциональности AMT, перезапись любых регионов SPI флеш-памяти. Бонусом к этому является полное отсутствие возможностей обнаружения.

Отсюда начнется оригинальная часть — удаленное исполнение кода через механизмы Intel ME. Большинство нижеописанных методов применимы только для систем на базе Skylake и более новых (это обусловлено тем, что в Skylake, как уже было упомянуто в статье выше, Intel ME представлен уже в виде отдельного x86 чипа). Несколько методов будут описаны для систем с ME чипами на базе ARC32, но, к сожалению, спектр возможностей в этом случае существенно меньше, хоть и есть несколько интересных реализаций работы с ОЗУ. Всем причастным — добро пожаловать в специальный раздел.