Описание вредоносного ПО

ValleyRAT маскируется под рекламное ПО

Как правило, злоумышленники пытаются выдать вредоносное ПО за полезные приложения или же за нежелательные программы, которые пользователи ищут и скачивают добровольно, например читы или активаторы пиратского ПО. Нередко атакующие используют рекламные и партнерские сети для доставки своих разработок на устройства жертв. В этой статье мы разберем не совсем стандартный случай: известный бэкдор распространялся под видом рекламного ПО. Мы предполагаем, что злоумышленники выбрали такой метод распространения, поскольку рекламное приложение было подписано разработчиком. Кроме того, пользователи могут самостоятельно добавлять такие программы в исключения, чтобы воспользоваться их полезной функциональностью.

Некоторое время назад к нам обратился клиент с просьбой проанализировать и добавить в базу детектируемых объектов файл с MD5-хэшем c24e99f9437feacaa63766a3cde3fe3d. Изначально мы определили его как рекламное ПО, однако поверхностный анализ выявил подозрительную сетевую активность образца, и мы решили изучить его глубже. Оказалось, что рекламой дело не ограничивается. Более того, рекламная функциональность в образце нерабочая, зато он запускает цепочку заражения, которая доставляет в систему бэкдор ValleyRAT.

Вредоносный инсталлятор

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

Имя установщика Что делает
FS_SETUP_DD_173.exe Устанавливает DingTalk (цифровая платформа для командной работы)
FS_SETUP_GG_173.exe Устанавливает Google Chrome
FS_SETUP_HY_173.exe Открывает сайт hxxps://meeting[.]tencent[.]com/download/

Вероятнее всего, эти действия направлены на то, чтобы отвлечь внимание пользователя от вредоносной функциональности образца. Вне зависимости от имени файла инсталлятор устанавливает в систему модифицированное китайское программное обеспечение для управления обоями рабочего стола под названием QN Wallpaper (hxxps://qnwallpaper[.]keansoft[.]cn/) и добавляет в автозагрузку в реестре.

В оригинальной версии QN Wallpaper — действительно рекламное ПО, которое при установке доставляет на устройство партнерские приложения, а затем показывает пользователю рекламные баннеры. Однако в данном случае злоумышленники используют его для реализации техники DLL sideloading. Эта техника позволяет выполнить вредоносный код от имени подписанного процесса с помощью вредоносной DLL-библиотеки.

Модули QN Wallpaper вместе с вредоносными компонентами распаковываются по пути C:\Program Files\QNWallpaper\5.4.0.1662\<случайная последовательность букв и цифр>. В директории сохраняются следующие файлы:

Имя файла MD5 Назначение
1.zip 7ad1e3ef4e6d9d636c9e7e967733850e Архив с рекламным ПО: файлами QnWallpeper.exe, QnwPlayer.exe и модулями, необходимыми для их работы
7z.dll 96b4c1d0683dce22bd3223e1e40689c1 Библиотека архиватора 7z
7z.exe 9b86d3ab6cef15c633933fbbeab39c0a Архиватор
chrome_elf.dll edfdc30cbd85879776b8f735ea7de1f1 Библиотека для запуска приложений на базе фреймворка Electron
libcef.dll 07ddbbe2c71c45577a7a4fbcdba0df91 Вредоносная библиотека
PeLoader 48826d5ca845979d2e6ebd66dc1aae90 Файл с зашифрованным бэкдором
QnWallpaper.exe 6c158c0f8e029342192d4f0d72e102b7 Рекламный модуль
QnwPlayer.exe 9a71d6a41cd258b9e89cdc5fc224de73 Рекламный модуль
<случайная последовательность букв и цифр>Nedca.exe c24e99f9437feacaa63766a3cde3fe3d Копия вредоносного инсталлятора

После распаковки инсталлятор отключает Windows Defender, используя ключ реестра DisableAntiSpyware, и запускает программу QnWallpaper.exe.

Отключение Windows Defender

Отключение Windows Defender

DLL sideloading в libcef.dll

QnWallpaper.exe имеет зависимости от libcef.dll, поэтому эта библиотека будет загружена при старте процесса. Также QnWallpaper.exe запускает QnwPlayer.exe, который также вызывает libcef.dll.

QnWallpaper и QnwPlayer не будут корректно работать, потому что экспортируемые из библиотеки libcef.dll функции уходят в бесконечный сон, но, на случай если сон вдруг прекратится, злоумышленники реализовали функцию, которая загрузит в память все необходимые функции из оригинальной библиотеки, если сможет найти ее в системе.

Пример экспортируемой функции

Пример экспортируемой функции

Загрузка функций из оригинальной libcef.dll

Загрузка функций из оригинальной libcef.dll

Вредоносная функциональность libcef.dll запускается при вызове DllMain, которая вызывается при загрузке библиотеки. Тем не менее, помимо оригинальных экспортов, в библиотеке присутствует функция с именем RunDLL, которая также инициирует выполнение вредоносного кода. Эту функцию QnWallpaper не вызывает. Мы подозреваем, что злоумышленники планировали вызывать ее вручную с помощью rundll32 либо использовали для этого другой исполняемый файл, которого не было в загружаемом образцом пакете.

Функция RunDLL

Функция RunDLL

Начало работы вредоносного кода

При загрузке библиотеки выполняется код, который обеспечивает автозагрузку QnWallpaper.exe путем добавления ассоциации расширения и создания файла с соответствующим расширением в C:\Documents and Settings\<username>\Start Menu\Programs\Startup\.

После этого выполняется набор функций-оберток, основная задача которых — вызывать следующую функцию. В конце концов управление попадает в функцию, содержащую непосредственно вредоносный код. Для удобства переименуем ее в mw_entry.

Внутри mw_entry зловред проверяет два интересующих его момента:

  • состоит ли пользователь в группе администраторов;
  • внутри какого процесса работает DLL.
Проверка наличия прав администратора

Проверка наличия прав администратора

В случае если пользователь не состоит в группе администраторов, то программа попытается получить права администратора при помощи утилиты runas.

Перезапуск процесса с целью получить права администратора

Перезапуск процесса с целью получить права администратора

После получения прав администратора вредоносный код определяет, внутри какого процесса загружена DLL. В зависимости от этого будет выбрана полезная нагрузка:

  • Если библиотека работает в процессе QnWallpaper.exe, то нагрузка загружается из файла PeLoader.

    Зашифрованная полезная нагрузка

    Зашифрованная полезная нагрузка

  • Если библиотека работает в процессе QnwPlayer.exe, то нагрузка загружается из ресурсов libcef.dll.

    Получение полезной нагрузки из ресурса

    Получение полезной нагрузки из ресурса

Обе полезные нагрузки зашифрованы при помощи алгоритма AES и представляют собой DLL-библиотеку, в которой и содержится бэкдор ValleyRAT. Они различаются только конфигурацией, а именно — адресами C2-серверов. После расшифровки libcef.dll проверяет магические сигнатуры в заголовках полученного PE-файла, чтобы убедиться, что образец правильный. Если проверка не пройдена, библиотека высвобождает ресурсы и более ничего не делает.

Проверка заголовков полученного после расшифровки PE-файла

Проверка заголовков полученного после расшифровки PE-файла

Если заголовки верные, libcef.dll загружает полезную нагрузку в пространство процесса и передает управление бэкдору путем вызова DllMain.

Вызов DllMain

Вызов DllMain

ValleyRAT

ValleyRAT начинает свою работу с парсинга конфигурации, которая представляет собой данные вида «ключ:значение», объединенные в одну строку. Чтобы обфусцировать конфигурацию, злоумышленники записали эту строку задом наперед.

Обфусцированная конфигурация

Обфусцированная конфигурация

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

Парсинг конфигурации

Парсинг конфигурации

Ниже приведем некоторые поля конфигурации:

Ключ Описание
p? IP-адрес C2-сервера
o? Порт C2-сервера
t? Протокол (1 — TCP, 0 — UDP)
dd Продолжительность сна перед выполнением основного кода
cl Продолжительность сна при получении соответствующей команды с сервера
bz Дата создания конфигурации
bh Является ли текущий процесс критическим (то есть приводит ли его завершение к синему экрану смерти). Возможные значения: 1 — процесс критический, 0 — нет
ll Проверка наличия запущенных средств защиты/анализа трафика/процессов (1 — проверять, 0 — не проверять)
sh Внедрение в svchost кода, который будет перезапускать вредоносный процесс (1 — внедрять, 0 — не внедрять)

Бэкдор использует несколько техник для защиты своего процесса. Некоторые из них задаются в конфигурации, другие применяются всегда.

  • Инъекция кода в svchost для перезапуска процесса — настраиваемая опция. Бэкдор выделяет память внутри процесса svchost, внедряет в нее код и устанавливает на странице памяти с внедренными данными права PAGE_NOACCESS. Затем он создает приостановленный поток, ждет 60 секунд, разрешает чтение, запись и выполнение на странице памяти с внедренными данными и возобновляет поток.
    Инъекция кода в svchost

    Инъекция кода в svchost

    Функция, внедренная в процесс, выполняет единственную задачу: перезапускать бэкдор, если его выполнение по той или иной причине прервется.

    Внедряемая функция

    Внедряемая функция

  • Присвоение своему процессу статуса критического (его завершение вызовет синий экран смерти) — настраиваемая опция.

    Определение своего процесса как критического

    Определение своего процесса как критического

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

    Перезапуск при возникновении исключений

    Перезапуск при возникновении исключений

Бэкдор обладает функциональностью троянца-шпиона. Во время работы он отслеживает нажатия клавиш и окно, находящееся в фокусе. Для этого используются функции из библиотеки DirectInput8. Также бэкдор перехватывает содержимое буфера обмена. Все данные сохраняются в файл на диске.

Перехват данных из буфера обмена

Перехват данных из буфера обмена

Если ключ ll в конфигурации имеет значение 1, ValleyRAT периодически проверяет наличие активных окон приложений, с помощью которых можно анализировать процессы или трафик. Перечисление окон происходит при помощи функции EnumWindows со следующей функцией обратного вызова:

Проверки имени окна

Проверки имени окна

После всех проверок бэкдор собирает данные о системе:

  • имя хоста;
  • IP-адреса хоста;
  • время бездействия пользователя;
  • подробная информация о версии Windows (ProductName, EditionId, DisplayVersion);
  • количество ядер процессора;
  • количество свободного места;
  • графический адаптер;
  • окно в фокусе и его заголовок;
  • битность системы;
  • информация о языковых настройках;
  • путь до системной директории.

Бэкдор может выполнять по команде базовые для такого класса вредоносных программ функции:

  • перезагрузка компьютера;
  • выключение компьютера;
  • создание скриншота;
  • очистка логов;
  • обновление своих C2-адресов;
  • загрузка дополнительных модулей;
  • отправка лога кейлоггера вместе с содержимым буфера обмена.
Фрагмент обработчика команд

Фрагмент обработчика команд

Остановимся подробнее на загрузке дополнительных модулей. Получив от оператора соответствующую команду со ссылкой, бэкдор скачивает файл по ссылке и выполняет его. Скачивание может происходить как с C2, так и со стороннего ресурса.

Функция DownloadPeFile отвечает за скачивание PE-файла

Функция DownloadPeFile отвечает за скачивание PE-файла

Функция DownloadAndExecute вызывает DownloadPeFile, а затем запускает скачанный модуль

Функция DownloadAndExecute вызывает DownloadPeFile, а затем запускает скачанный модуль

Дополнительные модули могут быть в виде специально созданных динамических библиотек либо в виде шеллкода. Если полезная нагрузка — шеллкод, то бэкдор для запуска модуля будет использовать технику Process Hollowing, а целевым процессом станет svchost.

Реализация техники Process Hollowing

Реализация техники Process Hollowing

Если модуль является динамической библиотекой, то бэкдор загрузит PE-файл в свой процесс, вызовет DllMain и будет искать функцию Main среди экспортируемых функций. После вызова функции Main библиотека будет выгружена из памяти.

Вызов DllMain после загрузки PE-файла бэкдором

Вызов DllMain после загрузки PE-файла бэкдором

Цели и атрибуция

За 2026 год мы обнаружили бэкдор ValleyRAT, а также связанные с ним вредоносные программы более 100 тысяч раз, у более чем 1500 уникальных пользователей, преимущественно из Китая и Индии.

Такая география атак, а также тот факт, что в них применяется бэкдор ValleyRAT, может указывать на то, что за кампанией стоит группа Silver Fox — известный оператор этого семейства вредоносного ПО.

Заключение

Этот кейс — яркий пример того, что рекламные приложения и партнерские сети могут оказаться куда опаснее, чем кажется. ValleyRAT — сложный бэкдор, способный собирать чувствительные данные, такие как нажатия клавиш и содержимое буфера обмена, делать скриншоты и доставлять на устройство дополнительные вредоносные модули. Злоумышленники воспользовались известным рекламным приложением, чтобы выполнить бэкдор от имени подписанного процесса, усложняя таким образом обнаружение атаки.

Группа Silver Fox атакует организации в разных странах как с целью кибершпионажа, так и с целью обогащения. Чтобы оставаться в безопасности, следует поддерживать осведомленность сотрудников о кибербезопасности на актуальном уровне, а также регламентировать использование стороннего ПО на рабочих устройствах.

Частным пользователям мы рекомендуем не устанавливать на устройства программы с сомнительной репутацией и тем более не добавлять их в исключения защитных решений.

IoC

MD5

07ddbbe2c71c45577a7a4fbcdba0df91
c24e99f9437feacaa63766a3cde3fe3d
8a626d844943da3456b044f38deae3a2

Network

103.45.66.18:441
103.45.66.18:442
103.45.66.18:443
192.253.225.173:6666
192.253.225.173:8888

ValleyRAT маскируется под рекламное ПО

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Отчеты

Благотворительность как приманка: Armored Likho расширяет арсенал инструментов для кибершпионажа

Эксперты «Лаборатории Касперского» разбирают новую кампанию Armored Likho, маскирующуюся под благотворительность и доставляющую новый Still Toolkit, нацеленный на кражу данных из Telegram и прослушку.

ToddyCat — ваш скрытый почтовый ассистент. Часть 2

Разбираем Umbrij — новый инструмент APT-группы ToddyCat для компрометации корпоративной переписки в сервисе Gmail. Целью атак стал токен авторизации OAuth, при помощи которого злоумышленники получали доступ к сервисам Google.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике