Ай Ком Сервис Возможно ли заразить BIOS и поддаётся ли это "лечению" - 15 Сентября 2011 - Ай Ком Сервис
Главная » 2011 » Сентябрь » 15 » Возможно ли заразить BIOS и поддаётся ли это "лечению"
00:08
Возможно ли заразить BIOS и поддаётся ли это "лечению"
Возможность заражения BIOS существует довольно-таки давно. Одна из лучших статей на эту тему размещена в журнале Phrack, а на ресурсе pinczakko расположено много полезной информации. В данный момент прослеживается очевидная тенденция, которую эксперты обозначили как «возвращение к истокам». Заражение MBR, перехваты указателей в различных системных таблицах операционной системы, заражение системных компонентов — все это уже было, и очень давно. Как и в случае с MBR заражение BIOS позволяет вредоносному коду инициализироваться очень рано, сразу после включения компьютера. С этого момента для вредоносной программы появляется отличная возможность контролировать все этапы загрузки компьютера и операционной системы. Очевидно, что такой метод загрузки привлекателен для вирусописателей, однако очевидны и трудности, с которыми они сталкиваются. Прежде всего — это неунифицированный формат BIOS: создателю вредоносной программы необходимо поддержать BIOS от каждого производителя и разобраться с алгоритмом прошивки в ROM. Так например, мы уже писали о троянской программе, способной заражать BIOS, но лишь конкретного разработчика, а именно Award BIOS. В данной статье мв рассмотрим реально существующую вредоносную программу, в которой объединили сразу две технологии заражения — BIOS и MBR; разберём ее установку , защиту от детектирования, но отпустим моменты, связанные с проникновением в систему и коммерческой выгодой. Как мы уже сказали, в данный момент угроза заражения BIOS существует лишь для владельцев материнских плат с BIOS от компании AWARD. Ну а теперь о том, как происходит установка зловреда в систему.


Троянец распространяется в виде исполняемого модуля, который содержит в себе все необходимые для работы компоненты. Он детектируется продуктами как "Лаборатории Касперского" «Rootkit.Win32.Mybios.a» ( в версии DrWeb как Trojan.Bioskit.1). Ниже, мы приведём список компонентов, содержащихсф в установочном файле:

  • драйвер для работы с 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 других производителей.









Категория: Аналитика, исследования, обзоры | Просмотров: 901 | Добавил: Administrator | Теги: загрузочная область диска, заражение MBR, BIOS, mbr, заражение bios | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]