Анастасия Тихонова

Руководитель группы исследования сложных угроз Threat Intelligence Group-IB

Дмитрий Купин

Ведущий специалист по анализу вредоносного кода Threat Intelligence Group-IB

В середине мая 2021 года эксперты из SOLAR JSOC вместе с Национальным координационным центром по компьютерным инцидентам (НКЦКИ) выпустили отчет о серии целенаправленных атак, выявленных в 2020 году. Согласно исследованию, главной целью атакующих в России были федеральные органы исполнительной власти (ФОИВы).

Изучая это исследование, Анастасия Тихонова, руководитель группы исследования сложных угроз Threat Intelligence Group-IB, и Дмитрий Купин, ведущий специалист по анализу вредоносного кода Threat Intelligence Group-IB, поймали себя на мысли, что уже видели похожие инструменты в более ранних APT-атаках из Китая.

Китайские прогосударственные группы — одно из самых многочисленных и агрессивных хакерских сообществ. Несколько десятков групп проводят атаки по всему миру, в том числе и в России. В первую очередь хакеров интересуют государственные ведомства, промышленные объекты, военные подрядчики, научно-исследовательские институты. Главная цель — шпионаж: атакующие получают доступ к конфиденциальным данным организаций и стараются как можно дольше скрыть свое присутствие. Известны случаи, когда злоумышленники находились незамеченными в сети жертвы по несколько лет.

К сожалению, в отчете SOLAR JSOC и НКЦКИ не было индикаторов компрометации, поэтому эксперты опирались на описанные функциональные возможности и предоставленные скриншоты вредоносного кода. В итоге исследователи Group-IB пришли к любопытным выводам о том, какие из китайских групп могли стоять за атаками на российские ФОИВы в 2020 году, какие инструменты они использовали и как эволюционировало это вредоносное ПО.

Ключевые выводы

  • Это исследование посвящено вредоносному ПО Webdav-O, которое было замечено в атаке против российских ФОИВов в 2020 году.

  • Специалисты Group-IB обнаружили две версии трояна Webdav-O: для систем x86 и x64.

  • В ходе сравнения фрагментов кода удалось доказать, что троян Webdav-O x64 был использован в атаках на ФОИВы в 2020 году, но на самом деле существует как минимум с 2018 года.

  • Специалисты Group-IB обнаружили, что Webdav-O имеет схожие команды с известным трояном с BlueTraveller (aka RemShell) китайского происхождения и связан с группировкой TaskMasters.

  • Ранее эксперты Sentinel Labs опубликовали исследование о вредоносном ПО Mail-O, которое также было замечено в атаках на ФОИВы. Mail-O связали с группировкой TA428 из Китая.

  • Как известно, группа TA428 использует в атаках троян Albaniiutas. Group-IB своим анализом показали, что Albaniiutas — это новая версия трояна BlueTraveller.

  • Таким образом, Group-IB выдвигает предположение, что либо обе китайские группы — TA428 и TaskMasters — атаковали российские ФОИВы в 2020 году, либо существует одна большая хакерская группа родом из Китая, которая объединяет несколько групп.

TA428 — китайская проправительственная группировка, которая действует с 2013 года. Злоумышленники нацелены на ряд правительственных агентств в Восточной Азии, контролирующих государственные информационные технологии, внутреннюю и международную политику, экономическое развитие.

TaskMasters (aka BlueTraveller) — группа, спонсируемая китайским государством. Как утверждается, хакеры активны как минимум с 2010 года. Группа атаковала компании в ряде стран, однако значительное количество их целей находилось в России и странах СНГ. Среди атакуемых организаций — крупные промышленные и энергетические предприятия, государственные структуры, транспортные компании.

Отправная точка

  • Исходя из фразы исследователей: "Отчет сформирован на основе анализа серии целенаправленных атак", — мы решили допустить, что хакерских группировок, которые потенциально стоят за атаками, было несколько.

  • Злоумышленники использовали вредоносное программное обеспечение, которое взаимодействовало с сервером управления через облако Яндекс.Диск. Вредонос получил название Webdav-O.

  • Также злоумышленники использовали вредоносное программное обеспечение, которое обращалось к Облаку Mail.ru. Этот вредонос называется Mail-O.

В начале июня 2021 года аналитики американской компании Sentinel Labs, специализирующейся на компьютерной безопасности, опубликовали исследование о вредоносном ПО Mail-O. В своем анализе эксперты пишут, что Mail-O является вариантом относительно хорошо известной вредоносной программы SManager, используемой злоумышленниками TA428 (Китай).

Специалисты Group-IB, со своей стороны, хотели бы уточнить, что Mail-O является загрузчиком, тогда как SManager и Tmanger представляют собой трояны удаленного доступа (RAT). Однако между Mail-O, SManager и Tmanger действительно есть пересечения в коде экспортируемых функций Entery и ServiceMain, что отсылает нас к группировке TA428. К тому же хакеры из TA428 уже были замечены в шпионской активности против России, особенно против государственных объектов.

Чтобы окончательно заявить, что именно TA428 стояла за серией атак на ФОИВы в 2020 году, мы решили подтвердить свою гипотезу в том числе анализом образца трояна Webdav-O. Специалисты Group-IB Threat Intelligence & Attribution ранее детектировали схожее вредоносное поведение. Теперь же пришло время показать, с какой группировкой мы его связываем и почему. Далее мы приведем анализ наших образцов Webdav-O и покажем их пересечения с вредоносным ПО, упоминаемым в отчете SOLAR JSOC и НКЦКИ.

骑驴找马 [qí lǘ zhǎo mǎ]

Дословный перевод: Ездить на осле, занимаясь поиском лошади.
Значение: Используй то, что имеешь, во время поисков чего-то лучшего.

Анализ образца Webdav-O

Name

1.dll

SHA1

c9e03855f738e360d24018e2d203142c7ae6c2ec

Compilation timestamp

2018-07-12 03:08:01

First Submission

2019-11-07 10:34:11

Dll Name

y_dll.dll

Export function

ServiceMain

Файл "1.dll" является динамически подключаемой библиотекой (DLL) x86, функционирующей в системе в качестве службы.

Анализируемый файл предоставляет удаленный доступ к оболочке командной строки (cmd.exe), а также выполняет различные команды, поступающие из C2, на скомпрометированном хосте.

В качестве сетевой инфраструктуры, а именно C&C, используется легитимный облачный сервис Яндекс.Диск (webdav.yandex.ru:443). Сетевое взаимодействие с облаком реализовано через протокол Webdav. Метод аутентификации используется базовый (Basic).

Строки и конфигурационные данные зашифрованы алгоритмом RC4 с ключом { 8A 4F 01 47 34 C9 75 F8 2B C8 C1 E9 D2 F3 A5 8B }, размер ключа — 16 байт. Анализируемый файл может работать с разным количеством учетных записей — от одной до семи (в данном случае только с двумя, но к этому вернемся позже).

Функциональные возможности образца

  1. В экспортируемой функции ServiceMain используется случайная задержка перед выполнением основного кода.

  2. Проверка доступности учетных записей облака Яндекс.Диск с помощью запроса /?userinfo (GET).

  3. Загрузка файла "/test3.txt" с облака Яндекс.Диск (GET) и проверка наличия в нем строки Just A Test! В случае успеха проверяется наличие командных файлов в каталоге "/test" в облаке Яндекс.Диск (PROFIND).

  4. Определение командного файла для загрузки с облака Яндекс.Диск (GET). Ответ от сервера обрабатывается, название файла с командами содержится между тегами <d:href> и </d:href>

  5. В командном файле содержимое зашифровано алгоритмом RC4. После загрузки командного файла он удаляется из облака Яндекс.Диск (DELETE).

  6. Загрузка файла "/test2.txt" в облако Яндекс.Диск (PUT). В файле "/test2.txt" содержится строка Just A Test! Предположительно, такой механизм используется для проверки функционирования вредоносной программы.

  7. Загрузка файла "/test2/[0-9]{1,4}[0-9]{1,4}.bin" в облако Яндекс.Диск (PUT). Файл содержит результат выполнения команды. Данные зашифрованы алгоритмом RC4.

Описание команд

Команда

Описание

-upload

Загрузка файла в облако Яндекс.Диск.

Название файла задается в команде.

Файл сохраняется в облаке с именем "[0-9]{1,4}[0-9]{1,4}.bin".

Формат ответа: ##u## %s %s

-download

Загрузка файла с облака Яндекс.Диск.

Название файла задается в команде.

Загруженный с файл удаляется из облака Яндекс.Диск.

Формат ответа: ##d## %s

-quit

Завершение сеанса работы (выход из потока выполнения команд).

-setsleep

Установка интервала ожидания (в минутах) между запросами на получение команд.

Формат ответа: ##s## %d

[иная команда]

Запуск команды в оболочке командной строки (cmd.exe).

Сравнение с образцом из отчета SOLAR JSOC и НКЦКИ

Проводя анализ кода, загруженного на VirusTotal, мы обнаружили большое количество пересечений с трояном из исследования SOLAR JSOC и НКЦКИ. Примером может служить скриншот кода вредоноса, где показывается получение списка файлов-команд в папке test:

Сравнение Webdav-O из отчета (слева) с VirusTotal (справа)
Сравнение Webdav-O из отчета (слева) с VirusTotal (справа)

Сравнение двух образцов Webdav-O

Webdav-O из отчета

Webdav-O x86

Аутентификация Basic и OAuth

Аутентификация Basic

Команды (5 шт.):

-upload

-download

-setsleep

-quit

[иная команда cmd.exe]

-sleepuntil

Команды (4 шт.):

-upload

-download

-setsleep

-quit

[иная команда cmd.exe]

Формат ответа команд:

##u## %s %s (-upload)

##d## %s (-download)

##s## %d (-setsleep)

##l## %s (-sleepuntil)

Формат ответа команд:

##u## %s %s (-upload)

##d## %s (-download)

##s## %d (-setsleep)

Файловые объекты в облаке Яндекс.Диск:

test2.txt, test3.txt

/test

/test2

/test2/%04d%04d.bin

test4.txt

test5.txt

test7.txt

Файловые объекты в облаке Яндекс.Диск:

test2.txt, test3.txt

/test

/test2

/test2/%04d%04d.bin

Генерация сессионного RC4-ключа (содержится в файле test7.txt в зашифрованном виде). Используется для шифрования команд и результатов их работы.*

RC4-ключ статичен, зашит в теле программы. Используется для шифрования команд и результатов их работы.

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

Учетные записи статичны, зашиты в теле программы. Используются для Basic-аутентификации.

* Проверка невозможна, так как отсутствуют индикаторы (именно тот файл Webdav-O) в отчете.

Как видно из приведенных нами сравнений двух образцов, Webdav-O из исследования SOLAR JSOC и НКЦКИ выглядит как более новая, частично усовершенствованная версия трояна, который был обнаружен нами на VirusTotal.

Сравнение Webdav-O с кодом образцов BlueTraveller (RemShell)

见风转舵 [jiàn fēng zhuǎn duò]

Дословный перевод: Видишь ветер — меняй направление.
Значение: Меняй тактику, чтобы обойти трудности.

Исходя из довольно большой базы проанализированных вредоносных образцов в ходе поиска и реагирования на киберугрозы, специалисты Group-IB связали обнаруженный сэмпл Webdav-O с трояном BlueTraveller.

Но чтобы не быть голословными, мы приведем ниже сравнение нашего образца Webdav-O x86 с образцом BlueTraveller (RemShell) (SHA1: 6857BB2C3AE5F9C2393D9F88816BE7A10CB5573F).

Name

netui4.dll

SHA1

6857bb2c3ae5f9c2393d9f88816be7a10cb5573f

Compilation timestamp

2017-03-03 09:13:08

First Submission

2017-07-07 18:33:12

Dll Name

client_dll.dll

Export function

ServiceMain

Фрагмент псевдокода обработки (получения) команды "-upload" в образце Webdav-O (слева) и BlueTraveller (RemShell) (справа)
Фрагмент псевдокода обработки (получения) команды "-upload" в образце Webdav-O (слева) и BlueTraveller (RemShell) (справа)
Фрагмент псевдокода обработки (получения) команды "-download" в образце Webdav-O (слева) и BlueTraveller (RemShell) (справа)
Фрагмент псевдокода обработки (получения) команды "-download" в образце Webdav-O (слева) и BlueTraveller (RemShell) (справа)
Фрагмент псевдокода обработки (получения) команды "-quit" в образце Webdav-O (слева) и "-exit" в образце BlueTraveller (RemShell) (справа)
Фрагмент псевдокода обработки (получения) команды "-quit" в образце Webdav-O (слева) и "-exit" в образце BlueTraveller (RemShell) (справа)
Фрагмент псевдокода выполнения команды в оболочке командной строки (cmd.exe) в образце Webdav-O (слева) и BlueTraveller (RemShell) (справа)
Фрагмент псевдокода выполнения команды в оболочке командной строки (cmd.exe) в образце Webdav-O (слева) и BlueTraveller (RemShell) (справа)

Оригинальное название DLL
Webdav-O
(DIRECTORY_ENTRY_EXPORT)
Dll Name: y_dll.dll

Оригинальное название DLL
BlueTraveller (RemShell)
(DIRECTORY_ENTRY_EXPORT)
Dll Name: client_dll.dll

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

  • Схожее наименование DLL (DIRECTORY_ENTRY_EXPORT — оригинальное название DLL)

  • Одинаковое название команд

  • Одинаковый принцип обработки команд

  • Возможность исполнения команд в оболочке командной строки (cmd.exe)

Учетные записи, пароли и подтверждение атрибуции

路遥知马力, 日久见人心 [lù yáo zhī mǎ lì rì jiǔ jiàn rén xīn]

Дословный перевод: Преодолев длинное расстояние, ты познаешь выносливость лошади, а через долгое время ты узнаешь, что у человека в сердце.
Значение: Сущность человека раскрывается со временем.

Вернемся к анализируемому образцу Webdav-O x86. Когда мы расшифровали строки вредоноса, то обнаружили данные "логин:пароль" для учетных записей злоумышленников, используемых на Яндекс Диске.

  • aleshaadams:7ujm!QAZ2wsx

  • tstrobos:&UJM1qaz2ws

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

  • tstrobos@yandex.ru

  • aleshaadams@yandex.ru

Попытка восстановления пароля по адресу aleshaadams@yandex.ru
Попытка восстановления пароля по адресу aleshaadams@yandex.ru
Попытка восстановления пароля по адресу tstrobos@yandex.ru
Попытка восстановления пароля по адресу tstrobos@yandex.ru

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

Анализ генерации паролей

В 2019 году Эльмар Набигаев, заместитель директора экспертного центра безопасности Positive Technologies, выступая на конференции с докладом "The TaskMasters APT" (другое название группировки BlueTraveller), привел несколько примеров паролей, которые они встретили в ходе исследования вредоносной кампании:

Как видно из изображений выше, манера создания паролей TaskMasters схожа с манерой Webdav-O: меняется только реестр и комбинации рядов.

Размытие границ

Принимая во внимание все проведенные сравнения и найденную информацию об аккаунтах, мы понимаем, что за использованием трояна Webdav-O, скорее всего, стояла группировка TaskMasters (Китай) с усовершенствованной версией их одноименного вредоноса. Однако все еще открыт вопрос про группировку TA428: могла ли она совместно с TaskMasters атаковать ФОИВы в 2020 году? А может ли быть, что за действиями стоит кто-то другой? Или же это всё одна группа?

Попробуем продолжить наши рассуждения и предоставим новую информацию для размышлений. Для этого обратимся к отчету NTT Security Corporation от 2020 года про группировку TA428 и её новые инструменты, в частности троян Albaniiutas.

Блок-схема исполнения файлов Albaniiutas из отчета NTT
Блок-схема исполнения файлов Albaniiutas из отчета NTT

В контексте данного исследования нас интересуют последние два объекта, и далее мы покажем почему.

Во-первых, мы обнаружили пересечение в используемой утилите для запуска DLL:

BlueTraveller

Albaniiutas

1.exe

vjsc.dll

6303CCE6747703E81A5A52DEC11A3BA7DB26EA4B

2FE6AF7CE84CB96AE640BB6ED25A7BA67591A11E

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

Запускается в оболочке командной строки (cmd.exe).

Принимает аргументы командной строки:

C:\Users\IEUser\Desktop\1.exe Usage: install -i DllPath или install -u ServiceName

"-i [DllPath]" - регистрация и запуск DLL в качестве службы.

"-u [ServiceName]" - удаление указанной службы.

DLL, отвечающая за регистрацию и запуск DLL в качестве службы в системе.

Загружается файлом "Scrpt.exe" (SHA1: BC708ACDF6B8B60577268A0788F1E375CB3FFEB4) - подписанный легитимный файл "vjc.exe". 

Оригинальное название DLL "ServiceAdd.dll".

Более детально схожесть продемонстрируют фрагменты кода обеих утилит. Как можно заметить, оба образца используют XOR — шифрование, где даже выводится идентичная отладочная информация.

Фрагмент кода, где используется XOR, а также строки с отладочной информацией в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода, где используется XOR, а также строки с отладочной информацией в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода функции шифрования XOR в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода функции шифрования XOR в BlueTraveller (слева) и Albaniiutas (справа)

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

Фрагмент кода с рандомизацией имени DLL в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода с рандомизацией имени DLL в BlueTraveller (слева) и Albaniiutas (справа)

Продолжим наше сравнение, но теперь возьмем ранее рассмотренный нами образец BlueTraveller (SHA1:6857BB2C3AE5F9C2393D9F88816BE7A10CB5573F) и Fileless RAT семейства Albaniiutas.

BlueTraveller

Albaniiutas

netui4.dll

-

6857BB2C3AE5F9C2393D9F88816BE7A10CB5573F

08645D079ABE05B88201DB0FF1C9B1EC035035CA

DLL представляет собой RAT. 

Fileless DLL является полезной нагрузкой и представляет собой RAT.

Запускается через службу (экспортируемая функция ServiceMain). 

Загружается файлом "XpEXPrint.dll / [a-z]{4}.dll" (SHA1: AE57D779AAC235E979FAE617599377A099B148AB), содержится в ресурсах в зашифрованном виде.

Оригинальное название DLL "client_dll.dll".

Оригинальное название DLL "ClientX.dll".

В этом случае также рассмотрим фрагменты кода, которые выглядят очень похожими. К примеру, часть псевдокода выполнения команд в оболочке командной строки (cmd.exe).

Фрагмент кода в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода в BlueTraveller (слева) и Albaniiutas (справа)

Далее взглянем на фрагменты кода обработки данных, полученных от C&C.

Фрагмент кода в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода в BlueTraveller (слева) и Albaniiutas (справа)

Как видно из приведенных фрагментов, код в BlueTraveller более скромный, однако в обоих случаях разделитель \b встречается трижды (функция strtok). Ниже пример данных, которые вредонос Albaniiutas получает для каждой команды:

Формат данных, полученных при выполнении команды (взят из отчета NTT)
Формат данных, полученных при выполнении команды (взят из отчета NTT)
  1. При многократном выполнении команды она не будет выполнена, если не указано значение, отличное от предыдущего.

  2. Разделитель

  3. Если значение не соответствует значению в ③ — команда не будет выполнена.

  4. Это означает идентификатор и параметры команды, разделенные пробелами.

Давайте сравним также фрагменты кода проверки и выполнения полученных команд от C&C.

Фрагмент кода в BlueTraveller (слева) и Albaniiutas (справа)
Фрагмент кода в BlueTraveller (слева) и Albaniiutas (справа)

Очевидно, что этот фрагмент был обновлен хакерами, но сами команды остались прежними:

Команда

Опции

Описание

-exit

Завершение функции приема и обработки команд (выход из потока)

-download

URL загрузки

Путь к файлу места сохранения

Загрузка файла с C&C

-upload

Путь к файлу на зараженном устройстве

Часть пути URL-адреса во время загрузки

Загрузка файла на C&C

(command)

Аргументы команды

Выполнение команды с помощью cmd.exe и возвращение результата на сервер C&C

Кроме того, у троянов схожий шаблон общения с сервером управления в протоколах сетевого взаимодействия с C&C. Ниже — пример сетевой коммуникации с управляющим сервером, взятый из образцов трояна BlueTraveller, доступных на VirusTotal.

BlueTraveller

Albaniiutas

http://45.32.188[.]226/0000/1301/0024/4u/i7fr09bGus+Wyt7iyjos=

http://go.vegispaceshop[.]org/home/2252/0108/IKNYF6oSkYtpU60GfnS27fbRKdcvCj/kZgeNi/8QIRN2+6+O3gKV6ODd2mEPNo7tYi1+ePOSmFzMlUY1ciJ1A0XSw8aOkJzTDXITxdSNo74=

Шаблон:
[IP]/[0000 or 1111]/[0-9]{4}/[0-9]{4}/[base64 data]

Шаблон:
[domain]/[dir]/[0-9]{4}/[0-9]{4}/[base64 data]

Теперь поговорим про обфускацию строк в Albaniiutas. Мы установили, что они зашифрованы алгоритмом RC4. Используемый ключ шифрования — L!Q@W#E$R%T^Y&U*A|}t~k.

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

Фрагмент кода с записью строки в файл журнала (взят с PTSecurity "Operation TaskMasters" 2019):

Вывод напрашивается сам собой: Albaniiutas — не что иное, как логическое продолжение вредоносных программ, относящихся к семейству BlueTraveller.

И тут прилетело...

Как только мы подумали, что все описали и все сравнения провели, на VirusTotal вдруг загружают образец, который детектируется нами как Webdav-O.

Name

y_dll.dll

SHA1

3ff73686244ca128103e86d8c5aa024e37e7b86d

Compilation timestamp

2018-12-06 11:15:35

First Submission

2021-06-05 04:41:00

Dll Name

y_dll.dll

Export function

ServiceMain

Файл "y_dll.dll" является динамически подключаемой библиотекой (DLL) x64, функционирующей в системе в качестве службы.

Как видно, данная версия Webdav-O была написана для системы другой разрядности и скомпилирована позднее, чем наша Webdav-O x86 (2018-12 против 2018-07 соответственно).

В качестве сетевой инфраструктуры, а именно C2, все так же используется легитимный облачный сервис Яндекс.Диск (webdav.yandex.ru:443). Сетевое взаимодействие с облаком реализовано через протокол Webdav.

Однако в этом образце поддерживаются два способа аутентификации вместо одного в Webdav-O x86: basic (с логином и паролем) и OAuth (с использованием токена).

Строки и конфигурационные данные зашифрованы алгоритмом RC4 с ключом { C3 02 03 04 05 DD EE 08 09 10 11 12 1F D2 15 16 }, размер ключа — 16 байт. Анализируемый файл может работать с разным количеством учетных записей — от одной до семи (в данном случае только с одной).

Данный образец показался специалистам Group-IB ещё более похожим на описываемый в отчете SOLAR JSOC и НКЦКИ, так как, в отличие от нашего, тут уже как минимум есть функция -sleepuntil

Все еще сетуя на то, что коллеги из SOLAR JSOC и НКЦКИ не привели никаких индикаторов компрометации, нам остается только провести сравнение, опираясь на скриншоты и описание возможностей их образца.

Образец Webdav-O из отчета (слева) и образец Webdav-O x64 (справа)
Образец Webdav-O из отчета (слева) и образец Webdav-O x64 (справа)
Образец Webdav-O из отчета (слева) и образец Webdav-O x64 (обработка команды -sleepuntil) (справа)
Образец Webdav-O из отчета (слева) и образец Webdav-O x64 (обработка команды -sleepuntil) (справа)

Как видно из приведенных фрагментов кода, обе версии выглядят идентично. Эксперты Group-IB также видели, что в Webdav-O x64 команды и результаты их работы передаются путем загрузки различных файлов на Яндекс.Диск.

Описание файлов, создающихся Webdav-O из отчета:

Описание файлов, создающихся Webdav-O x64:

Файл / каталог

Описание

test2.txt, test3.txt

Используются для проверки соединения.

Пример содержимого файла "test2.txt": Just A Test!

test4.txt

Содержит интервал ожидания (в минутах) между запросами на получение команд.

Пример содержимого файла "test4.txt": 15

test5.txt

Содержит дату и время, до которого вредоносная программа будет неактивна (спать).

Формат: %d-%d-%d_%d:%d:%d, пример содержимого файла "test5.txt": 2021-03-02_14:30:00

test6.txt

Содержит OAuth-токен. Содержимое зашифровано алгоритмом RC4 с ключом { 8A 4F 01 47 34 C9 75 F8 2B C8 C1 E9 D2 F3 A5 8B } (16 байт).

Что интересно, этот ключ уже использовался другим нашим образцом Webdav-O x86 для шифрования строк и конфигурационных данных.

test7.txt

Загружается на сервер и содержит сессионный RC4-ключ (16 байт), который используется для шифрования команд и результатов их работы (сам ключ зашифрован публичным RSA-ключом).

Сессионный RC4-ключ генерируются с помощью функции BCryptGenRandom:

BCryptGenRandom(0i64, rc4_key_session, 16u, BCRYPT_USE_SYSTEM_PREFERRED_RNG)

/test

Содержит файлы, которые скачиваются, расшифровываются и обрабатываются как команды.

Формат имен файлов: "/test/[0-9]{1,4}[0-9]{1,4}.bin"

/test2

Содержит файлы (результат выполнения команд), которые шифруются и загружаются на Яндекс.Диск.

Формат имен файлов: "/test2/[0-9]{1,4}[0-9]{1,4}.bin"

Как видно из приведенных данных, эта часть также идентична, кроме описания файла test6.txt, который по какой-то причине отсутствует в отчете исследователей SOLAR JSOC и НКЦКИ.

Опираясь на описанные выше сравнения, эксперты Group-IB заявляют, что именно этот образец Webdav-O, скорее всего, был использован в атаках на ФОИВы в 2020 году и описан в отчете SOLAR JSOC и НКЦКИ.

Ну и в завершение подытожим, что имеем...

人心齐,泰山移 [rén xīn qí, tài shān yí]

Дословный перевод: Если люди сплотятся, то и гору Тайшань передвинут.
Значение: Дружной работой горы свернуть можно.

Общая схема пересечений между троянами
(Используются только рассмотренные в блоге данные)
Общая схема пересечений между троянами (Используются только рассмотренные в блоге данные)
  • Вредонос Webdav-O является еще одной версией семейства вредоносных программ BlueTraveller (RemShell), которые относят к китайской прогосударственной группировке. Webdav-O был создан как для систем x86, так и для систем x64.

  • Файл Webdav-O мог использоваться китайской группировкой APT TaskMasters (aka BlueTraveller). В том числе на это указывает тот факт, что отчет SOLAR JSOC и НКЦКИ говорит о серии атак за 2020 год на различные ФОИВы. Вполне возможно, что в одних атаках действовала APT TA428, а в других — APT TaskMasters.

  • Исследователи из SentinelLabs связывают Mail-O с Smanager и Tmanger (инструменты китайской группировки APT TA428). Специалисты Group-IB нашли пересечения в коде экспортируемых функций Entery и ServiceMain в этих вредоносах, и с moderate confidence мы можем заявить, что Mail-O принадлежит TA428.

  • Исходя из исследования Ntt Security, TA428 ранее использовала вредонос Albaniiutas. Специалисты Group-IB доказали, что данный троян является новой версией BlueTraveller (RemShell). Таким образом, можно предположить, что Webdav-O тоже имеет отношение к китайской APT TA428.

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

  • Не менее весомым звучит предположение, что существует одна большая хакерская группировка, которая состоит из нескольких подразделений разведки Народно-освободительной армии Китая. Например, подразделение 61398 из Шанхая стоит за действиями хорошо известной группировки APT1 (aka Comment Crew), а подразделение 61419 из города Циньдао связано с группировкой Tick. Каждое подразделение атакует в меру своих возможностей, времени или выстроенной очередности. Таким образом, один троян может настраиваться и дорабатываться хакерами разных подразделений с разным уровнем подготовки и целями.

И как говорит один наш современник:

IoCs

В облаке Яндекс.Диск
  • "/test"

  • "/test2"

  • "/test[2-7]{1}.txt"

  • "/test/[0-9]{1,4}[0-9]{1,4}.bin

  • "/test2/[0-9]{1,4}[0-9]{1,4}.bin"

  • "[0-9]{1,4}[0-9]{1,4}.bin"

На хосте
  • Webdav-O запускается как служба в системе.

  • Подозрительная сетевая активность с облачным сервисом Яндекс.Диск.

Email
  • tstrobos@yandex[.]ru

  • aleshaadams@yandex[.]ru

Сетевые индикаторы
  • go.vegispaceshop[.]org

  • 209.250.239[.]96

Hash

1.dll — Webdav-O RAT x86

  • MD5 664fb7cda349da4d36afa7a15f7f14f5

  • SHA1 c9e03855f738e360d24018e2d203142c7ae6c2ec

  • SHA256 7874c9ab2828bc3bf920e8cdee027e745ff059237c61b7276bbba5311147ebb6

y_dll.dll — Webdav-O RAT x64

  • MD5 5155c03a2064d80cef6a86a84d67c1b4

  • SHA-1 3ff73686244ca128103e86d8c5aa024e37e7b86d

  • SHA-256 849e6ed87188de6dc9f2ef37e7c446806057677c6e05a367abbd649784abdf77

netui4.dll — BlueTraveller RAT

  • MD5 aa9771e98f25db395c7d9f5beb9e5421

  • SHA1 6857bb2c3ae5f9c2393d9f88816be7a10cb5573f

  • SHA256 95ac5cc14f114461df8469331171863e8d8c1981761cf16c68d513e34a46103d

1.exe — BlueTraveller service install tool

  • MD5 ceb80ceffc82f10acdbe9841e4588eb2

  • SHA-1 6303cce6747703e81a5a52dec11a3ba7db26ea4b

  • SHA-256 1457ce3a4f2f4b41a345cf06abd7c7af0d14a3ceaf61e3ff863a787cee43b48a

vjsc.dll — Albaniiutas service install module

  • MD5 101b7762ef536cf77f04e07115231b53

  • SHA-1 2fe6af7ce84cb96ae640bb6ed25a7ba67591a11e

  • SHA-256 2629cae63cecc23bd30731e3a7e44fdabee75a1aaec14b3d7f56ac1674ad9c11

file — Albaniiutas RAT fileless module (DLL)

  • MD5 f481172e59491117ac5dbe2ade267b1f

  • SHA-1 08645d079abe05b88201db0ff1c9b1ec035035ca

  • SHA-256 fd43fa2e70bcc3b602363667560494229287bf4716638477889ae3f816efc705

file — Albaniiutas dropper stage 0

  • MD5 fb82e5a2f9f25ac53f3f4c8b8e33ffdd

  • SHA-1 a55260aa75e7f28ad6644f916fe11c6bd2a93ba2

  • SHA-256 83b619f65d49afbb76c849c3f5315dbcb4d2c7f4ddf89ac93c26977e85105f32

cssrs.exe — Albaniiutas dropper stage 1

  • MD5 9fb74044c1935298a7c00b74fa192baf

  • SHA-1 aa046d7b6d37070ea7a65d13ddf0f3bd8668a723

  • SHA-256 2a3c8dabdee7393094d72ce26ccbce34bff924a1be801f745d184a33119eeda4

cssrs.exe — Albaniiutas dropper stage 1

  • MD5 32060465223315a1da24c0fb4a6e51f5

  • SHA-1 c89896264a633fd7a036042d3202c6b9503d11cb

  • SHA-256 71750c58eee35107db1a8e4d583f3b1a918dbffbd42a6c870b100a98fd0342e0

utas.xlsx.exe — Albaniiutas dropper stage 0

  • MD5 4814f81f3b174c52e920e6ddd57d8da6

  • SHA-1 bfa38cb5097bba6a8ae555d6dce3c5446db8099a

  • SHA-256 690bf6b83cecbf0ac5c5f4939a9283f194b1a8815a62531a000f3020fee2ec42

Узнать больше о продуктах и сервисах Group-IB:

YARA rule

import "pe"

rule webdavo_rat
{
  meta:
    author = "Dmitry Kupin"
    company = "Group-IB"
    family = "webdavo.rat"
    description = "Suspected Webdav-O RAT (YaDisk)"
    sample = "7874c9ab2828bc3bf920e8cdee027e745ff059237c61b7276bbba5311147ebb6" // x86
    sample = "849e6ed87188de6dc9f2ef37e7c446806057677c6e05a367abbd649784abdf77" // x64
    severity = 9
    date = "2021-06-10"

  strings:
    $rc4_key_0 = { 8A 4F 01 47 34 C9 75 F8 2B C8 C1 E9 D2 F3 A5 8B }
    $rc4_key_1 = { C3 02 03 04 05 DD EE 08 09 10 11 12 1F D2 15 16 }
    $s0 = "y_dll.dll" fullword ascii
    $s1 = "test3.txt" fullword ascii
    $s2 = "DELETE" fullword wide
    $s3 = "PROPFIND" fullword wide

  condition:
    (any of ($rc4_key*) or 3 of ($s*)) or
    (
     pe.imphash() == "43021febc8494d66a8bc60d0fa953473" or
     pe.imphash() == "68320a454321f215a3b6fcd7d585626b"
    )
}

rule albaniiutas_dropper_exe
{
  meta:
    author = "Dmitry Kupin"
    company = "Group-IB"
    family = "albaniiutas.dropper"
    description = "Suspected Albaniiutas dropper"
    sample = "2a3c8dabdee7393094d72ce26ccbce34bff924a1be801f745d184a33119eeda4" // csrss.exe dropped from 83b619f65...
    sample = "71750c58eee35107db1a8e4d583f3b1a918dbffbd42a6c870b100a98fd0342e0" // csrss.exe dropped from 690bf6b83...
    sample = "83b619f65d49afbb76c849c3f5315dbcb4d2c7f4ddf89ac93c26977e85105f32" // dropper_stage_0 with decoy
    sample = "690bf6b83cecbf0ac5c5f4939a9283f194b1a8815a62531a000f3020fee2ec42" // dropper_stage_0 with decoy
    severity = 9
    date = "2021-07-06"

  strings:
    $eventname = /[0-9A-F]{8}-[0-9A-F]{4}-4551-8F84-08E738AEC[0-9A-F]{3}/ fullword ascii wide
    $rc4_key = { 00 4C 21 51 40 57 23 45 24 52 25 54 5E 59 26 55 2A 41 7C 7D 74 7E 6B 00 } // L!Q@W#E$R%T^Y&U*A|}t~k
    $aes256_str_seed = { 00 65 34 65 35 32 37 36 63 30 30 30 30 31 66 66 35 00 } // e4e5276c00001ff5
    $s0 = "Release Entery Error" fullword ascii
    $s1 = "FileVJCr error" fullword ascii
    $s2 = "wchWSMhostr error" fullword ascii
    $s3 = "zlib err0r" fullword ascii
    $s4 = "De err0r" fullword ascii
    $s5 = "CreateFileW_CH error!" fullword ascii
    $s6 = "GetConfigOffset error!" fullword ascii

  condition:
    5 of them or
    (
     pe.imphash() == "222e118fa8c0eafeef102e49953507b9" or
     pe.imphash() == "7210d5941678578c0a31adb5c361254d" or
     pe.imphash() == "41e9907a6c468b4118e968a01461a45b"
    )
}

rule albaniiutas_rat_dll
{
  meta:
    author = "Dmitry Kupin"
    company = "Group-IB"
    family = "albaniiutas.rat"
    description = "Suspected Albaniiutas RAT (fileless)"
    sample = "fd43fa2e70bcc3b602363667560494229287bf4716638477889ae3f816efc705" // dumped
    severity = 9
    date = "2021-07-06"

  strings:
    $rc4_key = { 00 4C 21 51 40 57 23 45 24 52 25 54 5E 59 26 55 2A 41 7C 7D 74 7E 6B 00 } // L!Q@W#E$R%T^Y&U*A|}t~k
    $aes256_str_seed = { 00 30 33 30 34 32 37 36 63 66 34 66 33 31 33 34 35 00 } // 0304276cf4f31345
    $s0 = "http://%s/%s/%s/" fullword ascii
    $s1 = "%s%04d/%s" fullword ascii
    $s2 = "GetRemoteFileData error!" fullword ascii
    $s3 = "ReadInjectFile error!" fullword ascii
    $s4 = "%02d%02d" fullword ascii
    $s5 = "ReadInject succeed!" fullword ascii
    $s6 = "/index.htm" fullword ascii
    $s7 = "commandstr" fullword ascii
    $s8 = "ClientX.dll" fullword ascii
    $s9 = "GetPluginObject" fullword ascii
    $s10 = "D4444 0k!" fullword ascii
    $s11 = "D5555 E00r!" fullword ascii
    $s12 = "U4444 0k!" fullword ascii
    $s13 = "U5555 E00r!" fullword ascii

  condition:
    5 of them
}

Используемая литература

Комментарии (1)


  1. shadovv76
    18.08.2021 16:20

    Серьезное расследование!

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

    "Выводы сделайте сами"

    по моему в статье все выводы сделаны уже.

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

    Привязка подразделений к группировкам это предположение?

    Может стоило было остановиться на техническом заключении схожести кода? По мне так код, который вы анализируете доступен любому в том числе для его развития и заимствования. Вроде авторские права на него не заявляют :). Телефон можно вписать любой особенно, если восстанавливать пароль не планируется. Атаковать российскую инфраструктуру и при этом хранить реальный телефон в учетке российской компании могут себе позволить только ГосКулхакерыКитая.

    К техническому анализу вопросов нет.