Intel ME. Як уникнути повстання машин?



В минулий раз ми розповіли про Intel Management Engine (ME) — підсистемі, яка вбудована в усі сучасні комп'ютерні платформи (десктопи, ноутбуки, сервери, планшети) з чіпсетами компанії Intel. Ця технологія багатьма сприймається як апаратна «закладка», і на те є причини. Досить сказати, що Intel ME є єдиною середовищем виконання, що:
  • працює навіть тоді, коли комп'ютер вимкнений (але електроживлення подається);
  • має доступ до всього вмісту оперативної пам'яті комп'ютера;
  • має позасмуговий доступ до мережного інтерфейсу.


Ошелешений присутністю такого компонента в комп'ютері, користувач (виходить, що саме «користувач», а не «власник») напевно задавався питанням: можна вимкнути Intel ME?

Ця стаття цілком присвячена цьому питанню.



Введення

Нагадаємо, що основним компонентом Intel ME є вбудований у чіпсет мікроконтролер з кастомних архітектурою. Відома лише базова модель, це 32-х розрядний ARCtangent-A4 (ME 1.x — 5.x) ARCtangent-A5 (ME 6.x — 10.x), SPARC (TXE) або x86 (ME 11.x — ...).

Починаючи з 6-ї версії, ME-контролер вбудовують у всі чіпсети Intel.


[малюнок взятий отсюда]

Завантажувач його прошивки зберігається у внутрішній ROM і недоступний для аналізу. Сама прошивка розташовується в регіоні ME у зовнішній SPI флеш-пам'яті (тобто в тій же пам'яті, де зберігається BIOS). Структура цієї прошивки така, що весь виконавчий код розбитий на модулі, які зберігаються в стислому вигляді (або кастомних реалізацією алгоритму Хаффмана, або LZMA). Ці кодові модулі криптографічно захищені від модифікацій.

Якщо є бажання пореверсить прошивку, рекомендуємо скористатися цими двома інструментами для вивчення її структури і розпакування кодових модулів.

Отже, розглянута підсистема є апаратно-програмною основою для різних системних функцій (деякі раніше реалізовували в BIOS) і технологій Intel. Їх імплементація включається до складу прошивки Intel ME. Однією з таких технологій, що використовують кілька особливих привілеїв Intel ME, є Active Management Technology (AMT).

Контроль за станом AMT

AMT – технологія віддаленого адміністрування комп'ютерних систем, для яких заявлена офіційна підтримка Intel vPro (це бренд, об'єднуючий декілька технологій, в тому числі, AMT). Мова йде про системи з чіпсетами лінійки Q (наприклад, Q57 або Q170).

Враховуючи високу вартість таких платформ, навряд чи хтось випадково придбає комп'ютер з AMT для того, щоб принципово цією технологією не користуватися. Тим не менш, якщо під рукою саме такий продукт, і є необхідність переконатися, що AMT на поточний момент вимкнена, слід скористатися утилітою ACUwizard:


[малюнок взятий звідси]

або засобом Intel Management and Security Status (входить до складу ПЗ Intel ME для vPro-платформ, можна виявити в треї):





Нарешті, щоб захистити комп'ютери в мережі від несанкціонованого управління ззовні, необхідно налаштувати зовнішній файрвол на фільтрацію AMT-запитів за ознаками. Явною ознакою AMT-запиту може бути порт, до якого відбувається звернення:
  • 5900 – AMT VNC-сервер без шифрування;
  • 16992 – AMT веб-сервер по протоколу HTTP;
  • 16993 – AMT веб-сервер по протоколу HTTPS;
  • 16994 – AMT redirection для SOL, IDE-R, KVM без шифрування;
  • 16995 – AMT redirection для SOL, IDE-R, KVM з TLS.


У продуктах, які не належать до розряду vPro-платформ AMT включити не можна, однак до складу прошивки Intel ME входять мережеві драйвери:



Це означає, що ME-контролер (не будемо забувати, що він завжди включений) має технічну можливість використання мережевого інтерфейсу.

Тому проблему варто вирішувати грунтовно – намагатися виключити підсистему Intel ME.

Вимикання Intel ME за допомогою утиліт з Intel System Tool Kit

Вендорам материнських плат компанія Intel надає:
  1. Прошивку Intel ME в бінарному вигляді;
  2. Модулі MEBx для BIOS;
  3. ЗА Intel ME для ОС;
  4. Intel System Tool Kit (STK) — комплект програмних засобів і документації для складання образів SPI флеш-пам'яті, застосування цих образів і отримання інформації про поточний стан Intel ME.


Незважаючи на те, що цей комплект поширюється по NDA (судячи по мітках «Intel Confidential» в доданих документах), багато вендори забувають його вирізати з архіву з Intel ME, який передається користувачам. А ще не закривають свої ftp-сервери від зовнішнього доступу. В результаті, витекли версій STK дуже багато. Здесь можна злити комплект для будь-якої версії Intel ME.

Важливо, щоб major і minor version (перша і друга цифри) використовуваного STK збігалася з версією Intel ME цільової системи, інформацію про яку можна отримати, наприклад, скориставшись ME analyzer:



Перевіряти поточний стан Intel ME можна за допомогою утиліти MEinfo, яка через Management Engine Interface (MEI) отримує інформацію про роботу цієї підсистеми:



Нагадаємо, що MEI є інтерфейсом для зв'язку основного CPU з підсистемою Intel ME і являє собою набір регістрів в конфігураційному просторі PCI і в MMIO. Команди цього інтерфейсу не задокументовані, як і сам протокол.

Flash Image Tool

На старих платформах (Intel ME версії 5.x і нижче) вимкнути цю підсистему можна, скориставшись Flash Image Tool (утиліта з STK, призначена для складання образів SPI флеш-пам'яті з окремо взятих регіонів BIOS, ME, GbE). При складанні задаються параметри, які прописуються в цих регіонах і в регіоні Flash is invalid. В останньому є один дуже цікавий прапор, «ME disable»:



Таким чином, для виключення Intel ME на цільовий комп'ютерній системі, в її SPI флеш-пам'ять слід записати (програматором) новий образ з виставленим прапором «ME disable».

Працює цей спосіб, нам невідомо. Але звучить правдоподібно, враховуючи, що ME-контролер в тих версіях інтегрувався тільки в чіпсети лінійки Q, тобто був не обов'язковим компонентом для всіх платформ.

Flash Programming Tool

Починаючи з Intel ME 9 версії, в утиліту Flash Programming Tool, призначену для програмування SPI флеш-пам'яті комп'ютерних платформ, була додана можливість тимчасово вимикати Intel ME:



Вимкнення виконується відправкою команди в MEI. Після відпрацювання Intel ME не подає «ознак життя», не відповідає навіть MEI:



Згідно документації, в такому стані підсистема Intel ME знаходиться до наступного запуску комп'ютера або перезавантаження.

На vPro-платформах можливість відправлення цієї команди є і в більш ранніх версіях. Для цього необхідно скористатися розділом конфігурування ME/AMT в BIOS, де повинна бути опція «Intel ME disable»:


[малюнок взятий отсюда]

Не можна говорити про те, що цей спосіб дозволяє повністю відключити Intel ME, хоча б тому, що до моменту прийняття команди на відключення ME-контролер встигне завантажитися, а отже, виконати деяку частину коду прошивки.
Незважаючи на те, що Intel ME не подає «ознак життя» після цієї операції, невідомо, чи може цю підсистему заново включити який-небудь сигнал ззовні. Також неясно, наскільки Intel ME вимкнена.

Примусове вимикання Intel ME

В інтересах виключення можливості виконання ME-контролером коду прошивки, логічно спробувати обмежити йому доступ до неї. А що? Немає коду – немає проблеми.

Проаналізувавши документацію, що додається до STK, і, трохи подумавши, ми припустили, що це можна зробити наступними способами.

1. Вирізати (обнулити) ME регіон з SPI флеш-пам'яті.

Ті, хто пробував так робити повідомляють про те, що їх платформа або не завантажувалася без наявності справжньої прошивки ME, або вимикалася рівно після 30 хвилин роботи.

Відмова комп'ютерної системи грузиться без прошивки Intel ME можна пояснити важливістю ME-контролера в процесі ініціалізації апаратної складової. А 30-хвилинний таймаут наводить на думку про WDT (Watch Dog Timer).

2. Включити не дескрипторный режим SPI флеш-пам'яті, тобто «по старинці» коли в ній містився тільки BIOS. Для цього потрібно зробити одне з двох:
  • стерти перші 0x20 байт в ній (таким чином пошкодивши сигнатуру 0x0FF0A55A, яка визначає режим роботи флеш-пам'яті);
  • виставити джампер HDA_SDO (якщо він є).


Таким чином, ME-контролер не отримає доступ до свого регіону, і, отже, не буде виконувати прошивку.

З одного боку, ME-контролер так само, як і в попередньому випадку, може перешкоджати нормальній роботі комп'ютерної системи. З іншого боку, не дескрипторный режим включає т. н. manufacturing mode, який використовується вендорами у налагоджувальних цілях, і є шанс, що система запуститься.

3. Відомо, що прошивка Intel ME розпаковується в виділену і приховану від основного CPU область оперативної пам'яті – ME UMA. Виділення і блокування цієї області здійснює BIOS під час конфігурування карти пам'яті. Тоді чому б не вирізати ці фрагменти коду BIOS, щоб дана область не виділялася. Тоді прошивка ME не буде распаковываться і виконуватися.

Проведені експерименти показали, що такий спосіб теж не годиться, і система не запускається. До того ж, у ME-контролера є внутрішня SRAM, яка використовується при недоступності ME UMA. Тому частина прошивки все одно буде виконуватися.

Висновок

Ми розповіли про передбачувані і потребують розвитку способах виключення Intel ME:
  • відключення при кожному старті командою в MEI або відключення прапором в регіоні flash is invalid (в залежності від версії);
  • обмеження доступу ME-контролеру до своєї прошивці або комп'ютерний переклад платформи в manufacturing mode.
  • перешкоджання нормальній роботі ME-контролера не забезпечуючи його runtime-пам'яттю.


Очевидно, що деякі запропоновані рішення тягнуть за собою непрацездатність комп'ютерної системи, інші не дають ніякої гарантії того, що підсистема Intel ME дійсно виключена. У зв'язку з цим, ми прийшли до висновку, що повністю вимкнути Intel ME вкрай складно.

Ймовірно, це пов'язано з тим, що, відключаючи Intel ME, ми нейтралізуємо важливий компонент у архітектурі комп'ютерної системи. Наприклад, без ME нікому буде вирішувати важливі системні завдання на зразок ACPI або ICC (які колись реалізовувалися в BIOS). Щоб змусити платформу стабільно працювати без ME, як мінімум, необхідно повернути реалізацію цих технологій в BIOS.

Так чи інакше, питання про те, як відключити Intel ME без втрати працездатності комп'ютерної системи, залишається відкритим.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.