Газета InfoSecurity

Последний номер

Архив номеров

На главную 

   
Число
подписчиков


 Рассылка 'Информационная Безопасность: Проблемы, Методы, Решения'
 Сетевая газета InfoSecurity.ru  

MYBIOS. Возможно ли заразить BIOS?

Вячеслав Русаков


  Возможность заражения BIOS существует довольно-таки давно. Одна из лучших, на мой взгляд, статей на эту тему размещена в журнале Phrack, а на ресурсе pinczakko расположено много полезной информации. В данный момент прослеживается очевидная тенденция, которую я бы обозначил как «возвращение к истокам». Заражение MBR, перехваты указателей в различных системных таблицах операционной системы, заражение системных компонентов — все это уже было, и очень давно.

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

  В этой статье я рассмотрю реально существующую вредоносную программу, в которой объединили сразу две технологии заражения — BIOS и MBR; разберу ее установку , защиту от детектирования, но обойду моменты, связанные с проникновением в систему и коммерческой выгодой. В данный момент угроза заражения BIOS существует лишь для владельцев материнских плат с BIOS от компании AWARD.

Установка

  Троянец распространяется в виде исполняемого модуля, который содержит в себе все необходимые для работы компоненты. Он детектируется нашими продуктами как «Rootkit.Win32.Mybios.a».

  Список компонентов:

  • драйвер для работы с BIOS — bios.sys (устройство \Device\Bios);
  • драйвер для сокрытия заражения — my.sys (устройство \Device\hide);
  • компонент BIOS — hook.rom;
  • библиотека управления драйвером bios.sys — flash.dll;
  • утилита от производителя для работы с образом BIOS — cbrom.exe;

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

  Следующим на диск сбрасывается драйвер my.sys, прямо в корень системного диска.

  Дальнейший алгоритм можно разделить на 2 части.

  Если используется AWARD BIOS, то выполняется следующий алгоритм:

  1. чтение BIOS из памяти, поиск SMI_PORT и определение размера BIOS;
  2. создание образа BIOS на диске (c:\bios.bin);
  3. в случае отсутствия модуля hook.rom в сохраненном на диске образе BIOS производится добавление его к этому образу;
  4. прошивка «зараженного» образа с диска в ROM;

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

BIOS.SYS и CBROM.EXE

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

Увеличить рисунок

Рисунок 1. Dispatch-процедура драйвера bios.sys

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

  Для определения типа BIOS используется поиск «магической» сигнатуры в памяти.

Увеличить рисунок

Рисунок 2. «Магическая» сигнатура в BIOS

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

  В случае если проверка показала, что это BIOS AWARD, и при наличии найденных переменных SMI_PORT и BIOSSize, вызывается функция MakeBIOSBackup, которая сохраняет образ BIOS на диске в файле c:\bios.bin.

  В сохраненном на диске образе дроппер проверяет наличие своего модуля и в случае его отсутствия добавляет ISA ROM в образ BIOS. Для этого используется утилита cbrom.exe (cbrom c:\bios.bin /isa hook.rom). Утилита cbrom.exe хранится также в ресурсах инсталлятора и сбрасывается на диск.

Увеличить рисунок

Рисунок 3. BIOS до заражения

Увеличить рисунок

Рисунок 4. BIOS после заражения

  Обратите внимание на 11-й модуль в списке. Это добавленный вредоносный ISA ROM под именем hook.rom.

  Следующим вызовом функции FlashROM зараженный образ прошивается в ROM и будет вызываться при каждом включении компьютера.

MY.SYS

  Для сокрытия факта заражения используется довольно простенький руткит-драйвер my.sys. Он перехватывает функции IRP_MJ_READ, IRP_MJ_WRITE и IRP_MJ_DEVICE_CONTROL у драйвера, обслуживающего устройство \Device\Harddisk0\DR0. Не самый низкий уровень по сравнению с тем же TDL4. О том, когда и как стартует данный драйвер, будет понятно чуть позже.

Увеличить рисунок

Рисунок 5. Перехваченные функции драйвера disk.sys

  Останавливаться подробно на перехватах не имеет смысла, так как они довольно тривиальны. В случае чтения подменяется CompletionRoutine, и при попытке чтения охраняемых секторов возвращается пустой буфер.

Увеличить рисунок

Рисунок 6. Первый сектор физического диска

  Перехват IRP_MJ_WRITE не позволяет записывать данные в охраняемые секторы.

  Перехват IRP_MJ_DEVICE_CONTROL контролирует вызовы IOCTL_DISK_GET_DRIVE_LAYOUT_EX, IOCTL_STORAGE_GET_MEDIA_TYPES_EX, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX и возвращает ошибку.

BIOS и MBR

BIOS

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

  Модуль, который добавляется в BIOS, отличается от зараженного MBR и последующих секторов всего лишь одной функцией, которая вместе с дополнительной информацией умещается в один сектор (512 байт). ISA ROM занимает 0x1E00 байт, а MBR + доп. секторы 0x1C00 байт.

Увеличить рисунок

Рисунок 7. Начало ISA ROM

Увеличить рисунок

Рисунок 8. Вызов единственной функции Main в ISA ROM

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

Увеличить рисунок

Рисунок 9. Функция Main, проверяющая и перезаражающая MBR

  Наличие заражения определяется поиском «магической» константы по фиксированному смещению в MBR. Константа «int1» должна присутствовать в зараженном секторе.

Увеличить рисунок

Рисунок 10. «Магическая» константа в MBR

  Если функция CheckMBRInfected не обнаружит заражения в главной загрузочной записи, то следующим действием будет заражение MBR и 13 следующих за ним секторов.

  На этом работа добавленного в BIOS модуля ISA ROM заканчивается.

  Основная работа ложится на код, который будет исполняться из MBR.

MBR

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

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

  В составе кода, который исполняется на данном этапе, присутствует простенький разборщик форматов файловых систем NTFS и FAT32. Основной целью является поиск секторов на диске, которые соответствуют системным файлам winlogon.exe или wininit.exe — системным компонентам, которые отвечают за вход пользователя в систему.

Увеличить рисунок

Рисунок 11. Поиск winlogon.exe или wininit.exe

  Если такие секторы найдены, исполняемый файл winlogon.exe или wininit.exe заражается (т.е. используется технология файловых вирусов) прямой записью в секторы диска, на которых он расположен. Шаблон для заражения находится в восьмом секторе диска.

Увеличить рисунок

Рисунок 12. Точка входа winlogon.exe до заражения

Увеличить рисунок

Рисунок 13. Точка входа winlogon.exe после заражения

  Этот код довольно маленький, поэтому он выполняет всего две задачи:

  • загрузить из сети определенный файл по ссылке и запустить его;
  • запустить руткит-драйвер (тот самый my.sys, расположенный на диске C:), который будет защищать зараженные секторы диска;

Конфуз вышел?

  Нельзя обойти стороной один забавный момент, который обязательно должен понравиться любителям английского языка и тем, кто знает, как правильно пишется AWARD. Во вредоносном коде редко используются отладочные сообщения, так как они могут помочь аналитикам. Но случается так, что отладочные сообщения попадают в «конечный продукт».

  Список отладочных сообщений драйвера bios.sys:

  • Flash Aword BIOS form diks c bios.bin success.
  • SMI_AutoErase Aword Bios Failed.
  • ExAllocatePool read file NonPagedPool failed.
  • Backup Aword BIOS to disk c bios.bin success.
  • MmMapIoSpace physics address:0x%x failed.
  • This is not a Aword BIOS!

Заключение

  Вирусописатели нередко соединяют в одной программе разные методы заражения компьютера вредоносным ПО и закрепления его в операционной системе. Одновременно они занимаются поиском новых мест для автозагрузки вредоносных программ. Сейчас создатели вредоносных программ большей частью используют идеи, известные ранее (иногда лишь в виде концепта) и отчасти уже забытые, и реализуют их в конечном продукте. И изъятые из небытия 16-битные технологии — яркий тому пример.

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

Источник: securelist.com  


      Рейтинг@Mail.ru       Rambler's Top100 Rambler's Top100