Около двух недель назад немецкое общество хакеров Chaos Computer Club (CCC) опубликовало аналитический отчет о троянце-бэкдоре, который, как они утверждают, использовался немецкой полицией в ходе расследований для перехвата голосового трафика и сообщений с компьютеров подозреваемых. Наши коллеги из F-Secure на прошлой неделе опубликовали блогпост, в котором описали другой файл, который, по их словам, является дроппер-компонентом троянца. Они любезно поделились с нами MD5-хэшем файла, так что мы смогли найти его в нашей коллекции. Мы со Стефаном (Stefan Ortloff) исследовали этот вредоносный компонент.
Дроппер несет в своей ресурсной таблице пять других файлов, так что всего компонентов шесть, и каждый решает свои задачи, каждую из которых мы внимательно изучили. Помимо прочего, мы обнаружили две интересные вещи. Во-первых, эта версия зловреда способна выполняться не только на 32-битных системах – она поддерживает и 64-битные версии Windows. Во-вторых, список процессов-мишеней, которые подвергаются мониторингу, оказался длиннее списка, указанного в отчете ССС. Всего различными компонентами заражается 15 приложений.
Приложения-мишени
В предыдущих обсуждениях R2D2 говорится, что приложением-мишенью, которое подвергается мониторингу со стороны троянца, является Skype. Рассмотренная нами версия нацелена не только на Skype, но и на все распространенные браузеры, различные приложения для мгновенного обмена сообщениями и программы IP-телефонии (VoIP): ICQ, MSN Messenger, Low-Rate Voip, paltalk, SimpPro, sipgate X-Lite, VoipBuster и Yahoo! Messenger. Вот список процессов-мишеней:
- explorer.exe
- firefox.exe
- icqlite.exe
- lowratevoip.exe
- msnmsgr.exe
- opera.exe
- paltalk.exe
- simplite-icq-aim.exe
- simppro.exe
- sipgatexlite.exe
- skype.exe
- skypepm.exe
- voipbuster.exe
- x-lite.exe
- yahoomessenger.exe
Инъекция кода в процессы-мишени выполняется дроппером, двумя компонентами, выполняемыми в режиме пользователя, а также 32-битным драйвером режима ядра; у последнего расширен набор функциональных возможностей по сравнению с предыдущей версией, которая предоставляла лишь интерфейс для внесения изменений в реестр и файловую систему. Новый же драйвер запускает дополнительный поток, который в бесконечном цикле просматривает текущий список выполняемых процессов и внедряет вредоносный DLL в каждый процесс, имя образа которого совпадает с какой-либо записью в следующем списке:
Рис. 1. Список процессов-мишеней в 32-битном драйвере режима ядра
Все процессы-мишени, которые мы обнаружили в компонентах, выполняемых в пользовательском режиме, также охвачены драйвером.
Используются два разных метода инъекции вредоносного DLL. Один метод регистрирует библиотеку режима пользователя в реестре Windows под именем AppInit DLL, в результате чего библиотека загружается во время создания процесса. Второй метод создает удаленный поток в уже запущенных процессах и внедряет блок позиционно-независимого кода, который вносит файл mfc42ul.dll – один из модулей режима пользователя – в память процесса-мишени. На скриншоте видна первая пара инструкций кода, который выполняет инъекцию:
Рис. 2. Позиционно-независимый код, внедряющий DLL в процесс-мишень
64-битный драйвер режима ядра
После того как дроппер устанавливает компонент режима ядра, он формирует имя ресурса в зависимости от архитектуры системы (32- или 64 бит) и устанавливает соответствующий драйвер:
Рис. 3. Код, определяющий и загружающий драйвер режима ядра в зависимости от архитектуры
В отличие от 32-битной версии, 64-битный драйвер не содержит никакого функционала, обеспечивающего заражение процессов, и предоставляет лишь примитивный интерфейс повышения привилегий через доступ к файловой системе и реестру. Как и 32-битная версия, он создает устройство и внедряет простой протокол для обмена данными с приложениями режима пользователя.
Рис. 4. Подпрограмма создания устройства в 64-битном драйвере
Широко известно, что 64-битные модули режима ядра должны иметь действительную цифровую подпись, которую операционная система может проверить; в противном случае в загрузке драйвера будет отказано. Драйвер, который идет в комплекте с руткитом, содержит 1024-битный RSA-ключ (контрольная сумма e5445e4a 9c7d24c8 43f0c669 e2a8d3a1 78cf7fa8), выданный Goose Cert 11 апреля 2010 г. Однако для загрузки драйвера ключ должен быть установлен, а его достоверность должна быть подтверждена.
Рис. 5. RSA-ключ из 64-битного драйвера
Все вредоносные компоненты детектируются продуктами «Лаборатории Касперского» как варианты троянца/руткита R2D2. Дроппер-компонент до этого детектировался и блокировался нашими продуктами при помощи эвристических методов.
«Федеральный» троянец обзавелся Большим Братом