MEME#4CHAN Attack/Phishing Campaign IOCs

phishing IOC

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

MEME#4CHAN

В течение последних нескольких месяцев команда исследования угроз Securonix выявила и отследила интересную и продолжающуюся кампанию атак. Атакующая кампания (отслеживаемая Securonix как MEME#4CHAN) использовала довольно необычный код PowerShell, наполненный мемами, а затем сильно обфусцированную полезную нагрузку XWorm для заражения своих жертв. Сегодня мы погрузимся в эту кампанию, проведя глубокий технический анализ всей цепочки атак, начиная с образцов фишинговых писем, рассматривая методы обфускации и заканчивая анализом конечной бинарной полезной нагрузки, которая декодируется из сборок .NET в PowerShell.

Впервые о цепочке атак с использованием полезной нагрузки XWorm сообщили исследователи угроз из компании Elastic. Сегодня мы рассмотрим некоторые новые уникальные полезные нагрузки, а также новые методы обфускации, используемые злоумышленниками, которые не были описаны ранее. Мы также предоставим новые образцы, IoCs и обнаружения, которые мы отслеживали с момента начала кампании несколько месяцев назад.

Атака начинается с вредоносного документа Microsoft Office Word и, судя по всему, направлена на различные предприятия, в том числе на адреса электронной почты Германии / .de. Вложения Microsoft Word вышли из употребления с тех пор, как Microsoft решила отключить выполнение макросов по умолчанию, однако сегодня, когда мы изучаем один из собранных образцов, попытка выполнения кода из документа без макросов все еще используется.

Кампания [MEME#4CHAN] представляет собой уникальную цепочку атак, состоящую из выполнения PowerShell и JavaScript, исходящих из вредоносного файла документа Word.

Выполнение кода CSharp, содержащегося в основном сценарии PowerShell, используется для доставки конечной полезной нагрузки, которая заканчивается выполнением XWorm v3.1. Ниже приведена диаграмма общей цепочки атак. Далее мы подробно рассмотрим каждую часть цепочки атак.

MEME#4CHAN

Как и многие современные атаки, которые мы наблюдаем в наши дни, MEME#4CHAN обычно начинается с фишингового письма. Эти атаки, как представляется, основаны на известной схеме фишинга поддельных бронирований гостиниц. Цель состоит в том, чтобы заставить сотрудника компании открыть прикрепленный фишинговый документ, который запустит начальную часть атаки на выполнение кода. Как правило, тема, тело и даже содержимое прикрепленного фишингового письма призваны создать ощущение срочности, чтобы скрыть любые потенциально необычные запросы.

Детали фишингового письма

В одном примере фишинговое электронное письмо содержало тему "Бронирование номера" с кратким сообщением в теле, содержащим общий текст с запросами на бронирование номеров. Как оказалось, письмо было отправлено с адреса "zoe[at]kbowlingslaw.com", однако после изучения заголовка выяснилось, что фактический отправитель был с адреса Gmail: "panelnew12[at]gmail.com".

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

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

Этап 1: Анализ вложений электронного письма: Подробности для бронирования.docx

На протяжении всей этой статьи мы будем следить за цепочкой атак на один документ, хотя другие были в целом похожи и приводили к одному и тому же конечному результату. В данном примере вложением электронного письма является один файл документа Microsoft Word с именем "Details for booking.docx". При его открытии перед отображением любого содержимого появляется запрос пользователю, спрашивающий его, хочет ли он обновить документ с помощью файлов, связанных извне.

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

Документ не содержит макросов или различимого p-кода, что означает, что выполнение макросов не является вектором атаки для фишингового документа.

Вместо того чтобы использовать макросы для выполнения вредоносного VBscript, в этом документе используется известная уязвимость прошлого года (CVE-2022-30190). Вкратце, эта уязвимость работает путем встраивания внешних объектов, содержащихся в файле отношений, в текстовый файл .docx. Эти файлы отношений могут ссылаться на внешние объекты, включенные в документ.

В данном примере нижний колонтитул документа содержал объект shape, который был использован злоумышленниками. Объект формы использовал файл отношений нижнего колонтитула "footer2.xml.rels" для получения внешних объектов.

Файл отношений содержит две ссылки на внешние ресурсы.

  • hxxps://huskidkifklaoksikfkfijsju.blogspot[.]com/atom.xml
  • hxxps://73cceb63-7ecd-45e2-9eab-f8d98aab177f.usrfiles.com/ugd/73cceb_b5b6005e2aa74cf48cd55dca1a2ff093[.]docx

Ссылающийся файл 73cceb_b5b6005e2aa74cf48cd55dca1a2ff093.docx оказывается пустым файлом документа MS, содержащим единственную картинку с маленьким белым квадратом. Та же тактика выполнения кода повторяется с тем же URL Blogspot, что и в оригинале.

Другой URL-адрес, содержащийся в оригинальном фишинговом документе, ссылается на файл atom.xml, размещенный на Usrfiles, публичной службе обмена файлами. Этот файл перенаправляет на другой URL-адрес, который загружает и выполняет сценарий PowerShell, размещенный по адресу:

hxxps://73cceb63-7ecd-45e2-9eab-f8d98aab177f.usrfiles[.]com/ugd/73cceb_e5a698286daf43ac87b4544a35b1a482.txt

Некоторые документы, которые Securonix наблюдали, выполняли код PowerShell, содержащийся непосредственно в файле atom.xml, в то время как другие, как в данном случае, ссылались на отдельный URL, содержащий вредоносный код PowerShell.

Этап 2: выполнение PowerShell

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

Сценарий начинается с остановки процессов RegSvcs и Msbuild. Далее мы рассмотрим, почему это важно. После этого внутри C:\ProgramData\ создается каталог MEMEMAN, в котором будет храниться большинство вредоносных программ.

Переменная $NuclearDefusion содержит сценарий на языке CSharp, который выполняет несколько задач. Во-первых, в самом начале есть функция деобфускации с именем £££, которая используется для шестнадцатеричного декодирования некоторых других переменных в дальнейшем.

Две дополнительные переменные, каждая со своим собственным кодом PowerShell, находятся внутри переменной $amsii, содержащейся в функции JJJI:

$AMI: Эта переменная содержит длинную шестнадцатеричную строку, закодированную тройным шестнадцатеричным кодом. После расшифровки мы получаем простую обфусцированную технику обхода AMSI, которая использует метод отражения Мэтта Грэбера для разрушения экземпляра AMSI (Anti-malware Scan Interface) для текущего сеанса PowerShell. Это предотвратит проверку последующего кода на наличие вредоносного содержимого.

Далее создается ключ реестра в разделе "HKCU:\\\Software\Classes\CLSID\{fdb00e52-a214-4aa1-8fba-4357bb0072ec}\InProcServer32" со значением по умолчанию "C:\IDontExist.dll" Это изменение реестра также помогает отключить AMSI, переопределяя COM-объект Microsoft Defender для AMSI и указывая его на несуществующую DLL.

$DEF: Эта переменная содержит код PowerShell для повторного отключения AMSI с помощью тех же двух методов, что и раньше, только обфусцированных по-другому. Кроме того, защитные исключения создаются практически для всего на хосте с помощью модуля PowerShell "Add-MpPreference".

В конце сценария создается новый локальный пользователь с именем "System32" и паролем 123. Затем новый локальный пользователь добавляется в группы администраторов и пользователей удаленного рабочего стола. И, наконец, отключается брандмауэр Windows.

Продвигаясь по сценарию Csharp, мы сталкиваемся с еще одной обфусцированной переменной под названием $CHOTAbheem, которая содержит длинную закодированную строку. Далее мы видим, что для ее декодирования используется функция £££.

Приведенный выше сценарий использует COM-объект WScript.shell "{40FC6ED5-2438-11CF-A3DB-080036F12502}" для выполнения переменной $NuclearDefusion, которую мы увидим позже записанной на диск. Таким образом, мы выполнили первую половину исходного сценария PowerShell.

Код, на который ссылается первая половина сценария, записывается на диск и сохраняется в каталоге "C:\ProgramData\MEMEMAN" под именем "CypherDeptography.~+~" с помощью метода PowerShell [IO.File]::WriteAllText.

Далее давайте посмотрим, что скрывается за переменной $allsave. После расшифровки с помощью того же метода, который мы использовали для расшифровки переменной $CHOTAbheem, мы сталкиваемся с сильно обфусцированным однострочным сценарием JScript, как показано на рисунке ниже.

После расшифровки сценарий, стоящий за $allsave, похож на сценарий $CHOTAbheem. Однако, похоже, что он вызывает переменную, на которую ссылается основной скрипт:

hxxps://backuphotelall.blogspot[.]com/atom.xml

К сожалению, Securonix не смогли извлечь этот скрипт, так как URL Blogspot в какой-то момент был удален. Однако мы можем предположить, что он похож на оригинальный скрипт atom.xml.

Далее по списку идет повторяющаяся функция (вероятно, для избыточности), в которой расшифровывается переменная $shakalakaboomboom. В конце концов, снова преодолевая слои обфускации, он получает еще один файл atom.xml по следующему URL:

hxxps://3000allfitheyito.blogspot[.]com/atom.xml

Постоянство устанавливается путем записи обфусцированного кода JScript на диск и сохранения его как \ZeeNEWsTV\UpdateEscan.js с помощью метода WriteAllText. Затем создается запланированная задача EscanDissldo, ссылающаяся на только что созданный файл, которая запускается раз в 200 минут.

schtasks /create /sc MINUTE /mo 200 /tn EscanDissldo /F /tr "wscript.exe //b //e:jscript C:\\\ProgramData\\\MEMEMAN\\\\UpdateEscan.js"

Следующий уровень постоянства происходит в последних 4 строках кода, где все содержимое из каталога staging ("C:\ProgramData\MEMEMAN\") копируется в каталог запуска пользователя. Он определяется с помощью "[environment]::getfolderpath("Startup")".

Наконец, сценарий удаляет сценарий декодирования CSharp или любой файл, заканчивающийся на *.~+~ из каталога запуска.

Этап 3: Выполнение двоичного файла

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

Оба двоичных файла внедряются в процесс RegSvcs.exe или Msbuild.exe с помощью выполнения в памяти с использованием сборок .NET через отражение. Для справки, переменная $Ripple содержит шестнадцатеричные двоичные данные для sssss.exe, которые мы рассмотрим далее.

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

[Reflection.Assembly]::Load("Salmankhan($pp").GetType("A.B").GetMethod(C).Invoke($null,{[OBJECT[]]}, ("C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegSvcs.exe", $Ripple)

[Reflection.Assembly]::Load("Salmankhan($pp").GetType("A.B").GetMethod(C).Invoke($null,{[OBJECT[]]}, ("C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe", $Ripple)

[Reflection.Assembly]::Load("Salmankhan($pp").GetType("A.B").GetMethod(C).Invoke($null,{[OBJECT[]]}, ("C:\Windows\Microsoft.NET\Framework\v3.5\Msbuild.exe", $Ripple)

Судя по некоторым жестко закодированным строкам, это XWorm V3.1, который, что интересно, был недавно взломан и опубликован в Интернете.

Анализ бинарного файла: sssss.exe

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

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

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

  • "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0".
  • "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1, как Mac OS X) AppleWebKit/605.1.15 (KHTML, как Gecko) Version/11.0 Mobile/15E148 Safari/604.1"
  • "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/60.0.3112.113 Safari/537.36"

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

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

Command Details
rec Перезапустить приложение
CLOSE Закрыть приложение
Uninstall Очищает все файлы RAT, ключи реестра, запланированные задачи, затем выходит из программы
update Запускает функцию деинсталляции, распаковывает файл из потока байт, открывает новый поток памяти
DW Записывает файл .ps1 с сервера злоумышленника и выполняет его с помощью команды: powershell.exe -ExecutionPolicy Bypass -File "filename.ps1"
FM Берет сборку из предоставленного массива байтов, затем создает экземпляр типа точки входа сборки и вызывает его.
LN Загружает файл и выполняет его с помощью Process.Start(filename).
Urlopen Выполняет HTTP GET запрос на предоставленный URL для браузера по умолчанию.
Urlhide Аналогично Urlopen, но веб-соединение создается в самом бинарном файле, скрытом от пользователя.
PCShutdown Выключает машину жертвы с помощью следующей команды:
shutdown.exe /f /s /t 0
PCRestart Перезагружает машину жертвы с помощью следующей команды:
shutdown.exe /f /r /t 0
PCLogoff Выводит пользователя из системы, используя следующую команду:
shutdown.exe -L
StartDDos Начинает DDos-атаку на цель
StopDDos Останавливает DDos-атаку
StartReport Пытается прервать существующий поток и затем создать новый поток для экземпляра с переданными параметрами
StopReport Останавливает вновь созданный поток
Xchat Открыть сокет и отправить указанные данные на машину злоумышленника
ngrok Открыть сокет и использовать функциональность ngrok
plugin Unknown: Похоже, проверяет наличие данных, связанных с "плагином"
savePlugin Неизвестно: обработка дополнительных данных, связанных с плагином
OfflineGet Выполняет проверку подключения
Cap Захватывает рабочий стол текущего пользователя

Другие функциональные возможности включают мониторинг буфера обмена, командную оболочку, возможности DOS, отключение/включение UAC и возможность вызвать BSOD.

В дополнение к вышеперечисленным функциям, RAT также использует объекты WMI для получения дополнительных данных, таких как антивирусная информация, информация о дате и времени. Хотя строки подключения были сильно замаскированы в исполняемом файле, динамический анализ позволил обнаружить подключение со следующей информацией:

  • 212.87.204[.]83:3000
  • Port3000newspm.duckdns[.]org

Методология атаки схожа с TA558, где фишинговые электронные письма были направлены на гостиничный бизнес. TA558 также обычно использует широкий спектр артефактов C2-кампании и полезной нагрузки, схожих, но не совпадающих с тем, что мы наблюдали в кампании MEME#4CHAN.

Исходя из кода на тему английских мемов и ссылок на 4chan, можно предположить, что вредоносный агент угрозы происходит из англоязычной группы, например, из Великобритании или США. Некоторые вредоносные атаки, по-видимому, направлены на жертв в Германии.

Indicators of Compromise

IPv4 Port Combinations

  • 212.87.204.83:3000

Domains

  • port3000newspm.duckdns.org

URLs

  • https://3000allfitheyito.blogspot.com/atom.xml
  • https://42502d2a-e7ed-4a16-9f11-33ffe6c54021.usrfiles.com/ugd/42502d_fb4a2f640cf14ab2a8bcbde16bd178ba.txt
  • https://529f38d0-3744-4286-b484-be860d475d25.usrfiles.com/ugd/529f38_41875cf4c8844415994858b3623063f9.txt
  • https://73cceb63-7ecd-45e2-9eab-f8d98aab177f.usrfiles.com/ugd/73cceb_16620dd76e094b4888c85467a58e79df.txt
  • https://73cceb63-7ecd-45e2-9eab-f8d98aab177f.usrfiles.com/ugd/73cceb_b5b6005e2aa74cf48cd55dca1a2ff093.docx
  • https://73cceb63-7ecd-45e2-9eab-f8d98aab177f.usrfiles.com/ugd/73cceb_e5a698286daf43ac87b4544a35b1a482.txt
  • https://backuphotelall.blogspot.com/atom.xml
  • https://bakc5002.blogspot.com/atom.xml
  • https://billielishhui.blogspot.com/atom.xml
  • https://doccallingupdate.blogspot.com/atom.xml
  • https://huskidkifklaoksikfkfijsju.blogspot.com/atom.xml
  • https://port5000duki.blogspot.com/atom.xml
  • https://powpowpowff.blogspot.com/atom.xml
  • https://urlintimacygoombguch.blogspot.com/atom.xml
  • https://urlpropogationintimitacyi.blogspot.com/atom.xml
  • https://www.mediafire.com/file/79jzbqigitjp2v2
  • https://www.mediafire.com/file/giv692dqvctosb3/50002023.txt/file
  • https://www.mediafire.com/file/q1zrci43zt8hlix/7000.txt/file
  • https://www.mediafire.com/file/t820jnuwf9mri17/excelDNALibrary-AddIn64-packed.xll/file
Добавить комментарий