Загрузочный сектор
Загрузочный сектор — это сектор постоянного устройства хранения данных (например, жесткого диска , дискеты , оптического диска и т. д.), который содержит машинный код , который должен быть загружен в оперативное запоминающее устройство (ОЗУ), а затем выполнено компьютерной системой . встроенная прошивка (например, BIOS ).
Обычно первый сектор жесткого диска является загрузочным, независимо от размера сектора (512 или 4096 байт) и типа разметки ( MBR или GPT ).
Целью определения одного конкретного сектора в качестве загрузочного является обеспечение совместимости встроенного ПО и различных операционных систем.
Целью последовательной загрузки сначала прошивки (например, BIOS), затем некоторого кода, содержащегося в загрузочном секторе, а затем, например, операционной системы, является максимальная гибкость.
IBM PC и совместимые компьютеры
[ редактировать ]На компьютере, совместимом с IBM PC , BIOS выбирает загрузочное устройство, затем копирует первый сектор с устройства (который может быть MBR , VBR или любым исполняемым кодом) в физическую память по адресу памяти 0x7C00. В других системах процесс может быть совершенно другим.
Единый расширяемый интерфейс прошивки (UEFI)
[ редактировать ]UEFI на (не устаревшая загрузка через CSM) не зависит от загрузочных секторов, система UEFI загружает загрузчик ( приложения EFI файл USB-диске или в системном разделе EFI ) напрямую. [1] Кроме того, спецификация UEFI также содержит «безопасную загрузку», которая по сути требует, чтобы код UEFI имел цифровую подпись .
Повреждение загрузочного сектора
[ редактировать ]В случае физического повреждения загрузочного сектора жесткий диск больше не будет загрузочным, если только он не используется с пользовательской BIOS, которая определяет неповрежденный сектор в качестве загрузочного сектора. Однако, поскольку самый первый сектор дополнительно содержит данные о разбиении жесткого диска, жесткий диск станет совершенно непригодным для использования, за исключением случаев, когда он используется совместно с специальным программным обеспечением.
Таблицы разделов
[ редактировать ]Диск может быть разделен на несколько разделов, и в обычных системах так и должно быть. Существует два определения того, как хранить информацию о разделении:
- Основная загрузочная запись (MBR) — это первый сектор устройства хранения данных, который был разбит на разделы . Сектор MBR может содержать код для поиска активного раздела и вызова загрузочной записи его тома.
- Загрузочная запись тома (VBR) — это первый сектор устройства хранения данных, который не был разбит на разделы, или первый сектор отдельного раздела на устройстве хранения данных, которое было разбито на разделы. Он может содержать код для загрузки операционной системы (или другой отдельной программы), установленной на этом устройстве или в этом разделе.
Наличие IBM PC-совместимого загрузчика для процессоров x86 в загрузочном секторе по соглашению обозначается двухбайтовой шестнадцатеричной последовательностью. 0x55 0xAA (называемая сигнатурой загрузочного сектора) в конце загрузочного сектора (смещения 0x1FE и 0x1FF). Эта подпись указывает на наличие по крайней мере фиктивного загрузчика, запуск которого безопасен, даже если он не сможет фактически загрузить операционную систему. Он не указывает на конкретную файловую систему или операционную систему (или даже на ее наличие), хотя некоторые старые версии DOS 3 полагались на нее в своем процессе обнаружения носителей в формате FAT (более новые версии этого не делают). Загрузочный код для других платформ или процессоров не должен использовать эту подпись, поскольку это может привести к сбою, когда BIOS передает выполнение загрузочному сектору, предполагая, что он содержит действительный исполняемый код. Тем не менее, некоторые носители для других платформ ошибочно содержат подпись, что на практике делает эту проверку не на 100% надежной.
Подпись проверяется большинством системных BIOS, начиная (по крайней мере) с IBM PC/AT (но не с исходного IBM PC и некоторых других машин). Более того, он также проверяется большинством загрузчиков MBR перед передачей управления загрузочному сектору. Некоторые BIOS (например, IBM PC/AT) выполняют проверку только для фиксированных/съемных дисков, тогда как для дискет и супердискет достаточно начать с байта, большего или равного 06h и первые девять слов не должны содержать одно и то же значение, прежде чем загрузочный сектор будет принят как действительный, тем самым избегая явной проверки на 0x55, 0xAA на дискетах. Поскольку старые загрузочные сектора (например, очень старые носители CP/M-86 и DOS) иногда не имеют этой подписи, несмотря на то, что они могут успешно загружаться, в некоторых средах проверку можно отключить.Если код BIOS или MBR не обнаруживает действительный загрузочный сектор и, следовательно, не может передать выполнение коду загрузочного сектора, он попытается использовать следующее загрузочное устройство в строке. Если все они терпят неудачу, обычно отображается сообщение об ошибке и вызывается INT 18h. Это либо запустит дополнительное резидентное программное обеспечение в ПЗУ ( ROM BASIC ), перезагрузит систему через INT 19h после подтверждения пользователя, либо заставит систему остановить процесс начальной загрузки до следующего включения.
К системам, не соответствующим описанной выше конструкции, относятся:
- CD-ROM обычно имеют собственную структуру загрузочных секторов; для систем , совместимых с IBM PC, это регулируется спецификациями El Torito .
- Программное обеспечение C128 или C64 на дисках Commodore DOS , где данные на дорожке 1, секторе 0 начинались с магического числа, соответствующего строке «CBM». [2]
- Мэйнфреймы IBM помещают небольшое количество загрузочного кода на первую и вторую дорожки первого цилиндра диска, а корневой каталог, называемый «Оглавление тома» , также располагается в фиксированном месте третьей дорожки первого цилиндра. цилиндр диска.
- Другие (не IBM-совместимые) компьютерные системы могут иметь на своих дисковых устройствах другие форматы загрузочных секторов.
Операция
[ редактировать ]На совместимых с IBM PC компьютерах, , BIOS не учитывает различие между VBR и MBR, а также разделение. Прошивка просто загружает и запускает первый сектор запоминающего устройства. [3] Если устройство представляет собой дискету или флэш-накопитель USB , это будет VBR. Если устройство представляет собой жесткий диск, это будет MBR. Это код в MBR, который обычно понимает разметку диска и, в свою очередь, отвечает за загрузку и запуск VBR любого основного раздела, установленного для загрузки ( активного раздела). Затем VBR загружает загрузчик второго этапа из другого места на диске.
Более того, все, что хранится в первом секторе дискеты, USB-устройства, жесткого диска или любого другого загрузочного устройства хранения данных, не требует немедленной загрузки какого-либо загрузочного кода для ОС, если вообще когда-либо. BIOS просто передает управление всему, что там существует, пока сектор соответствует очень простому требованию наличия подписи загрузочной записи 0x55, 0xAA в последних двух байтах. Вот почему обычный загрузочный код, находящийся в MBR, легко заменить более сложными загрузчиками, даже большими многофункциональными менеджерами загрузки (программами, хранящимися в другом месте на устройстве, которые могут работать без операционной системы), предоставляя пользователям множество вариантов выбора. в том, что произойдет дальше. При такой свободе часто происходят злоупотребления в виде вирусов загрузочного сектора.
Вирусы загрузочного сектора
[ редактировать ]Поскольку код в загрузочном секторе выполняется автоматически, загрузочные сектора исторически были распространенным вектором атаки компьютерных вирусов .
Чтобы бороться с этим поведением, в BIOS системы часто включена опция, запрещающая программному обеспечению запись в первый сектор любого подключенного жесткого диска; Таким образом, он может защитить главную загрузочную запись, содержащую таблицу разделов от случайной перезаписи , но не загрузочные записи тома в загрузочных разделах. [4] В зависимости от BIOS попытки записи в защищенный сектор могут блокироваться как с участием пользователя, так и без него. Однако в большинстве BIOS отображается всплывающее сообщение, дающее пользователю возможность отменить настройку.Опция BIOS отключена по умолчанию, поскольку сообщение может отображаться неправильно в графическом режиме, а блокировка доступа к MBR может вызвать проблемы с программами настройки операционной системы или доступом к диску, инструментами шифрования или разбиения на разделы, такими как FDISK , которые, возможно, не были записаны в помните об этой возможности, что приведет к их некорректному прерыванию и, возможно, оставит разделы диска в несогласованном состоянии. [номер 1]
Например, вредоносная программа NotPetya пытается получить административные привилегии в операционной системе, а затем попытается перезаписать загрузочный сектор компьютера. [5] [6] ЦРУ также разработало вредоносное ПО, которое пытается изменить загрузочный сектор , чтобы загрузить дополнительные драйверы, которые будут использоваться другими вредоносными программами. [7] Еще одна вредоносная программа, которая перезаписывает загрузочный сектор, — это MEMZ.
См. также
[ редактировать ]- Основная загрузочная запись (MBR)
- Загрузочная запись тома (VBR)
Примечания
[ редактировать ]- ^ Одной из утилит FDISK, написанной для учета функций защиты загрузочного сектора BIOS, является FDISK R2.31 (и выше) DR-DOS, которая обнаруживает этот сценарий и отображает дополнительные интерактивные сообщения, помогающие пользователю пройти через него. В отличие от других утилит FDISK , DR-DOS FDISK является не только инструментом создания разделов, но также может форматировать недавно созданные разделы как FAT12 , FAT16 или FAT32 . Это снижает риск случайного форматирования неправильных томов.
Ссылки
[ редактировать ]- ^ «UEFI — OSDev Wiki» . wiki.osdev.org . Проверено 26 сентября 2020 г.
- ^ Справочное руководство программиста Commodore 128 . Бантамские книги. 1986. стр. 446–667 . ISBN 0-553-34292-4 .
- ^ Смит, Родерик В. (14 апреля 2010 г.). «Перейти на GRUB 2» . IBM.com . Проверено 5 марта 2013 г.
- ^ «Словарь настроек BIOS системных плат Intel для настольных ПК» (PDF) . Интел . Проверено 1 сентября 2013 г.
- ^ «Новый вариант программы-вымогателя «Nyetya» ставит под угрозу системы по всему миру» . blog.talosintelligence.com . 27 июня 2017 г. Проверено 28 мая 2018 г.
- ^ «Что произойдет в эпоху глобальных атак вредоносного ПО, если не будет аварийного выключателя?» . Погружение ИТ-директора . Проверено 28 мая 2018 г.
- ^ «ЦРУ разработало вредоносное ПО для Windows, которое изменяет загрузочный сектор для загрузки большего количества вредоносных программ» . Газета «Информационная безопасность» . 01.09.2017 . Проверено 28 мая 2018 г.
Внешние ссылки
[ редактировать ]- Мэри Ландесман. «Вирусы загрузочного сектора» . Архивировано из оригинала 7 июля 2011 г. Проверено 18 августа 2006 г.
- Майкрософт. «Как защитить загрузочный сектор от вирусов в Windows» . База знаний .
- Денни Лин (15 июня 1994 г.). «Недорогие методы обнаружения и предотвращения вирусов в загрузочном секторе» . Проверено 13 августа 2015 г.
- Лаборатория Касперского. «Вирусы загрузочного сектора» . Энциклопедия вирусов / Описания вредоносных программ / Классические вирусы . Архивировано из оригинала 22 августа 2007 г. Проверено 5 июня 2006 г.
- Арман Катакутан. «Глоссарий вирусных терминов» . Загрузочные вирусы . Архивировано из оригинала 11 декабря 2006 г. Проверено 7 ноября 2006 г.
- Грег О'Киф. «Пример сборки загрузочной программы в реальном режиме x86» .
- Сусам Пал. «Написание кода загрузочного сектора с помощью GNU Assembler» .
- Пьер Ансело. «Ассемблерный код загрузочного сектора с подробным объяснением» . Архивировано из оригинала 29 января 2013 г.