ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
ßàØÃÂâÕàë áÕÓÞÔÃÂï - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ХАКЕР 04 /171/ 2013 ZeroAccess: полная биография97ДАЕШЬ P2P!Стремясь повысить живучесть зловреда, разработчики сталииспользовать различные ухищрения. Основной упор былна возможность работы ZeroAccess при любых правах доступа,а также на противодействие блокированию командных центров.При запуске в Windows Vista/Seven происходила попыткаповысить свои права. Так как баг с обходом UAC через инжектв explorer.exe был пофиксен, для поднятия прав стал использоватьсяDLL hijacking. Его суть в том, что ОС сначала ищет необходимуюDLL в текущей директории, а потом в системной,поэтому, разместив в директории легитимной программыDLL с именем, совпадающим с именем одной из импортируемыхбиблиотек, можно добиться запуска вредоносного кода.Для реализации этого метода на борту дроппера, во внедренномCAB-файле (см. рис. 3) присутствовал файл fp.exe. Это быллегальный онлайн-инсталлятор Adobe Flash Player, снабженныйк тому же цифровой подписью VeriSign. Инсталлятор сохранялсяпод именем FlashPlayerInstaller.exe в каталог temp, в этот жекаталог предварительно помещался файл msimg32.dll, имя которогосовпадает с одной из импортируемых DLL.Руткит x86-режима, как и прежде, расставлял в системеловушки. Теперь это был сервис, запускавший файл\systemroot\3439254774:153289011.exe, при этом файл3439254774 был нулевого размера, а 153289011.exe хранилсяв ADS и брался из wsc32.В 64-разрядном режиме Windows Vista/Seven, если былиправа администратора, использовалась схема с consrv.dllи $windir\assembly. Если же таких прав не было, это не оказычтодля x86 алгоритм работы был аналогичен предыдущейверсии и руткит работал на уровне ядра. В противовес этому,в среде x64 все работало в usermode.Как известно, в Windows, начиная с Vista, появился UAC —компонент системы, который запрашивает подтверждениедействий, требующих прав администратора. UAC, конечно, несколькоповысил уровень безопасности Windows, но, как всегда,злобные хакеры все испортили. В UAC многие системныепрограммы жестко прописаны как доверенные (например,explorer.exe), поэтому код, который приводит к срабатываниюдля других приложений, для них не работает при настройкепо умолчанию. Эта особенность была использована в дроппереZeroAccess для того, чтобы поднять свои привилегии в системедо уровня администратора, окно UAC при этом пользователюне показывалось (со временем этот баг был исправлен).Для обхода средств мониторинга трафика в заголовке HTTPзапросаHOST использовалось сгенерированное при помощиDomain Generator Algorithm (DGA) доменное имя в зоне .cn,реально оно не резолвится серверами DNS. В ответ на запросс неправильным заголовком HOST сервер возвращал пустойответ. То есть сервер точно так же генерировал значение и сравнивалего с поступившим от бота. Эти действия представлялисобой некую систему псевдоаутентификации, которая защищаласервер, например от сканирования поисковыми роботами.Так как процедура установки для x86 уже была описана(заражение драйвера), заострять внимание на ней не будем.Стоит лишь отметить очередную смену формата хранилищав июле, теперь это был не файл, а каталог вида C:\WINDOWS\$NtUninstallKBxxxxx$, где xxxxx — пять сгенерированныхцифр. Такое наименование было выбрано с целью маскировкипод рабочую директорию обновления ОС Windows.Доступ к ней блокировался путем создания символическойссылки с $NtUninstallKBxxxxx$ на %systemroot%\system32\config, а также выставлением правил ACL. Каждый файл внутридиректории шифровался RC4, ключ не был определен в коде,а генерировался с использованием некоторых параметров ОС.Краткое описание загружаемых из интернета компонентов:• @00000001 — резервная копия дроппера;• @80000000 — модуль трекинга, предназначен для сборастатистики заражений, информация о зараженной системеотправлялась на counter.yadro.ru;• @800000c0 — поддельная библиотека mswsock.dll для перехватафункций WinSocks, их мониторинг позволял крастьпароли и логины FTP, а также производить внедрениеJavaScript в HTML-страницы;• @000000c0 — модуль внедряет JavaScript для изменениявыдачи поисковых запросов и отправляет данные FTPаккаунтовна удаленный сервер;• @800000cb — модуль внедряется в svchost.exe и используетсядля накрутки посещаемости (click fraud);• @800000cf — модуль связи с командным центром, внедряетсяв winlogon.exe, а затем в браузер, установленныйна компьютере. В адресном пространстве браузера выполняетсякод, связывающийся по фиксированным IP-адресами порту 13620 с командным центром. Список IP находитсяв файле с именем, похожим на CLSID.В режиме x64 никаких инноваций не наблюдалось.Рис. 2. СодержимоехранилищаБЛАГОДАРНОСТИАвтор и редакциявыражают благодарностькомпаниямSophos и «ЛабораторияКасперского» за помощьв подготовке статьии ценные комментариик готовому тексту.Рис. 3. Файлы в CABархиведроппера P2PTCP-basedЗагрузочный модуль сохранялся как %windir%\system32\consrv.dll, для его запуска правилась ветка реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\SubSystems, в значение ключа «Windows» вставляласьстрока «consrv:ConServerDllInitialization». Для маскировки своихфайлов ZeroAccess использовал в качестве хранилища системнуюдиректорию Global Assembly Cache (GAC) вида $windir\assembly, которая нужна для отображения установленныхкомпонентов .NET и не показывает непосредственно свое содержимоев Explorer (однако такой способ маскировки не прокатываетв FAR и TotalCommander). Для хранилища создавалсякаталог $windir\assembly\tmp, где и размещались в зашифрованномвиде модули.Интересная фишка данной версии ZeroAccess — использованиетехники «ловли на живца» для обламывания антивирусов.Кроме своего основного драйвера-руткита, ZeroAccess имелдополнительный драйвер ядра для создания «приманки» —объекта, на который «клевали» антивирусные средства защиты.Этот драйвер создавал устройство \Device\svchost.exe и сохранялподставной PE-файл как \Device\svchost.exe\svchost.exe, доступ к которому мониторился руткитом. Если какое-либоприложение пыталось обратиться к нему, то ZeroAccess немедленнозавершал его. Для завершения потока приложения в негометодом APC инжектировалось около двухсот байт кода, которыйвызывал ExitProcess(). Но это было еще не все! Чтобы предотвратитьпоследующие запуски завершенного приложения,для его исполняемого файла ZeroAccess сбрасывал правиладоступа ACL, разрешающие чтение и выполнение файла. Такимобразом, один раз попавшись на крючок, антивирус большене мог запуститься.