WinorDLL64: Бэкдор из обширного арсенала Lazarus?

WinorDLL64: Бэкдор из обширного арсенала Lazarus?

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

Целевой регион и совпадение поведения и кода предполагают, что инструмент используется печально известной группой APT, связанной с Северной Кореей.

Исследователи ESET обнаружили одну из полезных нагрузок Загрузчик Wslink которую мы обнаружили еще в 2021 году. Мы назвали эту полезную нагрузку WinorDLL64 на основе ее имени файла. Winordll64.dll. Wslink, который имел имя файла WinorLoaderDLL64.dll, представляет собой загрузчик для двоичных файлов Windows, который, в отличие от других подобных загрузчиков, работает как сервер и выполняет полученные модули в памяти. Как следует из формулировки, загрузчик служит инструментом для загрузки полезной нагрузки или самого вредоносного ПО в уже скомпрометированную систему. Первоначальный вектор компрометации Wslink не был идентифицирован.

Первоначально неизвестная полезная нагрузка Wslink была загружена на VirusTotal из Южной Кореи вскоре после публикации нашего сообщения в блоге и попала в одно из наших правил YARA, основанное на уникальном имени Wslink. WinorDLL64. Что касается Wslink, телеметрия ESET зафиксировала лишь несколько обнаружений — в Центральной Европе, Северной Америке и на Ближнем Востоке.

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

В 2021 году мы не нашли никаких данных, которые свидетельствовали бы о том, что Wslink является инструментом известного злоумышленника. Однако после обширного анализа полезной нагрузки мы приписали WinorDLL64 в группу Lazarus APT с низкой достоверностью, основанной на целевом регионе и совпадении поведения и кода с известными образцами Lazarus.

Эта печально известная группа, связанная с Северной Кореей, действующая по крайней мере с 2009 года, несет ответственность за громкие инциденты, такие как Взлом Sony Pictures Entertainment и десятки миллионов долларов киберограбления в 2016 году, WannaCryptor (известная как WannaCry) в 2017 году и долгая история подрывных атак на Общественная и критическая инфраструктура Южной Кореи по крайней мере с 2011 года. US-CERT и ФБР называют эту группу СКРЫТАЯ КОБРА.

Основываясь на наших обширные знания Из деятельности и операций этой группы мы считаем, что Lazarus состоит из большой команды, которая систематически организована, хорошо подготовлена ​​и состоит из нескольких подгрупп, использующих большой набор инструментов. В прошлом году мы обнаружил инструмент Lazarus который воспользовался CVE-2021-21551 уязвимость для нападения на сотрудника аэрокосмической компании в Нидерландах и политического журналиста в Бельгии. Это было первое зарегистрированное злоупотребление уязвимостью; в сочетании инструмент и уязвимость привели к ослеплению мониторинга всех решений безопасности на скомпрометированных машинах. Мы также предоставили подробное описание структура виртуальной машины используется в образцах Wslink.

В этом сообщении блога объясняется принадлежность WinorDLL64 к Lazarus и проводится анализ полезной нагрузки.

Ссылки на Лазаря

Мы обнаружили совпадения как в поведении, так и в коде с образцами Lazarus из Операция GhostSecret и Имплантат Бэнкшота описано McAfee. Описание имплантатов в статьях GhostSecret и Bankshot частично совпадает по функциональности с WinorDLL64, и мы обнаружили некоторое совпадение кода в примерах. В этом блоге мы будем использовать только FE887FCAB66D7D7F79F05E0266C0649F0114BA7C образец из GhostSecret для сравнения с WinorDLL64 (1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F), если не указано иное.

Следующие детали обобщают подтверждающие факты для нашей низкой достоверности атрибуции Лазаря:

1. Виктимология

  • Коллеги-исследователи из AhnLab подтвердили южнокорейские жертвы Wslink в своей телеметрии, что является важным показателем, учитывая традиционные цели Lazarus, и что мы наблюдали лишь несколько попаданий.

Рисунок 1. Заявленная жертва из Южной Кореи, где mstoned7 — исследователь из Ahnlab.

2. Вредоносное

  • Последний образец GhostSecret, о котором сообщает McAfee (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) с февраля 2018 года; мы обнаружили первый образец Wslink в конце 2018 года, а коллеги-исследователи сообщили об успехах в августе 2018 года, которые они раскрыли после нашей публикации. Следовательно, эти образцы были обнаружены с относительно коротким периодом времени друг от друга.
  • Ассоциация PE расширенные заголовки указывают на то, что та же среда разработки и проекты аналогичного размера использовались в нескольких других известных образцах Lazarus (например, 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Мы обнаружили это совпадение, используя следующие правила, которые охватывают только эти образцы Wslink и Lazarus, что является индикатором с низким весом. Мы протестировали их на Ретроохота VirusTotal и наш внутренний корпус файлов.

rich_signature.length == 80 и
pe.rich_signature.toolid(175, 30319) == 7 и
pe.rich_signature.toolid(155, 30319) == 1 и
pe.rich_signature.toolid(158, 30319) == 10 и
pe.rich_signature.toolid(170, 30319) >= 90 и
pe.rich_signature.toolid(170, 30319) <= 108

Это правило можно перевести в следующую нотацию, более удобочитаемую и используемую VirusTotal, где можно увидеть версию продукта и ID сборки (VS2010, сборка 30319), количество и тип используемых исходных/объектных файлов ([LTCG С++] где LTCG расшифровывается как Link Time Code Generation, [КАК М], [С]), и количество экспортов ([ОПЫТ]) в правиле:

[LTCG C++] VS2010, сборка 30319, количество = 7
[ОПЫТ] VS2010, сборка 30319, количество = 1
[ASM] VS2010, сборка 30319, количество = 10
[ C ] VS2010 build 30319 подсчет в [ 90 .. 108 ]

  • В статье GhostSecret описывается «уникальный компонент для сбора данных и установки имплантатов, который прослушивает порт 443 для входящих подключений к управляющему серверу», который дополнительно работает как служба. Это точное описание поведения загрузчика Wslink, за исключением номера порта, который может различаться в зависимости от конфигурации. Подводя итог, несмотря на то, что реализация различна, обе служат одной и той же цели.
  • Загрузчик виртуализируется с помощью Code Virtualizer от Oreans, коммерческого протектора, который используется часто от Лазаря.
  • Загрузчик использует модуль памяти библиотека для загрузки модулей прямо из памяти. Библиотека обычно не используется вредоносными программами, но довольно популярна среди групп, связанных с Северной Кореей, таких как Lazarus и Kimsuky.
  • Перекрытие в коде между WinorDLL64 и GhostSecret, которое мы обнаружили в ходе нашего анализа. Результаты и значимость в атрибуции перечислены в таблице 1.

Таблица 1. Сходства между WinorDLL64 и GhostSecret и их значимость для отнесения обоих к одному и тому же субъекту угрозы

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

Перекрытие кода в функциях отправки файлов выделено на рисунках 2 и 3.

Рисунок 2. GhostSecret отправляет файл

Рисунок 3. Wslink отправляет файл

Технический анализ

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

Рисунок 4. Визуализация связи Wslink

Бэкдор представляет собой DLL с одним безымянным экспортом, принимающим один параметр — структуру для связи, которая уже была описана в нашей статье. предыдущий пост. Структура содержит TLS-контекст — сокет, ключ, IV — и обратные вызовы для отправки и получения сообщений, зашифрованных с помощью 256-битного AES-CBC, которые позволяют WinorDLL64 безопасно обмениваться данными с оператором по уже установленному соединению.

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

  • Уникальная структура везде используется ожидаемым образом, например, TLS-контекст и другие значимые параметры передаются в ожидаемом порядке в правильные колбэки.
  • Имя DLL Winordll64.dll и имя Wslink было WinorLoaderDLL64.dll.

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

Рисунок 5. Основная часть контура приема команд бэкдора

Список команд с нашими метками показан на рис. 6.

Рисунок 6. Список команд

Таблица 2 содержит сводку команд WinorDLL64, где измененные и старые категории относятся к взаимосвязи с ранее задокументированными функциями GhostSecret. Мы выделяем только существенные изменения в измененной категории.

Таблица 2. Обзор команд бэкдора

Категории Идентификатор команды Функциональность системы Описание
Новые 0x03 Выполнить команду PowerShell WinorDLL64 предписывает интерпретатору PowerShell запускаться без ограничений и считывать команды со стандартного ввода. После этого бэкдор передает указанную команду интерпретатору и отправляет вывод оператору.
0x09 Сжать и скачать каталог WinorDLL64 рекурсивно перебирает указанный каталог. Содержимое каждого файла и каталога сжимается отдельно и записывается во временный файл, который затем отправляется оператору, а затем безопасно удаляется.
0x0D Отключить сеанс Отключает указанного пользователя, вошедшего в систему, от сеанса служб удаленных рабочих столов пользователя. Команда также может выполнять различные функции в зависимости от параметра.
0x0D Список сеансов Собирает различные данные обо всех сессиях на устройстве жертвы и отправляет их оператору. Команда также может выполнять различные функции в зависимости от параметра.
0x0E Измерьте время соединения Использует Windows API GetTickCount для измерения времени, необходимого для подключения к указанному хосту.
Модифицированный 0x01 Получить информацию о системе Собирает подробные сведения о системе жертвы и отправляет их оператору.
0x0A Безопасное удаление файлов Заменяет указанные файлы блоком случайных данных, переименовывает каждый файл в случайное имя и, наконец, безопасно удаляет их один за другим.
0x0C Убить процессы Завершает все процессы, имена которых соответствуют предоставленному шаблону и/или определенному PID.
Старый 0x02/0x0B Создать процесс Создает процесс либо как текущий, либо как указанный пользователь и при необходимости отправляет его вывод оператору.
0x05 Установить/получить текущий каталог Пытается установить и впоследствии получить путь к текущему рабочему каталогу.
0x06 Список томов Перебирает диски от C: до Z: и получает тип диска и имя тома. Команда также может выполнять различные функции в зависимости от параметра.
0x06 Список файлов в каталоге Перебирает файлы в указанном каталоге и получает такую ​​информацию, как имена, атрибуты и т. д. Команда также может выполнять различные функции в зависимости от параметра.
0x07 Записать в файл Загружает и добавляет указанный объем данных в указанный файл.
0x08 Читать из файла Указанный файл считывается и отправляется оператору.
0x0C Список процессов Получает информацию обо всех запущенных процессах на устройстве жертвы и дополнительно отправляет ID текущего процесса.

Заключение

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

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

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

МНК

SHA-1 Имя обнаружения ESET Описание
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Дамп памяти обнаруженной полезной нагрузки Wslink WinorDll64.

Техники MITER ATT & CK

Эта таблица была построена с использованием версия 12 фреймворка ATT&CK. Мы не упоминаем технику от загрузчика снова, только полезную нагрузку.

тактика ID Фамилия Описание
Развитие ресурсов T1587.001 Возможности развития: вредоносное ПО WinorDLL64 — это настраиваемый инструмент.
Типы T1059.001 Интерпретатор команд и сценариев: PowerShell WinorDLL64 может выполнять произвольные команды PowerShell.
T1106 Родной API WinorDLL64 может выполнять дальнейшие процессы, используя СоздатьПроцессW и CreateProcessAsUserW API-интерфейсы.
Уклонение от защиты T1134.002 Управление токеном доступа: создание процесса с токеном WinorDLL64 может вызывать API WTSQueryUserToken и CreateProcessAsUserW создать процесс под олицетворенным пользователем.
T1070.004 Удаление индикатора: удаление файла WinorDLL64 может безопасно удалять произвольные файлы.
Открытие T1087.001 Обнаружение учетной записи: локальная учетная запись WinorDLL64 может перечислять сеансы и перечислять связанных пользователей и имена клиентов, среди других деталей.
T1087.002 Обнаружение учетной записи: учетная запись домена WinorDLL64 может перечислять сеансы и перечислять связанные доменные имена, среди прочего.
T1083 Обнаружение файлов и каталогов WinorDLL64 может получать списки файлов и каталогов.
T1135 Обнаружение сетевых ресурсов WinorDLL64 может обнаруживать общие сетевые диски.
T1057 Обнаружение процесса WinorDLL64 может собирать информацию о запущенных процессах.
T1012 Реестр запросов WinorDLL64 может запрашивать реестр Windows для сбора информации о системе.
T1082 Обнаружение системной информации WinorDLL64 может получать такую ​​информацию, как имя компьютера, ОС и последняя версия пакета обновлений, архитектура процессора, имя процессора и объем свободного места на фиксированных дисках.
T1614 Обнаружение местоположения системы WinorDLL64 может получить название страны жертвы по умолчанию, используя GetLocaleInfoW API.
T1614.001 Обнаружение местоположения системы: обнаружение языка системы WinorDLL64 может получить язык жертвы по умолчанию, используя GetLocaleInfoW API.
T1016 Обнаружение конфигурации сети системы WinorDLL64 может перечислять информацию о сетевом адаптере.
T1049 Обнаружение системных сетевых подключений WinorDLL64 может собирать список прослушиваемых портов.
T1033 Обнаружение владельца системы/пользователя WinorDLL64 может перечислять сеансы и перечислять связанные имена пользователей, доменов и клиентов, среди прочего.
Транспортировка T1560.002 Архивировать собранные данные: Архивировать через библиотеку WinorDLL64 может сжимать и удалять каталоги, используя быстро библиотека.
T1005 Данные из локальной системы WinorDLL64 может собирать данные об устройстве жертвы.
Влияние T1531 Удаление доступа к учетной записи WinorDLL64 может отключить вошедшего в систему пользователя от указанных сеансов.

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

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