Стелс-сокол охотится над небом Ближнего Востока с помощью Deadglyph

Стелс-сокол охотится над небом Ближнего Востока с помощью Deadglyph

Исходный узел: 2899203

В течение многих лет Ближний Восток сохранял свою репутацию благодатной почвы для современных постоянных угроз (APT). В ходе регулярного мониторинга подозрительных действий в системах высокопоставленных клиентов, некоторые из которых базируются в этом регионе, исследование ESET Research наткнулось на очень сложный и неизвестный бэкдор, который мы назвали Deadglyph. Мы получили название от артефактов, найденных в бэкдоре (например, 0xDEADB001, показанный также в REF _Ref111452440 ч Настольные 1
), в сочетании с наличием гомоглиф атака. Насколько нам известно, это первый публичный анализ этого ранее недокументированного бэкдора, используемого группой, демонстрирующей заметную степень сложности и опыта. Основываясь на данных о цели и дополнительных доказательствах, мы с высокой степенью уверенности относим Deadglyph к APT-группе Stealth Falcon.

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

Традиционные команды бэкдора не реализованы в двоичном файле бэкдора; вместо этого они динамически принимаются им от командного сервера (C&C) в виде дополнительных модулей. Этот бэкдор также имеет ряд возможностей, позволяющих избежать обнаружения.

В этом блоге мы более подробно рассмотрим Deadglyph и предоставим технический анализ этого бэкдора, его цели и некоторых дополнительных компонентов, которые мы получили. Мы также представляем наши выводы о Deadglyph на ЛАБСкон 2023 конференция.

Ключевые моменты поста в блоге:

  • Исследование ESET обнаружило сложный бэкдор с необычной архитектурой, который мы назвали Deadglyph.
  • Основные компоненты зашифрованы с использованием машинного ключа.
  • Традиционные команды бэкдора реализуются через дополнительные модули, получаемые с его командного сервера.
  • Из множества модулей мы получили три — создатель процессов, программа чтения файлов и сборщик информации.
  • Мы относим Deadglyph к группе Stealth Falcon.
  • Кроме того, мы нашли соответствующий загрузчик шеллкода; мы предполагаем, что его потенциально можно использовать для установки Deadglyph.

Жертвой анализируемого проникновения является правительственное учреждение на Ближнем Востоке, которое было скомпрометировано в шпионских целях. Соответствующий образец, найденный на VirusTotal, также был загружен на платформу сканирования файлов из этого региона, в частности из Катара. Целевой регион изображен на карте в REF _Ref143614671 ч фигура 1
.

Мертвый глиф Рисунок_01
Рисунок 1. Виктимология мертвого глифа; соответствующий образец был загружен в VirusTotal из Катара (более темный цвет)

Stealth Falcon (также известный как Project Raven или FruityArmor) — группа угроз, связанная с Объединенными Арабскими Эмиратами. по данным MITRE. Известно, что организация Stealth Falcon, действующая с 2012 года, нацелена на политических активистов, журналистов и диссидентов на Ближнем Востоке. Впервые он был обнаружен и описан Citizen Lab, который опубликовал анализ кампании шпионских атак в 2016 году.

В январе 2019 года агентство Reuters опубликовало отчет о расследовании о проекте «Ворон», инициативе, предположительно использующей бывших сотрудников АНБ и преследующей те же цели, что и «Стелс Сокол». На основании этих двух отчетов, касающихся одних и тех же целей и нападений, Amnesty International заключил (Показано в REF _Ref144978712 ч фигура 2
), что Stealth Falcon и Project Raven на самом деле представляют собой одну и ту же группу.

Мертвый глиф, рисунок 2
Рисунок 2. Клаудио Гуарниери связал Stealth Falcon с проектом Raven

В сентябре 2019 года мы опубликованные исследования на бэкдоре, приписываемом Stealth Falcon, в котором использовалась необычная техника, Фоновая интеллектуальная служба передачи, для связи с C&C. Теперь мы представляем результат нашего углубленного анализа того, что предположительно является новейшим дополнением к набору шпионских инструментов Stealth Falcon.

Бэкдор мертвого глифа

Цепочка загрузки Deadglyph состоит из нескольких компонентов, как показано на рисунке. REF _Ref144978760 ч фигура 3
. Начальный компонент — это загрузчик шеллкода реестра, который загружает шеллкод из реестра. Этот извлеченный шеллкод, в свою очередь, загружает родную для x64 часть бэкдора — Executor. Впоследствии Исполнитель загружает .NET-часть бэкдора — Оркестратора. Примечательно, что единственным компонентом на диске системы в виде файла является исходный компонент, который имеет форму динамически подключаемой библиотеки (DLL). Остальные компоненты зашифрованы и хранятся в двоичном значении реестра.

Мертвый глиф Рисунок_02
Рисунок 3. Компоненты цепочки загрузки Deadglyph

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

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

Загрузчик шеллкода реестра

Исходный компонент Deadglyph — это крошечная DLL с единственным экспортом, называемая 1. Этот компонент сохраняется с помощью Подписка на события инструментария управления Windows (WMI) и служит загрузчиком шелл-кода реестра. Выполняется через командную строку rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

Загрузчик шеллкода реестра начинает свою работу с расшифровки пути к зашифрованному шеллкоду, хранящемуся в реестре Windows, с помощью RC4. Мы подозреваем, что путь уникален для каждой жертвы; в рассматриваемом здесь случае путь к реестру был:

SoftwareClassesCLSID{5abc7f42-1112-5099-b082-ce8d65ba0c47}cAbRGHLg

Корневой ключ реестра либо HKLM or HKCU, в зависимости от того, запущен ли текущий процесс с повышенными привилегиями или нет. Ту же логику можно найти и в других компонентах.

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

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

Мы обнаружили гомоглифическую атаку, имитирующую корпорацию Microsoft, в ИНФОРМАЦИЯ О ВЕРСИИ ресурс этого и других компонентов PE. В этом методе используются отдельные символы Юникода, которые визуально похожи, но в данном случае не идентичны исходным символам, в частности греческой заглавной букве Сан (U+03FA, Ϻ) и кириллической строчной букве О (U+043E, о) в ϺICRоsофут корпоратиоn.

Шеллкод реестра

Шелл-код реестра состоит из двух частей: процедуры расшифровки и зашифрованного тела. Сначала процедура дешифрования поворачивает каждый байт зашифрованного тела влево на один (РОЛ 0x01). В дальнейшем управление передается этому расшифрованному телу. Расшифрованное тело состоит из PE-загрузчика и PE-файла, причем последний является исполнителем и представляет собой собственную часть бэкдора. Этот загрузчик отвечает за анализ и загрузку связанного PE-файла.

душеприказчик

Executor — это встроенная часть x64 бэкдора Deadglyph, которая выполняет следующие действия:

  • загружает его конфигурацию,
  • инициализирует среду выполнения .NET,
  • загружает встроенную .NET-часть бэкдора (оркестратора) и
  • действует как библиотека для Оркестратора.

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

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

{HKCU|HKLM}SoftwareClassesCLSID{ }(По умолчанию)

— это сгенерированный GUID, уникальный для каждой жертвы.

После этого инициализируется среда выполнения .NET, затем Executor RC4 расшифровывает .NET-часть бэкдора, известную как Orchestrator. Оркестратор находится внутри .rsrc раздел Исполнителя. В конфигурации в качестве точки входа указывается метод выполнения Оркестратора. Кроме того, предусмотрена четкая структура для облегчения доступа Оркестратора к функциям Исполнителя.

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

Orchestrator

Написанный на .NET, Оркестратор является основным компонентом бэкдора Deadglyph. Основная роль этого компонента включает установление связи с C&C-сервером и выполнение команд, часто выполняемых через промежуточную роль Исполнителя. В отличие от предыдущих компонентов, Оркестратор запутан и использует .NET Reactor. Внутренне бэкдор называется агент, которое является общим названием клиентской части в различных средах постэксплуатации.

Инициализация

Оркестратор сначала загружает из ресурсов свою конфигурацию и два встроенных модуля, каждый из которых сопровождается собственным набором конфигураций. Эти ресурсы выкачивать сжатый и AES зашифровано. На них ссылается идентификатор, который представляет собой хэш SHA-1 с именем ресурса. Обзор этих ресурсов представлен в REF _Ref111452440 ч Настольные 1
.

Таблица 1. Ресурсы оркестратора

 

Название ресурса

Идентификатор (десятичный)

Идентификатор (шестнадцатеричный)

Описание

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Конфигурация оркестратора.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

Сетевой модуль.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

Конфигурация сетевого модуля.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Модуль таймера.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Конфигурация модуля таймера.

Конфигурация Оркестратора и встроенных модулей хранится в формате XML. Пример конфигурации Оркестратора показан на рисунке. REF _Ref111452611 ч
фигура 4
.

Мертвый глиф Рисунок_04
Рисунок 4. Конфигурация Оркестратора

Описание записей конфигурации Orchestrator показано в REF _Ref111452782 ч Настольные 2
.

Таблица 2. Записи конфигурации Оркестратора

Основные

Описание

k


Ключ AES, используемый для сохранения конфигураций модуля.

a


Имя метода инициализации сетевого модуля.

b


Неизвестный флаг, связанный с сетевым модулем.

c


Имя метода инициализации модуля таймера.

d


Флаг, разрешающий использование машинного ключа AES (системный UUID) для ресурсов.

p


Идентификатор ресурса сетевого модуля.

t


Идентификатор ресурса модуля таймера.

После загрузки компонентов ресурсов создается несколько потоков для выполнения отдельных задач. Один из этих потоков отвечает за проверку среды — функцию, реализованную в Executor. Другая ветка посвящена налаживанию периодической связи с C&C-сервером, позволяющей получать команды. Наконец, набор из трех потоков используется для выполнения полученных команд и последующей передачи любого сгенерированного вывода обратно на C&C-сервер.

Поток проверки среды отслеживает запущенные процессы на предмет выявления нежелательных. Этот поток работает с двумя отдельными списками имен процессов. Если обнаружен процесс из первого списка, связь C&C и выполнение команд приостанавливаются до тех пор, пока нежелательный процесс перестанет существовать. Если какой-либо процесс из второго списка соответствует какому-либо процессу, бэкдор немедленно завершает работу и удаляется.

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

Связь

Оркестратор использует два встроенных модуля для связи с командным центром — Таймер и Сеть. Как и Оркестратор, эти модули запутаны с помощью .NET Reactor. Конфигурация для обоих модулей предоставляется Оркестратором. В Orchestrator включена предустановленная конфигурация модулей; при желании Оркестратор также может загрузить обновленную версию конфигурации из реестра:

{HKCU|HKLM}SoftwareClassesCLSID{ }

Бэкдор содержит интересную меру безопасности, связанную с общением. Если бэкдор не может установить связь с командным сервером в течение времени, превышающего заранее заданный порог, настроенный в Исполнителе, срабатывает механизм самоудаления. Этот временной порог указан в часах и в рассматриваемом случае был установлен на уровне одного часа.

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

Модуль таймера

Этот небольшой модуль выполняет указанный обратный вызов с настраиваемым интервалом. Он используется Оркестратором в сочетании с Сетевым модулем для периодической связи с C&C-сервером. Чтобы предотвратить создание обнаруживаемых шаблонов в сетевых журналах, интервал выполнения рандомизируется на основе процентного значения, указанного в конфигурации. В анализируемом примере интервал был установлен в пять минут с отклонением ±20% для случайности.

Другой способ избежать обнаружения сетевых шаблонов при периодическом общении — это генерация запросов, отправляемых на C&C-сервер. Этот механизм, реализованный в Executor, включает в себя включение в запросы заполнения различной длины, состоящего из случайных байтов, что приводит к запросам разных размеров.

Сетевой модуль

Модуль «Сеть» реализует связь с командными серверами, указанными в его конфигурации. Он может отправлять данные на C&C-сервер с помощью запросов HTTP(S) POST. Примечательно, что он предлагает несколько механизмов для получения сведений о конфигурации прокси. Эта функция предполагает потенциальное внимание к средам, где прямой доступ в Интернет недоступен.

Пример расшифрованной (и украшенной) конфигурации показан на REF _Ref144978805 ч фигура 5
.

Мертвый глиф Рисунок_06
Рисунок 5. Конфигурация сетевого модуля

Записи конфигурации содержат сведения, связанные с сетевыми коммуникациями: URL-адреса C&C, пользовательский агент HTTP и, при необходимости, конфигурацию прокси-сервера.

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

Команды

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

  • Задачи оркестратора,
  • Задачи исполнителя и
  • Загрузить задачи.

Первые два типа принимаются от C&C-сервера, а третий создается внутри компании для загрузки вывода команд и ошибок.

Задачи оркестратора

Задачи Оркестратора дают возможность управлять настройкой модулей «Сеть» и «Таймер», а также отменять ожидающие задачи. Обзор задач Оркестратора показан на странице REF _Ref111101783 ч Настольные 3
.

Таблица 3. Задачи оркестратора

Тип

Описание

0x80


Установите конфигурацию сетевых и таймерных модулей.

0x81


Получите конфигурацию сетевых и таймерных модулей.

0x82


Отменить задачу.

0x83


Отмените все задачи.

Задачи исполнителя

Задачи-исполнители дают возможность управлять бэкдором и выполнять дополнительные модули. Примечательно, что традиционная функциональность бэкдора не присутствует в самом двоичном файле. Вместо этого эти функции получаются с C&C-сервера в виде PE-файлов или шелл-кода. Полный потенциал бэкдора остается неизвестным без этих дополнительных модулей, которые эффективно раскрывают его истинные возможности. Обзор задач модуля показан на REF _Ref117677179 ч Настольные 4
, который включает подробную информацию о нескольких идентифицированных модулях. Сходным образом, REF _Ref117677188 ч Настольные 5
предоставляет обзор задач управления, связанных с Исполнителем.

Таблица 4. Задачи исполнителя – модули

Тип

Описание

0x??–0x63


неизвестный

0x64


Программа чтения файлов

0x65


неизвестный

0x66


неизвестный

0x67


неизвестный

0x68


неизвестный

0x69


Создатель процесса

0x6A


неизвестный

0x6B


неизвестный

0x6C


Сборщик информации

0x6D


неизвестный

0x6E


неизвестный

Таблица 5. Задачи исполнителя – управление

Тип

Описание

0x6F-0x76

Не реализованы

0x77

Установить конфигурацию Исполнителя

0x78

Получить конфигурацию Исполнителя

0x79-0x7C

Не реализованы

0x7D

Обновление ПО

0x7E

Выход

0x7F

Удалить

Команда, устанавливающая конфигурацию Executor, может изменить:

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

Нам удалось получить с C&C-сервера три уникальных модуля, каждый из которых соответствует разному типу задач Исполнителя, как показано на рис. REF _Ref117677179 ч Настольные 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. По нашей оценке, всего модулей будет от девяти до четырнадцати. Поскольку модули на самом деле являются бэкдорными командами, им нужно выполнить одну базовую операцию, а затем, при необходимости, вернуть свои выходные данные. Полученные нами модули представляют собой библиотеки DLL с одним безымянным экспортом (порядковый номер 1), в котором они разрешают необходимые функции API и вызывают основную функцию.

При выполнении модули получают функцию разрешения API, которая может разрешать API Windows и пользовательские API-интерфейсы Executor. На API-интерфейсы Windows ссылаются с помощью хэша DWORD, рассчитанного на основе имени API и его библиотеки DLL. Небольшие значения хеш-функции (<41) обрабатываются особым образом, ссылаясь на функцию API-интерфейса Executor. API-интерфейс Executor включает в себя в общей сложности 39 функций, доступных модулям. Эти функции относятся к различным операциям, в том числе:

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

В оставшейся части этого раздела мы описываем полученные нами модули.

Создатель процесса

Модули 0x69 выполняет указанную командную строку как новый процесс и передает полученный результат обратно в Оркестратор. Процесс может быть создан под другим пользователем, а время его выполнения может быть ограничено. Примечательно, что необычный API вакансий используется в функциях этого модуля.

Этот модуль обслуживался с помощью командной строки cmd.exe /c список задач /v.

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

Сборщик информации

Модули 0x6C собирает обширную информацию о компьютере с помощью запросов WMI и передает ее обратно Оркестратору. Собирается информация о следующем:

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

Модули 0x64 считывает указанный файл и передает содержимое обратно Оркестратору. При желании он может удалить файл после прочтения.

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

в: Пользователи AppDataLocalMicrosoftOutlookoutlook.ost.

Цепочка с загрузчиком шеллкода

В процессе исследования Deadglyph мы столкнулись с сомнительным файлом CPL, подписанным сертификатом с истекшим сроком действия и без подписи с отметкой времени, который был загружен на VirusTotal из Катара. При ближайшем рассмотрении стало очевидно, что этот CPL-файл функционировал как многоэтапный загрузчик шелл-кода, имея определенное сходство кода с Deadglyph. Цепь загрузки показана на REF _Ref143693067 ч фигура 6
.

Мертвый глиф Рисунок_03
Рисунок 6. Цепочка загрузки загрузчика шеллкода

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

If avp.exe (процесс защиты конечных точек Касперского) запущен, %windir%system32UserAccountBroker.exe используется. В противном случае используется браузер по умолчанию. Затем он создает хост-процесс в приостановленном состоянии, внедряет шелл-код, перехватив его основной поток, и возобновляет поток.

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

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

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

Третий этап, DLL, служит загрузчиком .NET и содержит полезную нагрузку в своем файле. .rsrc .

Для загрузки полезных данных инициализируется среда выполнения .NET. Во время инициализации .NET используются два интересных метода, по-видимому, предназначенных для обхода Windows. Сканирование интерфейса сканирования на наличие вредоносных программ (AMSI):

  • Загрузчик .NET временно перехватывает GetModuleHandleW импортировать в загруженный clr.dll, во время вызова ICorRuntimeHost::Start. Хук подделывает возвращаемое значение, когда GetModuleHandleW называется с NULL,. Он возвращает указатель на фиктивный PE без разделов.
  • Затем он тонко исправляет АмсиИнициализировать импортировать строку имени в .rdata часть загруженного clr.dll в aMSIiинициализировать.

Четвертый этап — это сборка .NET, запутанная с помощью ConfuserEx, которая служит загрузчиком шелл-кода. Во-первых, он расшифровывает с помощью XOR свою конфигурацию в формате XML из своих ресурсов. Усовершенствованная версия извлеченной конфигурации представлена ​​в REF _Ref143695453 ч фигура 7
. Записи конфигурации содержат подробную информацию, связанную с сетевым взаимодействием и процессами, занесенными в черный список.

Мертвый глиф Рисунок_05
Рисунок 7. Конфигурация загрузчика шеллкода

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

Затем он отправляет HTTP-запрос GET на C&C-сервер для получения некоторого шеллкода, используя параметры, указанные в конфигурации (URL, User-Agent и, возможно, прокси). К сожалению, в ходе расследования нам не удалось получить какой-либо шеллкод с командного сервера. Тем не менее, мы предполагаем, что извлекаемый контент потенциально может служить установщиком Deadglyph.

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

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

cmd.exe выбор /CY /N /DY /T 20 и Del /f /q

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

Заключение

Мы обнаружили и проанализировали сложный бэкдор, используемый группой Stealth Falcon, который мы назвали Deadglyph. Он имеет необычную архитектуру, а возможности бэкдора предоставляются его C&C в виде дополнительных модулей. Нам удалось получить три таких модуля, раскрыв лишь часть всех возможностей Deadglyph.

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

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

По любым вопросам о наших исследованиях, опубликованных на WeLiveSecurity, обращайтесь к нам по адресу угрозаintel@eset.com.
ESET Research предлагает частные аналитические отчеты об APT и потоки данных. По любым вопросам, связанным с этой услугой, посетите ESET Аналитика угроз стр.

МНК

Файлы

SHA-1

Имя файла

обнаружение

Описание

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Загрузчик шеллкода реестра.

740D308565E215EB9B235CC5B720142428F540DB

Нет

Win64/Deadglyph.A

Бэкдор Deadglyph – Палач.

1805568D8362A379AF09FD70D3406C6B654F189F

Нет

MSIL/Deadglyph.A

Бэкдор Deadglyph – Оркестратор.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

Нет

MSIL/Deadglyph.A

Сетевой модуль Оркестратора.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

Нет

MSIL/Deadglyph.A

Модуль таймера оркестратора.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

Нет

Win64/Deadglyph.A.gen

Модуль создания процессов.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

Нет

Win64/Deadglyph.A

Модуль чтения файлов.

4E3018E4FD27587BD1C566930AE24442769D16F0

Нет

Win64/Deadglyph.A

Модуль сбора информации.

7F728D490ED6EA64A7644049914A7F2A0E563969

Нет

Win64/Инжектор.MD

Первый этап цепочки загрузчиков шеллкода.

Сертификаты

Серийный номер

00F0FB1390F5340CD2572451D95DB1D92D

отпечаток большого пальца

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

Тема CN

РХМ ЛИМИТЕД

Субъект О

РХМ ЛИМИТЕД

Тема Л

Святой Albans

Предметы

Хартфордшир

Тема С

GB

Эл. адрес

rhm@rhmlimited[.]co.uk

Действует с

2021-03-16 00:00:00

Действителен до

2022-03-16 23:59:59

C&C серверы

IP

Домен

Впервые увидели

КОММЕНТАРИЙ

185.25.50[.]60

шахматы и ссылки[.]com

2021-08-25

Командный сервер Deadglyph.

135.125.78[.]187

easymathpath[.]com

2021-09-11

Командный сервер Deadglyph.

45.14.227[.]55

присоединиться к здоровью[.]com

2022-05-29

Командный сервер загрузчика шеллкода.

Техники MITER ATT & CK

Эта таблица была построена с использованием версия 13 каркаса MITER ATT & CK.

тактика

ID

Имя

Описание

Развитие ресурсов

T1583.001

Приобретение инфраструктуры: домены

Stealth Falcon зарегистрировал домены для C&C-серверов и получил сертификат подписи кода.

T1583.003

Приобретение инфраструктуры: виртуальный частный сервер

Stealth Falcon использовала провайдеров VPS-хостинга для C&C-серверов.

T1587.001

Возможности развития: вредоносное ПО

Компания Stealth Falcon разработала специальное вредоносное ПО, включая специальные загрузчики и бэкдор Deadglyph.

T1588.003

Получите возможности: сертификаты подписи кода

Stealth Falcon получил сертификат подписи кода.

Типы

T1047

Инструментарий управления Windows

Deadglyph использует WMI для выполнения цепочки загрузки.

T1059.003

Интерпретатор команд и сценариев: командная оболочка Windows

Загрузчик шеллкода использует cmd.exe удалить себя.

T1106

Родной API

Модуль Deadglyph использует СоздатьПроцессW и CreateProcessAsUserW API-функции для выполнения.

T1204.002

Пользовательское выполнение: вредоносный файл

Цепочка загрузчика шеллкода требует, чтобы пользователь дважды щелкнул ее и выполнил.

Настойчивость

T1546.003

Выполнение по событию: подписка на события инструментария управления Windows

Исходный загрузчик Deadglyph сохраняется с помощью подписки на события WMI.

Уклонение от защиты

T1027

Замаскированные файлы или информация

Компоненты мертвого глифа зашифрованы. Deadglyph Orchestrator и встроенные модули запутываются с помощью .NET Reactor.

Загрузчик шеллкода запутан с помощью ConfuserEx.

T1070.004

Удаление индикатора: удаление файла

Deadglyph может удалить себя.

Цепочка загрузчиков шеллкода удаляет себя и файлы в кеше WebDAV.

T1112

Изменить реестр

Deadglyph хранит свою конфигурацию и зашифрованные полезные данные в реестре.

T1134

Управление токеном доступа

Deadglyph может выдавать себя за другого пользователя.

T1140

Деобфускация/декодирование файлов или информации

Deadglyph расшифровывает зашифрованные строки.

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

T1218.011

Выполнение системного двоичного прокси: Rundll32

Начальный загрузчик Deadglyph выполняется с использованием rundll32.exe.

T1480.001

Ограждения выполнения: ввод экологических ключей

Deadglyph шифруется с использованием машинного ключа, полученного из системного UUID.

T1562.001

Ослабить защиту: отключить или изменить инструменты

Загрузчик шеллкода позволяет избежать сканирования AMSI путем внесения исправлений. clr.dll в памяти .

T1620

Отражающая загрузка кода

Deadglyph рефлексивно загружает свои модули с помощью специального PE-загрузчика.

Открытие

T1007

Обнаружение системных служб

A Модуль Deadglyph обнаруживает сервисы с помощью запроса WMI. ВЫБЕРИТЕ * ИЗ Win32_Service.

T1012

Реестр запросов

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

T1016

Обнаружение конфигурации сети системы

Модуль Deadglyph обнаруживает сетевые адаптеры с помощью запросов WMI. ВЫБЕРИТЕ * ИЗ Win32_NetworkAdapter и ВЫБРАТЬ * FROM Win32_NetworkAdapterConfiguration, где InterfaceIndex=%d.

T1033

Обнаружение владельца системы/пользователя

Модуль Deadglyph обнаруживает пользователей с помощью запроса WMI. ВЫБЕРИТЕ * ИЗ Win32_UserAccount.

T1057

Обнаружение процесса

Модуль Deadglyph обнаруживает процессы с помощью запроса WMI. ВЫБРАТЬ * ИЗ Win32_Process.

T1082

Обнаружение системной информации

Модуль Deadglyph обнаруживает системную информацию, такую ​​как версия ОС, диски, переменные среды и драйверы, с помощью запросов WMI.

T1518

Обнаружение программного обеспечения

Модуль Deadglyph обнаруживает установленное программное обеспечение с помощью запроса WMI. ВЫБРАТЬ * ИЗ Win32_Product.

T1518.001

Обнаружение программного обеспечения: обнаружение программного обеспечения безопасности

Модуль Deadglyph обнаруживает программное обеспечение безопасности с помощью запросов WMI. ВЫБЕРИТЕ * ИЗ АнтивирусногоПродукта, ВЫБЕРИТЕ * ИЗ AntiSpywareProduct и ВЫБЕРИТЕ * ИЗ БрандмауэраПродукт.

Цепочка загрузчиков шеллкода проверяет запущенные процессы на предмет наличия решения безопасности.

Транспортировка

T1005

Данные из локальной системы

Deadglyph имеет модуль для чтения файлов.

Управление и контроль

T1071.001

Протокол прикладного уровня: веб-протоколы

Deadglyph и загрузчик шеллкода взаимодействуют с C&C-сервером по протоколу HTTP.

T1090

доверенное лицо

Deadglyph и загрузчик шеллкода могут использовать HTTP-прокси для связи с C&C.

T1573.001

Зашифрованный канал: симметричная криптография

Deadglyph использует AES для шифрования сообщений C&C.

эксфильтрации

T1041

Эксфильтрация через канал C2

Deadglyph использует канал C&C для эксфильтрации.

Отметка времени:

Больше от Мы живем в безопасности