Brute Force BIOS’а ПК при помощи Arduino

Цель данного эксперимента – переделать плату Arduino в USB клавиатуру плюс VGA-анализатор для взлома пароля стандартного BIOS, используя т.н. метод brute force (метод перебора). Данный метод не имеет особых преимуществ. На самом деле он медленный и вы можете даже не взломать пароль, но мы все-таки попытаемся. Существует много способов для сброса BIOS, особенно если вы имеете доступ к аппаратному обеспечению. Нам понадобится именно физический доступ, поскольку в настоящее время «удаленный доступ» ещё не изобрели.

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

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

Эмулятор USB-клавиатуры

Для USB-клавиатуры используется код V-USB for Arduino, который в свою очередь использует библиотеку V-USB library. Вам необходимо установить V-USB для Arduino, чтобы запустить файл BIOSHack.pde (смотрите архив кода).

Схема

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

Пара стабилитронов используются в качестве интерфейса USB-клавиатуры (это одна из 4-х опций, предлагаемых в файле сведений V-USB Readme, смотрите сноску на другой проект, который также использует данный метод). Также в схеме установлена кнопка, которая используется для паузы/продолжения процесса взлома пароля. Если кнопка удерживается более 2 секунд, процесс взлома пароля будет сброшен.

Анализ VGA-фрейма

Для определения цвета пикселя в центре экрана нам необходимо считать аналоговый сигнал Red (Красный), а также вертикальные и горизонтальные синхроимпульсы для того, чтобы знать, когда считывать сигнал Red. При первой попытке использовалась функция обработки прерывания Arduino attachInterrupt для захвата HSYNC и VSYNC, но при этом могла перестать работать USB-клавиатура.

В этом случае макросы ISR() и SIGNAL() работают более корректно. Таким образом, VSYNC импульс сбросит глобальную переменную под названием h_line, в то время как HSYNC импульс увеличит ее для того, чтобы знать, в какой строке отображается VGA-фрейм.

Наша функция waitWrongPassword (ожидание неверного пароля) выполняет анализ пикселя. Она ожидает несколько секунд, пока не появится красный пиксель, и продолжает просматривать счетчик строки. Как лишь он будет располагаться в строке под номером #238 (почти середина по вертикали при разрешении 640×480) произойдет небольшая задержка для получения значения горизонтального отсчета времени и произойдет считывание аналогового входа.

Далее после считывания значения «красного» аналогового входа результат сравнивается для проверки факта, не появлялось ли всплывающее окно ‘wrong password’ (неверный пароль); имеется в виду условие if (величина valueR > 140). Вам может понадобиться изменить данную величину, в соответствии с горизонтальными линиями VGA-карты.

Код

Вам необходимо определить набор символов, который будет использоваться при взломе пароля. Для этого модифицируйте массив charset, добавив коды кнопок USB-клавиатуры по вашему усмотрению. По умолчанию, в примере кода имеется KEY_A, KEY_B, KEY_C. Также вам необходимо модифицировать второй массив под названием charset_log, который должен иметь тот же размер, но вместо кода кнопки в нем отображается печатаемый байт для создания журнала.

Также необходимо изменить максимальную длину пароля; по умолчанию установлено значение 4. Для изменения длины используйте MAX_LEN. Состояние проверки периодически сохраняется в EEPROM. Потому в случае пропадания питания вы можете продолжить с последнего (или почти последнего) протестированного пароля.

Программный код можно скачать ниже, и при необходимости, модифицировать в соответствии со своими требованиями.

Ниже показаны некоторые фото платы расширения

Кожух от iPod используется в качестве корпуса

Перенос тонера для изготовления платы (метод лазерно-утюжной технологии). Осторожно, не обожгитесь.

Вид спереди

Вид сзади

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

Плата ArduinoArduino Duemilanove1
D1, D2
Стабилитрон3.6 В2
R1
Подстроечный резистор1
R2, R3
Резистор68 Ом2
R4
Резистор2.2 кОм1
R5
РезисторDSP+1

LCD-дисплей1
J1, JP1, JP2
Джампер3

Разьем USBPN61729-S1

Разьем VGA1
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.