Буткит что это за вирус

  • Windows XP на виртуальной машине
  • C++
  • Turbo Assembler
  • Hiew
  • Bochs (опционально)

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

Когда мы тыкаем на кнопку включения компа, загружается BIOS, он делает все свои дела по проверке компа на живучесть и, если всё хорошо, читает самый первый сектор первого диска в память по адресу 0:7c00h и джампует на него. Первый сектор первого диска называется MBR. Вот сюда-то и пишется первая часть буткита. MBR состоит из 3 частей. Первая часть — это код, занимать он может не больше 446 байт, вторая часть — таблица разделов — Partition Table. PT состоит из 4 записей, каждая из которых занимает по 16 байт. И последняя часть — сигнатурка 0x55aa. Да, она занимает два байта, но, если её не будет, система не будет грузиться дальше. Из PT можно узнать какой раздел с какого сектора начинается, какого он размера, является ли он активным или нет. Есть буткиты, которые не заражают MBR, а заражают загрузочный сектор. Не путайте эти понятия! Загрузочный сектор — это самый первый сектор относительно активного раздела, а MBR — относительно диска. Код в MBR будет выполнять две задачи. Первая — перехват функций 2h и 42h 13h прерывания BIOS, считывание оригинального MBR в память и переход на его код. Функции данного прерывания BIOS осуществляют чтение секторов диска. Перехват этих функций даст контроль над тем, что будет считываться дальше. Настанет момент, когда система будет читать ntoskrnl.exe. Он-то нам и нужен. Перехватив прерывание, мы можем просплайсить любую понравившуюся нам функцию, главное, чтобы она вызывалась виндой. Это даст нам то, что при переходе в защищённый режим мы никуда не потеряемся. Как только вызовется перехваченная функция, наш обработчик должен будет выполнить полезную нагрузку, например, извлечь из секторов заранее записанную информацию (calc.exe или драйвер) в файл и снять перехват. В принципе это всё. Кстати, некоторые буткиты ещё устанавливают шлюз в GDT вместо того, чтобы грузить драйвер. Итак, первое, что мы попытаемся сделать — это просто загрузить ОС используя модифицированный MBR. Задача инсталлятора такая: прочитать 1 сектор диска, заксорить его и записать в 4 сектор диска. После этого переписать первые 446 байт MBR кодом загрузчика нашего буткита. PT мы трогать не будем, так как эта важная информация, если её изменить, то система потеряет все свои файлы и не загрузится. Чтобы было интереснее на первом этапе, накодим себе код mbr, который будет осуществлять нам дополнительную защиту: перед загрузкой ос надо будет ввести пароль, если он правильный, то система загрузится. Ввод получился таким:

Осталось скомпилировать код и записать бинарник в MBR. Немного пояснений. Первым делом загрузчик должен перенести себя в другое место памяти. В какое именно — не так важно. В самом начале, в 12 строке кода, мы вычитаем 1 из переменной, которую инициализировал BIOS. Находится она по адресу 0:413h и отвечает за количество оперативной памяти компьютера в килобайтах. Мы откусим для своих нужд 1 кб и скопируем туда код. Операционная система уже никак не сможет обратиться по тому адресу, потому, что она будет думать, что памяти там уже нет. В общем идеальное место. После того, как мы скопировали свою тушу в новое место, выполняем переход туда и остальная работа уже будет делаться там. Первое что тут происходит — это чтение 4 сектора. Напомню, туда инсталлятор скопирует оригинальный MBR, предварительно поксорив его на 0x90. Дальше идёт расшифровка MBR и вывод строки с предложением ввода пароля. Правильность ввода проверяется немножко туповато, но сделать по-нормальному мне лень :-). Если введённый пароль правильный, то происходит переход на оригинальный MBR, и система загрузится, как будто ничего этого и не происходило. Какой пароль, думаю вы и без меня из кода поймёте, а если нет, то отложите затею с буткитом и подучите ассемблер.

Откройте получившийся бинарник в каком-нибудь HEX редакторе и скопируйте все байтики. Я сделал это в hiew и заюзал плагин, который мне не только скопировал байтики, но и преобразовал их в сишный массив. Плагин называется mbytes2csrc.hem.

Думаю, тут пояснений не потребуется. Вот что получилось после перезагрузки:


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

If you found an error, highlight it and press Shift + Enter or click here to inform us.

В последние несколько лет увеличилось распространение вредоносных программ (буткитов), модифицирующих загрузочные сектора в процессе заражения системы. Среди самых видных представителей — TDL4, Olmasco и Rovnix. Каждый из них использует различные способы заражения жесткого диска, это либо модификация главной загрузочной записи (MBR), либо модификация первых секторов загрузочного раздела, т. е. VBR или IPL (первые сектора тома, куда передается управление из MBR — Volume Boot Record/Initial Program Loader). Наглядно эти семейства показаны на рисунке ниже.



Рис. 1. Схема различных семейств буткитов и методов заражения диска.

Существует несколько причин использования буткитов в современных угрозах:
● Возможность запуска вредоносного кода раньше кода ОС, что дает неоспоримые преимущества и позволяет контролировать процесс загрузки ОС.
● Как следствие первого пункта, позволяет обходить систему мониторинга целостности ключевых компонентов ядра — PatchGuard (практически единственный способ обеспечить выживаемость руткита в x64-среде).
● Возможность глубоко скрывать свой код и, таким образом, делать его невидимым для AV-сканеров.
● Буткит имеет посекторную архитектуру хранения своего тела на диске, что дает возможность выносить свой вредоносный код и код полезной нагрузки далеко за пределы файловой системы и даже разделов диска, делая почти невозможным его обнаружение.
● Безопасная установка руткита в системе.

В отчете ESET по угрозам и трендам за 2012 г., мы указали, что буткиты являются одним из ключевых технических трендов прошедшего года. Наши эксперты отслеживают появление новых сложных угроз. Мы также не обошли стороной и Win32/Gapz, так как он содержит ряд технических особенностей, которые делают его действительно интересным. Александр Матросов и Евгений Родионов проделали большую работу, занимаясь анализом этого буткита. Сегодняшний наш пост посвящен этому анализу.

Начнем с дроппера — компонента, который является изначальным носителем кода буткита и отвечает за его установку в системе. Мы детектируем его как: Win32/Gapz.X, X-версия. Мы обнаружили три его версии, A, B и C. Ниже в таблице приведены их характеристики:



Рис. 2.

В соответствии с нашими наблюдениями, первая известная версия дроппера была скомпилирована в апреле прошлого года и содержала много отладочной информации, т. е. не подразумевалась для массового распространения. Вполне вероятно, что Win32/Gapz начали массово распространять в конце лета или начале сентября прошедшего года. Для поднятия своих привилегий в системе Win32/Gapz использует LPE-эксплойты и COM Elevation метод.
В процессе анализа мы обнаружили, что заражению Win32/Gapz подвержены: 32-битные Windows XP SP2 и выше (исключая Windows Vista и Vista SP1) и 64-битные Windows XP SP2 и выше. Обсуждаемая версия дроппера Win32/Gapz способна заражать Windows XP и Windows 7, включая x64 версии, однако на Windows 8 буткит-часть не работает должным образом и после заражения часть, надлежащая к исполнению в режиме ядра, не исполнялась.



Рис. 3. Часть кода дроппера, проверяющая версию ОС.

Дроппер, устанавливающий буткит в систему, тщательно продуман и способен обойти современные проактивные защиты (HIPS), а также поднимать свои привилегии до уровня системы. Кроме того, он содержит хитрый метод внедрения кода в адресное пространство процесса. Файл дроппера экспортирует из себя несколько функций, которые указаны ниже на рисунке.



Рис. 4. Функции, экспортируемые исполняемым файлом дроппера.

Есть три экспортируемые функции, на которые следует обратить внимание: start, icmnf и isyspf. Краткое описание:
● start — точка входа в дроппер, осуществляет его внедрение в адресное пространство доверенного процесса explorer.exe;
● icmnf — отвечает за повышение (эскалацию) привилегий;
● isyspf — выполняет заражение жертвы кодом буткита.

Код дроппера использует специальную секцию, которая спроецирована в адресное пространство процесса explorer. Через эту секцию он загружает шелл-код в этот процесс и далее, с помощью специально сформированного API-вызова, производит его активацию. Соответственно, после того, как шелл-код активирован, он подгружает образ дроппера в адресное пространство процесса explorer, вызывает функцию повышения привилегий и инициирует процедуру заражения кодом буткита, записывая его на диск.



Рис. 5. Стадии выполнения дроппера и заражения жертвы кодом буткита.

После того, как дроппер заразил систему буткитом, его задача исполнена, и он удаляет свой файл с диска.

Вредоносный код MBR

Мы обнаружили две модификации буткита Win32/Gapz, которые различаются методами заражения диска жертвы. Самая ранняя модификация появилась в начале лета 2012 г., эта версия была нацелена на заражение MBR. Другая, более поздняя модификация, которая заражает VBR, была замечена в конце осени 2012 г.



Рис. 6. Две модификации Win32/Gapz, нацеленные на заражения MBR и VBR.

Давайте рассмотрим более раннюю модификацию буткита, которая нацелена на заражение MBR, подробнее. В этом случае, код буткита можно разбить на несколько частей:
● вредоносный MBR;
● код режима ядра и полезная нагрузка, внедряемая в процессы.

Вредоносный код сохраняет свой код режима ядра и полезную нагрузку либо перед самым первым разделом, либо после последнего раздела на жестком диске. Такой подход очень похож на тот, который использовался в бутките Rovnix, за исключением того, что Rovnix заражает VBR.
Что касается буткит части Win32/Gapz, то в ней нет ничего необычного: как только код из вредоносного MBR исполнился, он восстанавливает оригинальный код в памяти и читает следующие секторы жесткого диска, содержащие код для последующего исполнения, на который и передается управление. Код буткита перехватывает обработчик прерывания 0x13, int 13h и отслеживает, таким образом, загрузку ниже перечисленных модулей ОС для установки туда перехватов:
● ntldr (на системах до Windows Vista)
● bootmgr (на системах Vista+)
● winload.exe (на системах Vista+)

Код буткита идентифицирует каждый из вышеперечисленных модулей, используя специальные последовательности байт. Ниже перечислен список функций, которые буткит перехватывает в этих модулях:


Как только вредоносный код обнаруживает, что конкретный модуль читается с жесткого диска, он модифицирует его таким образом, чтобы вернуть себе контроль после того, как процессор переключится в защищенный режим. Буткит устанавливает перехваты на загрузчик ядра ОС: это либо ntldr в устаревших системах до Windows Vista, либо bootmgr в Vista и выше. В случае с bootmgr, он также перехватывает функцию OslArchTransferToKernel в winload.exe.



Рис. 7. Перехватчик функции OslArchTransferToKernel в winload.exe.

Следующий этап, это установка перехвата на функцию IoInitSystem, которая вызывается в процессе инициализации ОС. Она перехватывается вредоносным кодом либо из ntldr, либо из winload.exe, в зависимости от версии ОС.



Рис. 8. Код перехвата, устанавливаемого на функцию IoInitSystem.

После того, как вредоносный код из IoInitSystem был исполнен, буткит восстанавливает модифицированные байты в образе ядра ntoskrnl и передает управление оригинальной IoInitSystem. Перед передачей управления оригинальному коду, буткит перезаписывает адрес возврата в стеке на свою функцию, которая, соответственно, будет исполнена по завершении исполнения IoInitSystem. С помощью такого трюка вредоносный код получает управление после того, как ядро ОС будет инициализировано. Далее вредоносный код считывает остальную свою часть с жесткого диска и создает отдельный системный поток, который исполняет эти инструкции и в завершении возвращает управление ядру. В этой части буткита, которая исполняется в режиме ядра, реализуется руткит-функционал, внедрение полезной нагрузки в процессы и взаимодействие с C&C сервером.

Вредоносный код VBR



Рис. 9. Схема первого сектора VBR.



Рис. 10. Структура NTFS-тома.

В случае заражения системы, VBR-код вызывает на исполнение код буткита вместо легального IPL. Код буткита, как уже упоминалось, записывается либо перед самым первым разделом диска, либо после последнего. В остальном код буткита, по существу, ничем не отличается от версии с MBR-инфектором.

Вредоносный код режима ядра

Основное предназначение непосредственно той части, которая и называется буткитом, описанной выше, заключается в загрузке вредоносного кода режима ядра или руткита в системное адресное пространство, обходя ограничения, накладываемые ОС для такого привилегированного кода. Мы уже упоминали, что этот загружаемый буткитом код, содержит в себе руткит для скрытия своего присутствия, механизм работы с управляющим сервером C&C, а также полезную нагрузку (payload), которая предназначена для внедрения в процессы.
В отличие от Rovnix, TDL4 и других распространенных буткитов, вредоносный код режима ядра в Win32/Gapz не имеет структуры исполняемого PE-файла. Вместо этого он структурирован особым образом. Код состоит из 12 объединенных между собой блоков, каждый из которых имеет заголовок — структуру, которая хранит служебную информацию о нем. Она имеет следующий вид:


Каждый из блоков реализует определенный функционал: внедрение полезной нагрузки, взаимодействие с C&C серверами, самозащиту и так далее. Функционал кода режима ядра является достаточно сложным и может быть рассмотрен отдельно (выходит за рамки этого поста).

Bootkits vs. Microsoft ELAM

В этой части нашего поста мы хотим остановиться на специальном средстве, которое Microsoft решили использовать для борьбы с различного рода угрозами, особенно, руткитами и буткитами, которые пытаются загрузить себя раньше других драйверов в системе. Средство называется ELAM, Early Launch Anti-Malware Module и поставляется в составе ОС, начиная с Windows 8. По сути ELAM – это драйвер, предоставляемый антивирусным вендором, которому гарантирован приоритет при загрузке драйверов режима ядра. С точки зрения же ядра ОС, ELAM представляет собой API для антивирусных драйверов, а также набор правил, которых такому драйверу следует придерживаться. Одна из главных возможностей этого средства заключается в том, что он гарантированно позволяет AV-драйверу загружаться раньше остальных драйверов в системе и, таким образом, выходить за рамки обычных правил автозагрузки, регламентируемых для остальных драйверов.

Мы отмечаем, что ELAM сам по себе не может быть так эффективен для борьбы с буткитами, поскольку это часть ядра ОС, а буткит получает управление гораздо раньше.



Рис. 12. Мы видим, что буткит может компрометировать систему с активным ELAM, делая его бесполезным инструментом. Поскольку буткит загружается раньше инициализации ОС, он будет уже находиться в памяти на тот момент, когда ELAM получит управление.

Призрак загрузочного сектора.

My power over you
grows stronger yet
(c) Andrew Lloyd Webber - Phantom Of The Opera

Кто раньше встал – того и тапки
(с) неизвестен.

То есть, реальностью внутри компьютерного мира рулит тот, кто раньше стартовал. Именно он, с вершины своей горы, обозревает окрестности и блюдёт в системе порядок… Или беспорядок, незаметно и безнаказанно – если первым загрузился зловред.

А очередь на загрузку начинается с загрузочного сектора – специальной области на диске, где сосредоточены все стрелки на что, когда и куда будет грузиться. И - о, ужас! - даже операционная система подчиняется этому порядку! Немудрено, что кибер-негодяи давно питают нездоровый интерес к оному сектору – это же идеальный вариант надеть тапки первым и полностью скрыть факт заражения компьютера! А помогает им в этом особый класс зловредов – буткиты.


О том, что такое буткиты и как мы вас от них защищаем – рассказ ниже.

На самом деле буткиты – история с бородой. Да ещё с какой!

Второе дыхание буткиты обрели в конце 2007г., когда на арену выползла новая версия троянца-шпиона Sinowal с функцией заражения загрузочного сектора. Кстати, для некоторых антивирусных компаний это был шок - с конца 90х угроза считалась неактуальной и некоторые продукты в принципе не умели защищать загрузочные секторы. Хотя буткиты сейчас уже не блещут пандемическим распространением, в наших отчётах они стабильно создают заметный вредоносный фон. А компьютерный андерграунд не перестаёт изобретать новые уловки.

Спросите - раз буткиты такие хитрые и неуловимые, почему же они не такие распространённые? И вообще стоит ли овчинка выделки – надо ли заморачиваться разработкой защиты?

Ну, во-первых, мы оцениваем общее количество компьютеров в мире, заражённых разными буткитами где-то в 10 миллионов. Согласитесь, цифра немалая, чтобы называть буткиты нераспространёнными и игнорировать разработку защитных технологий. Во-вторых, этот метод заражения активно используется в сложных целевых атаках при господдержке (например, печально известный FinSpy). Стать жертвой кибервоенщины или спецоперации - тоже не самая приятная перспектива. А в-третьих, для создания буткита требуется очень глубокое знание системного программирования, что не каждому кибер-негодяю по плечу. Соответственно, и защищать от таких тараканов оййй как непросто. Но мы защищаем и весьма успешно. И об одной уникальной фиче нашего арсенала сейчас и пойдёт речь.


Прежде всего, кратенько рассмотрим жизненный цикл буткита.

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

При заражении буткит записывается в загрузочный сектор, а его оригинальное содержимое переносится в укромное место и зашифровывается. Далее при каждом запуске компьютера буткит будет загружать в память свои модули, содержащие вредоносный функционал (например, банковский троянец) и средства маскировки (руткит). Руткит необходим для сокрытия факта заражения компьютера – он перехватывает последующие попытки операционной системы или других приложений (в том числе антивирусов) проверить содержимое загрузочного сектора и… подсовывает из того самого укромного места оригинал! Как будто ничего и не было!

Казалось бы, при таком монопольном контроле над системой эту кибер-заразу можно вывести только загрузкой с другого диска с чистой операционной системой и хорошим антивирусом. Да, это вариант. Но у нас есть технология, которая поможет справиться с буткитами (в том числе неизвестными!) без хирургического вмешательства, пролечив компьютер автоматически.

В наших корпоративных и персональных продуктах есть эмулятор загрузки. Подобно эмулятору операционной системы или браузера он создаёт искусственное окружение, соответствующее процессу загрузки компьютера. Затем эмулятор в обход перехваченных дисковых функций собирает все необходимые секторы, формирует специальный контейнер и запускает его в этом окружении. Буткит думает, что пришло время поработать и запускает свою стандартную процедуру, тут-то мы его и палим! Подозрительный объект через KSN отправляется нашим вирусным аналитикам - они разрабатывают защиту, обновляют базы, а дальше дело техники – антивирус расшифровывает оригинальный загрузочный сектор, удаляет буткит и все его модули и восстанавливает систему. Если нет возможности ждать – можно попытаться вылечить компьютер нашей бесплатной антивирусной утилитой KVRT.

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

Как и любой эмулятор, виртуализация загрузки компьютера – процесс дюже ресурсоёмкий. С другой стороны – а зачем постоянно и глубоко сканировать загрузочный сектор? В общем, мы совместили приятное с полезным таким образом, что проверка загрузочной области происходит по требованию, по расписанию (например, поздно ночью) или в режиме простоя, когда на компьютере никто не работает. И овцы целы и волки сыты :)


Что будет дальше?

Нет сомнений, что буткиты будут дальше эволюционировать и совершенствоваться. Наглядный пример – полиморфный вирус XPAJ, который запросто обходит новые механизмы защиты Windows для маскировки своего буткит-модуля. На повестке дня биоскиты – вредоносные перехватчики ещё более глубокого системного уровня.

Также ясно, что этот класс зловредов ещё некоторое время останется оружием ограниченного числа кибер-банд, которым логично привлекать к себе поменьше внимания, подольше оставаясь в тени. А тень есть и ещё какая – тень от антивирусной индустрии, которая откровенно забивает на защиту от буткитов.

Ниже – результаты недавнего сравнительного тестирования способности разных антивирусов лечить активное заражение некоторыми распространёнными буткитами. Картина мрачная, но с элементами оптимизма :)


В общем, скучно точно не будет. Вместе с тем, мы тоже на месте не стоим, думаем, работаем, изобретаем, внедряем, детектим, лечим, спасаем!

Введение

В 2008 году мы констатировали появление вредоносной программы Backdoor.Win32.Sinowal и расценивали ее как технологически крайне опасную.

Такая оценка была дана вследствие того, что авторы программы использовали самые продвинутые на тот момент технологии написания вирусов, включая основные:

  1. ‘Индивидуальное’ заражение пользователей взломанных сайтов с помощью большого количества разных уязвимостей, включая некоторые из разряда ‘0-day’.
  2. Использование передовых rootkit-технологий и методов загрузочных вирусов для заражения MBR компьютера пользователя. Методы заражения загрузочных секторов дисков были очень популярны на заре компьютерных вирусов; сейчас произошло возрождение старой технологии, но уже на новом уровне. Проблема усугубляется тем, что многие недавно появившиеся антивирусные средства защиты просто не умеют проверять MBR, так как считалось, что данная угроза уже давно не актуальна.
  3. Использование технологии постоянной миграции серверов управления и заражения (изменение их IP-адреса и доменного имени). Зараженные компьютеры использовали специальный алгоритм создания доменного имени для поиска своих управляющих центров. Впоследствии аналогичная технология была использована во вредоносных программах семейства Kido (Conficker).

Эти вредоносные методы и технологии за год стали ‘классическими’ и теперь используются во многих самых разнообразных вредоносных программах. Разработчики самого буткита тем временем не остановились на достигнутом и пошли дальше в создании, реализации и продвижении своих технологий.

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

В конце марта 2009 года эксперты ‘Лаборатории Касперского’ обнаружили распространение в интернете новой модификации буткита. Результаты анализа его работы и способа распространения представлены в данной статье.

Текущее состояние

Анализируя развитие буткита, можно отметить следующие самые значительные изменения:

На текущий момент буткит распространяется через взломанные сайты, порноресурсы и сайты, с которых можно загрузить пиратское ПО. Практически все серверы, участвующие в процессе заражения пользователей, имеют очевидный ‘русскоязычный’ след: работают в рамках так называемых ‘партнерских программ’ — схем взаимодействия между владельцами сайтов и авторами вредоносных программ. Такие ‘партнерки’ крайне популярны в российском и украинском киберпреступном мире.

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

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


Расшифрованная часть скрипта для генерации доменного имени сайта с эксплойтами.

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

Cкрипт, который встроен в зараженные веб-страницы, помимо создания доменного имени в зависимости от текущей даты, создает еще и cookies со сроком действия 7 дней. Это сделано для блокирования повторного открытия в браузере страницы с Neosploit в случае если пользователь еще и еще раз будет посещать зараженную веб-страницу. Скрипт проверяет наличие cookies и, если cookies присутствует и срок его действия не истек, не создает доменное имя, и пользователь не перенаправляется на Neosploit.

Буткит, как и прежде, использует способ, основанный на заражении MBR, для того, чтобы загрузить свой драйвер во время старта операционной системы. Драйвер используется, чтобы не дать обнаружить и вылечить зараженную загрузочную запись. Первые версии использовали перехват IRP-процедур объекта DriverDisk, однако технологии борьбы с вредоносными программами развиваются, и вирусописателям пришлось существенно изменить алгоритм работы. Текущий вариант руткита использует более продвинутую технологию сокрытия своего присутствия в системе, по-сравнению с предыдущей версией. На текущий момент ни один из известных руткитов не использует описанные ниже методы.

При старте вредоносного драйвера происходит проверка на наличие активного отладчика. Если он есть, руткит не скрывает зараженный MBR и ничем не выдает своего присутствия в системе.

Чтобы стать практически невидимым, руткит подменяет у нужного устройства указатель на его тип. Данный тип — это определенная структура, в которой вредоносный драйвер подменяет указатель на функцию (ParseProcedure).


Установление перехватчика вызова функции для подмены MBR

В случае открытия антивирусной программой физического диска для низкоуровнего доступа, произойдет вызов перехваченной функции. В ней в свою очередь произойдет перехват IRP-процедуры драйвера более низкого уровня, нежели DriverDisk и функции, которая вызовется при закрытии ранее открытого диска. Как только диск закроется, все перехваты вернутся в изначальное состояние.


Низкоуровневый драйвер atapi зараженной системы

Отдельного внимания заслуживает код драйвера, который претерпел существенные изменения за это время. Большинство ключевых функций, устанавливающих перехваты системных функций ОС или являющихся перехватами, морфированы, что заметно усложняет процедуру анализа вредоносного кода.


Пример шифрованной функции перехвата

Методы защиты

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

При посещении зараженной страницы Kaspersky Internet Security блокирует:

  1. Доступ к генерируемому имени сайта для загрузки эксплойта:


  1. Скрипты для создания и загрузки эксплойтов:


  1. Самые опасные и актуальные эксплойты:


Наиболее сложная и самая важная часть Kaspersky Internet Security — детектирование активного буткита и лечение зараженного компьютера.

Вариант 2009 года, к сожалению, остается столь же серьезной проблемой. В нашем антивирусе она уже решена:


После обнаружения угрозы антивирус способен обойти все установленные руткитом перехватчики и вылечить зараженный MBR:


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

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

DrWeb SS 5.0 NIS 2009 McAfee TP 2009 KIS 2009
Scripts
(compromised websites)
+
URLs
(malicious domains with Neosploit)
+ +
Exploits (Neospoit Toolkit) + +
Binary + + + +
Installation + +
Active infection
(detection/desinfection)
+/+ -/- +/+ +/+

Заключение

Буткит до сих пор является самой опасной и быстро развивающейся вредоносной программой. Именно из нее (и для ее распространения) появлялись самые интересные технологии написания вирусов последнего времени.

Антивирусным компаниям необходимо внимательно следить за всеми изменениями и технологиями, вводимыми авторами буткита, так как эти технологии в скором времени будут широко пускаться в ход многими вирусописателями.

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

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.

Copyright © Иммунитет и инфекции