Как протестировать Биос с помощью осциллографа

Для проверки BIOS осциллографом необходимо подключить измерительные пробники осциллографа к контактам на материнской плате, отвечающим за сигнал, который генерируется процессором при инициализации системы. Обычно это можно сделать в точках открытого доступа, таких как тестовые точки или разъемы, если они предусмотрены производителем.

После подключения осциллографа включите компьютер и зафиксируйте форму сигнала на экране устройства. Исключительно важно обращать внимание на параметры импульсов, такие как частота и амплитуда, так как они помогут понять, правильно ли работает BIOS и инициализация компонентов системы.

Использование программ BIOS для получения диагностической информации от адаптеров и внешних устройств ПК

Использование программ BIOS для получения диагностической информации от адаптеров и внешних устройств ПК

Надежным источником для получения уточняющей диагностической информации служат байты состояния, байты уточненного состояния и коды ошибок, которые представляют данные из регистров ошибок и состояний. Эта информация генерируется схемами контроля адаптеров внешних устройств и программами BIOS, разработанными высококвалифицированными специалистами.

Также данная диагностическая информация может быть извлечена при помощи специально разработанных простых тестовых программ. Коды ошибок, байты состояния и данные из регистров ошибок и состояний (например, 1F1 и 1F7 на рис.1) формируются аппаратурой контроллеров и предоставляют сведения о конкретных состояниях и ошибках в аппаратуре контроллеров и внешних устройствах. Это надежная отправная точка для диагностики ошибок в контроллерах, находящихся на системных платах и во внешних устройствах.

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

Заключительный этап поиска неисправности в устройствах компьютера, как правило, требует исследования электронных схем с помощью осциллографа. Это исследование можно производить в устойчивом состоянии электронных схем устройств и программы после отказа. Но наибольший эффект при исследовании осциллографом можно получить, если с помощью программы активизировать исследуемый процесс. Для получения устойчивого изображения динамических сигналов на экране осциллографа необходимо, чтобы исследуемые в данном процессе сигналы повторялись периодически с одной и той же частотой. То есть необходимо циклически повторять исследуемый процесс, а это в большинстве случаев достаточно просто обеспечивается с помощью «зацикливания» программы, запускающей исследуемый процесс.

Для получения информации, такой как: коды ошибок устройств, которые генерируются функциями BIOS; байты состояния устройства, формируемые контроллерами; данные из регистра ошибок или регистра состояния контроллера, обычно достаточно однократного запуска в отладчике (например, AFD) небольшой специализированной программы, которая активирует контролируемый процесс в устройстве. Затем с помощью AFD можно считать регистры ошибок и состояния внешних устройств, а также коды ошибок из регистра АН и AL микропроцессора. После анализа полученной диагностической информации можно начать планирование дальнейших шагов по выявлению неисправности.

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

Существует возможность трансформации стандартной материнской платы в многофункциональный стенд, способный выполнять диагностику и ремонт большинства компонентов и устройств компьютера благодаря специализированным программам. Знание программирования позволяет разрабатывать «инструментальные» программные решения, которые могут заменить дорогие аппаратные тестеры, используемые для мониторинга и диагностики устройств.

Цены на аппаратные тестеры часто зашкаливают, а их ассортимент довольно ограничен. Адаптация и модификация таких устройств под специфические требования могут быть сложными и затратными. В отличие от аппаратуры, разработанные «инструментальные» программные решения легко изменяются и могут быть подстроены для работы с любым устройством. С помощью программного обеспечения можно установить любой нужный режим работы, а также удобно и эффективно контролировать процессы с помощью осциллографа.

Создание специализированных программ зачастую осуществляется на уровне ассемблера. Для упрощения разработки таких программ в них применяются стандартные функции BIOS. Максимальной эффективности удается достичь при использовании этих стандартных функций. BIOS-программы представляют собой базовый (физический) уровень стандартного ввода/вывода в операционной системе.

Функции BIOS зафиксированы в постоянном запоминающем устройстве (ПЗУ) и реализуют управление внешними устройствами на физическом уровне в процессе их выполнения. Ввод-вывод на физическом уровне происходит через команды контроллеров внешних устройств и их программно доступные регистры, с учетом всех необходимых задержек и специфики управления устройствами.

Программы BIOS подробно описаны (как говорят, хорошо документированы). По ним изданы справочники в печатном и электронном виде. Набор программы, ее отладку и запуск программы на выполнение, удобно осуществлять с помощью простых специальных программ типа профотладчиков Debug, AFD и др.. Программы-профотладчики предназначены для использования в работе специалистами по ремонту и диагностированию персональных компьютеров. С точки зрения программистов, они обладают скромными функциональными возможностями, но для написания и выполнения небольших специальных программ, чтения регистров контроллеров и процессора их возможностей вполне достаточно.

К примеру, BIOS INT 13 h, функция 02 h (Чтение сектора) позволяет считывать один или несколько секторов с физического диска в оперативную память.

Чтобы инициировать работу BIOS INT 13 h, функция 02 h, необходимо загрузить в регистры процессора определённые данные:

AL=число читаемых секторов

CL=идентификатор первого сектора

D H=номер головки

DL — код дисковода (00 h . 7 Fh — для гибкого диска, 80 h . FFh — для жесткого диска)

При корректном завершении операции в регистр флагов процессора записывается CF =0, в регистр АН устанавливается 0, а в регистр AL помещается количество переданных секторов.

При ошибке: в CF =1, АН= код состояния (или ошибки):

00ч — нет ошибки

0 lh — неправильная команда

02 h — адресная метка не обнаружена

03 h — дискета заблокирована для записи

04 h — сектор не найден

05 h — не удалось выполнить сброс жесткого диска

06h — дискета вынута

07 h — таблица параметров жесткого диска содержит ошибки

0 Ch — тип носителя данных не обнаружен

0 Dh — неправильное число секторов в формате на жестком диске

10 ч — необратимая ошибка информации

11 h — восстановленная ошибка данных на жестком диске

20 ч — сбой в работе контроллера

40 ч — ошибка в определении положения

80 h — тайм-аут диска

AAh — жёсткий диск не подготовлен

BBh — неизвестная ошибка жесткого диска

CCh — Проблема при сохранении

E 0 h — Ошибка в регистрации статуса

Использование дополнительных дисковых функций

Дополнительные возможности представлены номерами 41h-49h и 4Eh. Процесс взаимодействия с этими функциями значительно отличается от установленного для обычных функций прерывания Int 13h :

• вся адресная информация передается через буфер в оперативной памяти, а не через регистры;

• изменены соглашения по использованию регистров (для обеспечения передачи новых структур данных);

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

Пакет дискового адреса

Основной структурой данных, необходимой для дополнительных функций прерывания Int 13h, выступает «Пакет адреса диска» (Disk Address Packet). После получения этого пакета прерывание Int 13h преобразует информацию, содержащуюся в нем, в физические параметры, соответствующие задействованному носителю данных. Формат пакета адреса диска представлен в таблице 1:

Таблица 1. Формат пакета дискового адреса

Давайте более подробно остановимся на обозначении каждого поля в пакете дискового адреса:

— Байт сOffset 00h указывает на размер пакета дискового адреса в байтах. Этот размер должен быть не менее 16 байт: если значение в этом поле меньше 16, функция завершится с ошибкой (CF будет равно 1, а АН = 01h).

— Байт со смещением 01h зарезервирован для последующих версий стандарта и должен содержать значение 0.

— Байт с адресом 02h хранит количество блоков (секторов) данных, которые необходимо передать. Максимальное значение количества передаваемых блоков не должно превышать 127 (7Fh), иначе функция завершится с ошибкой (устанавливается CF = 1, АН = 01h).

Если поле содержит значение 0, то при выполнении функции передача данных не производится. Если поле содержит значение FFh, то используется 64-разрядная адресация данных: адрес буфера задается не двойным словом со смещением 04h, а квадрасловом со смещением 10h; число передаваемых блоков задается двойным словом со смещением 18h.

— Байт с адресом 03h зарезервирован для будущих версий стандарта и должен иметь значение 0.

— Двойное слово с адресом 04h показывает адрес буфера в оперативной памяти, который используется для работы с диском. Адрес необходимо указывать в формате «сегмент/смещение», что означает, что буфер должен быть расположен в пределах первого мегабайта адресного пространства процессора. Если это поле имеет значение FFFF:FFFFh, то для доступа к буферу используется линейный адрес, задаваемый квадрасловом с адресом 10h.

— Квадраслово со смещением 08h содержит абсолютный 64-разрядный номер начального блока (LBA-адрес) данных на диске.

При наличии поддержки режима LBA, адрес передается устройству напрямую, без внесения изменений.

Если устройство не может работать в режиме LBA , то производится преобразование линейного адреса в формат CHS.

Все упомянутые поля комплекта адреса диска существуют в стандарте с момента его первого появления. В новых версиях размер пакета был увеличен в два раза (32 байта вместо 16), что объясняется необходимостью поддержки 64-битной адресации данных, которая будет использоваться в компьютерах с новыми (64-битными) процессорными моделями.

— Квадратное слово с адресом 10h включает 64-битный линейный адрес буфера передачи, то есть области в оперативной памяти, используемой для операций записи и чтения. Это поле имеет значение только в том случае, если байт под адресом 02h имеет значение FFh или двойное слово под адресом 04h содержит значение FFFF:FFFFh.

  • Двойное слово с адресом 18h определяет количество передаваемых блоков, но применяется исключительно в том случае, если байт с адресом 02h имеет значение FFh
  • Слово с дублированием и смещением 1Ch предназначено для будущих версий стандарта (должно иметь значение 0).

Правила передачи параметров дополнительным функциям

Когда происходит вызов прерывания, дополнительные функции BIOS получают определённые данные через регистры процессора:

• в АН — номер вызываемой функции;

• в DL указывается номер диска;

• в DS: SI — расположение буфера, в который помещён пакет с адресом диска.

Передача остальных параметров, как было уже указано выше, производится через пакет дискового адреса.

Дополнительные возможности BIOS предназначены исключительно для жестких дисков и дисководов сменных носителей с высокой емкостью. Эти функции разработаны для работы не более чем с четырьмя устройствами одновременно. Поэтому номер диска, передаваемый в функции, должен находиться в пределах 80h-83h.

После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата, которые перечислены в «синей» табл., для дополнительных функций введено еще несколько кодов, перечисленных в «белой» таблице.

Коды состояния (для жестких дисков):

Коды состояния (дополнительно введены несколько новых кодов для расширенных функций):

Прерывание Int 13h, функция 42h: расширенное чтение

Данная функция выполняет копирование секторов из определенной области диска в память буфера.

Перед вызовом прерывания требуется записать в регистры следующие значения:

• в АН — это 42h;

• в DL — идентификатор дисковода;

• в DS: SI — адрес пакета дискового адреса.

По окончании операции функция возвращает состояние дисковой системы в регистре АН. Если выполнение функции прерывается аварийно, то поле счетчика блоков в пакете дискового адреса указывает количество блоков, которые были прочитаны успешно (до возникновения ошибки).

Прерывание Int 13h, функция 43h: расширенная запись

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

Перед тем как инициировать прерывание, необходимо записать в регистры следующие данные:

• в АН — значение 43h;

• в AL — код способа записи (0 или 1 — запись без проверки, 2 — запись с проверкой);

• в DL — номер дисковода;

• в DS: SI — это адрес пакета с данными о дисковом адресе.

По окончании выполнения операции функция возвращает текущее состояние дисковой системы в регистре АН. Если выполнение функции было прервано аварийно, поле счетчика блоков в пакете дискового адреса будет содержать количество блоков, которые были успешно записаны (т.е. записаны до возникновения ошибки). Аварийное завершение может произойти, если заданное устройство не поддерживает команду записи данных с проверкой. Наличие поддержки записи с верификацией можно выяснить с помощью функции 48h.

Прерывание Int 13h, функция 44h: верификация секторов

Данная функция выполняет проверку секций на носителе, основываясь на их контрольных значениях, не задействуя передачу данных между диском и RAM.

Перед вызовом прерывания требуется записать в регистры следующие значения:

• в АН — параметр 44h;

• в DL — идентификатор дисковода;

• в DS: SI – адрес пакета дискового адреса.

По окончании выполнения операции функция передает информацию о состоянии дисковой системы в регистре АН. Если выполнение функции завершается с ошибкой, то поле счётчика блоков в пакете дискового адреса отображает количество блоков, которые были успешно проверены до момента возникновения ошибки.

Пример использования дополнительной функции BIOS INT 13, функция 42h.

— с адреса 200h начинается «область дискового адреса» (занимает 20h байтов).

Нажмите F2 для запуска программы:

— c адреса 240h расположен буфер в который принято содержимое LBA с адресом

3Fh (Загрузочный сектор: EB 3C 90 46 … ).

Возможности профотладчика AFD позволяют выполнять операции записи/чтения по отношению к регистрам контроллеров периферийных устройств ПК. Набрав в командной строке команду «чтение порта» (н апример, команда I 1F1 показывает содержимое регистра ошибок контроллера жесткого диска). Значение битов прочитанного байта может рассказать о состоянии устройства или о том, что по данному адресу устройство не отвечает (код байта равен FF или 00 в некоторых случаях).

Для проверки работы определённых функций устройств можно использовать подпрограмму записи в порт ввода-вывода контроллера внешнего устройства. Запуск подпрограммы записи в порт ввода-вывода осуществляется командой отладчика:

Укажите адрес порта, код байта

Правильность формата вводимых команд отладчика контролируется, и при ошибке выводится необходимая подсказка. В результате выполнения операций чтения-записи можно получить информацию о состоянии контролируемого устройства. Конечно, при этом необходимо иметь под рукой справочные сведения о значении битов и адреса портов ввода – вывода проверяемого устройства.

Состояние регистров можно лишь просматривать, регистры управления предназначены исключительно для записи, в то время как в других регистрах контроллеров устройств возможно как чтение, так и запись данных. Это позволяет нам анализировать эффективность электрических схем исследуемого устройства.

Устранение неисправностей видеокарт, связанных с микросхемой BIOS

Материнские платы и видеокарты всегда имеют микросхему, содержащую микропрограмму BIOS, производящую первоначальную проверку и запуск устройства. Если считывание этого микрокода не производится должным образом, работа устройства невозможно.

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

Симптомы, свидетельствующие о наличии аппаратных проблем с BIOS видеокарт

Когда видеокарта не функционирует, но все нужные напряжения (включая 5 V, 1.8 V, VCore, Vmem, питание PEX и прочие) на плате имеются, скорее всего, проблема кроется в BIOS.

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

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

Чтобы проверить работоспособность флеш-BIOS видеокарты, необходимо:

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

Например, 4-Mbit микросхема Winbond 25Q40EWNIG, установленная на задней стороне платы видеокарты Nvidia GT1030 производства Zotac (элемент U501), питается напряжением 1.8 вольта:


Функции выводов в микросхемах Serial Flash W25Q40EW (в корпусе SOIC-8 размером 150mil):

Функции контактов на микросхеме W25Q40EW:

Перед проверкой микросхемы BIOS желательно ознакомиться хотя бы в общих чертах с тем, как она работает.

Как производится считывание микропрограммы BIOS при включении видеокарты?

Основной чертой функционирования микросхем BIOS в большинстве современных аппаратов является применение синхронного протокола Serial Peripheral Interface (SPI).

Микросхемы Flash BIOS производят дуплексный обмен данными (одновременно на прием и передачу) по SPI протоколу по принципу master-slave (ведущий- ведомый).

Передача данных осуществляется со скоростью 1 бит за цикл, используя четыре канала (провода) связи, которые функционируют следующим образом:

с точки зрения ведущего устройства (Master):

  • MISO — выходной сигнал (Master In Slave Out);
  • MOSI — входной сигнал (Master Out Slave In);
  • SCLK — последовательный тактовый сигнал синхронизации (Serial Clock);
  • SS — выбор ведомого устройства (Slave Select).

на стороне ведомого (Slave):

  • SDI — вход для данных ведомого устройства;
  • SDO — выход для данных ведомого устройства;
  • SCK — тактовый сигнал CLK (Синхронный Часы);
  • CS — сигнал выбора чипа (Chip Select).

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

Пример осциллограммы сигналов при обмене данными с микросхемой Winbond W25Q16BVSIG:

Микросхема W25Q40EW функционирует с использованием синхронизирующего сигнала частотой FR до 104 МГц для большинства операций (также имеется fR = 50 МГц):

Перед началом передачи данных (во время инициализации видеокарты) ядро GPU активирует вывод Chip Select (пин 1 CS или CE, Chip Enable) флеш-памяти, переводя его в рабочее состояние. При этом логический сигнал становится низким (для W25Q40EW он составляет ноль вольт в диапазоне от -0.5 до +0.59 V):

Затем начинается чтение микропрограммы BIOS с помощью второго и пятого выводов флешки (в рассматриваемом примере W25Q40EW). В ней содержится информация относительно названия видеокарты, частот ядра и памяти, вольтажа и другие важные данные.

Вывод номер 2 микросхемы флеш-BIOS (DO, Data Output в стандартном режиме) обычно соединён напрямую с графическим процессором, в то время как вывод номер 5 (DI, Data Input) подключен через резистор (на видеокартах Nvidia данный резистор, как правило, имеет сопротивление 33 Ома).

Фрагмент схемы, иллюстрирующий подключение флешки БИОС на видеокарте GALAXY GT 1030 PG110-A00 P85C Rev V10:

Резисторы, которые связывают микросхему BIOS, обычно располагаются рядом с её корпусом, ближе к GPU, и подключаются к выводам 1, 5, 6 (иногда могут находиться на противоположной стороне платы).

После того как вы узнали назначение выводов микросхемы SPI Flash BIOS, можно переходить к её практическому тестированию.

Как проверить исправность микросхемы BIOS на видеокарте?

При проверке работоспособности микросхем SPI BIOS W25Q40-й серии в первую очередь проверяется питающее напряжение VCC/VDD (1.8 или 3.3 вольта) на ее восьмом выводе, а также наличие сигнала CS на первом пине.

Проверка присутствия сигнала CS на чипе флеш-памяти BIOS видеокарты Asus GeForce GTX 1060:

Затем с помощью осциллографа проверяется наличие обмена на выводах 2 и 5 при инициализации видеокарты.

Когда видеочип не показывает признаков активности при запуске видеокарты и не пытается извлечь информацию, это может указывать на его выход из строя или на то, что видеокарта по какой-то причине не переходит в режим инициализации (возможные причины — поврежденные резисторы, соединяющие микросхему BIOS с GPU Core).

Если на выводах приема и передачи (DI и DO) флеш-BIOS имеется сигнал, но видеокарта не функционирует, это может свидетельствовать о неисправности микросхемы BIOS или о том, что ее прошивка повреждена (возможно, BIOS был неверно модифицирован или неподходящий).

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

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

Вам также может понравиться

Борьба с перегревом процессоров Intel в Windows программными средствами

17 февраля, 2022

Замена ламповой подсветки монитора на светодиодную

28 апреля 2024 года

Аппаратный взлом для обхода паролей BIOS

Представляем вам инструкцию для новичков, в которой рассматривается способ обхода пароля BIOS на ноутбуках Lenovo. Мы выясняем, в чем заключается проблема, как обнаружить уязвимую микросхему, как ее обойти, а также изучаем причины уязвимости и методы её устранения.

Компания CyberCX собиралась прикупить б/у ноутбуки Lenovo. Процесс подготовки техники включает в себя очистку каждого устройства и проверка корректной работы аппаратного обеспечения. Если оборудование работоспособно, то его можно добавить в пул доступных устройств для исследований или отдельных работ, требующих дополнительного ноутбука. Однако в данном случае выяснилось, что утеряны пароли BIOS, которые предназначены для предотвращения несанкционированного доступа к аппаратным системам и их конфигурации. Когда пароли BIOS забыты или утеряны, очистка устройства или замена оборудования по сути невозможно.

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

Поскольку мы не хотели выкидывать годное оборудование, я стал изучать, как обойти пароль BIOS для ноутбуков Lenovo.

Ну это же элементарно!

Традиционный способ сброса BIOS заключался в простом извлечении батарейки (обычной «таблетки») и ожидании 5-10 минут. Это позволяло восстановить настройки BIOS до заводских значений по умолчанию. Однако с развитием технологий, всё изменилось. В современных устройствах конфигурация сохраняется в энергонезависимой памяти на материнской плате. Поэтому для работы с нашими ноутбуками требуется иной подход.

Уязвимость, найденная в BIOS этих ноутбуков, заключается в том, что EEPROM отделено от микросхемы BIOS. Это значит, что если нам удастся перехватить или прервать это соединение, запрос пароля BIOS может быть успешно проигнорирован. Данная уязвимость была хорошо известна, и на эту тему имеется замечательная статья Дэвида Зоу (2016 год). Моё исследование основано на этой работе и позволит вернуть в эксплуатацию наши подержанные ноутбуки.

Как выявить чипы с уязвимостью

Итак, как мы уже говорили, наши б/у ноутбуки Lenovo имеют отдельную микросхему, в которой хранятся настройки BIOS. Такой подход не уникален, у других производителей есть та же проблема с реализацией.

Материнские платы ноутбуков Lenovo оснащены EEPROM в 8-пиновом исполнении типа Thin Shrink Small Outline Package (TSSOP). Существует несколько вариантов его конфигурации:

Внимательное изучение каждого чипа на материнской плате ноутбука позволяет идентифицировать несколько пакетов SOP, TSSOP и TMSOP-8. Связь EEPROM осуществляется по протоколу Inter-Integrated Circuit (I 2 C или I2C). Схема пинов, показанная ниже, относится к TSSOP, однако пин остаётся одинаковым для каждого из пакетов EEPROM.

Основываясь на этих данных, мы определяем BIOS EEPROM в ноутбуке Lenovo и далее осуществляем атаку на выводы Serial Clock (SCL) и Serial Data (SDA) с целью изменения или прерывания связи.

Как обойти пароль BIOS

В этом эксперименте использовали ноутбук Lenovo L440 в качестве подопытной крысы. Вот его вид в разобранном состоянии:

Чтобы провести успешную атаку на пароль BIOS, необходимо выполнить следующие шаги:

  1. Определите нужный чип EEPROM.
  2. Установите местоположение пинов SCL и SDA.
  3. Соедините пины SCL и SDA в нужный момент.

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

Самый простой способ определить, является ли чип тем самым, — это найти серийный номер и слово EEPROM. Однако, многие производители не указывают фактический серийный номер. Они имеют свои собственные стандарты и системы управления версиями, что может затруднить процесс идентификации компонентов. На следующих рисунках показаны три кандидата на Lenovo L440, которые могут быть искомым EEPROM.

Первый претендент обозначен серийным номером MXIC MX 25L6473E и является флэш-памятью типа CMOS с объемом 64 МБ. Этот чип нам не подходит.

Второй претендент обладает серийным номером 4835D AC W56C, который, судя по всему, представляет собой МОП транзистор (полевой транзистор с металлооксидной структурой). Он подходит для обеспечения питания, но не предназначен для хранения информации.

Третий кандидат имеет серийный номер L08-1 XH и, похоже, является EEPROM, который мы ищем. Здесь хранится конфигурация BIOS.

Наиболее бдительные могли заметить, что моя первоначальная атака была направлена на неподходящий чип. В результате случайным образом пострадал контакт заземления 64-мегабайтной флэш-памяти CMOS, но ноутбук по-прежнему запускается и функционирует.

Ниже показана краткая демонстрация работы атаки, она выполняется на Lenovo X230, но применяется тот же процесс атаки.

Я зафиксировал EEPROM в соответствии с изображением в правом верхнем углу. Теперь у меня есть возможность войти в BIOS в гостевом режиме, хотя пока я не могу вносить какие-либо изменения.

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

Я включаю ноутбук, а затем применяю изящный метод опытного айтишника: нежно втыкаю отвёртку в контакты SCL и SDA, чтобы замкнуть их до входа в BIOS.

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

Почему эта атака работает

Первое, что нужно сделать, это подключить контакты SCL и SDA к осциллографу. Модель, которую я использовал:.

Первая попытка соединения с микросхемой EEPROM оказалась неуспешной, так как самая компактная 8-пиновая клипса TSSOP, имеющаяся в нашем распоряжении, оказалась слишком объемной (что может свидетельствовать о том, что это либо уменьшенный вариант, либо TMSOP).

Мы купили набор PCBite, который дает возможность исследовать самые крошечные контакты на плате. Взгляните, как крошечны эти «лапки» EEPROM.

Распиновка, сопоставленная с EEPROM на материнской плате:

Теперь, когда мы правильно подключили контакты к осциллографу, у нас появилась возможность наблюдать взаимодействие между BIOS и EEPROM в процессе загрузки.

Я очень давно не пользовался осциллографом. Получить правильную конфигурацию получилось у производителя осциллографа Siglent. Кроме того, модель осциллографа, которую мы имеем в мастерской, предположительно поставляется с автоматическим декодированием последовательной связи!

Два видеоролика от Siglent и MyVanitar содействовали в настройках и помогли разобраться, как правильно установить каждый параметр для корректного считывания информации.

Следующие характеристики взяты из таблицы данных Mouser и соотносятся с микросхемой EEPROM, которую мы используем в атаке.

Описание характеристик шины включает следующее определение протокола связи, которое может объяснить нашу атаку. «Передача данных может быть инициирована только тогда, когда шина не занята» (Microchip, 2003). Наряду с определением Busy not Busy, «линии данных и тактовых импульсов остаются высокими» (Microchip, 2003).

Также таблица данных предоставляет графическое отображение коммуникативного протокола. Процесс активации и деактивации: BIOS инициирует команду старта, передает информацию, после чего отправляет сигнал завершения, чтобы указать на окончание связи.

BIOS требует сигнала запуска, иначе ноутбук не загрузится. Вот почему мы не можем просто замкнуть контакты перед включением ноутбука.

При внимательном изучении отображения нашего необычного осциллографа можно заметить, что сигнал, отвечающий за запуск, поступает приблизительно через 5,32 микросекунды после нажатия на кнопку питания. На экране осциллографа жёлтая линия обозначает SCL (часы), а фиолетовая — SDA (данные), если не указано иное.

На иллюстрации видно, что срабатывает условие запуска, после чего осуществляется первая операция записи данных 0x06 DATA. Обратите внимание на временной промежуток: 5,3 микросекунды с момента подачи питания, первая операция, далее чтение и запись, а затем около 6 миллисекунд ничего не происходит.

Это начальное включение похоже на BIOS, выполняющего проверку EEPROM. Как мы говорили ранее, эта проверка должна произойти, иначе BIOS предотвратит дальнейшую загрузку системы.

Заметьте, что временная ось X имеет небольшие отклонения. Процесс замыкания происходит примерно между отметками 470 мкс и 5,8 мс. Это демонстрирует, что сигнал SDA на низком уровне, а SCL — на высоком, что в соответствии с описанием протокола свидетельствует о том, что линия занята.

При тестировании этого обходного пути время замыкания контактов не должно быть таким плотным. Если контакты замкнуты чуть позже, это все равно приведёт к успешному обходу. Кроме того, пароль должен быть прочитан биосом позже в этой последовательности действий, так как контакты должны оставаться замкнутыми до момента входа в конфигурацию BIOS.

Для повышения безопасности от временного взлома некоторые версии BIOS применяют TPM, а также шифруют или хэшируют пароли. Каждая модель, даже если она принадлежит одному производителю, имеет свои уникальные особенности, и, безусловно, этот процесс не имеет документации.

Что касается ноутбуков Lenovo, у меня не получилось добиться повторяемости байтов чтения/записи. Возвращенные байты, как кажется, не преобразовывались в какой-либо понятный формат.

Если бы у меня был доступ к документации по байтам связи или если бы я прочитал всю EEPROM, возможно, я смог бы получить пароль BIOS в виде открытого текста.

У меня есть сильная уверенность в том, что данные из EEPROM можно извлечь. Возможно, я плохо произвел подключения или применил неверный метод декодирования. Это следует оставить для дальнейших экспериментов. На данный момент обход функционирует без сбоев, и теперь нам ясно, в чем заключается эта уязвимость.

Как устранить уязвимость

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

С целью повышения степени сложности осуществления атак, производители могут комбинировать BIOS и EEPROM в одном SMD (устройство для поверхностного монтажа). В данном случае для захвата аналогичных сообщений потребуется провести атаку по методу Chip-off. Определённые производители материнских плат уже используют данный подход как намеренно, так и случайно.

Оцените статью
LeeReload
Добавить комментарий