Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
 
Ответить в эту темуОткрыть новую тему
> Безопасность прошивок на примере подсистемы Intel Management Engine
Decker
сообщение 4.3.2016, 10:23
Сообщение #1


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1




Сетевые технологии*,
Реверс-инжиниринг*,
Информационная безопасность*,
Блог компании «Digital Security»




В предыдущей статье был описан ход исследования безопасности прошивок промышленных коммутаторов. Мы показали, что обнаруженные архитектурные недостатки позволяют легко подделывать образы прошивок, обновлять ими свитчи и исполнять свой код на них (а в некоторых случаях — и на подключающихся к свитчам клиентах). В дополнение, мы описали возможности закрепления внедряемого кода на устройствах. Подчеркнули низкое качество кода прошивок и отсутствие механизмов защиты от эксплуатации бинарных уязвимостей.

Мы обещали привести реальный пример сильной модели безопасности прошивок, где модификация исполнимого кода является очень нетривиальной задачей для потенциального злоумышленника.



Встречайте – подсистема Intel Management Engine, самая загадочная составляющая архитектуры современных x86-платформ.








Введение




Для начала, основательно разберёмся в предметной области. Что это такое, откуда и зачем появилось?



В 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).





Итак, Management Engine всегда включён, но использование возможностей AMT требует активации (подразумевает задание пароля, сетевых параметров,… ) в BIOS setup, а точнее в MEBx setup:





[скриншот взят отсюда]



Похвально, что дефолтный пароль («admin») при первом входе обязательно требуется изменить на новый, удовлетворяющий определённым требованиям: минимум 8 символов, среди которых должны присутствовать хотя бы одна цифра, одна заглавная буква и один спец. символ.



После настройки AMT-совместимой компьютерной системы, удалённому администратору

становятся доступными сетевые функции (для их использования требуется ввод логина и пароля):

  • инвентаризация аппаратного обеспечения;
  • веб-интерфейс (по HTTP через порт 16992);
  • Serial Over LAN (SOL) – виртуальный COM-порт через сеть, позволяющий включать/перезагружать/выключать компьютер, получать доступ к меню BIOS setup;
  • IDE-Redirection (IDE-R) – опция перенаправления загрузки с локального загрузочного устройства на удалённое (предварительно подготовленный образ системы).




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);
  5. ...


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



AMT тоже не стояла на месте и активно развивалась: изменялся состав используемых протоколов (например, добавилась поддержка HTTPS через порт 16993), в версии 6.0 для удалённого администратора появилась фича Remote Desktop, она же KVM (Keyboard Video Mouse), и прочее.



Подробнее про развитие Intel AMT можно почитать здесь.





Тем не менее, из-за высокой стоимости реализации, эта подсистема присутствовала, за несколькими исключениями, только на материнских платах с чипсетами Intel линейки Q:



GMCH
ICH
ME/AMT version


Q965
ICH8
ME 2.x (AMT 2.x)


GM965 / GME965 / GL960 / GLE960 / PM965
ICH8M
ME 2.5.x (AMT 2.5.x) < — первое появление на ноутбуках


Q35
ICH9
ME 3.x (AMT 3.x)


GM45 / PM45
ICH9M
ME 4.x (AMT 4.x) < — только на ноутбуках


Q45
ICH10
ME 5.x (AMT 5.x)





Тогда к чему вся эта специфика железа с шильдиком vPro, которое мало кто (в РФ) приобретал ввиду высокой стоимости (ну и других причин)?



Дело в том, что, начиная с 2010 года, вместе с переносом части функциональных блоков северного моста (графическое ядро, контроллер памяти, ...) в корпус CPU, подсистему Intel ME стали встраивать во все чипсеты производства Intel. При этом ME-контроллер остался в корпусе чипсета – в Platform Controller Hub (PCH). Это чипсеты 5 серии и выше.



Итак, хрология последующих версий для десктопов и лаптопов:



PCH
ME/AMT version


5 series chipset
ME 6.x (AMT 6.x)


6 series chipset
ME 7.x (AMT 7.x)


7 series chipset
ME 8.x (AMT 8.x)


8 series chipset
ME 9.x (AMT 9.x)


9 series chipset
ME 9.5.x/10.x (AMT 9.5.x/10.x)


100 series chipset
ME 11.x (AMT 11.x)





Примечание: функциональность AMT по сей день остаётся доступной только на чипсетах линейки Q, т.е. только на оборудовании с шильдиком vPro.





Думаете только десктопы и ноутбуки? Нет, Intel-а ответ!



Та же участь постигла и серверные платформы от Intel: подсистема встроена в них, но под другим именем — Intel Service Platform Services (SPS). Произошло появление и в SoC (System-on-a-Chip) — под именем Intel Trusted Execution Engine (TXE).





В итоге архитектура каждой современной мобильной/лаптопной/дескопной/серверной компьютерной платформы с чипсетом/SoC от Intel включает в себя самую скрытную (от пользователя системы) и привелегированную среду исполнения — подсистему Intel ME. Неудивительно, что разрабатывая эту архитектуру, компания Intel была вынуждена серьёзно поработать над её защитой от компрометации.



Вздохнём и рассмотрим архитектуру этой подсистемы, чтобы разобраться в применённой модели безопасности. Вдруг это поможет успокоиться?






Архитектура Intel ME




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



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





[рисунок взят из книги 1]





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





[рисунок взят из книги 1]





В Intel SoC (там где эта подсистема называется Intel TXE) в качестве базовой модели для ME-контроллера используется SPARC.





ARC-и, SPARC-и какие-то, да? Ревёрсить некомфортно будет!



Ничего страшного, в Intel об этом позаботились: в самых последних платформах (Skylake, чипсеты 100 серии, Intel ME 11.x) ME-контроллер имеет архитектуру… x86!

Да-да, в чипсетах теперь живёт ещё один x86.





Впрочем, состав компонентов подсистемы Intel ME (с версии 2.0) не изменялся. Это:

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




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





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










Архитектура ME-контроллера




Внутри 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, акселлератор криптографических функций и функций сжатия.






[рисунок взят из книги 2]





Самое время разобраться в том, как от модификаций защищён код, который управляет всем этим богатством.






Прошивка Intel ME




Intel ME firmware, в зависимости от наполнения, различают двух типов:

  • 1.5 МБ, урезанные версии;
  • 5 МБ, полные версии.




Тип прошивки определяет состав прикладных модулей, в которых реализованы определённые технологии (например, AMT, IPT и т.д.). Хотя есть и базовая часть, одинаковая для разных прошивок:

  1. Bring Up, первый запускаемый модуль из прошивки;
  2. Kernel, ядро ОСРВ ThreadX;
  3. некоторые драйверы и службы.




Общее описание содержимого Intel ME firmware можно найти в книге 2 из списка литературы, но детальнее со структурами (разобраны аналитическим путём) можно ознакомиться, например, в этом скрипте для распаковки прошивок Intel ME.



Пойдём по порядку.





В SPI флэш-памяти есть несколько регионов:

  1. Flash Descriptors, в котором хранятся указатели на все остальные регионы, а также read/write привелегии для пользователей этой памяти. Отметим, что обычно этими дескприпторами запрещается перезапись ME региона всем, за исключением самого ME-контроллера;
  2. GbE (Gigabit Ethernet);
  3. ME, здесь хранится прошивка ME-контроллера;
  4. BIOS;
  5. 3PDS (Third Party Data Storage), опциональный регион.






[картинка взята отсюда]





Теперь взглянем на сам регион ME, вот пример содержимого из его начала:







Это Flash Partition Table (FPT) — таблица разделов ME firmware. В ней хранятся указатели на различного типа (код, данные, виртуальная область, ...) разделы и их параметры. Целостность этой таблицы контролируется одним байтом чексуммы по смещению 1Bh.



Нас интересуют executable-разделы, т.е. те, что хранят исполнимый код. Их обычно несколько, рассмотрим один из них:







В начале кодового раздела располагается манифест, который состоит из заголовка (со служебными данными и ЭЦП) и таблицы модулей.

На приведённом дампе можно увидеть 2048-битный открытый RSA ключ (модуль по смещению 80h относительно начала раздела и экспонента по смещению 180h). Далее следует 256 байт сигнатуры.



Своим закрытым ключом компания Intel подписывает часть заголовка манифеста и таблицу модулей (см. следующий дамп), прикладывая полученную подпись и открытый ключ для проверки.



А вот и фрагмент таблицы модулей рассматриваемого раздела:







Эта таблица содержит заголовки модулей, где указаны некоторые параметры и хеш-сумма SHA256 (по смещению 14h внутри заголовка).





Сгенерировать собственную пару ключей RSA-2048 и подписать ими раздел не получится ввиду того, что целостность приложенного открытого ключа проверяется стартовым кодом в ME ROM, в котором хранится хеш-сумма SHA256 открытого ключа компании Intel.





В итоге, схему верификации кодового раздела ME firmware можно обобщить на рисунке:







Каждый кодовый раздел верифицируется по этой схеме.



Этого более чем достаточно для защиты прошивки от подделывания. Программно перезаписать ME регион SPI флеш-памяти нельзя (помним про разрешения в Flash Descriptors), аппаратные средства, конечно позволят обойти это ограничение, но контроль подлинности не выключить.





Напоследок, посмотрим в сторону защиты от бинарных уязвимостей.



Мы увидели, что весь исполнимый код ME firmware разбит на модули разного назначения:





[рисунок взят из книги 1]



У ME-контроллера есть два режима работы: привелегированный и пользовательский (аналоги kernel mode и user mode для CPU). Привелегированный режим отличает, прежде всего, возможность доступа к аппаратным ресурсам и возможность обращения по адресам вне отведённого этому модулю диапазона памяти.



Каждый модуль запускается и работает в заданном (в заголовке этого модуля) режиме.





[рисунок взят из книги 1]



Распарсив весь ME регион можно увидеть, что привелегированный режим используется ядром ОСРВ и некоторыми драверами. Службам и прикладными модулям, как и положено, отводится только пользовательский режим.






Заключение




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



Это является веской причиной для наличия у Intel ME серьёзной защиты. Мы считаем, что вендоры любого встраиваемого сетевого оборудования должны стремиться к описанной модели безопасности. Её характеризуют следующие принципы:

  • запрет на использование дефолтного пароля, принуждение к установке сильного пароля (соответствующего определённым требованиям);
  • использование функций шифрования в сетевых протоколах;
  • контроль целостности и подлинности всего исполнимого кода прошивки;
  • механизмы защиты от эксплуатации бинарных уязвимостей.




Заранее прокомментирую возможные призывы использовать компьютерные платформы на основе CPU и чипсетов от AMD: у них есть очень похожая технология, называется Platform Security Processor (PSP). Представлена не так давно, в 2013 году. Про неё пока известно не много, но кое-что можно почитать здесь.










Список литературы




1. A. Kumar, «Active Platform Management Demystified: Unleashing the Power of Intel VPro ™ Technology», 2009, Intel Press.



2. Xiaoyu Ruan, «Platform Embedded Security Technology Revealed: Safeguarding the Future of Computing with Intel Embedded Security and Management Engine», 2014, APress.



Original source: habrahabr.ru (comments, light).

Читать дальше


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 20.5.2025, 0:32
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования