Uefi hp: Как зайти в BIOS/UEFI на ноутбуках HP

Еще немного реверс-инжиниринга UEFI PEI-модулей на другом полезном примере / Хабр

И снова здравствуйте, уважаемые хабрачитатели.

В рамках борьбы за возможность модификации UEFI на ноутбуках HP пришлось отломать еще одну защиту, на этот раз более современную. Видимо, отдел разработки прошивок в HP догадался, что предыдущая защита была не ахти, и потому они решили радикально её улучшить, поэтому метод обхода защиты DXE-тома из предыдущей статьи перестал работать, и мне опять понадобилось вооружаться дизассемблером, разрабатывать конвертер из TE в PE и отвечать на те же вопросы: где находится цифровая подпись, кто именно ее проверяет и как сделать так, чтобы проверка всегда заканчивалась успехом.

Если вас интересуют ответы и описание процесса их поиска — прошу под кат.

Краткая предыстория


Защита, о взломе которой пойдет речь в этом тексте, была введена HP около полутора лет назад, и (насколько мне известно) до сих пор считалась надежной. Пользователи ноутбуков HP с защищенным ей UEFI периодически наведывались на форум bios-mods.com в надежде на помощь в избавлении от белых списков оборудования или открытии скрытых настроек UEFI Setup, но с той же периодичностью получали ответ — защита стойкая и ничего не сделать. В начале лета 2014 года одному из администраторов bios-mods это надоело и он решил взять инициативу по взлому в свои руки. Процесс пошел, но крайне медленно, и результата публичного до сих пор не появилось, а он очень нужен ремонтникам, которые рады бы ставить на эти ноутбуки другие процессоры/видеокарты/модемы, но не могут, т.к. для их правильной работы нужна модификация DXE-драйверов, а после нее прошивка не стартует. В итоге мне эта ерунда надоела и я решил отломать защиту самостоятельно, благо, как выяснилось, ничего радикально сложнее предыдущей защиты HP придумать не смогли.

Ликбеза не будет


Если вам непонятно, что тут происходит, прочтите предыдущую статью, там имеется краткое введение в курс дела и список используемых инструментов.

Что дано и что требуется найти


Имеется ноутбук HP, который на любое изменение в DXE-томе отзывается сначала перезагрузкой почти сразу после включения, а затем впадает в бесконечный цикл, моргая при этом лампочками на клавиатуре. Также имеется дамп его прошивки и добрые ребята-ремонтники, готовые потратить время на то, чтобы проверить очередную измененную прошивку на работоспособность.

Конечная цель — прошивка должна работать после модификаций.

Поиски


Снова открываем прошивку в UEFITool и смотрим на панель Messages. Благодаря опыту, полученному в прошлой статье, утилита теперь умеет отображать нестандартные данные в дереве (т.е. не теперь не обязательно распаковывать весь DXE-том, что добраться до них) и сохраняет их при пересборке тома:

Как и в прошлый раз, подозрительные данные оказываются в самом конце DXE-тома, но теперь можно достать их непосредственно из дерева, что и делаем, получаем файл key.bin, который затем открываем в Hex-редакторе:

И снова перед глазами предстает неизвестный кусок данных размером 100h (похожий на RSA2048 public key), но теперь у него есть сигнатура — $HSS. Как я уже писал, данные такого рода могут быть найдены либо по сигнатуре, либо по смещению внутри тома, либо по абсолютному адресу (с учетом того, что последний байт микросхемы SPI-flash оказывается при старте по адресу FFFFFFFFh). Проверим сначала первый вариант, воспользовавшись поиском текста в UEFITool:

Находим 4 вхождения искомой строки, одно из которых мы уже посмотрели (то, которое внутри Non-UEFI data), нужно разобраться с остальными. Первое оказывается в DXE-драйвере по имени BiosImageInterface, но он сам находится в томе, который призван проверять, так что наличие там основной проверки весьма маловероятно. Если в других местах не найдем — надо будет к нему вернуться.

Последние же два вхождения указывают две копии одного и того же PEI-модуля, первая из которых находится в упакованной копии PEI-тома (она может использоваться для автоматического восстановления поврежденного PEI-тома), а другая — в «настоящем» PEI-томе. Вот и наш подозреваемый, все указывает на то, что целостность проверяет именно он, и нужно достать его содержимое в файл hss. bin для дальнейшего анализа.

В прошлый раз на этом месте мы загрузили полученный файл в IDA и начали анализировать его, но в данном случае так смогут сделать только обладатели IDA 6.7 и выше, т.к. именно в 6.7 появилась нативная поддержка формата Terse Executable, в котором и хранится наш PEI-модуль. Формат этот разработан авторами спецификации UEFI PI для экономии места в кэше процессора, по факту это PE32 с сильно обрезанным заголовком, от которого оставили только жизненно необходимые для правильной загрузки образа поля. Более того, большая часть производителей использует в фазе PEI крайне примитивный загрузчик исполняемых файлов, который не поддерживает relocation’ы, и потому его базовый адрес должен совпадать с физическим адресом. Все это замечательно, конечно, но нам нужен не непонятный TE, а понятный PE32, поэтому пришлось написать конвертер из TE в PE, который пытается восстановить заголовок PE-файла по тем данным, которые получилось найти в TE-файле. Утилита писалась за полчаса и под конкретный файл, так что за правильность конвертирования любого наперед заданного TE-образа поручиться не могу.

Вот теперь у нас есть файл pe.bin и можно открывать его в IDA и вести анализ. В этот раз пойдем немного другим путем и будем начинать не с точки входа, а с того места, где встречается сигнатура $HSS. Идем в Search -> Text… (или нажимаем Alt+T), вводим $HSS, ставим галку Find all occurences и… ничего не находим. Думаем немного и понимаем, что у нас LittleEndian-машина, и $HSS при загрузке в регистр будет выглядеть как SSH$ или 53534824h. Ищем этот вариант и вуаля, одно вхождение:

Переходим двойным щелчком на сообщении и попадаем вот сюда:

А вот и проверка на то, что по адресу из EBX лежит 53534824h, и если оно там действительно лежит — в переменную на стеке сохраняется EBX + 20h, т.е. как раз адрес первого байта ключа, а если не лежит — к EBX прибавляется 10h и проверяется снова. Видно также, что из другой ветки кода в ту же переменную может попасть значение FFF3DF00h, которое является физическим адресом первого байта ключа. Можно это проверить, для чего достаточно от 100000000h отнять FFF3DF00h и отступить полученные C2100h байт от конца файла — как и предполагалось, мы оказываемся точно на начале блока с ключом. Будет ли ключ найден по сигнатуре или абсолютному адресу — зависит от BootMode. Если текущий режим 20h, т.е. BOOT_IN_RECOVERY_MODE — ключ будет найден по абсолютному адресу, иначе — по сигнатуре.

Смотрим дальше:

А дальше происходит вызов функции из какого-то специфичного для HP PPI, которая и осуществляет проверку. Если эта функция вернула 0 (т.е. EFI_SUCCESS), то мы уходим с этого экрана вниз на return, если же проверка не удалась, все опять зависит от BootMode, в случае BOOT_IN_RECOVERY_MODE происходит вызов функции из другого PPI (которая, я подозреваю, постарается восстановить DXE-том из Recovery-образа). Затем уже независимо от BootMode вызывается еще одна функция из второго PPI, после чего в стек кладутся 6 и 0CF9h и выполняется вызов коротенькой функции, в нашем случае выглядящей так:

mov al, 6
mov dx, 0CF9h
out dx, al


Если вдруг не узнали в гриме — это самый распространенный ныне способ hard reset’а через IO-порты. А если ресет вдруг не случился, случится бесконечный цикл, который сразу за ним.

Ну вот, с причинами ресета разобрались, теперь надо его обойти, причем так, чтобы вернуть EFI_SUCCESS в EAX из той функции, в которой это все происходит. На мой взгляд, самый простой способ достичь желаемого — поменять первый test eax, eax на xor eax, eax, в результате и в EAX появится 0, и JGE сработает в 100% случаев, а ресет станет мертвым кодом.

UPD по многочисленным просьбам из ЛС: чтобы быстро найти место для патча, нужно достать из файла с GUID 86D70125-BAA3-4296-A62F-602BEBBB9081 исполняемую секцию (она может быть как TE, так и PE, я встречал оба варианта), открыть ее в Hex-редакторе, найти строку $HSS и найти первое вхождение паттерна 85 C0 после $HSS — с очень высокой вероятностью это и есть место для патча. Если же нет — придется искать его самостоятельно.

Тестирование и заключение


Сказано-сделано, патчим 85 C0 -> 31 C0, собираем прошивку (не забыв, что у нас две копии этого файла и заменить нужно обе) и отправляем нашим ремонтникам на тестирование. Через 5 минут приходит сообщение: «запускается и работает, большое спасибо». Вот теперь можно снова садиться и писать статью про крутые вендорские защиты, которые сначала держатся полтора года, а потом снимаются за полтора часа.

Спасибо за внимание, удачных вам прошивок и модификаций.

P.S. В качестве бонуса, фиговенькое фото запущенного ноутбука с замененным Boot Logo, хранящимся в DXE-томе. Показывает, что защита действительно снята.

HP ProBook 6460b BIOS Update (UEFI) v.2.2.0.0

На этой странице вы можете бесплатно скачать HP ProBook 6460b BIOS Update (UEFI) v.2.2.0.0

Добавить HP ProBook 6460b BIOS Update (UEFI) 2.2.0.0 в список ваших драйверов
HP ProBook 6460b manuals

Категория:Notebooks

Производитель:HP

Оборудование:HP ProBook 6460b

Тип программы:BIOS

Название:BIOS Update (UEFI)

Версия:2.2.0.0

Размер файла:1.14Mb

Тип архива:MSZIP

Дата выхода:24 Oct 2011

Система:BIOS

Status:Free

Загрузок:292

Описание:BIOS Update (UEFI) for HP ProBook 6460b Notebook PC

Правовая информация:Все програмное обеспечение, размещённое на Driver. ru является бесплатным. Все названия и торговые марки принадлежат их владельцам.

Внимание:Некоторые программы получены из непроверенных источников. Мы не гарантируем их совместимость и работоспособность. Всегда проверяйте загруженные файлы с помощью антивирусных программ. Мы не несём никакой ответственности за возможные потери, возникшие в результате установки загруженных программ. Загрузка файла с Driver.ru обозначает вашу информированность об этом и согласие с данными условиями.

Похожие файлы:

Тип программы:BIOS

Версия:F.61 Rev.A

Система:BIOS

Описание:BIOS for HP ProBook 6460b
This package creates files that contain an image of the System BIOS
(ROM) for the supported notebook models with a 68SCF or 68SCE
family ROM. This package is used to flash the System ROM on support
notebook.

This package includes several methods for updating the BIOS version
as follows:

— Use t…
Скачать HP ProBook 6460b BIOS v.F.61 Rev. A

Название:Intel My WiFi and Wireless Drivers

Версия:15.13.0.2 Rev.D

Система:Windows 7Windows 7 64-bit

Описание:Intel My WiFi and Wireless Drivers for HP ProBook 6460b
This package contains Intel My WiFi and wireless drivers for the
supported Intel Wireless LAN adapters. This package is provided for
supported notebook models running a supported operating system.

NOTE: To install this package correctly, the previous driver must
be removed before installing…
Скачать HP ProBook 6460b Intel My WiFi and Wireless Drivers v.15.13.0.2 Rev.D

Название:Infineon Trusted Plat

Версия:6.00 Rev. B

Система:Windows XPWindows XP 64-bit

Описание:Infineon Trusted Plat driver for HP ProBook 6460b
This driver installation package contains a standalone Infineon
Trusted Platform Module (TPM) driver for use with notebooks/­laptops
that are equipped with the Infineon TPM. NOTE: This standalone
driver is intended for «lean» images that do NOT install the HP
ProtectTools Credential Manager (PTCRM) or the HP. ..
Скачать HP ProBook 6460b Infineon Trusted Plat v.6.00 Rev. B драйвер

Тип программы:Broadcom Bluetooth 4.0 Driver and Software

Версия:6.5

Система:Windows 7Windows 7 64-bit

Описание:Broadcom Bluetooth 4.0 Driver and Software for HP ProBook 6460b
The package contains the Broadcom bluetooth driver and software for
supported notebook models that are running a supported operating
system. Broadcom Bluetooth 4.0 Driver is required to enable
Broadcom bluetooth 4.0 devices and is compatible with Broadcom
bluetooth 3.0 and earlier versions.
C…
Скачать HP ProBook 6460b Broadcom Bluetooth 4.0 Драйвер and Software v.6.5

Тип программы:BIOS

Версия:F.01 Rev.

Система:BIOS

Описание:BIOS for HP ProBook 6460b
This package creates files that contain an image of the System BIOS
(ROM) for the supported notebook models with a 68SCF and 68SCE
family ROM. This package is used to flash the System ROM on a
support notebook.

This package includes several methods for updating the BIOS version
as follows:

— Us…
Скачать HP ProBook 6460b BIOS v.F.01 Rev.

Тип программы:BIOS

Версия:F.60 Rev.A

Система:BIOS

Описание:BIOS for HP ProBook 6460b
This package creates files that contain an image of the System BIOS
(ROM) for the supported notebook models with a 68SCF and 68SCE
family ROM. This package is used to flash the System ROM on a
support notebook.

This package includes several methods for updating the BIOS version
as follows:

— Us…
Скачать HP ProBook 6460b BIOS v.F.60 Rev.A

Название:Intel Video Driver and Control Panel

Версия:15.28.20.64.3347 Rev. A

Система:Windows 8 64-bitWindows 7 64-bit

Описание:Intel Video Driver and Control Panel for HP ProBook 6460b
This package provides the Intel video drivers, Control Panel and
Display audio driver for the platforms listed in supported notebook
models and operating systems.
Compatible devices:
A0X43LP, A0X58LP, A0Y27LA, A0Y30LA, A2G06EC, A2G07EC, A2G13EC, A2G76PC, A2U50PP, A2V15LA, A2V16LP, A2V18LP, A2V88LA, A2V96…
Скачать HP ProBook 6460b Intel Video Драйвер and Control Panel v.15.28.20.64.3347 Rev. A

Название:Intel Video Driver and Control Panel

Версия:15.28.20.3347

Система:Windows 8Windows 7

Описание:Intel Video Driver and Control Panel for HP ProBook 6460b
This package provides the Intel video drivers, Control Panel and
Display audio driver for the platforms listed in supported notebook
models and operating systems.
Compatible devices:
A0X43LP, A0X58LP, A0Y27LA, A0Y30LA, A2G06EC, A2G07EC, A2G13EC, A2G76PC, A2U50PP, A2V15LA, A2V16LP, A2V18LP, A2V88LA, A2V96…
Скачать HP ProBook 6460b Intel Video Драйвер and Control Panel v.15.28.20.3347

Название:Sierra Wireless Driver Package

Версия:1.0.45.0

Система:Windows 7, Windows 7 64-bit, Windows XPWindows XP 64-bit

Описание:Sierra Wireless Driver Package for HP ProBook 6460b
This package provides the drivers for the Sierra Wireless HP un2430
Mobile Broadband Module and is available on supported notebooks
that are running a supported operating system.
Compatible devices:
A0X43LP, A0X58LP, A0Y27LA, A0Y30LA, A2G06EC, A2G07EC, A2G13EC, A2G76PC, A2U50PP, A2V15LA, A2V16LP, A2V18LP, A2V8…
Скачать HP ProBook 6460b Sierra Wireless Драйвер Package v.1.0.45.0

Название:Intel Video Driver and Control Panel

Версия:15.22.58.2993

Система:Windows Vista

Описание:Intel Video Driver and Control Panel for HP ProBook 6460b
This package provides the Intel video drivers, Control Panel and
Display audio driver for the platforms listed in supported notebook
models and operating systems.
Compatible devices:
A0X43LP, A0X58LP, A0Y27LA, A0Y30LA, A2G06EC, A2G07EC, A2G13EC, A2G76PC, A2U50PP, A2V15LA, A2V16LP, A2V18LP, A2V88LA, A2V96…
Скачать HP ProBook 6460b Intel Video Драйвер and Control Panel v.15.22.58.2993

 

HP Помощник по поддержке | HP® Support

HP Support Assistant для ПК

HP Support Assistant входит в состав новых настольных ПК и ноутбуков HP. Вы можете установить его на ПК других производителей для быстрого доступа к ресурсам поддержки и инструментам для принтеров и ПК HP. Щелкните значок на панели задач, чтобы запустить HP Support Assistant, или загрузите прямо сейчас.

Загрузить HP Support Assistant 9

Требуется Windows 10 RS4 или выше.

Если во время установки HP Support Assistant вы получили сообщение о несовместимости операционной системы, загрузите и установите устаревшую версию 9.0003

HP Support Assistant для ПК

HP Support Assistant входит в состав новых настольных ПК и ноутбуков HP. Вы можете установить его на ПК других производителей для быстрого доступа к ресурсам поддержки и инструментам для принтеров и ПК HP.

Щелкните значок на панели задач, чтобы запустить HP Support Assistant, или загрузите прямо сейчас.

HP Support Assistant для Chrome OS

Установите HP Support Assistant для удобного поиска и устранения неисправностей на вашем устройстве с Chrome OS. Это бесплатное приложение запускается из браузера Chrome и может быть установлено на большинстве устройств под управлением Chrome OS M9. 9 или позже.

Чтобы добавить эту службу, запустите с устройства под управлением Chrome OS M99 или более поздней версии.

  1. Убедитесь, что вы используете браузер Chrome
  2. Перейти к расширению HPSA Chrome OS в Интернет-магазине Chrome
  3. Загрузите расширение HP Support Assistant
  4. Когда вы будете перенаправлены обратно на эту страницу, запустите приложение с помощью кнопки ниже

HP Support Assistant Mobile

Нужна помощь в пути? HP Support Assistant Mobile предоставляет многие из тех же замечательных функций, что и версия для Windows, у вас на ладони.

Загрузите сейчас для iOS и Android.

HP Support Assistant для ПК

HP Support Assistant входит в состав новых настольных ПК и ноутбуков HP. Вы можете установить его на ПК других производителей для быстрого доступа к ресурсам поддержки и инструментам для принтеров и ПК HP. Щелкните значок на панели задач, чтобы запустить HP Support Assistant, или загрузите прямо сейчас.

Загрузить HP Support Assistant 9

Требуется Windows 10 RS4 или выше.

Если вы получили сообщение о несовместимости операционной системы во время установки HP Support Assistant, загрузите и установите устаревшую версию

HP Support Assistant Mobile

Нужна помощь в пути? HP Support Assistant Mobile предоставляет многие из тех же замечательных функций, что и версия для Windows, у вас на ладони.

Загрузите сейчас для iOS и Android.

Функции HP Support Assistant включают:

Автоматические исправления и средства устранения неполадок

Решайте многие распространенные проблемы с помощью средств устранения неполадок и автоматических исправлений HP Support Assistant. Если проблема не может быть решена с помощью этих инструментов, HP Support Assistant может помочь вам найти дополнительные ресурсы поддержки, характерные для вашего устройства.

Индивидуальная поддержка

Управляйте подключенными устройствами HP при создании нового идентификатора или входе с существующими учетными данными. Нужно отслеживать новые сообщения или обновления для компьютера или принтера друга или члена семьи? Просто добавьте их устройство в свой список, и вы будете автоматически уведомлены. Вы также можете просмотреть доступные и подписанные услуги HP. 2

Автоматические обновления

Повысьте производительность и надежность своих ПК и принтеров с помощью автоматических обновлений микропрограмм и драйверов. Вы можете настроить параметры для автоматической установки обновлений или уведомления о появлении обновлений.

Помощь в любое время с HP Virtual Agent

Нужна помощь в устранении неполадок? Просто спроси! Виртуальный агент HP может помочь устранить неполадки с вашим ПК или принтером в любое время дня и ночи. 3

  1. Для HP Support Assistant 8 требуется .NET Framework 4.5 или более поздней версии.
  2. Для просмотра подписанных служб HP SmartFriend требуется вход в систему.
  3. Виртуальный агент HP доступен в некоторых странах.

HP исправляет 16 ошибок встроенного ПО UEFI, позволяющих скрытно заражать вредоносные программы

Компания HP сообщила о 16 серьезных уязвимостях встроенного ПО UEFI, которые могут позволить злоумышленникам заразить устройства вредоносными программами, которые получают высокие привилегии и остаются незаметными для установленного программного обеспечения безопасности.

Эти уязвимости затрагивают несколько моделей HP, включая ноутбуки, настольные компьютеры, системы PoS и пограничные вычислительные узлы.

Ошибки были обнаружены исследователями из Binarly, той же группы, которая опубликовала еще один набор ошибок UEFI, затрагивающих 25 поставщиков компьютеров еще в феврале.

Через несколько дней после этого основатель Binarly представил на OffensiveCon пять новых недостатков UEFI, затрагивающих HP, и HP выпустила соответствующее обновление безопасности для их устранения.

Сегодня Binarly, HP и CERT/CC согласовали раскрытие полного набора недавно обнаруженных уязвимостей, включая 11 новых уязвимостей, влияющих на прошивку HPE UEFI.

Эти уязвимости разделены на три группы в зависимости от используемого компонента/функции:

Выноска SMM (повышение привилегий)

  • CVE-2021-39298: выноска, ведущая к повышению привилегий (CVSS — 7.5)
  • CVE-2021-23932: выноска, ведущая к повышению привилегий (CVSS — 8.2)
  • CVE-2021-23933: выноска, ведущая к повышению привилегий (CVSS — 8.2)

SSM (модуль управления системой)

  • CVE-2021-23924: переполнение буфера кучи, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23925: повреждение памяти, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23926: повреждение памяти, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23927: повреждение памяти, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23928: повреждение памяти, приводящее к выполнению произвольного кода (CVSS — 8. 2)
  • CVE-2021-23929: повреждение памяти, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23930: переполнение буфера кучи, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23931: переполнение буфера кучи, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-23934: повреждение памяти, приводящее к выполнению произвольного кода (CVSS — 8.2)

DXE (среда выполнения драйвера)

  • CVE-2021-39297: переполнение буфера стека, приводящее к выполнению произвольного кода (CVSS — 7.7)
  • CVE-2021-39299: переполнение буфера стека, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-39300: переполнение стека, приводящее к выполнению произвольного кода (CVSS — 8.2)
  • CVE-2021-39301: переполнение стека, приводящее к выполнению произвольного кода (CVSS — 7.7)

Поскольку и DXE, и SSM активируются до запуска операционной системы, любые уязвимости, используемые в этих компонентах, превышают привилегии ОС ядра и обходят все средства защиты.

Воздействие уязвимостей UEFI
Источник: Binarly

Кроме того, способный злоумышленник может потенциально использовать их для внедрения вредоносного программного обеспечения с постоянной защитой, которая выдерживает обновления ОС и обходит UEFI Secure Boot, Intel Boot Guard и решения безопасности виртуализации.

«Активная эксплуатация всех обнаруженных уязвимостей не может быть обнаружена системами мониторинга целостности прошивки из-за ограничений измерения Trusted Platform Module (TPM). Решения для удаленной аттестации работоспособности устройств не обнаружат уязвимые системы из-за конструктивных ограничений видимости среды выполнения прошивки», — говорится в отчете Binarly об уязвимостях.

«К сожалению, большинство проблем в обнаруженных нами уязвимостях — это повторяющиеся сбои, некоторые из которых связаны со сложностью кодовой базы или устаревшими компонентами, которым уделяется меньше внимания со стороны безопасности, но которые по-прежнему широко используются в полевых условиях».

Читайте также: