x

SECURITY CAPSULE SIEM

Познакомьтесь с нашим решением по мониторингу событий
и выявлению инцидентов информационной безопасности

SC SIEM выигрывает там, где важна скорость, минимальные ресурсы и возможность быстро создать правила корреляции

ВЫБИРАЙТЕ СТРАТЕГИЮ БЕЗОПАСНОСТИ –

Экспертное проектирование систем информационной безопасности для устойчивости и соответствия требованиям государства

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

ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ

УПРАВЛЯЙТЕ РИСКАМИ — НЕ ЖДИТЕ АТАК

Пентест для устойчивости и соответствия требованиям

Реалистичная проверка внешнего периметра: выявляем уязвимости до злоумышленников и подтверждаем готовность вашего бизнеса к киберугрозам.

Протестировать
08.07.2024 475 14 мин.

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

В мае 2024 года мы обнаружили новую продолжительную атаку повышенной сложности (advanced persistent threat, APT), нацеленную на российские государственные организации. Мы дали ей название CloudSorcerer. Это сложное средство кибершпионажа, предназначенное для скрытого мониторинга, сбора и эксфильтрации данных через облачные службы Microsoft Graph, Yandex Cloud и Dropbox. Зловред использует их как командные серверы и взаимодействует с ними через API с помощью токенов аутентификации. Кроме того, в роли начального командного сервера CloudSorcerer выступает репозиторий GitHub.

По принципу действия CloudSorcerer напоминает APT-угрозу CloudWizard, о которой мы сообщали в 2023 году. Однако код новой вредоносной программы совершенно иной. Мы полагаем, что за CloudSorcerer стоит новая APT-группа, применившая аналогичный метод взаимодействия с публичными облачными службами.

Кратко о наших находках:

  • APT-угроза CloudSorcerer использует публичные облачные службы в качестве основных командных серверов.
  • Зловред взаимодействует с командными серверами с помощью специальных команд и декодирует их, руководствуясь заданной таблицей символов.
  • Для осуществления вредоносных операций злоумышленник также применяет интерфейсы COM-объектов Microsoft.
  • CloudSorcerer работает как отдельные модули (связи и сбора данных) в зависимости от запущенного процесса, но запускается из одного исполняемого файла.

Техническая информация

Первичный запуск

MD5f701fc79578a12513c369d4e36c57224
SHA1f1a93d185d7cd060e63d16c50e51f4921dd43723
SHA256e4b2d8890f0e7259ee29c7ac98a3e9a5ae71327aaac658f84072770cf8ef02de
Время компоновкиН/д
КомпиляторН/д
Тип файлаИсполняемый файл Windows x64
Размер файла172 КБ
Имя файлаН/д

Вредоносная программа запускается злоумышленником вручную на уже зараженном компьютере. Изначально она представляет собой один бинарный файл Portable Executable (PE), написанный на языке C. Функциональность этого файла зависит от процесса, в котором он выполняется. После запуска вредоносная программа вызывает функцию GetModuleFileNameA, чтобы определить имя процесса, в котором она запущена. Затем она сравнивает это имя с заданным набором строк: browser, mspaint.exe и msiexec.exe. В зависимости от полученного имени процесса вредоносная программа активирует различные функции.

  • Если имя процесса — mspaint.exe, то CloudSorcerer функционирует как модуль бэкдора, осуществляя сбор данных и выполняя вредоносный код.
  • Если имя процесса — msiexec.exe, то зловред инициирует свой модуль связи с командным сервером.
  • Наконец, если имя процесса содержит строку browser или не совпадает ни с одним из имен в списке, то зловред пытается внедрить шелл-код в процессы msiexec.exe, mspaint.exe или explorer.exe, прежде чем завершить исходный процесс.

Шелл-код, используемый CloudSorcerer для миграции первичного процесса, демонстрирует довольно стандартную функциональность:

  • анализ блока операционного окружения процесса (PEB), чтобы определить смещения на необходимые DLL-библиотеки ядра Windows;
  • идентификация необходимых API Windows по хешам с помощью алгоритма ROR14;
  • внедрение кода CloudSorcerer в память одного из целевых процессов и запуск этого кода в отдельном потоке.

Весь обмен данными между модулями организован через каналы Windows — механизм межпроцессного взаимодействия (IPC).

Модуль бэкдора CloudSorcerer

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

  • имя компьютера;
  • имя пользователя;
  • сведения о подверсии Windows;
  • время работы системы.

Все собранные данные сохраняются в специально созданной структуре. Когда информация собрана, данные записываются в именованный канал \\.\PIPE\[1428], подключенный к процессу модуля командного сервера. Важно отметить, что весь обмен данными организован с помощью четко определенных специализированных структур, таких как структуры команд бэкдора и сбора информации.

Далее зловред пытается считать данные из канала \\.\PIPE\[1428]. В случае успеха он парсит входящие данные, помещает их в структуру COMMAND и считывает из нее один байт, который представляет собой идентификатор COMMAND_ID.

Основные функции бэкдора

Основные функции бэкдора

В зависимости от идентификатора COMMAND_ID вредоносная программа выполняет одно из следующих действий:

  • 0x1 — сбор информации о жестких дисках в системе, включая имена, емкость и свободное пространство логических дисков;
  • 0x2 — сбор информации о файлах и папках, такой как имя, размер и тип;
  • 0x3 — выполнение команд терминала с помощью API ShellExecuteExW;
  • 0x4 — копирование, перемещение, переименование или удаление файлов;
  • 0x5 — считывание данных из любого файла;
  • 0x6 — создание и запись данных в любой файл;
  • 0x8 — получение шелл-кода из канала и внедрение его в любой процесс путем выделения памяти и создания нового потока в удаленном процессе;
  • 0x9 — получение вредоносного PE-файла и внедрение его в удаленный процесс;
  • 0x7 — выполнение дополнительных расширенных функций.

Когда зловред получает COMMAND_ID 0x7, он выполняет одну из следующих дополнительных задач.

ID командыДействиеОписание
0x2307Создать процессСоздает любой процесс с помощью COM-интерфейса.
0x2407Создать процесс от имени определенного пользователяСоздает любой процесс от имени определенного пользователя.
0x2507Создать процесс с каналомСоздает любой процесс с поддержкой межпроцессного взаимодействия для обмена данными с созданным процессом.
0x3007Очистить кэш DNSОчищает кэш DNS.
0x2207Удалить задачуУдаляет любую задачу Windows с помощью интерфейсов COM-объектов.
0x1E07Открыть службуОткрывает службу Windows и считывает ее состояние.
0x1F07Создать новую задачуСоздает новую задачу Windows и устанавливает триггер для ее выполнения, используя COM-объекты.
0x2007Получить задачиПолучает список всех задач Windows, используя интерфейс COM-объекта.
0x2107Остановить задачуОстанавливает любую задачу, используя интерфейс COM-объекта.
0x1D07Получить службыПолучает список всех служб Windows.
0x1907Удалить значение из раздела реестраУдаляет любое значение из любого раздела реестра Windows, выбранного злоумышленником.
0x1A07Создать службуСоздает новую службу Windows.
0x1B07Изменить службуВносит изменения в конфигурацию любой службы Windows.
0x1807Удалить раздел реестраУдаляет любой раздел реестра Windows.
0x1407Получить таблицу обновлений TCP/UDPПолучает информацию из таблицы обновлений Windows TCP/UDP.
0x1507Собрать процессыСобирает данные обо всех запущенных процессах.
0x1607Задать значение раздела реестраВносит изменения в любой раздел реестра Windows.
0x1707Перечислить разделы реестраПеречисляет разделы реестра Windows.
0x1307Перечислить ресурсыПеречисляет сетевые ресурсы Windows.
0x1007Задать сведения о пользователе сетиЗадает сведения об учетной записи пользователя в сети Windows с помощью NetUserSetInfo. Эта операция позволяет администраторам изменять свойства учетной записи пользователя на локальном или удаленном компьютере.
0x1107Получить участников сетиПолучает участника группы локальной сети.
0x1207Добавить участникаДобавляет пользователя в группу локальной сети.
0xE07Получить сведения о пользователе сетиСобирает информацию о пользователе сети.
0xB07Перечислить пользователей сетиПеречисляет пользователей сети.
0xC07Добавить пользователя сетиДобавляет нового пользователя сети.
0xD07Удалить пользователяУдаляет пользователя сети.
0x907Отменить подключениеОтменяет существующее сетевое подключение. Эта функция позволяет отключать сетевые ресурсы, например общие каталоги.
0x507Выполнить файловую операциюКопирует, перемещает или удаляет любой файл.
0x607Получить сведения о сетиСобирает информацию о сети и интерфейсах.
0x707Перечислить подключенияПеречисляет все сетевые подключения.
0x807Подключить сетевой ресурсПодключает удаленный сетевой диск.
0x407Считать файлСчитывает любой файл в виде текстовых строк.
0x107Перечислить RDPПеречисляет все сеансы протокола удаленного рабочего стола (RDP).
0x207Выполнить WMIВыполняет любой запрос WMI, используя интерфейсы COM-объектов.
0x307Получить файлыСоздает список файлов и папок.

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

Модуль командного сервера

При запуске модуль командного сервера создает новый канал Windows с именем \\.\PIPE\[1428]. Затем он настраивает соединение с начальным командным сервером, предоставляя необходимые аргументы последовательности функций API Windows, отвечающих за подключение к интернету:

  • InternetCrackUrlA;
  • InternetSetOptionA;
  • InternetOpenA;
  • InternetConnectA;
  • HttpOpenRequestA;
  • HttpSendRequestA.

Вредоносная программа задает тип запроса (GET), настраивает информацию о прокси, устанавливает заголовки по заданным значениям и предоставляет URL-адрес командного сервера.

Настройка подключения к интернету

Настройка подключения к интернету

Затем вредоносная программа подключается к исходному командному серверу, который представляет собой страницу GitHub с адресом https://github[.]com/alinaegorovaMygit. Зловред считывает всю веб-страницу в буфер памяти, используя вызов InternetReadFile.

Репозиторий GitHub содержит форки трех публичных проектов без каких-либо изменений или обновлений. Таким образом создается впечатление, что это легитимная и активная страница GitHub. Однако в разделе «Автор» на странице GitHub есть интересная строка:

Шестнадцатеричная строка в разделе «Автор»

Это строка в шестнадцатеричной кодировке, которая начинается и заканчивается одинаковой последовательностью байтов: CDOY. Вредоносная программа полностью загружает HTML-страницу GitHub, после чего парсит ее в поисках именно этой последовательности символов — CDOY. Найдя ее, зловред копирует все символы до второго разделителя CDOY и сохраняет их в буфере памяти. Затем он анализирует эти символы, преобразуя строковые значения в шестнадцатеричные. После этого программа декодирует строку с помощью заданной таблицы символов. Каждый байт из анализируемой строки является индексом в таблице символов и указывает на байт для подстановки. Таким образом формируется новый шестнадцатеричный массив байтов.

Алгоритм расшифровки

Алгоритм расшифровки

Таблица символов

Таблица символов

Вместо подключения к GitHub вредоносная программа CloudSorcerer также пытается получить те же данные с hxxps://my.mail[.]ru/ — российского облачного фотохостинга. Имя фотоальбома злоумышленников содержит ту же шестнадцатеричную строку.

Первый расшифрованный байт шестнадцатеричной строки — это магическое число, которое указывает вредоносной программе, какую облачную службу использовать. Например, если это байт 1, то вредоносная программа использует облако Microsoft Graph, а если 0 — Yandex Cloud. Следующие байты представляют собой строку токена авторизации, который использует облачный API для аутентификации.

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

Разные виртуальные таблицы для Яндекса и Microsoft

Разные виртуальные таблицы для Яндекса и Microsoft

Далее вредоносная программа подключается к облачному API посредством следующих операций:

  • настройка исходного подключения с помощью InternetOpenA и InternetConnectA;
  • настройка всех необходимых заголовков и токена авторизации, полученного со страницы GitHub;
  • настройка путей API в запросе;
  • отправка запроса с использованием HttpSendRequestExA и проверка ошибок в ответе;
  • считывание данных из облака с помощью InternetReadFile.

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

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

Инфраструктура

Страница GitHub

Страница на GitHub была создана 7 мая 2024 года, и в тот же день на нее были скопированы два репозитория. 13 мая 2024 года был добавлен еще один репозиторий, и больше никаких взаимодействий с GitHub не происходило. Скопированные репозитории не подвергались изменениям. Имя репозитория командного сервера Alina Egorova — распространенное русское женское имя, однако на фотографии на странице GitHub изображен мужчина, а сам снимок скопирован из публичного фотобанка.

Фотохостинг Mail.ru

Эта страница содержит ту же закодированную строку, что и страница GitHub. Информация о том, когда был создан и опубликован альбом, отсутствует. В качестве фото владельца использована та же самая фотография из фотобанка.

Облачная инфраструктура

СлужбаГлавный URL-адресИсходный путь
Yandex Cloudcloud-api.yandex.net/v1/disk/resources?path=

/v1/disk/resources/download?path=

/v1/disk/resources/upload?path=

Microsoft Graphgraph.microsoft.com/v1.0/me/drive/root:/Mg/%s/%s:/content
Dropboxcontent.dropboxapi.com/2/files/download

/2/files/upload

Атрибуция

Облачные службы применялись и ранее, и мы уже приводили подобный пример в сообщении об APT-угрозе CloudWizard (кампания в российско-украинском конфликте, связанная с Operation Groundbait и CommonMagic). Однако маловероятно, что автором CloudSorcerer является тот же злоумышленник, так как код и общая функциональность вредоносных программ различаются. Поэтому на данном этапе мы полагаем, что CloudSorcerer — это новый автор, который перенял методику взаимодействия с публичными облачными службами.

Жертвы

Государственные организации в Российской Федерации.

Выводы

Вредоносная программа CloudSorcerer — это комплексный набор инструментов, нацеленных на российские государственные организации. Применение облачных служб, таких как Microsoft Graph, Yandex Cloud и Dropbox в качестве инфраструктуры командного сервера, а также GitHub для первоначального обмена данными с командным сервером указывает на кибершпионаж с тщательно спланированным подходом. Способность вредоносной программы динамически адаптировать свое поведение в зависимости от процесса, в котором она запущена, а также использовать сложное межпроцессное взаимодействие через каналы Windows еще больше подчеркивает ее проработанность.

Несмотря на сходство с ранее зарегистрированной APT-угрозой CloudWizard, значительные различия в коде и функциональности указывают на то, что за CloudSorcerer стоит новая APT-группа. Возможно, она вдохновлялась ранее встречавшимися методами, но разработала свои собственные уникальные инструменты.

Индикаторы компрометации

Хеш-суммы файлов (вредоносные документы, троянцы, электронные письма, приманки)

F701fc79578a12513c369d4e36c57224CloudSorcerer

Домены и IP-адреса

hxxps://github[.]com/alinaegorovaMygitCloudSorcerer C2
hxxps://my.mail[.]ru/yandex.ru/alinaegorova2154/photo/1CloudSorcerer C2

Правила для YARA

rule apt_cloudsorcerer {
meta:	description = "Detects CloudSorcerer"	author = "Kaspersky"	copyright = "Kaspersky"	distribution = "DISTRIBUTION IS FORBIDDEN. DO NOT UPLOAD TO ANY MULTISCANNER OR SHARE ON ANY THREAT INTEL PLATFORM"
version = "1.0"	last_modified = "2024-06-06"	hash = "F701fc79578a12513c369d4e36c57224"
strings:	$str1 = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"	$str2 = "c:\\windows\\system32\\mspaint.exe"	$str3 = "C:\\Windows\\system32\\msiexec.exe"	$str4 = "\\\\.\\PIPE\\"
condition:	uint16(0) == 0x5A4D and	all of ($str*)
}

Сопоставление с базой знаний MITRE ATT&CK

ТактикаМетодНазвание метода
ВыполнениеT1059.009Интерпретатор команд и сценариев: облачные API
T1559Межпроцессное взаимодействие (IPC)
T1053Запланированная задача, задание
T1047Инструментарий управления Windows
ЗакреплениеT1543Создание или изменение системного процесса
T1053Запланированная задача, задание
Обход защитыT1140Деобфускация, декодирование файлов или информации
T1112Внесение изменений в реестр
ИсследованиеT1083Поиск файлов и каталогов
T1046Обнаружение сетевых служб
T1057Обнаружение процессов
T1012Поиск данных в реестре
T1082Получение информации о системе
Сбор данныхT1005Поиск данных в локальных системах
Управление и контрольT1102Веб-служба
T1568Динамическое разрешение
Эксфильтрация данныхT1567Эксфильтрация через веб-службу
T1537Передача данных в учетную запись в облаке
Новость дополняется...
Источник: https://securelist.ru/cloudsorcerer-new-apt-cloud-actor/109861/

Следите за киберугрозами вместе с экспертами CRATU!
Следите за киберугрозами вместе с экспертами CRATU!
Анализ реальных атак, техники APT-групп, новые уязвимости, практические рекомендации по детекту и доля иронии — всё, как вы любите.

CRATU — ваш инсайдерский источник по кибербезопасности. Подписывайтесь на наш Telegram-канал

Возврат к списку

КОНТРОЛИРУЙ РИСКИ:

Пентест для защиты бизнеса

Реалистичная проверка устойчивости ваших систем.

Протестировать

ПОСЛЕДНИЕ НОВОСТИ