В апреле 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. Без сомнения, это сделано с целью «приблизить» вредоносную библиотеку к оригинальной версии.
Что интересно: число экспортов во вредоносном образце намного меньше, а большинство из них — это вызовы ExitProcess.
Ниже показан пример вызова вредоносной функции из созданной библиотеки, после чего управление передается вредоносному коду. Заметим, что чаще всего в качестве имени вредоносных функций выбирались те, которые используются при обычной загрузке приложений.
В ходе анализа экземпляров ВПО мы обнаружили различные версии дропперов, содержащие один и тот же набор функций.
Что интересно: основное различие — имя директории, в которой будут созданы файлы, содержащиеся в дроппере. Однако во всех изученных нами случаях использовались директории, находящиеся в C:\ProgramData\.
Давайте детальнее рассмотрим версию дроппера, загружающую все файлы с контрольного сервера. Итак, на первом этапе также проверяется наличие рабочей директории, после чего происходит соединение с контрольным сервером и загрузка с него необходимых данных.
Коммуникация с сервером ничем не шифруется, также не шифруется и адрес контрольного сервера внутри ВПО. Загруженные файлы записываются в созданной рабочей директории.
Ниже показаны участки кода, отвечающие за загрузку всех файлов с сервера (последний рассмотренный случай), а далее — код загрузки основной библиотеки (первый случай).
Исследование открытых директорий контрольных серверов позволило нам обнаружить библиотеки в незашифрованном виде.
Что интересно: в ряде случаев, в частности при атаках на Монголию, дроппер был подписан валидной цифровой подписью. Скорее всего, она была украдена.
Что скрывается во вредоносной библиотеке
Исполнение начинается с получения списка запущенных процессов, что, однако, ни на что не влияет и нигде не используется. Далее библиотека проверяет наличие файла C:\\ProgramData\\Apacha\\ssvagent.dll — это загруженная с сервера зашифрованная основная нагрузка. Если этого файла нет, то расшифровывается адрес контрольного сервера, с которого будет произведено скачивание.
По факту, это 5-байтный XOR со встроенным внутрь библиотеки ключом. Внутри бинарного файла ключ хранится в виде xmmword константой 9000000090000000900000009h (пятый байт добавляется по прямому адресу в память самой вредоносной программой), на самом деле шифрование производится с байтом 0x9. После расшифрования адреса C2 происходит соединение с контрольным сервером и загрузка с него зашифрованной полезной нагрузки. Затем полученные данные сохраняются в файле C:\\ProgramData\\Apacha\\ssvagent.dll, и легитимное приложение 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-группировок, техниках и инструментах хакеров и расследованных инцидентах вы найдете в блоге на сайте компании.
Авторы: