Positive Technologies
PT Expert Security Center

APT Cloud Atlas: Unbroken Threat

APT Cloud Atlas: Unbroken Threat

Введение

Специалисты Positive Technologies(PT Expert Security Center, PT ESC) отслеживают активность группы Cloud Atlas с мая 2019 года. По имеющимся у нас данным, ее атаки нацелены на правительственный сектор следующих стран:

  • Россия;
  • Беларусь;
  • Азербайджан;
  • Турция;
  • Словения.

Цель группы — шпионаж и кража конфиденциальной информации.

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

В третьем квартале 2022 года в рамках расследования нами была выявлена фишинговая кампания, целью которой были сотрудники государственных ведомств РФ. Злоумышленники использовали целенаправленные рассылки, основанные на профессиональной сфере атакуемых, при этом мы отмечаем отсутствие какой-либо публичной информации о них.

О злоумышленниках стало известно еще в 2014 году, когда вышел отчет исследователей «Лаборатории Касперского», и с тех пор их инструмены практически не изменились (подробнее о них можно прочитать в пункте «Анализ ВПО»). Однако детального разбора и описания функционала данных инструментов до сих пор не было.

В отчете мы рассмотрим основные техники группировки Cloud Atlas, а также остановимся на инструментарии данной группы.

Анализ найденных документов

Как и в предыдущие годы, группа начинает свою атаку с рассылки фишинговых писем, используя в качестве текста-приманки актуальные геополитические проблемы, которые непосредственно связаны с атакуемой ими страной. Пример письма с вредоносным содержимым, которое рассылалось в рамках кампании в 2022 году, приведен на рисунке 1. Особое внимание стоит обратить на адрес отправителя: злоумышленники маскировались под известный в России и СНГ новостной портал Lenta.ru, однако почту с таким доменом позволяет создать Rambler (рисунок 2).

Внешний вид письма
Рисунок 1. Внешний вид письма

Окно регистрации с доменным именем @lenta.ru
Рисунок 2. Окно регистрации с доменным именем @lenta.ru

Чаще всего текст берется из СМИ или из общедоступных официальных документов. Также, к примеру, в 2019-м в атаке, нацеленной на Азербайджан, использовался текст, связанный с учениями «Нерушимое братство 2019» в Таджикистане, а в 2020-м при атаках на организации в Республике Беларусь — текст, связанный с выборами президента.

Пример документа, скачивающего вредоносный шаблон, представлен на рисунке 3 (ссылка на страницу с содержимым документа).

Внешний вид документа
Рисунок 3. Внешний вид документа

Во всех случаях вредоносным вложением служил документ (как формата .doc, так и .docx), реализующий атаку типа Template Injection. При такой атаке документ не содержит ни макросов, ни какого-либо другого вредносного кода и в большинстве отмеченных нами случаев, когда использовался формат .doc, может не детектироваться средствами статического анализа, например антивирусами (см. рисунок 4).

Незадетектированный документ со ссылкой на шаблон
Рисунок 4. Незадетектированный документ со ссылкой на шаблон

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

Пример ссылки на шаблон в документах Cloud Atlas
Рисунок 5. Пример ссылки на шаблон в документах Cloud Atlas

Шаблон уже может быть вредоносным — содержать макрос или эксплойт. Такой метод загрузки является легитимной функцией Microsoft Office, однако может использоваться и злоумышленниками. Эту же технику, к примеру, в своих атаках применяет группа Gamaredon.

В большинстве случаев успешных подключений в ответ приходил пустой документ. Однако в некоторых атаках нам удалось зафиксировать загрузку вредоносного шаблона в виде RTF-файла, содержащего эксплойт для уязвимости CVE-2017-11882.

Аналогичную цепочку доставки обнаружили исследователи из компании PaloAlto в 2018 году. При этих атаках в загружаемых RTF-шаблонах находился эксплойт для уязвимости CVE-2017-11882, а также простой powershell-бэкдор, который был назван PowerShower.

Особое внимание мы уделили документам формата .doc , использованным в рамках данной атаки: характерной особенностью всех документов с загрузкой вредоносного содержимого было наличие ссылки на вредоносное содержимое внутри потоков 1Table Stream или 0Table Stream (рисунок 9, выделено зеленым цветом).

После изучения DOC-формата и сравнения вредоносных документов с обычными мы нашли ряд закономерностей в зараженных файлах.

Во-первых, формат DOC предусматривает наличие в любом документе, наряду с потоком WordDocument Stream (который также обязательно должен присутствовать), потоков 1Table Stream или 0Table Stream (рисунок 6).

Содержимое формата DOC
Рисунок 6. Содержимое формата DOC

Во-вторых, каждый документ содержит специальную структуру FIB (File Information Block) — на рисунке 7 фрагмент выделен желтым цветом, — в которой есть параметр base.fWhichTblStm. По факту, установка данного бита в 0 или 1 определяет, какой из данных потоков в документе должен быть использован.

Фрагмент FIB в документе
Рисунок 7. Фрагмент FIB в документе

На рисунке 8 показана структура FIB, взятая из документации. Особое внимание стоит обратить на выделенную красным цветом структуру, в которой нас интересует бит G (выделен зеленым цветом) — это и есть base.fWhichTblStm.

Фрагмент структуры FIB
Рисунок 8. Фрагмент структуры FIB

Наконец, последнее, что мы выяснили: ссылки на вредоносные шаблоны располагаются всегда по примерно одним и тем же смещениям относительно hex-последовательностей внутри Table Stream (при этом сам формат потока нас интересовал куда меньше). На рисунке 9 желтым и красным цветом приведены последовательности байтов, на основании которых мы и высчитывали различные смещения до ссылки на вредоносный шаблон, что позволило нам достаточно эффективно детектировать применение данной техники в конкретной имплементации.

Вредоносная ссылка внутри Table Stream
Рисунок 9. Вредоносная ссылка внутри Table Stream

Анализ цепочек атак

В ходе нашего исследования мы выявили несколько цепочек атак (рисунок 10), которые отличались числом этапов загрузки основного функционала, а также используемыми инструментами на каждом из этапов. Тем не менее использование упомянутых цепочек для данной группы — не новинка.

Схематичное представление выявленных цепочек атак
Рисунок 10. Схематичное представление выявленных цепочек атак

Первое, что мы увидели: загрузка удаленным шаблоном rtf-документа с эксплойтом, который в свою очередь скачивает и запускает hta-файл, примерное содержимое которого приведено на рисунке 11.

одержимое hta-файла
Рисунок 11. Содержимое hta-файла

Исследование документа, а также его содержимого показало, что для запуска полезной нагрузки эксплойта используется уязвимость в Equation Editor. Непосредственно шелл-код (выделен красным на рисунке 12) располагается внутри одного из объектов документа и исполняется в контексте процесса EQNEDT32.EXE.

Внешний вид зашифрованного шелл-кода
Рисунок 12. Внешний вид зашифрованного шелл-кода

Основная нагрузка шелл-кода хранится в зашифрованном виде и расшифровывается после передачи на него управления.

На рисунке 13 представлен расшифрованный вид шелл-кода: наглядно видны первые 13 байтов, которые отвечают за расшифрование основной части шелл-кода (оператор цикла расшифровывается на первой итерации). Для расшифрования применяется xor с двухбайтовым ключом, вшитым в код.

Внешний вид расшифрованного шелл-кода
Рисунок 13. Внешний вид расшифрованного шелл-кода

Непосредственно ссылка на hta-файл (по которой будет осуществляться загрузка) хранится в теле шелл-кода (рисунок 14) и дополнительно зашифрована однобайтовым xor со значением 0x12.

Ссылка на вредоносный hta
Рисунок 14. Ссылка на вредоносный hta

Как видно из рисунка 11, hta-файл предназначен для создания на диске vbs-скриптов с нагрузкой последующих этапов, а также lnk-файла с основной нагрузкой, содержащей код загрузки бинарных модулей. Соответственно, основной задачей vbs-макросов (в нашем случае оба макроса имели идентичные имена unbroken.vbs, а второй макрос имел дополнительное расширение *.vbs (unbroken.vbs.vbs)) является деобфускация и передача управления на содержимое lnk-файла (внешний вид приведен на рисунке 15), после чего происходит запуск загрузки, скачанной кодом lnk-файла (о которой речь пойдет в пункте «Анализ ВПО»).

Внешний вид lnk-файла
Рисунок 15. Внешний вид lnk-файла

Также стоит отметить, что вредоносные документы, эксплуатирующие те же уязвимости в Equation Editor и содержащие при этом идентичные имена объектов (к примеру, "weaseoijsd", на рисунке 16 выделено красным) в rtf-документах, были проанализированы специалистами из Cisco Talos Intelligence и отнесены к группировке Bitter APT.

Имя объекта в rtf-файле
Рисунок 16. Имя объекта в rtf-файле

Вторая цепочка, которую мы видели, — загрузка через удаленные шаблоны вредоносных powershell–скриптов (рисунок 17), которые в свою очередь загружают вредоносные компоненты (в большинстве своем закодированы base64).

Скрипт, загружающий полезную нагрузку
Рисунок 17. Скрипт, загружающий полезную нагрузку

Также нам встречались случаи промежуточного dotNet-загрузчика, который скачивал с удаленного сервера полезную нагрузку и передавал на нее управление.

Данный dotNet-загрузчик декодируется из кодировки Base64 и запускается powershell-скриптом (рисунок 18).

Скрипт декодирования и запуска нужного экспорта
Рисунок 18. Скрипт декодирования и запуска нужного экспорта

Экспорт (рисунок 19), вызываемый из загрузчика, принимает все необходимые параметры для сетевой коммуникации, в том числе и ключ шифрования соединения (выделен желтым на рисунке 18).

Вызываемый из загрузчика экспорт
Рисунок 19. Вызываемый из загрузчика экспорт

При этом коммуникация шифруется простым xor с переданным ключом (рисунок 20).

Шифрование коммуникации внутри загрузчика
Рисунок 20. Шифрование коммуникации внутри загрузчика

Анализ ВПО

Начальный модуль

Основная задача начального этапа — расшифрование и передача управления на загрузчик основного функционала. Стоит отметить, что все обнаруженные нами подобные образцы имеют достаточно большой размер и при этом обфусцированы. Загрузчик, в свою очередь, хранится исключительно в памяти процесса и на диске никаким образом не присутствует. Расшифрование загрузчика производится частями, однобайтовым xor с различными ключами (рисунок 21). Также бросается в глаза, что код расшифрования «разбавлен» различными операциями — очевидно, для усложнения поиска и идентификации процедур расшифрования данных.

Пример расшифрования части загрузчика
Рисунок 21. Пример расшифрования части загрузчика

Также отмечаем, что большинство функций (а точнее, почти все из них), расшифровывающих загрузчик, содержат большое количество полиморфного кода, выполняющего различные операции с различными строками, находящимися внутри образа, стековыми строками, а также с отдельными их элементами (пример на рисунке 22). Однако никакого влияния на сами расшифрованные данные эти операции не оказывают и используются для расчета различных переменных и констант, которые влияют на параметры расшифрования (размер данных, смещения и так далее), а также для затруднения процесса анализа. Расшифрованные данные копируются в заранее выделенный участок памяти как валидный PE-образ, после чего на них передается управление.

Пример полиморфного кода
Рисунок 22. Пример полиморфного кода

Основной загрузчик

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

В самом начале загрузчик расшифровывает конфигурацию, которая находится в теле приложения. Алгоритм расшифрования (рисунок 23) — однобайтовый xor со вшитым ключом; также после расшифрования конфигурации происходит проверка ее валидности.

Отмечаем, что внешний вид конфигурации не изменился по сравнению с предыдущими исследованиями — содержит те же данные и параметры (рисунок 23).

Расшифрование конфигурации ВПО
Рисунок 23. Расшифрование конфигурации ВПО
Внешний вид конфигурации загрузчика
Рисунок 24. Внешний вид конфигурации загрузчика

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

И на данном этапе появляются первые отличия от более ранних образцов: для сокрытия нагрузки используется AES в режиме CBC, после чего данные разжимаются LZNT1 (раньше был LZMA).

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

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

    
struct first_comprChunk { DWORD signature; WORD sizeOfCurrChunk; // in fact compressed buffer size BYTE data[sizeOfCurrChunk]; //compressed data } first_comprChunk, *pfirst_comprChunk;

Соответственно, остальные чанки не имеют первого DWORD-поля и представляют собой следующую структуру:

    
struct comprChunk { WORD compressedBuffSize; BYTE data[sizeOfCurrChunk]; } comprChunk, *pcomprChunk;

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

Цикл разжатия расшифрованных данных
Рисунок 25. Цикл разжатия расшифрованных данных

На заключительном этапе загрузчика происходит загрузка разжатых данных как валидного PE-образа, а также поиск нужного экспорта по имени ординала и передача на него управления (рисунок 26).

Общий вид функционала загрузчика
Рисунок 26. Общий вид функционала загрузчика

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

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

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

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

Структура, описывающая пакет и его внешний вид, приведена ниже (рисунок 27).

    
struct Message { DWORD lenOfPacket; DWORD sizeOf_OSVERSIONINFO; BYTE data_OSVERSIONINFO[sizeOf_OSVERSIONINFO - 4]; DWORD volumeInformation; BYTE timestamp[16]; // GetLocalTime WORD GetUserDefaultLCID; WORD GetSystemDefaultLCID; DWORD len_of_1_field; DWORD len_of_2_field; DWORD len_of_3_field; DWORD len_of_4_field; char username; //1_field char PcName; //2_field char executePath; //3_field char applicationName; //4_field char argvParam; DWORD lenOf_curr currFileSystem; char currFileSystem[lenOf_curr currFileSystem]; } Message, *pMessage;
Внешний вид сформированного пакета
Рисунок 27. Внешний вид сформированного пакета

ВПО отправляет сформированный пакет на контрольный сервер, используя при этом для коммуникации COM-объект CLSID_IServerXMLHTTPRequest2 (рисунок 28).

Код инициализации объекта
Рисунок 28. Код инициализации объекта

Восстановленная таблица виртуальных методов данного объекта может быть описана следующей структурой:

    
struct IServerXmlHttpRequest2Vtbl { int QueryInterface; int AddRef; int Release; int GetTypeInfoCount; int GetTypeInfo; int GetIDsOfNames; int Invoke; int open; int setRequestHeader; int getResponseHeader; int getAllResponseHeaders; int send; int abort; int get_status; int get_statusText; int get_responseXML; int get_responseText; int get_responseBody; int get_responseStream; int get_readyState; int put_onreadystatechange; int setTimeouts; int waitForResponse; int getOption; int setOption; int setProxy; int setProxyCredentials; } IServerXmlHttpRequest2Vtbl, *pIServerXmlHttpRequest2Vtbl;

Стоит отметить, что протокол коммуникации ВПО с сервером поддерживает пять типов запросов (рисунок 29), каждый из которых используется на определенном этапе коммуникации.

Типы запросов от ВПО на сервер управления
Рисунок 29. Типы запросов от ВПО на сервер управления

К примеру, после запроса PROPFIND, который установит содержимое директории на удаленном сервере, происходит GET-запрос с целью загрузки модуля, содержащегося на контрольном сервере. Что любопытно, в случае успешной загрузки данный модуль будет удален (рисунок 30).

Фрагмент коммуникации с контрольным сервером
Рисунок 30. Фрагмент коммуникации с контрольным сервером

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

Загрузка модуля с сервера
Рисунок 31. Загрузка модуля с сервера

Для обфускации данных используются те же процедуры, что и для извлечения полезной нагрузки загрузчиком: шифрование AES-CBC и сжатие LZNT1.

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

В ходе исследования нам удалось получить образец, который ВПО загружает с контрольного сервера (примеры содержимого сервера на рисунках 32, 33).

Директории на удаленном сервере
Рисунок 32. Директории на удаленном сервере
Файл с модулем на сервере
Рисунок 33. Файл с модулем на сервере

Загруженный модуль расшифровывается и разжимается (рисунок 34), а также размещается в памяти как PE-образ идентично тому, как это делает загрузчик. Стоит также отметить, что имя ординала, по которому ищется нужный для вызова экспорт, идентично тому, которое используется для передачи управления полезной нагрузке.

Фрагмент расшифрованных и разжатых данных
Рисунок 34. Фрагмент расшифрованных и разжатых данных

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

В частности, злоумышленников интересуют файлы с расширениями *.doc, *.docx, *.xls, *.xlsx, *.pdf, *.rtf, *.contact, *.odt, *.jpg, *.jpeg. Соответственно, пути, по которым необходимо искать файлы, также присутствуют в конфигурации. Это могут быть как имена дисков, так и сетевые пути до удаленных машин.

Функционал загруженного модуля

Первое, что нас заинтересовало — функция, передающая управление коду загруженного модуля первым аргументом (рисунок 35), передает указатель на функцию коммуникации с контрольным сервером.

Фрагмент кода вызова скачанного модуля
Рисунок 35. Фрагмент кода вызова скачанного модуля

Анализ данной функции позволил установить, что и в данном случае тип коммуникации идентичен уже рассмотренному; данные передаются также вызовами функций из таблицы виртуальных методов того же COM-объекта (в данном случае в качестве метода коммуникации используется PUT).

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

Стоит отметить, что для каждого из типов подключенных к компьютеру дисков используется свой тип поиска (рисунок 36). Также есть возможность кражи файлов с удаленных серверов — в данном случае имена пользователей и пароли (хранятся в конфигурации ВПО) передаются в качестве параметров.

Различные типы поиска, реализованные в ВПО
Рисунок 36. Различные типы поиска, реализованные в ВПО

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

Функция поиска файлов в директории
Рисунок 37. Функция поиска файлов в директории

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

Все домены, которые мы обнаружили в рамках атак 2019–2021 годов, были зарегистрированы через анонимный регистратор bitdomain[.]biz. Ресурс гарантирует полную анонимность, и оплата на сервисе производится исключительно в биткойнах.

Проанализировав SOA-записи доменов, мы обнаружили, что в поле «email-адрес администратора» указаны вполне нормальные адреса электронной почты. В некоторых случаях это оказывались адреса регистранта, найденные нами в WHOIS. Поэтому в тех доменах, где WHOIS был скрыт настройками приватности, можно предположить, что email в SOA — это email регистранта.


Domain

email

mynewtemplate.com

adam_s92@protonmail.com

new-template.com

piterjesten@protonmail.com

upgrade-office.com

p.borovin@protonmail.com

upgrade-office.org

pavel.savin1992@bk.ru

msofficeupdate.org

g.j.dodson@protonmail.com

officeupgrade.org

alex.sval@tutanota.com

newoffice-template.com

j.konnoban@email.cz

template-new.com

e.darmanin@inbox.lv


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

Список выявленных серверов:

  • checklicensekey.com;
  • comparelicense.com;
  • driver-updated.com;
  • sync-firewall.com;
  • system-logs.com;
  • technology-requests.net;
  • translate-news.net.

Также нами был выявлен интересный факт: злоумышленники маскировали внешний вид одного из управляющих серверов (technology-requests.net) под сайт https://www.hoosierheightsindianapolis.com (рисунок 38).

Внешний вид легитимного сайта
Рисунок 38. Внешний вид легитимного сайта

На 26 июля, по данным webcache.googleusercontent.com, вредоносный сайт выглядел так, как показано на рисунке 39.

Внешний вид сайта, с которого скачивалось вредоносное содержимое
Рисунок 39. Внешний вид сайта, с которого скачивалось вредоносное содержимое

Непосредственно во вредоносных инструментах коммуникация осуществляется через облачный сервис (как и в предыдущие годы), а именно OpenDrive (https://www.opendrive.com/). Сервис используется как для хранения загружаемых ВПО-модулей, так и для загрузки собранных данных. При этом в качестве логинов используется tempmail-почта.

Заключение

Группа Cloud Atlas активна уже долгие годы и продумывает свои атаки до мелочей. Инструментарий группировки не меняется годами — она старается тщательно скрывать свое ВПО от исследователей, проверяя или используя одноразовые запросы на получение полезной нагрузки. Группа использует техники ухода от сетевых и файловых средств обнаружения атак, применяя легитимные облачные хранилища, а также документированные возможности ПО, в частности Microsoft Office.

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

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

Авторы: Денис Кувшинов, Александр Григорян, Даниил Колосков, Positive Technologies

Авторы благодарят за помощь в подготовке статьи команды incident response и threat intelligence PT Expert Security Center.

Выявление активности группировки CloudAtlas продуктами Positive Technologies

MP SIEM

Следующие правила корреляции правила анализируют запускаемые процессы и помогают выявить описанную активность:

  • Suspicious_Connection
  • Malicious_Office_Document
  • Windows_Autorun_Modification

Следующие правила корреляции анализируют запускаемые скрипты и помогают выявить описанную активность:

  • Execute_Malicious_Powershell_Cmdlet
  • Execute_Malicious_Command

Реализация техник D3FEND в MP SIEM, которые помогут в выявлении активности группировки CloudAtlas

ID

ИМЯ ТЕХНИКИ

ОПИСАНИЕ

D3-PA

Process Analysis

Активность группы CloudAtlas можно выявить через правила анализа процессов.

D3-SEA

Script Execution Analysis

Активность группы CloudAtlas можно выявить через правила анализа запускаемых скриптов.


PT NAD

PT NAD содержит репутационный список CloudAtlas, который поможет в выявлении активности группировки CloudAtlas

Реализация техник D3FEND в PT NAD, которые помогут в выявлении расследовании активности группировки CloudAtlas

ID

ИМЯ ТЕХНИКИ

ОПИСАНИЕ

D3-DNSTA

DNS Traffic Analysis

Использование репутационных списков для выявления активности группы CloudAtlas

D3-FC

File Carving

Извлечение из трафика файлов, скачиваемых группой CloudAtlas


PT Sandbox

Вердикты PT Sandbox на активность группировки CloudAtlas:

  • Trojan.Win32.Generic.a
  • Trojan.Win32.RegLOLBins.a
  • Backdoor.Win32.CloudAtlas.a
  • Trojan-Downloader.Win32.Generic.a

Правила анализа сетевого трафика, которые помогут в выявлении активности группировки CloudAtlas:

  • LOADER [PTsecurity] Possible CloudAtlas
  • SUSPICIOUS [PTsecurity] PROPFIND method in http request
  • SUSPICIOUS [PTsecurity] MKCOL method in http request

Yara-правила, которые помогут в выявлении активности группировки CloudAtlas:

  • PTESC_tool_win_ZZ_OfficeTemplate__Downloader__DOC
  • PTESC_exploit_win_ZZ_MalDoc__CVE201711882__Rtf__CA

Реализация техник D3FEND в PT Sandbox, которые помогут в выявлении активности группировки CloudAtlas

D3FEND ID

Имя техники D3FEND

Реализация механизма в продукте

D3-PA

Process Analysis

Анализ поведения процессов, созданных вредоносными приложениями группы CloudAtlas

D3-FA

File Analysis

Анализ файлов группы CloudAtlas для определения их статуса и функционала

D3-NTA

Network Traffic Analysis

Активность группы CloudAtlas можно выявить через анализ трафика


Yara

    
rule PTESC_tool_win_ZZ_OfficeTemplate__Downloader__DOC { strings: $a = {00 A5 06 6E 04 B4} $b = {FF FF FF 7F FF FF FF 7F} $c = {B4 00 B4 00 81 81 12 30 00} $pref_1 = {68 00 74 00 74 00 70 00 3A 00 2F 00 2F} $pref_2 = {68 00 74 00 74 00 70 00 73 00 3A 00 2F 00 2F} condition: uint16be ( 0 ) == 0xd0cf and ( for any i in ( 300 .. 400 ) : ( uint8be ( @a + i ) == 0x68 and uint8be ( @a + i + 2 ) == 0x74 and uint8be ( @a + i + 4 ) == 0x74 and uint8be ( @a + i + 6 ) == 0x70 ) or for any j in ( 100 .. 200 ) : ( uint8be ( @b + j ) == 0x68 and uint8be ( @b + j + 2 ) == 0x74 and uint8be ( @b + j + 4 ) == 0x74 and uint8be ( @b + j + 6 ) == 0x70 ) or for any k in ( 200 .. 400 ) : ( uint8be ( @c + k ) == 0x68 and uint8be ( @c + k + 2 ) == 0x74 and uint8be ( @c + k + 4 ) == 0x74 and uint8be ( @c + k + 6 ) == 0x70 ) ) and ( ( for any l in ( 14 .. 70 ) : ( uint8be ( @pref_1 + l ) == 0x2f ) ) or ( for any y in ( 16 .. 70 ) : ( uint8be ( @pref_2 + y ) == 0x2f ) ) ) }
    
rule PTESC_exploit_win_ZZ_MalDoc__CVE201711882__Rtf__CA { strings: $equation = "4571756174696F6E" nocase ascii //180000004571756174696F6E $msftedit = "generator Msftedit 6.39.15" nocase ascii //generator Msftedit 6.39.15.1401 $objclass = "objclass weaseoijsd" nocase ascii condition: uint32be ( 0 ) == 0x7B5C7274 and ($equation and ($msftedit or $objclass) or (for any i in (50..350) : (uint8be (@equation + i) == 0x64 and uint8be (@equation + i + 2) == 0x64 and uint8be (@equation + i + 4) == 0x64 and uint8be (@equation + i + 6) == 0x38))) }

IOCs

Файловые индикаторы


ФАЙЛ

SHA-256

MD5

SHA-1

Методические рекомендации для грузоотправителей-грузополучателей (2022).doc

f2c4281e4d6c11173493b759adfb0eb798ce46650076e7633cf086b6d59fdb98

b3f55d9065dd51a8be2d6c5078866086

9f4a18adaa094eef06ef88e76b6f4ed777f677e7

Будьте_бдительны_Корпоративное_уведомление.doc

482aeb3db436e8d531b2746a513fe9a96407cf4458405680a49605e136858ec5

3399deafaa6b91e8c19d767935ae0908

b745032dd5cd6f7eba2187fa3c86c775953a5611

Иранские оценки визита В. Путина в Тегеран.doc

2f97374c76ae10c642a57a8b13d25cbdc070c9098c951ea418d1533ac01dc23c

61b6e2040d5815d0135b2850137828d9

df80df54f94d56aa436cdc2713e3bc8160ce43f8

Почему исламский мир не дает Западу изолировать Россию.doc

3cf2bda35e88c59bb89e7fdc8fcfd4c46b2b9186e61325d2924e049d775b741f

2b5cec8715e92d87bf6992e003a5651c

9fc804b58ab43fc5f453810a30ea311fc3f5cbe6

leptophis[1].doc

c0e154b10d70b99b5616a2eda6bfe188a49f85ed3aa92d48ec9ce709df9d563f

470c1df23bd825c6e36e1cd5936db912

ba9fc2f0d9f0fcf726a2cbc426f570bea5f22c96

lep[1].hta

a4194555b19ea32680cc23f8f7d42da02b82eba8b64cb5f4630110f4e2c1ddf3

66ecc2285e9d172ceb9f0b0ba030c65c

b5cc0a7ff0d8cd151545cbabcaf23c5486acec95

unbroken.vbs

59066dc428cde7cc55f3c24c2658d3e288f3f072811d86243a85af14bd482744

7ce01fc92fc221cad338cea1cfd43a22

9579b7f3a98657f704575aa4a08ed6ff3d8680a4

unbroken.vbs.vbs

4cb6e224b6b03a2f6ac1ac23e6bf097067018b90493ee94f210f66fbbbbdce77

1aa04f847bd7ec987986ec6e52966b89

8e23ac686bbc958dd85e46a2d4bb6acaee5aa35f

list.ps1

2233c0d4030cc728c2219b1e9c4c05cb262e2ddc7f4ac2f2924767396418c25a

d5a40e2986efd4a182bf564084533763

89364b9d170ab90d25d30649582679c3d7332b91

office.ps1

7fcf7c1dad362283d0a27993df4764e2bbb11857842b80f63d63449b9f2f1fa4

d02ab337bc56214d72b8cabea8bc19b2

81e22a16a6617670c394dbd7ee642eba8e419de7

office.ps1

d9fc6504c8970fefc441c77965937c382b029f1278918d1f54d196859e9f6e7c

077b71298ce31832ae43e834b7e6c080

ee50f3cd04d0fdf5e931ad85bfd464828116279b

rtcpsvc.dll

3e7b066c26ba98d285a41043c739be8767606d9df057ee2f7bcddb7862c00711

f68e64dacd046289d4222098ee421478

ce13a1ae0dd5d537320b77ac8e3d94df6448a82a

lockrail.dll

c5d1de206445f508c1af5f213e46b915b536e4b36ef917c4e826a982dd47c312

acbbc6fea0dbbe7cba511b450cc2b758

94f342f9219cee4f2b91b54809de92d5bb00e93e

holeincorner

8215e918ca3a77424dadac1aebc9a44b8f9840cd1389df0399a9fa4eb6329775

dc3faa6840d1b5fd296d71ee8877254e

53b767ff4fa5c5adc7041389ffd28bb4abda1434

Salzgitters.avi

b8dc70b9ffe06c9ecaf0216ea7948fe718143db10641a23297652693ea026ab3

e5e19040beabb0c0c68fdf4f3978a18b

e68dc027aee851125960ee0559610f43fee581b0

Schultes.wmv

f4e710f515249e8c08ae76284bfb280070e1fd2308e9d9321d92163dfc73be66

45f6f95918efbdcc2c97e3d905635f83

9a1d8a68042b91ee17648606e43907354227d25f


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

  • api-help.com
  • driver-updated.com
  • sync-firewall.com
  • system-logs.com
  • technology-requests.net
  • translate-news.net
  • checklicensekey.com
  • comparelicense.com
  • msupdatecheck.com
  • protocol-list.com

Имена файлов с полезной нагрузкой (из конфигурации):

  • callicrates
  • tinh
  • amianthium
  • mandarinduck
  • cushioning
  • kingsclover

E-mail, с которых рассылались вредоносные письма:


MITRE TTPs

ID

ИМЯ

ОПИСАНИЕ

Resource Development

T1583

Acquire Infrastructure

Группа Cloud Atlas использовала серверы для хранения удаленных шаблонов, а также облачное хранилище в качестве контрольного сервера

T1585

Establish Accounts

Группа Cloud Atlas регистрировала учетные записи облачных сервисов и почтовые ящики tempmail

Initial Access

T1566.001

Phishing: Spearphishing Attachment

Группа Cloud Atlas рассылала фишинговые письма с вредоносным содержимым

Execution

T1204.002

User Execution: Malicious File

Группа Cloud Atlas рассылала письма с вредоносными файлами форматов .doc и .docx

T1559.001

Inter-Process Communication: Component Object Model

Группа Cloud Atlas использовала компоненты COM в своих инструментах

T1059.001

Command and Scripting Interpreter: PowerShell

Группа Cloud Atlas применяла PowerShell-скрипты для загрузки и запуска своих компонентов

T1059.005

Command and Scripting Interpreter: Visual Basic

Группа Cloud Atlas применяла Visual Basic-скрипты для загрузки и запуска своих компонентов

T1203

Exploitation for Client Execution

Группа Cloud Atlas использовала уязвимости в компонентах Microsoft Office для запуска своих вредоносных компонентов

Persistence

T1547.001

Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder

Группа Cloud Atlas использовала ключи реестра (автозапуск) для закрепления

Defense Evasion

T1221

Template Injection

Группа Cloud Atlas использовала технику внедрения удаленных шаблонов для сокрытия вредоносной нагрузки

T1140

Deobfuscate/Decode Files or Information

Группа Cloud Atlas использует шифрование своих компонентов для их защиты от обнаружения и анализа

Collection

T1025

Data from Removable Media

Группа Cloud Atlas использовала инструменты для сбора информации с различных удаленных устройств

T1039

Data from Network Shared Drive

Группа Cloud Atlas использовала инструменты для сбора информации с различных сетевых устройств

T1005

Data from Local System

Группа Cloud Atlas использовала инструменты для сбора информации с файловой системы

T1560.002

Archive Collected Data: Archive via Library

Группа Cloud Atlas применяет LZNT1-сжатие к собранным данным, используя библиотеку WinAPI

T1560.003

Archive Collected Data: Archive via Custom Method

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

T1119

Automated Collection

Группа Cloud Atlas использовала методы автоматизированного сбора данных с зараженных машин

Command and Control (C2)

T1573.001

Encrypted Channel: Symmetric Cryptography

Группа Cloud Atlas использует AES-шифрование для сокрытия сетевой коммуникации

T1041

Exfiltration Over C2 Channel

Группа Cloud Atlas использует канал С2 для передачи собранных данных

T1102

Web Service

Группа Cloud Atlas использует облачный сервис OpenDrive в качестве контрольного сервера


Общие меры по противодействию TTP, которые использует группировка CloudAtlas

Базовые меры защиты

D3FEND ID

Имя техники D3FEND

Описание меры защиты

D3-SYSVA

System Vulnerability Assessment

Поскольку группировка CloudAtlas эксплуатирует уязвимости, необходимо контролировать уязвимость систем в инфраструктуре и своевременно обновлять уязвимые версии ПО

D3-SU

Software Update

Поскольку группировка CloudAtlas эксплуатирует уязвимости, необходимо контролировать уязвимость систем в инфраструктуре и своевременно обновлять уязвимые версии ПО

D3-OTF

Outbound Traffic Filtering

Ограничить сетевой трафик к не доверенным серверам из списков IOC

D3-DNSDL

DNS Denylisting

Блокировать разрешение DNS-имён из списков IOC


Дополнительные меры защиты

D3FEND ID

Имя техники D3FEND

Описание меры защиты

D3-SRA

Sender Reputation Analysis

Группировка CloudAtlas пользуется бесплатными почтовыми сервисами, поэтому в качестве дополнительной меры защиты от фишинга можно специальным образом помечать письма от внешних бесплатных сервисов для привлечения дополнительного внимания пользователя

D3-UDTA

User Data Transfer Analysis

Группировка CloudAtlas скачивает данные через скомпрометированные рабочие станции, поэтому можно использовать профилирование количества данных, переданных пользователем в сеть Интернет для выявления аномалий в случае массированной эксфильтрации данных