Новый дроппер группы APT31: исследуем зловреды, которые мы обнаружили в атаках на Монголию, Россию и США +2

Информационная безопасность, Криптография, Блог компании Positive Technologies, Реверс-инжиниринг, Исследования и прогнозы в IT, Антивирусная защита, IT-компании

Рекомендация: подборка платных и бесплатных курсов системных администраторов - https://katalog-kursov.ru/

В апреле 2021 года в ходе регулярного мониторинга угроз ИБ специалисты нашего PT Expert Security Center обнаружили в Монголии атаки с использованием неизвестного ранее вредоносного ПО. В дальнейшем аналогичные атаки были выявлены в России, США, Канаде и Республике Беларусь. Некоторые из файлов, которые мы обнаружили во время исследования, имели достаточно интересные названия. Например, «хавсралт.scr» (монг. вложение) и «Информация_Рб_июнь_2021_года_2021062826109.exe». Как позже показало исследование, они содержали троян удаленного доступа (RAT).

По нашим данным, за первые семь месяцев 2021 года в мире было проведено в общей сложности около десятка атак с использованием найденных образцов вредоносов. Детальный анализ вредоносного ПО, многочисленные пересечения по функционалу, применяемым техникам и механизмам позволили нам связать обнаруженный зловред с активностью группы APT31 (она же Zirconium и Judgment Panda). Чем известна преступная группа, кого атаковала ранее и какие у нее ключевые интересы, можно узнать по ссылке. Примечательно, что за пять лет существования группировки под ее удар Россия попала впервые. Ниже разберем созданное APT-группой ВПО, включая новый дроппер, уловки его разработчиков, а еще расскажем, по каким критериям проводили атрибуцию атак.

Полную версию нашего исследования читайте здесь.

Разбираем дроппер от А до Я

Основная задача дроппера, внешний вид основной функции которого представлен ниже, — создание на зараженном компьютере двух файлов: вредоносной библиотеки и уязвимого для DLL Sideloading приложения. Оба файла создаются всегда по одному пути: C:\ProgramData\Apacha. Если этой директории нет, она создается и процесс перезапускается.

Общий вид основной функции дроппера
Общий вид основной функции дроппера

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

Что интересно: в качестве имени вредоносной библиотеки во всех случаях было выбрано MSVCR100.dll. Библиотека с идентичным именем входит в состав Visual C++ для Microsoft Visual Studio и есть почти на всех компьютерах, однако в легитимном случае она находится в папке System32. Кроме того, размер вредоносной библиотеки намного меньше легитимной.

Параметры легитимной MSVCR100.dll
Параметры легитимной MSVCR100.dll

Стоит также отметить хитрость разработчиков вредоносного ПО: в качестве экспортов в библиотеке содержатся имена, которые можно найти в легитимной MSVCR100.dll. Без сомнения, это сделано с целью «приблизить» вредоносную библиотеку к оригинальной версии.

Часть экспортов вредоносной MSVCR100.dll
Часть экспортов вредоносной MSVCR100.dll

Что интересно: число экспортов во вредоносном образце намного меньше, а большинство из них — это вызовы ExitProcess.

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

Вызов вредоносной функции внутри легитимного приложения
Вызов вредоносной функции внутри легитимного приложения

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

Что интересно: основное различие — имя директории, в которой будут созданы файлы, содержащиеся в дроппере. Однако во всех изученных нами случаях использовались директории, находящиеся в C:\ProgramData\.

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

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

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

Создание файлов в рабочей директории
Создание файлов в рабочей директории

Ниже показаны участки кода, отвечающие за загрузку всех файлов с сервера (последний рассмотренный случай), а далее — код загрузки основной библиотеки (первый случай).

Загрузка файлов с С2
Загрузка файлов с С2
Загрузка вредоносной библиотеки с С2
Загрузка вредоносной библиотеки с С2

Исследование открытых директорий контрольных серверов позволило нам обнаружить библиотеки в незашифрованном виде.

Зашифрованная и незашифрованная библиотеки на сервере
Зашифрованная и незашифрованная библиотеки на сервере

Что интересно: в ряде случаев, в частности при атаках на Монголию, дроппер был подписан валидной цифровой подписью. Скорее всего, она была украдена. 

Валидная цифровая подпись дроппера
Валидная цифровая подпись дроппера

Что скрывается во вредоносной библиотеке

Исполнение начинается с получения списка запущенных процессов, что, однако, ни на что не влияет и нигде не используется. Далее библиотека проверяет наличие файла C:\\ProgramData\\Apacha\\ssvagent.dll — это загруженная с сервера зашифрованная основная нагрузка. Если этого файла нет, то расшифровывается адрес контрольного сервера, с которого будет произведено скачивание.

По факту, это 5-байтный XOR со встроенным внутрь библиотеки ключом. Внутри бинарного файла ключ хранится в виде xmmword константой 9000000090000000900000009h (пятый байт добавляется по прямому адресу в память самой вредоносной программой), на самом деле шифрование производится с байтом 0x9. После расшифрования адреса C2 происходит соединение с контрольным сервером и загрузка с него зашифрованной полезной нагрузки. Затем полученные данные сохраняются в файле C:\\ProgramData\\Apacha\\ssvagent.dll, и легитимное приложение ssvagent.exe перезапускается. Основная часть описанных функций представлена ниже.

Расшифрование адреса C2, загрузка и запуск нового экземпляра ssvagent.exe
Расшифрование адреса C2, загрузка и запуск нового экземпляра ssvagent.exe

Далее библиотека записывает легитимный ssvagent.exe в автозагрузку через реестр, как показано ниже.

Персистентность через ветку реестра
Персистентность через ветку реестра

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

Далее расшифрованные данные размещаются в памяти приложения, и на них передается управление.

Докапываемся до самой сути: полезная нагрузка

 Основная библиотека начинает свое исполнение с создания пакета, который будет отправлен на сервер. Формально пакет создается из трех частей:

1.     основной заголовок,

2.     хеш,

3.     зашифрованные данные.

Для формирования хеша, которого предваряет основной заголовок, вредоносное ПО получает MAC-адрес и имя ПК (результат исполнения GetComputerNameExW). Данные значения конкатенируются, не используя при этом никакие разделители, после чего от полученного значения берется MD5-хеш, который потом конвертируется в строку.

Пример формирования хеша
Пример формирования хеша

Далее формируется третья часть пакета.

Пример сформированного пакета
Пример сформированного пакета

Поля заголовка, начиная с decrStr_1 и по decrStr_4, не генерируются вредоносной программой и не собираются на зараженном компьютере. Все значения находятся внутри вредоносной программы в зашифрованном виде.

Ниже представлен формат полного сформированного пакета, где зеленым отмечен основной заголовок, красным — хеш, желтым — зашифрованные данные.

Зашифрованный пакет со всеми заголовками
Зашифрованный пакет со всеми заголовками
Расшифрование данных с определенной позиции внутри бинарного файла
Расшифрование данных с определенной позиции внутри бинарного файла

Сформированный пакет шифруется RC-4 с ключом 0x16CCA81F, который вшит в зашифрованные данные, и отправляется на сервер, после чего ожидает команд от сервера.

Команды, выполняемые вредоносным ПО:

0x3 — получить информацию о подключенных дисках;

0x4 — выполнить поиск файла;

0x5 — создать процесс, коммуникация через пайп;

0xA — создать процесс через ShellExecute;

0xC — создать новый поток с загрузкой файла с сервера;

0x6, 0x7, 0x8, 0x9 (идентичны) — выполнить поиск файла или выполнить нужную операцию через SHFileOperationW (копирование файла, перемещение файла, переименование файла, удаление файла);

0xB — создать директорию;

0xD — создать новый поток с отправкой файла на сервер;

0x11— выполнить самоудаление.

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

Также весьма любопытен код обработки последней команды: при помощи bat-файла удаляются все созданные файлы и ключи реестра.

Код удаления всех компонентов
Код удаления всех компонентов

Более подробное описание полезной нагрузки есть в полном отчете .

А-Атрибуция

В ходе расследования мы нашли отчет компании Secureworks, в котором описан троян DropboxAES RAT группы APT31. Анализ обнаруженных экземпляров ВПО позволяет утверждать, что за изученной нами атакой тоже стоит эта группировка: были найдены многочисленные пересечения по набору функций, используемым техникам и механизмам — начиная с внедрения вредоносного кода (вплоть до имен используемых библиотек) и заканчивая используемыми внутри программного кода логическими блоками и структурами.

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

Главное отличие данной версии вредоносного ПО от рассмотренного Secureworks заключается в коммуникации основной нагрузки с управляющим сервером. В изучаемых образцах ВПО в качестве контрольного сервера не использовался Dropbox.

Особенности сетевой инфраструктуры

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

Выявленные серверы
Выявленные серверы

В одном из последних образцов вредоносного ПО был выявлен интересный домен inst.rsnet-devel[.]com, имитирующий домен федеральных органов государственной власти и органов государственной власти субъектов РФ для сегмента сети Интернет, что может говорить об атаке на правительственные организации в России.

А что дальше?

За год у APT31 появились новые версии зловредов, которые злоумышленники сегодня активно используют. Инфраструктура группы тоже разрастается. Это, как и факт того, что раньше группировка Россию не атаковала, указывает на расширение географии интересов злоумышленников на страны, где их растущая активность может быть обнаружена — в частности на Россию. Команда PT Expert Security Center продолжает отслеживать активность группы APT31 в России и других странах. Мы полагаем, что в ближайшее время будет выявлено применение этой группой в атаках (в том числе на Россию) и другого инструментария, который можно будет идентифицировать по кодовому соответствию либо сетевой инфраструктуре.

Ознакомиться с полной версией нашего исследования, а также получить индикаторы компрометации можно по ссылке. Еще больше отчетов PT ESC об актуальных киберугрозах, новых образцах ВПО, активности APT-группировок, техниках и инструментах хакеров и расследованных инцидентах вы найдете в блоге на сайте компании. 


Авторы:

  • Даниил Колосков, старший специалист отдела исследования угроз ИБ PT ESC

  • Денис Кувшинов, руководитель отдела исследования угроз ИБ PT ESC




К сожалению, не доступен сервер mySQL