В начале мая мы опубликовали анализ руткита Win32/Rootkit.Avatar. Однако в нем не доставало информации об устаналиваемой им на зараженные системы полезной нагрузке и плагинах. Наша антивирусная лаборатория отслеживала активность этой вредоносной программы. В середине июля мы обнаружили еще один дроппер Win32/Rootkit.Avatar, в котором присутствовала информация об активных C&C серверах для взаимодействия. Александр Матросов, Евгений Родионов и Антон Черепанов выполнили подробный анализ этого руткита, из которого видно, что он продолжает свою активность. Мы так же раскрываем новую информацию о методах самозащиты руткита в режиме ядра.
Полезная нагрузка
Информация о конфигурации для проанализированных семплов имеет тот же формат, который мы описывали прощлом посте. В расшифрованном виде исследуемая нами конфигурация выглядит следующим образом.
Управляющий C&C сервер, указанный выше в файле конфигурации (выделен желтым цветом), уже не работал на момент нашего анализа, поэтому мы воспользовались сервисом Yahoo Groups, в котором вредоносный код осуществляет дублирование необходимой информации для связи с C&C.
Win32/Rootkit.Avatar обладает еще одним способом общения с C&C, в случае если другие методы по каким-либо причинам не могут отработать. Как мы уже упоминали в прошлом анализе, вредоносный код осуществляет поиск сообщений в Yahoo Groups с использованием специальных параметров. Аватар использует следующую строку как параметр для поиска сообщений «hxxp://finance.groups.yahoo.com/group/I62TUUWM/». Нами была обнаружена следующая группа, соответствующая этому параметру.
Описание группы зашифровано с применением алгоритма RSA и приватным 1024-битным ключом, который находится в файле конфигурации бота. После расшифровки получаем:
В нашем случае основной C&C сервер из файла конфигурации уже не был активен, поэтому бот пытался использовать другой канал получения C&C с применением Yahoo Groups. После успешного взаимодействия с дополнительным сервером, бот получил следующую команду для загрузки дополнительных модулей.
С использованием этих инструкций на зараженную систему осуществляется загрузка двух дополнительных модулей:
- cr.mod (Win32/Agent.UZD) – SOCKS5 прокси клиент
- loader29.mod (Win32/TrojanDownloader.Zurgop.AZ) — Smoke bot downloader.
Механизмы самозащиты руткита
При заражении системы Аватар модифицирует один из системных драйверов, установленных в системе, а также размещает свои модули и полезную нагрузку в скрытом хранилище в конце диска. Таким образом для противодействия обнаружению он защищает определенную область жесткого диска от чтения/записи с применением перехватов на уровне драйвера минипорта диска. Разумеется такой подход не является новым и уже использовался такими сложными угрозами как TDL3/4, Olmasco и другими. Тем не менее детали реализации такого подхода в Аватаре заслуживают их публикации.
Руткит пытается маскировать свои перехваты, чтобы не привлекать к себе внимание и выглядеть как стандартный драйвер ОС. В частности, он дублирует образ загруженного драйвера минипорта в адресном пространстве режима ядра и модифицирует его таким образом, чтобы иметь возможность перехватить запросы чтения/записи к диску. Следующий скриншот показывает какие модификации производятся в системе после заражения руткитом.
Другими словами, вредоносный код выполняет загрузку образа драйвера и использует одну из его секций для внедрения своего кода. Аватар осуществляет поиск секции INIT с установленным атрибутом секции IMAGE_SCN_MEM_DISCARDABLE. Это означает, что содержимое данной секции может быть выгружено из памяти после того как драйвер был проинициализирован. Таким образом Аватар использует премущество такого подхода при размещении собственного кода в этой секции (вспомогательный драйвер был загружен руткитом с диска). Руткит переименовывает найденную секцию в NONPAGED и сбрасывает флаг IMAGE_SCN_MEM_DISCARDABLE из атрибутов, а затем копирует туда вредоносный код.
При копировании оригинального DRIVER_OBJECT, который используется минипортом, руткит модифицирует следующие поля:
- DriverInit – точка входа в образ драйвера
- DriverStart – адрес загрузки образа
- MajorFunctions – массив указателей на обработчики IRP-команд, включая IRP_MJ_INTERNAL_CONTROL
- DriverUnload – функция, вызываемая при выгрузке драйвера
- DriverExtension->AddDevice – функция для драйверов PnP-устройств.
После выполнения вышеописанных модификаций, т.е. дублирование оригинального драйвера в памяти и его модификации, добавление нового DRIVER_OBJECT руткит может контролировать все операции чтения/записи, адресуемые диску. Это, в свою очередь, позволяет защищать область жесткого диска, в которой хранятся файлы руткита.
Если попробовать прочитать с диска образ модифицированного руткитом драйвера, для его сравнения с тем, какой был загружен в память, руткит перехватит такую операцию и возвратит оригинальный драйвер. Таким образом маловероятно, что разница между файлом, считанным с диска, и располагающимся в памяти будет замечена. Тем не менее, цифровая подпись модифицированного драйвера больше не является действительной.
HiddenFsReader
Инструмент криминалистической экспертизы HiddenFsReader был обновлен для работы со скрытой файловой системой руткита Аватар. Ниже представлен дамп ФС этого руткита.
Следует отметить, что HiddenFsReader способен извлечь нужные файлы только когда сам руткит активен в системе. Подобное ограничение является следствием того, что для расшифровки скрытой ФС необходимо извлечь 10 байт ключа шифрования из тела драйвера руткита, которые являются уникальными для каждого случая заражения. После того как система вылечена представляется невозможным восстановить файлы из скрытого раздела. Названия файлов в скрытом разделе генерируются произвольно вредоносным кодом для конкретного случая заражения.
Win32/Rootkit.Avatar представляет из себя интересный пример вредоносного ПО, в котором используется несколько методов для обхода инструментов криминалистической экспертизы, что осложняет его анализ на скомпрометированных компьютерах.
Автор: esetnod32