понедельник, 27 февраля 2012 г.

Новый виток развития VBR-буткита Rovnix

В начале февраля мы столкнулись с новой модификацией уже хорошо знакомого нам семейства Win32/Rovnix, которое продолжило развитие VBR-буткитов. По сути Rovnix, это единственное семейство инфицирующие VBR и получившее широкое распространение (ну разве, что Olmasco еще использует VBR, но совсем по другому). Буткит фреймворк Rovnix был так же использован в качестве платформы для буткит части известного банковского троянца Carberp. Больше информации о семействе Win32/Carberp можно будет узнать из нашего доклада “Carberp Evolution and BlackHole: Investigation Beyond the Event Horizon”, который планируется сделать на конференции CARO 2012.

В процессе анализа распакованного дропера Win32/Rovnix.B, нами были замечены интересные строковые константы и отладочные сообщения:


Примерно такие же строки можно было найти и в дропере Carberp с буткитом, только были некоторые отличия в идентификаторе версии установщика. У Rovnix мы видим версию 2.5, а у Carberp версию 2.1




Интересный факт, в начале лета 2011 года модификации Win32/Rovnix.A стали распространяться без сопутствующей буткит-части. В тоже самое время снова стали появляться многочисленные предложения о продаже некоторой буткит платформы. В середине лета нами уже были замечены первые командные центры для тестирования версии Carberp с буткитом. Быть может распространение буткита Win32/Rovnix.A было лишь процессом тестирования нечто большего, а сейчас с появлением Win32/Rovnix.B мы видим новый виток развития этой буткит-платформы.

Проанализированный нами дропер Win32/Rovnix.B, явно распространялся через какую-то партнерку по схеме PPI. Предыдущая версия так же активно распространялась через партнерские программы и самыми заметными стали: malwox.com и netox.biz. В процессе заражения происходит отправка информации на C&C, которая явно указывает на участие в PPI процессе.


После успешной установки дропер скачивает конфигурационный файл с командного центра:


Так же были замечены два доменных имени (havingbeothers.co.cc и appropriations.co.cc), ассоциированных с командными серверами в доменной зоне co.cc, которая уже не раз фигурировала в качестве доменной площадке для фишинговых сайтов.

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

После публикации нашего англоязычного сообщения в блоге, появилась информация о компрометации командного центра французским исследователем с ником Kafeine. И после этого последовал более развернутый пост от Xylitol.



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

Давайте теперь перейдем теперь к описанию низкоуровневого функционала и изменений в буткит платформе Rovnix. Основные изменения коснулись следующих компонентов:
  • загрузочного кода заражающего VBR
  • скрытой файловой системы
  • вредоносного драйвера
Загрузочный код (bootstrap code) во многом похож на то, что мы видели до этого за исключением того, что теперь он зашифрован. Существует специальная заглушка которая осуществляет его расшифрование и передачу управления на расшифрованный код. Основной интерес представляет то, что эта заглушка в виде небольшого количества команд является полиморфной и отличается у различных дроперов. Видимо таким образом злоумышленники пытаются противостоять статическому обнаружению модифицированного загрузочного кода.

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


Или в виде данных:


Для инжекта используется следующая техника:
  1. Регистрируются следующие нотификаторы в системе LoadImageNotifyRoutine() и CreateProcessNotifyRoutine(). Это все нужно для отслеживания заданных для внедрения процессов
  2. После этого происходит отображение полезной нагрузки в адресное пространство процесса в которой будет осуществлено внедрение и активация внедренного кода при помощи механизмов APC (Asynchronous Procedure Call) 
  3. Самозащита драйвера реализована похожим образом, который мы уже видели в семействе Olmasco (MaxSS). Осуществляется перехват обработчика  IRP_MJ_INTERNAL_CONTROL драйвера минипорта жесткого диска. Это дает возможность контролировать доступ на запись/чтение к любым областям жесткого диска. В частности скрываются: модифицированный загрузочный код, вредоносный драйвер, скрытый раздел файловой системы
Перехват IRP_MJ_INTERNAL_CONTROL выглядит следующим образом:


Еще одной важной особенностью новой модификации, является появление скрытого раздела, а не просто данных хранящихся по определенному смещению. Скрытый раздел размещается, либо вначале, либо в конце жесткого диска и занимает 0x7D0 свободных секторов или больше. Для доступа к скрытой файловой системе используется оригинальный обработчик IRP_MJ_INTERNAL_CONTROL. Скрытый раздел использует прозрачное шифрование при помощи блочного криптографического алгоритма RC6 в режиме ECB (Electronic Code Book). Для шифрования используется ключ длинною 128 бит, который хранится в последних 16 байтах скрытого раздела.


Мы обнаружили в парсере скрытого раздела сигнатуру  VFAT, что может означить использование файловой системы Virtual FAT.


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

TDL3/TDL3+/TDL4
Olmasco
ZeroAccess

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