Trojan.Bioskit.1 заражает загрузочный сектор (MBR)


Trojan.Bioskit.1 - вредоносная программа (стандартный по функционалу троян) заражающая MBR (загрузочную область диска) и пытающаяся скачать что-то из сети. Также в нее заложены механизмы, позволяющие заразить BIOS материнской платы компьютера.
Заражению могут подвергнуться только материнские платы, оборудованные BIOS производства компании Award.


Заражение
Первоначально дроппер трояна Trojan.Bioskit.1 проверяет, запущены ли в операционной системе процессы нескольких китайских антивирусов. Если таковые обнаруживаются, то:

  • троян создает прозрачное диалоговое окно, из которого осуществляется вызов его главной функции;
  • затем Trojan.Bioskit.1 определяет версию операционной системы и в случае, если это Windows 2000 и выше (за исключением Windows Vista), продолжает заражение;
  • троян проверяет состояние командной строки, из которой он может быть запущен с различными ключами:
    • -d — данный ключ не функционирует (в "релизной сборке" эта функция была удалена);
    • -w — заразить систему (используется по умолчанию);
    • -u — вылечить систему (включая MBR и BIOS).


В ресурсах дроппера упаковано несколько файлов:

  • cbrom.exe
  • hook.rom
  • my.sys
  • flash.dll
  • bios.sys


В процессе своей работы дроппер распаковывает и сохраняет на жестком диске драйвер:

  • %windir%\system32\drivers\bios.sys


В случае если в системе есть устройство

  • \\.\MyDeviceDriver
  • (в исследуемом дроппере драйвера, реализующего такое устройство, нет), троян сбрасывает на диск библиотеку

    • %windir%\flash.dll

    и последовательно пытается внедрить ее в системные процессы

    • services.exe;
    • svchost.exe;
    • explorer.exe.


    Назначение данной библиотеки — запуск драйвера bios.sys штатными средствами (service control manager) с целью создания службы bios. При выгрузке библиотеки эта служба удаляется. В случае отсутствия устройства

    • \\.\MyDeviceDriver

    троян инсталлируется в систему путем перезаписывания системного драйвера

    • beep.sys

    который после запуска восстанавливается из предварительно созданной копии. Единственное исключение из этого правила сделано для ОС Microsoft Windows 7. В данной системе дроппер сбрасывает на диск библиотеку

    • %windir%\flash.dll

    и сам же ее загружает.


    Затем дроппер сохраняет в корне диска

    • C: руткит-драйвер my.sys


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

    • %temp%\hook.rom

    который является полноценным модулем расширения (PCI Expansion ROM). Но на данном этапе он используется всего лишь как контейнер, из которого извлекаются данные для последующей записи на диск. После этого перезаписываются первые 14 секторов жесткого диска, включая MBR. Оригинальный MBR сохраняется в восьмом секторе.


    Драйвер my.sys
    По сегодняшним меркам это достаточно примитивный драйвер. Он перехватывает у системного драйвера disk.sys обработчики IRP_MJ_READ, IRP_MJ_WRITE и IRP_MJ_DEVICE_CONTROL, при этом:

    • IRP_MJ_READ возвращает нули вместо первых 63 секторов винчестера;
    • IRP_MJ_WRITE не позволяет осуществлять запись в первые 63 сектора. При этом вирус пытается разрешить своему дропперу перезаписать MBR и прочие секторы, но из-за явной ошибки в коде уловка не срабатывает. Таким образом, автор трояна разрешает перезаписывать 0x14 (20) секторов, а дроппер пишет только 0xE (14);
    • IRP_MJ_DEVICE_CONTROL возвращает STATUS_UNSUCCESSFUL в ответ на запросы IOCTL_DISK_GET_DRIVE_LAYOUT_EX, IOCTL_STORAGE_GET_MEDIA_TYPES_EX и IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.


    Заражение BIOS
    Если драйверу bios.sys удается опознать Award BIOS (именно наличие этого драйвера выделяет данную вредоносную программу из большого списка подобных троянов, заражающих MBR).

    Упомянутый драйвер очень мал и обладает пугающим деструктивным потенциалом. В нем реализовано три метода:

    • Опознать Award BIOS (попутно определить размер его образа и, самое главное, I/O порта, через который можно программно заставить сгенерировать SMI (System Management Interrupt) и таким образом исполнить код в режиме SMM);
    • Сохранить образ BIOS на диск в файл С:\bios.bin;
    • Записать образ BIOS из файла С:\bios.bin.


    Получить доступ и тем более перезаписать микросхему с BIOS — задача нетривиальная. Для этого сначала необходимо:

    • организовать взаимодействие с чипсетом материнской платы для разрешения доступа к чипу;
    • затем нужно опознать сам чип и применить знакомый для него протокол стирания/записи данных.


    Автор вредоносной программы воспользовался результатами работы китайского исследователя - способ перепрошивки микросхемы через сервис, предоставляемый самим BIOS в SMM (System Management Mode). Программный код SMM в SMRAM не виден операционной системе (если BIOS корректно написан, то доступ к этой памяти им заблокирован) и исполняется независимо от нее. Назначение данного кода весьма разнообразно:

    • это эмуляция не реализованных аппаратно возможностей материнской платы;
    • обработка аппаратных ошибок;
    • управление режимами питания;
    • сервисные функции;
    • и т.д.


    Для модификации самого образа BIOS данная вредоносная программа использует утилиту

    • cbrom.exe (от Phoenix Technologies)


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

    • hook.rom

    в качестве ISA BIOS ROM. Затем Trojan.Bioskit.1 отдает своему драйверу команду перепрошить BIOS из обновленного файла.

    При следующей перезагрузке компьютера в процессе инициализации BIOS будет вызывать все имеющиеся PCI Expansion ROM, в том числе и hook.rom. Вредоносный код из этого модуля каждый раз проверяет зараженность MBR и перезаражает ее в случае необходимости. Следует отметить, что наличие в системе Award BIOS вовсе не гарантирует заражение данным трояном. В памяти BIOS может просто не хватило места для записи нового модуля.


    Заражение MBR
    Троян размещает в MBR код, основная задача которого — инфицировать файлы winlogon.exe (в операционных системах Windows 2000 и Windows XP) или wininit.exe (Windows 7). Для решения этой задачи Trojan.Bioskit.1 располагает собственным парсером NTFS/FAT32. Троян ведет счетчик запусков, обновляющийся раз в день. Через 50 дней предполагается дезактивация зараженного модуля: он будет изменен таким образом, что вирусный код перестанет получать управление. Однако в данной версии трояна этот механизм отключен. Всего Trojan.Bioskit.1 включает две версии шелл-кода, из которых в настоящий момент активна только одна.