ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
96MalwareХАКЕР 04 /171/ 2013обходимы были права администратора, что при маскировкепод кейген для любимой игрушки не было особой проблемой.При установке на диск никаких временных рабочихфайлов не извлекалось, все манипуляции происходили в памяти.Для старта при загрузке ОС использовалась методиказагрузки при помощи функции ZwLoadDriver(). Перво-напервовыбирался существующий в системе драйвер-жертва,подпадающий под несколько необходимых признаков: имядрайвера должно было находиться в диапазоне от Ndis.sys до Win32k.sys, размер — более 0x4C10 байт, IMAGE_OPTIONAL_HEADER->Export Table.RVA выставлен в NULL(драйвер ничего не экспортирует). Также драйвер не долженбыл запускаться при загрузке системы, это проверялосьпо флагу Start (0 — не загружать) в ветке реестра services. Выбравподходящий драйвер, ZeroAccess целиком переписывалего своим кодом, предварительно отключив SFC. Далеесоздавалась запись в реестре о новом сервисе со случайнымименем и параметрами Type = 0x1, Start = 0x3. Хитрость заключаласьв том, что ImagePath для сервиса выставлялся в \*,а для \* при помощи функции ZwCreateSymbolicLinkObject()создавался симлинк на перезаписанный драйвер. Указанныйсервис и стартовал путем вызова ZwLoadDriver(). Запущенныйруткит регистрировался через вызов IoCreateDriver()в качестве драйвера ОС, для перехвата операции ввода-выводана уровне IRP-пакетов драйверов мини-порта дисковойподсистемы. Далее создавалось виртуальное устройствос фиксированным именем \??\C2CAD972#4079#4fd3#A68D#AD34CC121074, к которому подмонтировался ранее созданныйфайл хранилища под именем %system%\Config\[randomsymbols].sav. Теперь дроппер мог обращаться к своему хранилищучерез виртуальное устройство. После форматированияхранилища в сжатый том NTFS при помощи функцийбиблиотеки fmifs.dll туда сохранялись все остальные компоненты,включая копию чистого драйвера. Структура файловприведена на рис. 1.Функция руткита заключалась в сокрытии содержимогоперезаписанного драйвера; при попытке его прочитать руткитдемонстрировал сохраненный исходный файл. Помимо этого,руткит инициировал запуск инжектора B48DADF8.sys, которыйвнедрял основной модуль DLL с именем мax++.00.x86в адресное пространство браузера посредством APC. Можнозаметить, что в ходе работы функции непосредственного запускавообще не используются, дабы не вызывать срабатыванияпроактивной защиты антивирусов. Основной модульимел функции связи с командным центром и подмены поисковойвыдачи для перенаправления пользователя на вредоносныесайты, предлагающие загрузить фейковый антивирус(FakeAV). Параметры подключения брались из файловв хранилище с названиями, похожими на CLSID, например{49B474EB-92D0-464f-B1DD-1F37AABF9D95}. По информацииSymantec, между 1 июля 2009-го и 30 июня 2010 годабыло произведено около 43 миллионов установок поддельныхантивирусов. Если учесть стоимость такого «подарка» — от 30до 100 долларов, вырисовывается, что этот бизнес был достаточноприбыльным.В 2011 году появилась обновленная версия. Для загрузкируткита использовался все тот же метод запуска черезZwLoadDriver() с небольшими изменениями. Теперь драйверывыбирались из диапазона от classpnp.sys до win32k.sys, размером больше, чем 0x7410. В коде дроппера присутствовалапроверка на выполнение в 64-разрядной среде,в этом случае выполнение сразу завершалось. Имяустройства для обращения к хранилищу имело вид \\?\ACPI#PNP0303#2&da1a3ff&0 (могло меняться от релизак релизу). Файл хранилища размером 16 Мб %system%\Config\[random symbols] на этот раз не был сжат, а шифровался128-битным статическим ключом RC4, расшифровкапроизводилась на лету драйвером руткита при обращениик файлам, содержавшимся в хранилище. Появилась ярко выраженнаямодульная структура (см. рис. 2), модули загружалисьс удаленного сервера. Для связи с командным центромустанавливалось соединение на порт 13620. Сами запросыи ответы передавались в зашифрованном виде.Рис. 1. Структура файловойсистемыРАБОТА В X64 И ТРЮКИ САМОЗАЩИТЫВплоть до апреля 2011 года 64-разрядные версии ОС не заражалисьZeroAccess. В мае это досадное упущение было исправлено,но не сказать чтобы очень технологично. Дело в том,Функция руткита заключалась в сокрытиисодержимого перезаписанного драйвера;при попытке его прочитать руткит демонстрировалсохраненный исходный файлСВЯЗЬ МЕЖДУ ZEROACCESS И TDL3В январе 2010 года в семействе TDL3 появилась версия,в которой файл полезной нагрузки назывался не cmd.dll,а Z00clicker.dll. Казалось бы, при чем тут ZeroAccess? Вседело в том, что строка Z00clicker в дальнейшем несколькораз упоминалась в связи с этим семейством вредоносов.Сначала, в августе 2001-го, было выявлено распространениемодуля desktop.ini для ZeroAccess. Этот модульблокировал работу TDL3 (последней версии, с именами,как у TDL4) путем удаления конфигурационного файлаcfg.ini и модуля cmd.dll из хранилища TDL (если бы цельюбыл TDL4, то еще должен был бы удаляться cmd64.dll). Кроме функции «Kill TDL»,интерес представляет распространение модуля Z00clicker2.dll, предназначенногодля накрутки посещения сайтов. Последняя версия ZeroAccess содержит в своемсоставе модуль, отвечающий за click fraud, который создает класс с именемz00clicker3. Вот и думай после этого, есть между ZeroAccess и TDL3 связь или нет.Некоторые специалисты, например представитель компании Webroot ЖакЭразмус (Jacques Erasmus), говорят, что исходные коды TDL3 были проданыразработчикам ZeroAccess. Произошло это примерно в конце 2009 — начале2010 года. Так что не исключено, что версия TDL3 с Z00clicker.dll и ZeroAсcess —результаты сторонней разработки на базе исходного кода TDL3. В то же времясотрудники «Лаборатории Касперского» заявляют, что никакой связи между TDL3и ZeroAccess нет. По их словам, скорее, речь может идти о reverse engineeringи заимствовании идей TDL3.