Positive Technologies
PT Expert Security Center

Новый дроппер группы APT31. Пункты назначения: Монголия, Россия, США и не только

Новый дроппер группы APT31. Пункты назначения: Монголия, Россия, США и не только

Введение

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

Данная группировка, также известная как Judgment Panda (CrowdStrike) и Zirconium (Microsoft), активна по крайней мере с 2016 года. Предположительно, имеет китайское происхождение и предоставляет данные китайскому правительству и государственным предприятиям для достижения политических, экономических и военных преимуществ. Ключевой интерес — кибершпионаж. Среди целей злоумышленников — правительственный сектор, аэрокосмические и оборонные предприятия, а также международные финансовые компании и сектор высоких технологий. Жертвами группировки в разные годы становились правительство Финляндии, а также, предположительно, правительства Норвегии и Германии. Кроме того, группа атаковала организации и лица, близкие к кандидатам в президенты США во время предвыборной кампании 2020-го. Недавние атаки на компании во Франции, связанные со взломом домашних и офисных маршрутизаторов, также связывают с активностью этой группировки. В этой статье мы изучим созданное группировкой ВПО, подробнее остановимся на обнаруженных видах дропперов и уловках, используемых его разработчиками, а также приведем критерии, на основании которых проведена атрибуция атак.

Анализ вредоносного содержимого

Дроппер

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

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

На втором этапе запущенное дроппером приложение подгружает вредоносную библиотеку и вызывает одну из ее функций. Примечательно, что в качестве имени вредоносной библиотеки во всех случаях было выбрано MSVCR100.dll. Библиотека с идентичным именем входит в состав Visual C++ для Microsoft Visual Studio и есть почти на всех ПК, однако в легитимном случае она находится в папке System32 (рис. 2). Кроме того, размер вредоносной библиотеки намного меньше легитимной.

Параметры легитимной MSVCR100.dll
Рисунок 2. Параметры легитимной MSVCR100.dll

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

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

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

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

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

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

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

Проверка наличия директории
Рисунок 5. Проверка наличия директории

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

Создание файлов в рабочей директории
Рисунок 6. Создание файлов в рабочей директории

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

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

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

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

Также стоит отметить, что в ряде случаев, в частности при атаках на Монголию, дроппер был подписан валидной цифровой подписью (рис. 10). По мнению экспертов PT ESC, данная подпись, скорее всего, была украдена.

Валидная цифровая подпись дроппера
Рисунок 10. Валидная цифровая подпись дроппера

Вредоносная библиотека

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

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

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

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

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

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

После этого загруженный с сервера файл расшифровывается операцией XOR с 5-байтным ключом. (Алгоритм и ключ, показанные на рис. 10, отличаются от используемых при расшифровании адреса контрольного сервера.) Ключ, так же как и в случае с расшифрованием адреса контрольного сервера, хранится в виде xmmword и представляет собой константу 1100000033000000060000000Eh. Пятый байт во всех случаях идентичен — его значение 0x12.

Код расшифрования основной библиотеки
Рисунок 13. Код расшифрования основной библиотеки

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

Полезная нагрузка

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

  1. основной заголовок,
  2. хеш,
  3. зашифрованные данные.

Основной заголовок представляет собой следующую структуру:

    
typedef struct _MAIN_HEADER { DWORD sizeOfPacket; //без учета самого поля DWORD const_1; DWORD const_2; } MAIN_HEADER, *PMAIN_HEADER;

Значения const_1 и const_2 одинаковы и не меняются от пакета к пакету (выравненное до 4 байтов значение единицы).

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

Пример формирования хеша
Рисунок 14. Пример формирования хеша

Далее формируется третья часть пакета — описывающая его структура, представлена ниже:

    
typedef struct _FIRST_PACKET { char pcName[]; //результат GetComputerNameExW BYTE splitByte_0x09; char userName[]; // результат GetUserNameW BYTE splitByte_0x09; char hostIp[]; BYTE splitByte_0x09; char decrStr_1[2]; BYTE splitByte_0x2E; char decrStr_2[1]; BYTE splitByte_0x2E; char decrStr_3[5]; BYTE splitByte_0x2E; char decrStr_4[2]; BYTE splitByte_0x2E; char osVersion_inverted[2]; BYTE splitByte_0x09; char version[3]; BYTE splitByte_0x09; char macAddr[]; BYTE splitByte_0x09; } _FIRST_PACKET, *_FIRST_PACKET;

Каждое поле отделяется от другого значением 0x09, некоторые поля разделены значением 0x2E.

Пример сформированного пакета
Рисунок 15. Пример сформированного пакета

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

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

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

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

Рассмотрим список команд, выполняемых ВПО:

  • 0x3 — получить информацию о подключенных дисках;
  • 0x4 — выполнить поиск файла;
  • 0x5 — создать процесс, коммуникация через пайп;
  • 0xA — создать процесс через ShellExecute;
  • 0xC — создать новый поток с загрузкой файла с сервера;
  • 0x6, 0x7, 0x8, 0x9 (идентичны) — выполнить поиск файла или выполнить нужную операцию через SHFileOperationW (копирование файла, перемещение файла, переименование файла, удаление файла);
  • 0xB — создать директорию;
  • 0xD — создать новый поток с отправкой файла на сервер;
  • 0x11 — выполнить самоудаление.

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

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

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

Атрибуция

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

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

Сетевая инфраструктура

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

Выявленные серверы
Рисунок 19. Выявленные серверы

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

Авторы: Денис Кувшинов, Даниил Колосков, PT ESC

Заключение

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

IOCs

Файл MD5 SHA-1 SHA-256

Дропперы

jconsole.exe 3f5ea95a5076b473cf8218170e820784 765bd2fd32318a4cb9e4658194fe0fb5d94568e0 33f136069d7c3a030b2e0738a5ee80d442dee1a202f6937121fa4e92a775fead
- db1673a1e8316287cb940725bb6caa68 6a358afdd2c59f0bbfc7b1982ae6b0a782399923 2affdebbaa4f0cfa64e5c42e70d78665ef9ccb2c731c5fe07582ccdfdc05b0cc
- 2798b66475cf0794e9b868d656defca7 0c3e0a5553cc29049fd8c5fc3a1af3ae6c0c298e 002dc9f6823ad8d3de23bcb5e41bcefd895df573ed3d89e0821243aa9b7bb4a8
- 626270d5bf16eb2c4dda2d9f6e0c4ef9 f585917fdb89b9dc849621676376b0b1e6b348fa 2b495829b8b3319f98e22f35d7bd48c4dea1b9bafe80749d628da99fede6d694
news.exe 56450799fe4e44d7c5aff84d173760e8 10037b4533df13983a75d74dcea32dc73665700c 679955ff2a97ea11a181ae60c775eff78fadd767bc641ca0d1cff86a26df8ac8
- d919fed03ec53654be59e15525c1448f 9db9fe7b04bc5b2fc10f78da3891eb30c19a48b6 efdbb19fb65bcf5c4a8feb3eab784682d01f3e75f711674e4d469d4dfe4a21f3
хавсралт.scr d22670ab9b13de79e442100f56985032 6e7540fa001fc992d2050b97ea17686d34863740 78cc364e761701455bdc4bce100c2836566e662b87b5c28251c178eba2e9ce7e
president_email.exe 8e744f7b07484afcf87c454c6292e944 da845d8219d3315c02f84c27094965d02cdaa76c 5d0872d07c6837dbc3bfa85fd8f79da3d83d7bb7504a6de7305833090b214f2c
Информация_Рб_июнь_2021_года_2021062826109.exe 49bca397674f67e4c069068b596cab3e d13d6d683855f5a547b96b6e2365c6f49a899d62 874b946b674715c580e7b379e9597e48c85c04cca3a2790d943f56600b575d2f

Вредоносные библиотеки

MSVCR100.dll 8cefaa146178f5c3a297a7895cd3d1fc 81779c94dbe2887ff1ff0fd4c15ee0c373bd0b40 c15a475f8324fdfcd959ffc40bcbee655cbdc5ab9cbda0caf59d63700989766f
MSVCR100.dll 326024bc9222ebec281ec53ca5598cc1 5c25b93ebcedafcff0c85bcde2a0857ca72dc73e 0229404a146bb43ebc6d25d2145b493e950b2f92483be1b964f4f1c90ec6cf70
MSVCR100.dll 6f3047277719e2351ce14a54a39f7b15 7de335e005b0766268df918e7e3b64f4b3521c1e 640128a35efc0ad83fe5b1461090f1b869c7a6ed0a8a661be403359d48a78085

Сетевые индикаторы

gitcloudcache[.]com

edgecloudc[.]com

api[.]hostupoeui[.]com

api[.]flushcdn[.]com

const[.]be-government[.]com

drmtake[.]tk

inst[.]rsnet-devel[.]com

20[.]11[.]11[.]67

Сетевые сигнатуры

В результате исследования формата полного сформированного пакета экспертам Positive Technologies удалось разработать правила для детектирования данной угрозы в сетевом трафике. Скачать свободно распространяемые правила можно из нашего репозитория по адресу - https://github.com/ptresearch/AttackDetection/tree/master/APT31

MITRE

ID Name Description

Resource Development

T1587.001 Malware Группа APT31 использовала вредоносные программы для различных операций
T1587.002 Develop Capabilities: Code Signing Certificates Группа APT31 использовала валидные цифровые подписи для своих вредоносных компонентов

Initial Access

T1566 Phishing Группа APT31 использовала фишинг для рассылки своих компонентов

Execution

T1204.002 User Execution: Malicious File Группа APT31 занималась рассылкой вредоносных файлов с иконками документов Microsoft Office
T1059.003 Command and Scripting Interpreter: Windows Command Shell Группа APT31 использовала командную строку для исполнения команд
T1106 Native API Группа APT31 использовала системные API для исполнения команд

Persistence

T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder Группа APT31 использовала реестр Windows для закрепления
T1574 Hijack Execution Flow: DLL Search Order Hijacking Группа APT31 использовала для закрепления технику DLL hijacking

Defense Evasion

T1036 Masquerading Группа APT31 использовала маскировку под файлы Microsoft Office
T1140 Deobfuscate/Decode Files or Information Группа APT31 использовала загрузчики, расшифровывающие находящуюся внутри полезную нагрузку
T1027 Obfuscated Files or Information Группа APT31 использовала шифрование полезной нагрузки
T1112 Modify Registry Группа APT31 использовала реестр Windows для закрепления

Discovery

T1082 System Information Discovery Группа APT31 собирала системную информацию с зараженных компьютеров

Collection

T1005 Data from Local System Группа APT31 использовала бэкдор-функции для эксфильтрации любого файла на зараженном устройстве

Command and control

T1001 Data Obfuscation Группа APT31 использовала сокрытие данных в C&C
T1032 Standard Cryptographic Protocol Группа APT31 использовала сокрытие данных в C&C при помощи RC4
T1043 Commonly Used Port Группа APT31 использовала порты 80 и 443 для коммуникации
T1071.001 Application Layer Protocol: Web Protocols Группа APT31 использовала протоколы HTTP и HTTPS для коммуникации с серверами управления

Exfiltration

T1020 Automated Exfiltration Группа APT31 использовала автоматическую эксфильтрацию похищенных файлов
T1041 Exfiltration Over C2 Channel Группа APT31 использовала C&C-канал для эксфильтрации данных