41995

Дослідження структури та складових BІOS (Base Іnput Output System)

Лабораторная работа

Информатика, кибернетика и программирование

Мета роботи: розглянути складові частини BIOS з допомогою яких створюється парольний захист комп'ютера и визначити методи погроз та атак на паролі BIOS.exe програма для перепрограмування BIOS з можливістю зберігання змісту існуючого у файл.exe програма для розпаковки головного модуля BIOS із файлу створеного з допомогою wdflsh.exe та редагування його змісту в тому числі і інструментального паролю BIOS а також отримати новий двійковий файл для перепрограмування BIOS.

Украинкский

2013-10-26

68.5 KB

12 чел.

Лабораторна робота № 2

Дослідження структури та складових BІOS

(Base Іnput Output System).

Мета роботи: розглянути складові частини BIOS, з допомогою яких створюється парольний захист комп'ютера, и визначити методи погроз та атак на паролі BIOS.

Кількість годин на виконання  4

Години на самостійну роботу —  3

Вимоги до лабораторної бази та перелік необхідного програмного забезпечення

 Для проведення лабораторних досліджень необхідна ПЕОМ класу IBM PC з наступної мінімальної конфігурацією:

  •  процесор –  300 МГц;
  •  ОЗП – 64 МБ;
  •  HDD 10 ГБ; 
  •  Відео карта – 16 МБ.

На комп'ютері має бути встановлена операційна система (ОС)  WINDOWS будь якої версії, хоча можливо виконання роботи в середовищі ОС MS-DOS.

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

  •  "Awdflash.exe" – програма для перепрограмування BIOS з можливістю зберігання змісту існуючого у файл.
  •  "Modbin.exe" – програма для розпаковки головного модуля BIOS із файлу, створеного з допомогою Awdflash.exe, та редагування його змісту, в тому числі і інструментального паролю BIOS, а також отримати новий двійковий файл для перепрограмування BIOS. Для можливості редагування різних модифікацій BIOS надаються декілька  програми Modbin.exe:

Modbin60.exe, Modbin66.exe, Modbin80.exe, Modbin6.exe та  Modbin61.exe. 

  •  "Cbrom.exe" - програма, що надає можливість отримати інформацію про зміст та модулі запакованого файлу BIOS.
  •  "Hiew.exe" – програма - viewer, що дозволяє продивіться зміст окремого файлу з можливістю пошуку за контекстом або адресом.
  •  "Завантажувальна" дискета операційної системи MS-DOS або Windows9x.

Усі програми не потребують попередньої інсталяції, але програма Awdflash.exe коректно працює лише при завантаженні операційної системи MS-DOS або Windows9x.

Теоретичні відомості

Розглянемо основні частини BIOS. Він складається із двох головних частин:

1. BootBlock.

У його функцію входят самі перши кроки по ініціалізації регистров чипсета та розпаковки  головної частини у память для послідуючого виконання. При неспівпаденні підрахованої контрольної суми BIOS він (bootblock) запускає програму аварійної відбудови BIOS (з дисковода).

2. Основная часть.

Главный исполняемый код. Состоит из нескольких «модулей» и хранится в запакованном виде как архив LHA с немного изменёнными заголовками (не принципиально для нас). Как правило, используются следующие названия для составных частей (модулей) этого «архива» (детально можно посмотреть с помощью утилиты cbrom):

  1.  original.tmp – главная часть, всегда размером 128k, она нас и интересует. Именно в ней происходит вся инициализация компьютера, в ней же подпрограмма BIOS Setup
  2.  awardext.rom – «расширение» главной части, в т.ч. в нём подпрограмма вывода конфигурации компьютера - табличка, появляющаяся сразу же перед «Starting Windows (DOS, linux и т.д.) …»
  3.  awardepa.bin – «картинка» Energy Star

Другие встречающиеся части:

  1.  cpucode.bin – таблица микрокодов для Intel-процессоров (PPro, P2/P3/P4, Celeron)
  2.  acpitbl.bin – подпрограмма поддержки ACPI

Так же, бывает, попадаются всякие VGA.rom (при интегрированном видео), logo.bin и др., что есть либо не принципиально, либо банально-понятно. Названия могут меняться производителем, но по смыслу- размеру-названию всегда можно догадаться.

Как теперь стало понятно, «просто» редактировать биос нельзя, т.к. это архив. Поэтому, если мы хотим что-то изменить – сначала надо распаковать нужную часть, исправить, что нужно и запаковать обратно. «Главная» часть, как уже говорилось, это original.tmp. Его и будем править.

Способ 1.

Берём modbin, открываем в нём нужный файл биоса (прошивки, которую будем править). modbin создаёт два временных файла – bios.rom и original.tmp. bios.rom – это просто копия открытого файла, а вот original.tmp – это и есть уже распакованный наш «главный» модуль (см. выше). Т.е. распаковка – просто.

Если мы выберем в modbin верхний пункт «Update File», то «временный» файл original.tmp запаковывается назад в файл биоса. Напрашивается простое решение: если это сделать (открыть файл биоса в modbin) из-под винды, а потом просто переключиться по Alt-Tab в любой другой файлменеджер (VC, Explorer, Far и т.п.) – то у нас появится возможность внести любые изменения в original.tmp. Сделав, что нужно, переключаемся назад в modbin и тискаем “update”. modbin берёт исправленный нами original.tmp и сам запаковывает его в биос. Всё – радуемся. (Особенно, ежели после перешивки исправленная версия заработает:)

Однако описанный способ имеет важный недостаток – он не позволяет исправлять второй сегмент, т.е. можно менять лишь первые 64k00000-0FFFFh. Просто во вторых 64k лежат изменяемые модбином всякие регистры, потому он вторые 64k заменяет «своими», и все изменения по адресам 10000-1FFFFh игнорируются.

Этого недостатка лишён второй способ. Кроме этого, в отличие от первого, здесь всё делается под «голым» ДОСом, а также можно распаковать и изменить любой «модуль».

Способ 2

Придётся чуть более подробно поговорить о структуре биос. Как было сказано выше, биос представляет собой архив. Но правильнее и точнее – это последовательность заархивированных с помощью LHA файлов с bootblock-ом в конце. Он (bootblock), конечно же, не заархивирован, т.к. именно он и распаковывает все эти «модули» в оперативную память. В применении к конкретными адресам структура примерно такова:

 Таблица 1. Структура и адреса для 1Mbit-ного (128kB) биоса.

00000 – xxxxx+1

Файл запакованного original.tmp плюс один байт («дополнительного» CRC)

xxxxx+1 – yyyyy

Cразу же дальше (т.е. без разрыва) идёт файл следующего запакованного модуля, например, awardext.rom (на конце уже никаких «дополнительных» байтов)

yyyyy – zzzzz

Дальше (также без разрыва) – следующий. И так все имеющиеся в конкретном биосе модули

zzzzz - ~17FFEh*

Свободное место, обычно заполняется «00» или «FF»

~1C000* – 1FFFFh

Бутблок

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

Теперь о том, что представляет собой заголовок LHA-архива. Мы не будем вникать в подробности, а лишь отметим те моменты, которые нам помогут точно определить его начало (ведь все «модули» идут друг за другом «без пробелов»). Зная адрес начала каждого модуля, мы будем знать, соответственно и его конец. Начало любого файла, заархивированного с помощью LHA, выглядит примерно так:"%·- lh5...". Главный и постоянный отличительный признак здесь – “lh5”, эти три символа присутствует всегда. Три символа левей “lh5” – и есть начало. Т.е. просто введя несколько раз подряд поиск “lh5” мы запросто вычислим вышеуказанные xxxxx+1 (отнимая тройку от адреса найденного “lh5”), yyyyy, zzzzz…

Если записать найденные куски кода в файлы, дать им расширение “*.lha”, то с помощью LHA (или любого другого «современного» архиватора) сможем их разархивировать и получить нужные нам файлы для просмотра/правки.

Мы рассмотрели алгоритм замены для 1Mbit-ных (128kB) биосов. Для 2Mbit- ных всё ещё проще, т.к. original.tmp лежит отдельно от других модулей:

Прошивальщики.

Самыми популярными являются Awdflash, AMIflash и Uniflash. Остальные являются специфичными для конкретной фирмы (например, для "родных" матерей от Intel либо Asus - свой, ибо другие могут не сработать).

ВНИМАНИЕ: запуск флэшера БЕЗ КЛЮЧЕЙ ключей (т.е., соответственно, с оными по умолчанию) может привести к ПОВРЕЖДЕНИЮ BIOS, даже если Вы не собирались его перепрограммировать.

AWDFLASH. Самый популярный, но не самый лучший. Запускать с ключиками:

awdflash имя_прошивки /cd/cp/py/sn/f/r

В этом случае биос перешьётся без лишних вопросов (/py - Program=Y, /sn - Save=No, /f - не проверять от той ли платы это биос и биос ли это вообще:) и после окончания прошивки комп сразу перезагрузится (ключик /r - Reset, ежели не нужно - не писать). Ключи /cd/cp (Clear DMI, Clear PNP) настоятельно рекомендуются к ним можно добавить автоматический сброс CMOS (по умолчанию) - /cc.

Контрольные вопросы:

  1.  Назовите основные модули программы BIOS.
  2.  В чем различие размещения модуля original в версих BIOS AWARD 4.5xPG и AWARD 6.xPG?
  3.  Какие модули BIOS размещаются в нем в незапакованном виде и почему?
  4.  Поясните, почему затруднительно корректно просмотреть содержимое BIOS из среды WINDOWS?
  5.  Каким режимы просмотра в программе HIEW.EXE Вы знаете?
  6.  Почему при поиске начала модуля необходимо искать последовательность символов "lh5" ?
  7.  Как осуществить поиск по известному адресу в программе HIEW.EXE?
  8.  Какие еще параметры BIOS можно отредактировать программой MODBIN.EXE ?

Порядок выполнения лабораторной работы № 2

1. С помощью программы  AWDFLASH.EXE получить BIOS, запакованный в файл. Для этого необходимо:

а) загрузиться с системной дискеты MS-DOS или WIN9x;

б) запустить программу Awdflash.exe и не указывать имя программы, с которой может загрузиться новое содержимое BIOS: на сообщение "File Name to Program" просто нажать клавишу "Enter";

в) подтвердить необходимость сохранения прежнего содержимого BIOS в файл: на сообщение "Do You Want To Save Bios (Y/N)" необходимо нажать клавишу "Y";

г) указать имя файла, в который запишется содержимое BIOS: после сообщения "File Name to Save" ввести имя файла с расширением ‘bin’ и нажать клавишу "Enter".

2. Оценить объем полученного файла и отнести его к соответствующей категории (1Mbit, 2Mbit и т.д.).

3. Исследовать структуру файла BIOS с помощью программы HIEW.EXE. Для этого:

а) загрузить в среде WINDOWS HIEW.EXE и в нем в списке выбрать файл, содержащий запакованный BIOS;

б) перевести просмотр в режим шестнадцатиричного кода, для чего нажать клавишу "F4" (Mode) и затем выбрать в появившемся списке вариант "Hex";

в) включить режим поиска (клавиша "F7" – Search) и указать в качестве контекста для поиска в верхнем поле для ASCII-кодов символы "lh5", нажать клавишу "Enter";

г) после нахождения в тексте заданного сочетания символов курсор остановится на первом из найденных символов (символе "l"), который является четвертым от начала соответствующего модуля BIOS;

д) переместить курсор на три символа влево от места остановки при поиске и определить адрес данного байта;

е) прочесть название модуля, которое должно находиться в начале модуля;

з) занести адрес и название модуля в таблицу;

и) переместить курсор на название модуля и нажатием сочетания клавиш "Ctrl+F7" продолжить поиск по тому же контексту, повторив при его нахождении пункты г) – з);

к) если при поиске будет выведено сообщение  "Target not found", то это означает, что больше подобных сочетаний символов в тексте нет;

л) продолжить просмотр содержимого файла с BIOS пролистывая его клавишей "PgDn" или с помощью контекстного поиска и определить адреса начала блоков с названиями "Award Decompression Bios" и "Award BootBlock Bios", также занести данные об адресах данных блоков в таблицу;

м) повторить пункты а) – л) для всех предоставленных файлов BIOS и получить таблицу вида:

Версия BIOS 1,

дата его разработки

Версия BIOS 2,

дата его разработки

.  .  .

Версия BIOS N,

дата его разработки

адрес  — название модуля

адрес  — название модуля

.  .  .

адрес  — название модуля

адрес  — название модуля

адрес  — название модуля

.  .  .

адрес  — название модуля

.  .  .

.  .  .

.  .  .

.  .  .

адрес  — название модуля

адрес  — название модуля

.  .  .

адрес  — название модуля

3. Выбрать версию программы распаковки BIOS MODBIN.EXE в соотвествии с емкостью микросхемы BIOS, определенной в п. 2:

  •  для 1Mbit (AWARD 4.5xPG) – MODBIN60.EXE, MODBIN66.EXE или MODBIN80.EXE;
  •  для 2Mbit (AWARD 6.xPG) – MODBIN6.EXE или MODBIN61.EXE;

4. Выполнить распаковку основного модуля "original" из файла с BIOS с помощью соответствующей версии программы MODBIN.EXE. Для этого необходимо:

а) загрузить соотвествующую версию программу MODBIN.EXE;

б) в ней выбрать для загрузки соотвествующий файл с расширением "*.BIN";

в) выйти из программы с помощью клавиши "ESC", после чего файл с названием  "original.tmp" или "original.bin" будет находиться в том же каталоге, что и файлы с запакованным BIOS;

г) измените название данного файла, например, на "orig-old.bin";

д) просмотрите его содержимое с помощью программы HIEW.EXE (см. п. 3а, 3б) в области размещения инструментального пароля BIOS, начиная с адреса 1ЕС60, куда можно переместиться с помощью клавиши "PgDn"или воспользовавшись клавишей "F5 -Goto" с указанием нужного для перемещения адреса;

е) запишите содержимое восьми байтов инструментального пароля в протокол;

ж) снова загрузите соответствующую версию программы MODBIN.EXE и подгрузите в нее тот же, что и в пункте б) файл с запакованным BIOS.

з) выполните корректировку инструментального пароля с помощью соотвествующего пункта меню:

для AWARD 6xPG

1) перемещаться по пунктам меню следующим образом:

"Change BIOS Option"<"ENTER"> — "BIOS Option"<"ENTER"> — "Security Default Password"<"ENTER">  Ввести новый инструментальный пароль <"ENTER">;

2) с помощью нескольких нажатий клавиши"ESC" возвращаемся в главное меню;

3) выбираем нажатием  клавиши "ENTER" пункт меню "File", а затем "Save BIOS" и, наконец, указываем имя файла, содержащего скорректированную программу BIOS;

для AWARD 4.5xPG

1) выбираем пункт меню "Change BIOS Option"<"ENTER"> — "Security Default Password"  Ввести новый инструментальный пароль <"ENTER">;

2) еще одним нажатием клавиши "ENTER" возвращаемся в главное меню программы;

3) с помощью пункта "Update File" записываем обновленный BIOS в файл вместо прежнего содержимого.

г) повторно распаковываем полученные файлы BIOS (см. п. 4а, - 4в) и просматривая файлы original.* с помощью программы  HIEW.EXE убеждаемся в том, что они содержат измененные инструментальные пароли BIOS, для чего выполняем расшифровку парольного хеша по соотвествующим алгоритмам.

Исследование запакованных файлов BIOS утилитой CBROM.EXE

Утилита CBROM.EXE предназначена для просмотра и корректировки содержимого BIOS, сборки его из отдельных модулей и расчета контрольной суммы (CheckSum).

Программа работает в режиме командной строки, поэтому предварительно необходимо открыть командное окно или файл-менеджер "FAR.EXE".

1. Запустим программу CBROM.EXE с опцией "/?", получив в результате информацию об остальных опциях программы.

2. Теперь загрузим программу следующим образом:

CBROM.EXE <Имя файла с программой BIOS> /D

3. В результате получим таблицу компоновки модулей в файле BIOS с указанием объема каждого модуля до и после упаковки.

4. Сравним полученные результаты с таблицей, построенной в пункте 3 данной работы.

Задание на дом:

  1.  Выполнить распаковку содержимого BIOS своего домашнего компьютера.
  2.  Изменить инструментальный пароль BIOS, задав его в виде первых 8 символов своей фамилии.
  3.  Получить запакованный двоичный файл BIOS без перепрограммирования BIOS.
  4.  Представить к защите лабораторной работы на дискете первоначальный и сгенерированный файл «прошивки» BIOS, а также оба модуля original.* 
  5.  Представить письменный отчет о выполнении раздела «Порядок выполнения работы»


 

А также другие работы, которые могут Вас заинтересовать

16830. Сложные типы данных 218 KB
  Лекция 3 2.4. Сложные типы данных Сложные типы данных характеризуются типами их компонентов и методом их объединения. К сложным структурированным составным типам данных агрегатам относят массивы записи множества и файлы. Массивы Массив это nмерная совоку...
16831. Организация обработки данных 1.3 MB
  Лекция 4 6. Организация обработки данных Как правило в программах не удается ограничиться операторами присваивания. Для большинства реально используемых алгоритмов характерна широкая разветвленность процесса вычислений. При этом в зависимости от конкретных исходн...
16832. Ввод-вывод данных Основные виды работ с файлами любых типов. Основные понятия. Классификация файлов 179.5 KB
  Лекция 5 Вводвывод данных Основные виды работ с файлами любых типов. Основные понятия. Классификация файлов В системах обработки больших объемов информации данные хранятся не в ОП а во внешней памяти ВП на внешних запоминающих устройствах например на жестком м
16833. Вывод данных в текстовый файл 404 KB
  Лекция 6 Вывод данных в текстовый файл Процедуры Write и Writeln Вывод данных в текстовый файл осуществляется в основном для просмотра и подготовки к печати результатов работы программы. Вывод данных производится с помощью процедур Write и Writeln. С их помощью можно выводить...
16834. Модульное программирование 222.5 KB
  Лекция 7 1. Модульное программирование Основные понятия Принцип модульности оказывает наиболее сильное влияние на дисциплину мышления при решении задач. Он состоит в декомпозиции первоначального задания в связную систему подзадач и является основным методом в н
16835. Компиляция и подключение модулей 294 KB
  Лекция 8 Компиляция и подключение модулей Для того чтобы сформировать модуль библиотеку с подпрограммами можно отладить подпрограммы в составе основной программы а затем перенести их в модуль. Для использования подпрограмм модуля его надо оттранслировать т. е. сф
16836. Распределение оперативной памяти при выполнении программ 756 KB
  Лекция 9 1. Динамические переменные. Основные понятия Распределение оперативной памяти при выполнении программ Адресуемое пространство ОП в ОС MSDOS организовано сегментами: перенумерованными блоками памяти по 64 Кбайта. Причем сегмент может начинаться с любого фи
16837. Массивы указателей 1.37 MB
  6. Массивы указателей С помощью массивов указателей можно формировать большие массивы и коллекции массивов любых типов. Работа с большими массивами Размер одного массива данных должен быть не более 64 Кбайт. Но в реальных задачах могут использоваться массивы требую...
16838. Массивы и многоуровневая косвенная адресация 564 KB
  Лекция 10 5. Массивы и многоуровневая косвенная адресация Многоуровневая косвенная адресация и одномерные арифметические массивы Многоуровневая адресация имеет место при использовании указателей на указатели на массивы. Рассмотрим это на примерах формирования одн