Байпас БИОС паролей с использованием физического взлома

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

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

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

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

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

Традиционный подход к сбросу BIOS заключался в следующем: вы просто извлекаете батарейку (обычную «таблетку») и ждёте 5-10 минут. Это сбрасывает конфигурацию 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.  

 

8-контактный последовательный контакт EEPROM
8-контактный EEPROM

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

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

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

Изображение, содержащее электронику, компьютер. Описание генерируется автоматически.
Ноутбук Lenovo L440. 

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

  1. Найдите правильный чип EEPROM. 

  2. Найдите пины SCL и SDA. 

  3. Замкните пины SCL и SDA в нужный момент. 

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

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

 

Крупный план печатной платы
Кандидат №1: 8-пиновый SOP 

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

Кандидат №2: 8-пиновый TSSOP 
Кандидат №2: 8-пиновый TSSOP 

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

Крупный план печатной платы. Описание автоматически сгенерировано со средней достоверностью.
Кандидат №3: 8-пиновый TMSOP

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

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

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

Biosrutube.ru

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

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

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

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

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

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

Изображение, содержащее текст, внутреннее описание создается автоматически
Осциллограф Siglent SDS 1202X-E 

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

 

8-пиновая клипса TSSOP 
8-пиновая клипса TSSOP 

Мы приобрели набор PCBite, который позволяет прощупывать самые маленькие контакты на плате. Посмотрите только, насколько малы эти «лапки» EEPROM.  

Контакты PCBite, прикрепленные к EEPROM. 
Контакты PCBite, прикрепленные к EEPROM. 

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

 

Расположение пинов идентифицированного чипа
Расположение пинов идентифицированного чипа

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

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

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

Siglent Technologies, 2017 г.  

MyVanitar, 2020 г. 

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

 

Фрагмент из таблицы данных Microchip (2003 г.) 
Фрагмент из таблицы данных Microchip (2003 г.) 

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

Кроме того, таблица данных обеспечивает визуальное представление протокола связи. Механизм запуска и остановки: BIOS выполняет команду запуска, отправляет данные, а затем посылает сигнал остановки, чтобы обозначить конец связи. 

 

Старт/Стоп (Microchip, 2003 г.) 
Старт/Стоп (Microchip, 2003 г.) 

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

Глядя на вывод нашего причудливого осциллографа, мы видим, что сигнал запуска отправляется примерно через 5,32 микросекунды после нажатия кнопки питания. Для показаний осциллографа желтая линия — это SCL (часы), а фиолетовая — SDA (данные), если не указано иное.  

Выходной сигнал осциллографа, показывающий стартовый сигнал. 
Выходной сигнал осциллографа, показывающий стартовый сигнал. 

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

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

Вид осциллографа при замыкании контактов SCL и SDA
Вид осциллографа при замыкании контактов SCL и SDA

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

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

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

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

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

Графический пользовательский интерфейс Описание генерируется автоматически
Пример захваченных байтов, считываемых из EEPROM. 

Я почти уверен, что можно прочитать данные из EEPROM, возможно я что-то не так подключил, или использовал неправильную декодировку. Нам придётся оставить это для будущих исследований. На данный момент обход работает стабильно, и теперь мы понимаем, почему существует данная уязвимость.

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

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

Чтобы увеличить сложность проведения атаки, производители могут включать пакеты BIOS и EEPROM в одно SMD (устройство, устанавливаемое на поверхности). Тогда для перехвата тех же сообщений потребуется выполнить атаку методом Спортивные часы Garmin: изучаем GarminOS и её ВМ MonkeyC

→ NAS за шапку сухарей

→ Взлом Hyundai Tucson, часть 1часть 2

→ Взламываем «умную» зубную щётку

→ 50 самых интересных клавиатур из частной коллекции

 

Источник

BIOS, Байпас, взлома, использованием, паролей, физического

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