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

Статья Анализ AsyncRAT, распространяемого в Колумбии

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Обзор.

В течение 2019–2021 годов я был сосредоточен на анализе кампаний, организованных группой APT-C-36, и RAT, используемых этой же группой и другими киберпреступными группами, такими как RemcosRAT, AsyncRAT, Imminent Monitor RAT и т. д. За последние несколько месяцев я видел некоторые модификации TTP во многих из этих семейсв, которые привлекли мое внимание, и я хотел проанализировать их, чтобы увидеть, что нового.

Поэтому в этой статье мы проведем анализ образца AsyncRAT, распространенного в Колумбии за последний месяц.

Информация

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

Анализ

Основная статическая информация об анализируемом образце показана в таблице ниже.

FieldValue
File nameStub.exe
TypePE32 executable for MS Windows (GUI) Intel 80386 32-bit Mono/.Net assembly
MD5c0b9838ff7d2ddecbfe296eae947e5d6
SHA176af794b85e4a4ba75c5703df1207b7a6798bf2e
SHA25679068b82bcf0786b6af1b7cc96de1bf4e1a66b0d95e7e72ed1b1054443f6c5e3
File size45.00 KB (46080 bytes)

1657256995668.png


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

1657257008416.png


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

1657257024589.png


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

Первая проверка заключается в том, чтобы убедиться, что ряд настроек, установленных в коде, среди которых ключ, пастебит URL, версия и т. д.

1657257039995.png


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

1657257053494.png


Затем он выполняет несколько проверок, чтобы определить контекст, в котором он работает (главным образом, чтобы определить, является ли он виртуальной машиной или песочницей). Применяются различные методы антианализа.

Прежде всего, это связано с методом DetectManufacturer, целью которого является определение того, связана ли система с Vmware, VirtualBox или вообще с виртуализацией.

1657257067460.png


Следующее, что нужно сделать, это проверить, существует ли отладчик в контексте AsyncRAT. Для этого используется API isDebuggerPresent.

1657257088131.png


Затем проверка фокусируется на том, чтобы увидеть, является ли система, в которой она была выполнена, известной песочницей (https://github.com/sandboxie-plus/Sandboxie), чтобы проверить ее, пытается определить, работает ли DLL SbieDll.dll.

1657257097330.png


Следующая проверка, которую он выполняет, касается емкости системного диска. В этом случае он проверяет, меньше ли размер диска 61000000000L (56,8 ГБ). Если это так, он возвращает false.

1657257105327.png


Последнее, что он выполняет в этом наборе проверок, — это простым методом определяет, является ли операционная система Windows XP.

1657257113465.png


Он также направлен на создание постоянства в системе. Для этого троян проверяет, запущен ли контекст процесса с привилегиями, и если да, то использует schtasks.exe для создания задачи. В противном случае, если контекст не найден с разрешениями администратора, он попытается изменить раздел реестра Software\Microsoft\Windows\CurrentVersion\Run, чтобы выполнить собственную копию create в пути %appdata.

1657257133920.png


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

1657257143952.png


Последнее интересное действие — установить связь с C2 через методы ClientSocket.Reconnect() и ClientSocket.InitializeClient().

1657257159743.png


После развертывания в среде образец может выполнять множество других действий. Например, класс Client.Helper.IdSender имеет метод sendInfo, который отвечает за отправку информации из операционной системы на C2.

1657257170263.png


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

1657257179452.png


Динамический анализ

События процессов высокого уровня

1657257194794.png


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

Привилегированное выполнение

1657257207259.png


Непривилегированное выполнение

1657257214019.png


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

1657257221611.png


Это связано с тем, что выполнение процесса 7380 cmd.exe связано с установкой запланированной задачи. Однако если образец запускается без прав администратора, запланированное задание не может быть создано.

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

Стаб.exe - 2740

1657257240164.png


Это образец AsyncRAT. Выполнение было выполнено с правами администратора.

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

1657257249893.png


Затем он также создает пакетный файл в %appdata%, который будет выполняться позже для выполнения различных действий в операционной системе.

1657257260256.png


Что касается разделов реестра, то особой активности нет.

Информация

Различное поведение в примере запуска без привилегий.


Однако в случае непривилегированного выполнения в ключах реестра будет модификация для сохраняемости с использованием ключа HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Runtime Broker.

1657257274542.png


cmd.exe – 7380

"C:\Windows\System32\cmd.exe" /c schtasks /create /f /sc onlogon /rl highest /tn "Runtime Broker" /tr '"C:\Users\lab\AppData\Roaming\Runtime Broker.exe"' & exit

Этот процесс в основном отвечает за запуск двоичного файла schtasks.exe. Важно отметить, как мы видим и увидим в ходе анализа, что, поскольку это 32-битный сэмпл, выполнение будет связано с каталогом C:\Windows\SysWOW64\.

1657257296185.png

Этот процесс не будет существовать при запуске AsyncRAT без прав администратора.

schtasks.exe — 4152

schtasks /create /f /sc onlogon /rl highest /tn "Runtime Broker" /tr '"C:\Users\lab\AppData\Roaming\Runtime Broker.exe"'

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

/f -> A value that forcefully creates the task and suppresses warnings if the specified task already exists.
/sc onlogon -> In each login
/rl highest -> Max privileges
/tn "Runtime Broker" -> Task name
/tr "C:\Users\lab\AppData\Roaming\Runtime Broker.exe" -> Task run to execute


1657257333751.png


cmd.exe – 8840

C:\Windows\system32\cmd.exe /c ""C:\Users\lab\AppData\Local\Temp\tmp3959.tmp.bat""


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

.*tmp[a-zA-Z1-9]{4}.tmp.bat

1657257356920.png

timeout.exe - 6272

timeout 3

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

Runtime Broker.exe — 4080


"C:\Users\lab\AppData\Roaming\Runtime Broker.exe"

Как видно из названия процесса, вредоносная программа пытается выдать себя за легитимный бинарный файл Microsoft Windows runtimebroker.exe. Однако в этом случае можно заметить, что между двумя словами есть пробел.

Здесь устанавливается связь с сервером C2. В данном случае используются порты 8808, 7707 и 6606. IP-адрес назначения — 217.195.197.70.

1657257390081.png


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

1657257397742.png


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

aB.exe

Сборка aB.exe — это тот же файл Stub.exe, который в свою очередь также является Runtime Broker.exe.

MessagePackLib.dll

Эта DLL не содержит никаких упаковщиков или средств защиты кода. 41 из 68 движков VT (https://www.virustotal.com/gui/file/cd89c8c9bb614fac779491b98ed425f90b01412381e02392fb27b36db3568b0f) определяют эту DLL как вредоносную.

1657257424104.png


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

1657257432085.png


Recovery.dll

В этом случае удалось проверить существование Reactor, который сам по себе называется защитой кода .NET( https://www.eziriz.com/) , что можно увидеть на его веб-сайте.

1657257441282.png


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

1657257449450.png


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

1657257459399.png


Граф потока выполнения

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

1657257478191.png


Алмазная модель

1657257487652.png


IOCs
  • 217.195.197.70 through 6606, 7707, 8808 ports
  • 76AF794B85E4A4BA75C5703DF1207B7A6798BF2E
  • 16CC8C3A461A6CE5A7ED1FF569EA61B8D9BA143E
  • 93E9469789A4ECD28E30006D1CE10DBFFBD36D7C
  • Mutex AsyncMutex_6SI8OkPnk

Правила для сигмы

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

1657257553310.png


1657257570798.png


В оригинальном репозитории Sigma (https://github.com/SigmaHQ/sigma/tree/master/rules/windows) есть большое количество общих правил, которые могут помочь в обнаружении этой вредоносной программы.

ATT&CK​

TechniqueKill chain phaseDiamond vertexComments
T1566.001 - Phishing: Spearphishing AttachmentDeliveryCapabilityEmail with ZIP file attached
T1547.001 - Boot or Logon Autostart Execution: Registry Run Keys / Startup FolderInstallationCapabilitySet registry key if non-privileged user executes the payload
T1053.005 - Scheduled Task/Job: Scheduled TaskInstallationCapabilityCreates new scheduled task if privileged user executes the payload
T1036.005 - Masquerading: Match Legitimate Name or LocationExecutionCapabilityWrites itself as a file named Runtime Broker.exe saved in %APPDATA%
T1571 - Non-Standard PortC2InfrastructureUse the ports 8808, 7707 and 6606 for communication
T1059.003 - Command and Scripting Interpreter: Windows Command ShellExecutionCapabilityExecutes batch file created previously
T1027 - Obfuscated Files or InformationExploitationCapability.NET Reactor is used for code protection
T1095 - Non-Application Layer ProtocolC2InfrastructureTCP is used for C2 communications

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://jstnk9.github.io/jstnk9/research/AsyncRAT-Analysis/
 

Вложения

  • 1657257123814.png
    1657257123814.png
    63.7 КБ · Просмотры: 10


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