ESCalator
5.44K subscribers
325 photos
1 video
8 files
142 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
Download Telegram
Эволюция инструментов Dark Caracal 🐱

В первом квартале 2024 года в поле зрения сотрудников департамента Threat Intelligence экспертного центра безопасности Positive Technologies (PT ESC) попал вредоносный семпл.

Целевой аудиторией атаки стали испаноговорящие пользователи — это понятно по содержимому вредоносных вложений и по языку фишинговых писем, используемых для доставки ВПО. Сообщество назвало вредонос Poco RAT — по наименованию используемых библиотек POCO для C++. На момент обнаружения семпл не был атрибутирован ни к одной известной группировке.

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

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

Подробнее о Dark Caracal, ее методах и новых инструментах вы можете прочитать в исследовании на нашем сайте 👽

#TI #APT #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍98🥱1
Desert Dexter — группировка, атакующая жителей арабских государств 👽

Cпециалисты группы киберразведки TI-департамента PT ESC обнаружили вредоносную кампанию, нацеленную на жителей стран Ближнего Востока и Северной Африки, активную с сентября 2024 года.

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

Для распространения AsyncRAT злоумышленники создают поддельные новостные группы в социальных сетях и публикуют посты с рекламой. Эти посты содержат ссылки на файлообменник или Telegram-канал, где и располагается вредонос.

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

Подробное изучение инцидентов и пострадавших показало, что наиболее атакуемыми странами являются Египет 🇪🇬, Катар 🇶🇦, Ливия 🇱🇾, ОАЭ 🇦🇪, Саудовская Аравия 🇸🇦 и Турция 🇹🇷. Мы назвали группировку Desert Dexter, в честь одного из подозреваемых.

👤 Мы также выяснили, что злоумышленники создают временные аккаунты и новостные каналы в «лицекниге»* и обходят правила фильтрации рекламы. Подобная атака была описана в 2019 году экспертами Check Point, но сейчас наблюдается изменение некоторых ее техник.

🐃 Подробнее о том, какую цепочку атаки подготовила Desert Dexter, читайте в исследовании на нашем сайте.

*Принадлежит Meta, которая признана экстремистской организацией и запрещена в России.

#TI #APT #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2515❤‍🔥11👍3
1C_shell для «1С» 🦞

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

Самым терпеливым и любопытным может помочь связка инструментов для работы с кэшем RDP (который, как известно, хранится в Windows по адресу C:\Users\%Username%\AppData\Local\Microsoft\Terminal Server Client\Cache), состоящая из парсера кэша bmc-tools и инструмента для «склеивания» фрагментов изображения RdpCacheStitcher.

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

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

🔎 Итак, что же любопытного можно обнаружить внутри подобного кэша?

1. Следы внезапно проснувшегося интереса пользователя к разного рода сомнительным инструментам (скриншоты 1, 2);

2. Следы запуска подозрительных файлов с еще более подозрительными параметрами (скриншот 3);

3. Выполнение до боли знакомых команд, которые, казалось бы, простой бухгалтер выполнять не должен (скриншот 4);

4. Нечто крайне подозрительное, интересное (скриншот 5).

При обнаружении такого рода данных следует внимательно изучить соседние фрагменты — там, как правило, можно обнаружить какое-то развитие наметившейся идеи (скриншоты 6, 7, 8).

Вот тут уже возникает повод серьезно задуматься и после раздумий, сопровождаемых поиском следующих фрагментов изображения, прийти к выводам. В данном случае в ходе расследования было обнаружено и подтверждено использование своеобразного шелла 1C_shell для «1С».

Несмотря на то, что механизмы работы подобных «внешних обработок» системы «1С» были уже давно описаны в материале «Взломать за 60 секунд!» и докладе «„1С“ глазами пентестера», а все соответствующие рекомендации сформулированы, схема продолжает работать и по сей день.

#ir #dfir #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍108💯31🆒1
Используете ли вы криптографию правильно? 🔓

Группе исследования сложных угроз департамента Threat Intelligence часто приходится решать интересные задачи в процессе реверса ВПО. Этот раз не стал исключением. Существует такая техника, как Execution Guardrails: Environmental Keying, — она нужна для ограничения выполнения ВПО только в конкретной целевой среде. Например, ее использует группировка Decoy Dog в своих операциях.

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

☠️ Выяснилось, что ВПО «падает» при попытке вызова функции LoadLibraryA с переданным именем библиотеки в качестве неотображаемых байтов. Этот набор байтов должен представлять собой имя библиотеки, которая расшифровывается в цикле; при каждой итерации берется символ от имени компьютера, с помощью логических операций приводится в необратимый вид, а после уже гаммируется с зашифрованным текстом и его однобайтовой константой.

Чтобы вычислить промежуточный ключ (который формируется в результате логических операций), мы прибегнули к атаке на основе открытого текста. Возвращаясь к функции LoadLibraryA: мы знаем, что имя библиотеки будет составлять 13 байт в кодировке ASCII + '\x00'; так мы смогли восстановить треть ключа, а далее по аналогии уже с другими строками восстановили оставшуюся часть ключа.

Дешифрование строки:
F(sym_comp_name) ^ sym_enc ^ cnst_enc = sym_dec
F(sym_comp_name) — логические операции

Получение промежуточного ключа:
sym_dll_name ^ sym_enc ^ cnst_enc = irr_sym_key
irr_sym_key — промежуточный байт ключа, необратимый


Группа исследования сложных угроз рекомендует одну из платформ для изучения криптоанализа — cryptohack.org.

#tips #reverse #malware #cryptography #TI
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1817🔥12🆒1
@Вредонос попал в систему...
@Вредонос хочет сделать пакость...
@Вредонос вызывает WinAPI и...
@EDR-система обнаруживает его и начинает очень громко орать...

😱 Не самое приятное развитие событий для вирусописателей. Как же они борются с подобными ситуациями?

Один из способов — вызывать необходимую функцию Windows не через WinAPI, а через системные вызовы (system calls). Многие EDR-системы перехватывают вызовы WinAPI-функций, но далеко не всегда они определяют использование system calls. Этой особенностью можно воспользоваться для обхода защитных механизмов.

SysWhispers

Зачем самому реализовывать механизм вызова syscall, если добрые люди уже это сделали за тебя? Правильно, будем использовать готовое решение — SysWhispers (в этом посте будем говорить про его вторую версию). Стоит отметить, что помимо предоставления удобного интерфейса, с помощью которого можно вызывать syscall, SysWhispers также хеширует их.

Выглядит это так: вызываем функцию SW2_GetSyscallNumber, в которую передаем хеш необходимого syscall. В ответ функция возвращает номер системной функции, которую мы и вызываем с помощью инструкции syscall. Более подробно этот процесс показан на скриншоте 1 (на нем приведен пример вызова функции NtWriteVirtualMemory).

🧐 И вот теперь приходит исследователь, которому нужно это отреверсить. Как же ему понять, какой syscall используется?

Напрямую получить номер нужной системной функции мы не можем: он захеширован, поэтому придется что-то придумать. Можно написать скрипт, который будет реализовывать тот же алгоритм хеширования, что и SysWhispers (по сути, в нем используется XOR имени функции по случайному значению). Но можно пойти другим путем: с помощью механизма Appcall в IDA Pro (Appcall работает только в режиме отладки, поэтому с вредоносами лучше работать в виртуальной машине) напрямую вызвать SW2_GetSyscallNumber, передав ей хеш необходимой функции. Мы все также получим номер функции, но при этом процесс пройдет значительно быстрее.

Просто сравните — написать скрипт, который будет воссоздавать хеш-функцию, или одну строчку кода на Python:

syscall_id = idaapi.Appcall.SW2_GetSyscallNumber(hash).value


👋 Угу, номер syscall у нас есть, а что дальше, как узнать его имя?

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

Код скрипта, реализующего эту логику, представлен в публикации ниже. Основная идея заключается в том, что все функции-обертки над системными вызовами однотипны и выглядят примерно так, как показано на скриншоте 2. Перед вызовом инструкции syscall происходит передача номера нужной функции в регистр EAX (вторая инструкция). Мы можем взять вторую инструкцию функции-обертки, получить ее операнд — это и будет номер системного вызова. Далее остается сравнить его с тем, что ищем мы, и вывести результат (скриншот 3).

😮‍💨 Вот таким незамысловатым образом реверсер может облегчить себе жизнь, когда ему попадется вредонос с SysWhispers. Напоследок еще раз (на всякий случай) скажем, что представленный скрипт будет работать только в режиме отладки, поэтому, если речь заходит про анализ чего-то зловредного, то лучше делать это в виртуальной машине. Так что стоит отметить, что IDA работает со многими отладчиками, в нашем же случае все разрабатывалось и проверялось с использованием WinDbg.

#reverse #malware #tip
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥10👌5
🐾 По следам 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
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
Группа киберразведки PT ESC подготовила отчет по итогам первого квартал 2025 года ✍️

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

🐍 Была замечена активность таких группировок, как PseudoGamaredon, Cloud Atlas, DarkGaboon и других. Основные цели — кража данных, получение доступа к внутренним системам для шпионажа.

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

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

😏 Ознакомиться с отчетом можно на сайте Positive Technologies.

#TI #APT #malware #ioc
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍15🤔54🤡3
Yara Yara Daze

Всем, кто занимается malware analysis, точно знаком такой инструмент, как YARA 😉. С помощью него во многих компаниях 🔴 составляют наборы сигнатурных правил для определения и классификации вредоносов.

🤔 So, что такое хорошие YARA-правила? Это правила, которые могут детектировать предназначенный им класс или семейство ВПО, не детектируют ничего лишнего (false positive) и способны сохранять актуальность, даже если ВПО подвергается небольшим изменениям.

😏 Нет общего совета, как сделать хорошее YARA-правило — это зависит от сампла к самплу. Мы поделимся некоторыми Tips&Tricks про детект строк, которые будут полезны начинающим:

🔹 Не стоит забывать fullword — этот модификатор на строки гарантирует, что сигнатурная строка не будет находиться между буквенно-цифровыми символами (осторожнее с golang).

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

   rule CustomSocksProxy {
strings:
$a_1 = "SOCKS5 Proxy listening" wide
$a_2 = "New connection from" wide
condition:
uint16(0) == 0x5a4d and filesize < 100KB and all of ($a_*)
}


🔹 Лучше избегать сигнатур длиной в 3-4 символа.

🔹 Иногда очень полезно прописывать условие расстояния между строками. Например, если в файле есть какие-нибудь white- / blacklist, как имена процессов, можно ограничить их расположение в окне конкретной длины:

rule CheckProcessList {
strings:
$base = "\\system32\\cmd.exe" wide
$str2 = "\\task.exe" wide
$str3 = "cmd.exe" wide
$str4 = "\\alg.exe" wide
$str5 = "powershell.exe" wide
condition:
for all of ($str*): (@ - @base < 100) and for all of ($str*): (@base - @ < 100)
}


🔹 Строки логирования лучше не разбивать на подстроки длиной 4-5 символов, если там общие слова, которые могут встретиться в любом контексте: детект подстроки \\\\dc2 в строке \nUsing:\n\t session_enum.exe \\\\dc1 \\\\dc2 \n — плохой детект.

🔹 Чтобы детект строк пережил различные кодировки, чередование заглавных и строчных букв, можно использовать три модификатора wide ascii nocase:

   rule SomeAPTScript {
strings:
$a1 = "GetRef(" ascii wide
$a2 = " & ChrW(\"&H\" &" ascii wide
$a3 = "Mid(" ascii wide
$a4 = "Join(" ascii wide
$a5 = "=0 Step -2" ascii wide
$a6 = "Function [" ascii wide
$a7 = "MSXML2.ServerXMLHTTP" ascii wide
$v1 = "<Script " ascii nocase wide
$v2 = "VBSCript" ascii nocase wide
$v3 = "JSCript" ascii nocase wide
$wscript = "WScript.CreateObject(\"WScript.Shell\")" ascii nocase wide
condition:
filesize < 30KB and $wscript and 2 of ($v*) and 5 of ($a*)
}


И, конечно, главное — не забывать смотреть в документацию YARA 👀, следить за обновлениями и подсматривать на рули коллег.

Успехов в работе.

#tips #malware #YARA
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40👍1410🤡4😁3🗿2🆒2👎1
Yara-Yara-Yara!

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

Но рано или поздно найдется сампл, в котором не будет нужных строк для детекта 😶. Приведем парочку советов и примеров 😌, как перестать бояться и начать делать генерировать байтовые сигнатуры на код:

🐾 Практически нет смысла писать сигнатуру на пролог функции и ее завершение: поверьте, эти push\pop почти везде одинаковые 😤

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

$code1 = {
FF C6 // inc esi
B8 99 99 99 99 // mov eax, 99999999h
F7 EE // imul esi
D1 FA // sar edx, 1
8B C2 // mov eax, edx
C1 E8 1F // shr eax, 1Fh
03 D0 // add edx, eax
}


🐾 Компилятор может изменить порядок инструкций, или даже вставить выравнивающие nop 😨. Будет не лишним использовать пропуски между инструкциями — { <byte inst> [5-6] <byte inst2> }

🐾 Все оффсеты (в jmp, call и т.д.) надо заменять на знаки ?, поскольку смещения меняются компилятором /*разве что в рукописном шеллкоде это не так*/ Можно оставлять старшие 1-2 байта оффсета в сигнатуре — они почти всегда 00 или ff

$code61  = {
68 DF 71 00 00 // push 71DFh ; request
53 // push ebx ; fd
E8 ?? ?? ?? ?? // call _ioctl
} // если вопросы стоят в конце байт-конструкцции, их можно вовсе убрать


🐾 Стоит учитывать, что один и тот же opcode может оперировать разными регистрами от сампла к самплу 😫. Чтобы сигнатура была актуальной, нужно затереть байты операндов знаками ? в инструкции

$code21  = {
89 ?? // mov edi, esi
83 C? 01 // add esi, 1
83 E? 1F // and edi, 1Fh
0F B6 ?? ?? 10 // movzx edx, byte ptr [edx+eax+10h]
83 C? 01 // add eax, 1
30 ?? ?? 28 03 00 00 // xor [ebx+edi+328h], dl
83 F? 0C // cmp eax, 0Ch
}


🐾 Можно сделать выбор из нескольких вариантов (<opcode1> | <opcode2>), когда в серии самплов используются разные opcode для цепочки инструкций

  $code_3 = {
80 34 (0? | 1? | 2? | 3?) 02 // xor byte ptr [eax + esi], 3
4? // inc eax
3D ?? ?? 00 00 // cmp eax, 0x21e6
(7C | 72) ?? // jl 0x10001322 \ jb ????????
B? ?? ?? 00 00
}


Все эти ассемблерные манипуляции с байтовыми сигнатурами зачастую приходится делать с декодером опкодов и инструкций. К счастью, один из наших коллег создал плагин для помощи 😏 в генерации сигнатур, который заменяет все параметризуемые участки сигнатуры на ? и группы (x | y). Инструмент yarg работает как плагин к Ida Pro, генерируя к выбранному участку кода готовую сигнатуру для Yara-правила. Вам останется только найти участок кода, подходящий для создания сигнатуры 🙂

Успехов в работе!

#tips #malware #YARA
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥339👍6🤡2
🛡 Puma: как руткит обеспечивает тайный SSH-доступ через незаметную подмену ключей

Продолжая наш рассказ о деятельности группировки ExCobalt и ее новом инструменте — рутките Puma, представленном на киберфестивале PHDays, подробнее разберем одну из его наиболее изощренных и опасных техник — скрытую модификацию файла authorized_keys.

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

LKM-руткит перехватывает системные вызовы open и openat, выполняемые процессом ssh, отслеживая обращения к файлу authorized_keys, расположенному в директории ~/.ssh/. Этот файл — основной механизм беспарольной аутентификации в OpenSSH. Если клиент предъявляет закрытый ключ, соответствующий одному из публичных ключей в этом файле, сервер считает пользователя подлинным, не запрашивает пароль и разрешает вход в систему.

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

Таким образом, в типичном сценарии атаки:

1. Злоумышленник инициирует SSH-соединение и пытаются авторизоваться с использованием собственного закрытого ключа.

2. Процесс sshd на машине считывает ключи из файла authorized_keys.

3. Руткит незаметно дописывает свой ключ к возвращаемому содержимому файла.

4. Процесс sshd воспринимает внедренный ключ как легитимный и разрешает доступ атакующему без запроса пароля.

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

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

🔎 Как быстро обнаружить эту атаку

Для выявления скрытой модификации файла authorized_keys можно использовать следующий метод: сравнить содержимое файла, полученное при чтении через оригинальную утилиту /bin/cat, с содержимым, полученным при чтении той же утилитой, но переименованной в ssh. Дело в том, что Puma ориентируется на имя процесса перед модификацией содержимого файла authorized_keys, и при разнице в выводах можно уверенно утверждать, что в системе присутствует руткит.

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

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

#TI #Detect #APT #Malware
@ptescalator
🔥2620👌6💩4💯3
Мы защитим ваши деньги… Просто отдайте их нам 😏

В начале года специалисты группы киберразведки TI-департамента экспертного центра безопасности Positive Technologies обнаружили вредоносное письмо, в котором предлагалось скачать файл с подозрительного сайта.

Выявленная цепочка атаки приводит к установке вредоносного расширения, нацеленного на пользователей из Бразилии, в Google Chrome 👨‍💻

Более детальный ресерч показал, что, помимо обнаруженной цепочки, существует альтернативный вариант атаки, цель которой — установка средств удаленного администрирования (например, MeshAgent, PDQ Connect Agent, ScreenConnect).

На момент исследования статистика показывала более 700 скачиваний вредоносного расширения за все время его существования в Chrome Web Store (около 2,5 месяцев). Помимо этого, с учетом второй цепочки атаки было заражено около 70 компаний, инфраструктуру которых использовали для распространения фишинговых писем.

😏 Обо всем этом и не только вы можете прочитать в нашем новом исследовании «Операция Phantom Enigma».

#TI #Malware #Phishing
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1610👍9
Один на один с Rust ☹️

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

В публичных репортах прослеживается тенденция не только к увеличению частоты использования Rust различными threat actor в качестве языка для своих инструментов, но и тенденция к усложнению этих инструментов.

Если поначалу использовались в основном простые загрузчики, дропперы, инжекторы или вспомогательные инструменты для разведки в системе жертвы, то позже Rust стали использовать для написания шифровальщиков и C2-фреймворков как с открытым, так и с закрытым исходным кодом.

☕️ В статье расскажем, какие подходы применяем для успешного реверса бинарных файлов на Rust, с какими сложностями сталкиваемся и как их преодолеваем.

#TI #Malware #Rust
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥19👏85🤓1
Уже не Rezet, или Новые атаки Rare Wolf 🐺

Группа киберразведки PT ESC продолжает фиксировать атаки группировки Rare Wolf: так, в конце мая злоумышленники рассылали фишинговые письма от имени antey-almaz-info.site в адрес компаний военно-промышленного комплекса. Текущая кампания очень похожа на ту, что мы описывали в конце января (скриншот 1).

Группировка все так же доставляет вредоносный SCR-файл внутри архива, пароль к которому указан в тексте письма. При запуске SCR-файл отвлекает внимание жертвы, открывая документ-приманку, и одновременно скачивает на узел архив с PowerShell- и BAT-скриптами. В этот раз для распаковки скриптов используется скрытая папка C:\Users\admin\Window (скриншоты 2–3).

Rare Wolf по-прежнему собирает системную информацию, в том числе дампы реестров SAM и SYSTEM, сканирует локальные подсети в попытке скопировать файлы с других устройств и скрытно устанавливает AnyDesk для удаленного доступа.

🕗 Следует отметить, что сканирование локальной подсети проходит по жестко заданным IP-адресам и занимает около 9–10 минут, что существенно превышает лимиты динамического анализа большинства публичных песочниц. Обычно такие сервисы ограничивают время эмуляции несколькими минутами (от 1 до 6), а в расширенных режимах — не более 10–12 минут. Вероятно, цель подобных задержек — не дать песочницам зафиксировать дальнейшие действия вредоносных файлов.

🙅‍♂️ Единственными заметными изменениями стали отказ от файла rezet.cmd, использовавшегося ранее в атаках, и переход с публичного туннелирования через ngrok на собственный обратный SSH-туннель с использованием Tuna и штатного sshd — это повышает скрытность и надежность канала связи с C2-сервером.

Для этого злоумышленники устанавливают на зараженном устройстве демон sshd и исполняемый файл tuna.exe, прописывают в firewall разрешение на входящий TCP-порт 22 и настраивают ключевую аутентификацию, обеспечивая автоматический запуск службы sshd при старте системы и поддерживая обратное SSH-соединение с сервером управления. Tuna при этом инициирует исходящее соединение к C2 и проксирует весь трафик на локальный демон sshd, обеспечивая скрытый и защищенный канал.

😠 При попытке вручную вызвать tuna (например, выполнить в командной строке tuna tcp 22), можно увидеть адрес электронной почты, который используют злоумышленники. На скриншоте также видна ошибка, сообщающая, что учетная запись неактивна — возможно, они просто забыли продлить оплату (скриншот 4).

В марте этого года группировка также предпринимала попытку рассылки вирусного ПО, однако пароль от архива не совпал с тем, что был указан злоумышленниками в тексте письма. А используемый домен almaz-antey-info.online представлял слегка измененный вариант домена, используемого в майских атаках (скриншот 5).

IoCs

[email protected]

almaz-antey-info.online
antey-almaz-info.site

b7543b3e0c3fa6bd8973dde12258c7f7
fc0b6c43185061c2b3b11ab0bfdf924f
9eb2c87299e3b1d86268ab1752b83502


#TI #APT #phishing #malware #ioc
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍12👏74😁1🎉1🤡1
DarkGaboon. Яд кибергадюки в цифровых жилах российских компаний 🐍

В январе текущего года группа киберразведки TI-департамента PT ESC разоблачила ранее неизвестную финансово мотивированную APT-группировку DarkGaboon, кибератаки которой в отношении российских компаний удалось отследить до весны 2023 года.

Изучению подверглись эволюция вредоносного арсенала, миграция инфраструктуры и TTP группировки, но для полного восстановления kill chain не хватало инструментов и техник конечного импакта. Однако уже этой весной департамент комплексного реагирования на киберугрозы непосредственно столкнулся с кибератаками DarkGaboon в ходе расследования инцидентов. Недостающими элементами kill-chain-пазла оказались сканер сетевых шар и шифровальщик LockBit.

📥 Эксперты PT ESC обнаружили, что в качестве вектора проникновения DarkGaboon использует электронные письма c замаскированными под финансовые документы RAT-троянами Revenge и XWorm, которые рассылаются с расположенного в России SMTP-сервера (185.185.70.85) и более 50 связанных с ним доменов в российской доменной зоне.

Для управления RAT-сессиями на зараженных хостах группировка использует зарегистрированный на Сейшелах Windows-хост с RDP-подключением, арендованный у американского провайдера хостинга Nybula LLC, и группу DDNS-доменов.

196.251.66.118
myhost.servepics.com
myhost.misecure.com
kilimanjaro.theworkpc.com


Артефакты, обнаруженные экспертами PT ESC на инцидентах, позволили связать DarkGaboon с целой серией кибератак 2023–2025 годов на российские компании с использованием шифровальщика LockBit.

Подробности — в нашем блоге.

#TI #APT #Malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥229🆒5🏆4👍1
Мутация Exchange. Как мы аномалии в Outlook-страницах ловили 😮

В продолжение историй с расследований инцидентов (о них можно почитать вот тут, здесь и частично послушать тут) мы решили проанализировать общую концепцию вставок вредоносного кода в страницы аутентификации Microsoft Outlook. В итоге:

Помимо обнаруженного на расследованиях инцидентов кейлоггера, обнаружили множество других аналогичных вредоносов.

Ключевое отличие всех вредоносных фрагментов кода заключается в способе отправки учетных данных жертв: в нем применяются сохранение данных в файл на сервере, DNS-туннелирование, отправка сообщений в телеграм-бота и другие техники.

Заражения были обнаружены в 26 странах. Большинство скомпрометированных серверов находятся во Вьетнаме, Китае, России, Тайване.

Как показывает статистика, основная причина успешных атак на серверы — отсутствие установленных обновлений безопасности; на 3 из 65 серверов обновления отсутствовали с 2013 года.

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

#TI #IR #Malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2114👍9❤‍🔥2
По следам 1C_Shell. Расследуем атаки с помощью журнала регистрации 🐾

В одном из предыдущих постов мы писали об обнаружении атак на систему «1С», в которых злоумышленники использовали инструмент 1C_shell. Он представляет собой внешнюю обработку, позволяющую запустить произвольный код на сервере «1С:Предприятие».

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

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

💡 Журнал регистрации — механизм в системе «1С», предназначенный для логирования действия пользователей, в том числе начала и завершения сессий.

Чтобы просмотреть журнал регистрации, перейдем в конфигуратор и на вкладке «Администрирование» выберем соответствующий пункт (скриншот 1).

В журнале, помимо всего прочего, мы можем увидеть события начала и завершения пользовательских сеансов (скриншот 2). Таким образом, зная временной промежуток, в рамках которого происходила вредоносная активность, мы определим подозрительные сессии. В рамках этих сессий злоумышленники могли выполнять команды.

Файлы журнала регистрации в случае клиент-серверного варианта информационной базы по умолчанию хранятся в рабочей папке кластера:

C:\Program Files\1cv8\srvinfo\reg_****\****\1Cv8Log


Логи имеют необычный формат и плохо пригодны для ручного анализа. О формате можно почитать в статье «Инфостарт»: описание актуально для «1С:Предприятия» версий 8.1 и 8.2, но с тех пор формат изменился незначительно.

💡 Актуальная структура журнала регистрации описана в Руководстве администратора «1С:Предприятия» — однако доступ к документу ограничен.

Для того чтобы распарсить файлы журнала регистрации, можно воспользоваться встроенной консольной утилитой ibcmd, предназначенной для администрирования сервера «1С». Она входит в комплект, поставляемый при установке «1С:Предприятия», и, начиная с версии 8.3.25, имеет функциональность для обработки файлов журнала регистрации.

Утилита расположена в папке C:\Program Files\1cv8\<version>\bin. Папку можно скопировать и использовать на другом компьютере без необходимости устанавливать систему «1С».

Документацию утилиты также можно найти в Руководстве администратора.

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

ibcmd.exe eventlog export -f json --skip-root -o C:\<output_path> \output.jsonl C:\<path_to_1Cv8Log>


Пример выходной строки:

{"ApplicationName":"1CV8C","ApplicationPresentation":"Тонкий клиент","Comment":"","Computer":"DESKTOP-QBF9N0A","Connection":"25","Data":null,"DataPresentation":"","Date":"2025-06-02T17:38:31","Event":"_$Session$_.Start","EventPresentation":"Сеанс. Начало","Level":"Information","Metadata":"00000000-0000-0000-0000-000000000000","MetadataPresentation":"<Не определено 00000000-0000-0000-0000-000000000000>","Port":"1560","ServerName":"WIN-UB4CFT0Q9FN","Session":"1","SessionDataSeparation":null,"SessionDataSeparationPresentation":null,"SyncPort":"0","TransactionID":"","TransactionStatus":"NotApplicable","User":"071523a4-516f-4fce-ba4b-0d11ab7a1893","UserName":""}
{"ApplicationName":"1CV8C","ApplicationPresentation":"Тонкий клиент","Comment":"","Computer":"DESKTOP-QBF9N0A","Connection":"0","Data":null,"DataPresentation":"","Date":"2025-06-02T17:38:57","Event":"_$Session$_.Finish","EventPresentation":"Сеанс. Завершение","Level":"Information","Metadata":"00000000-0000-0000-0000-000000000000","MetadataPresentation":"<Не определено 00000000-0000-0000-0000-000000000000>","Port":"0","ServerName":"","Session":"1","SessionDataSeparation":null,"SessionDataSeparationPresentation":null,"SyncPort":"0","TransactionID":"","TransactionStatus":"NotApplicable","User":"071523a4-516f-4fce-ba4b-0d11ab7a1893","UserName":""}


#ir #detect #dfir #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29128😁3👍2
В дополнение к предыдущему посту хотим рассказать о некоторых других потенциальных способах детектирования выполнения вредоносного кода в системе «1С» 😳

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

В таком случае мы можем найти в логах IIS полезную информацию, в частности — обращение к информационной базе и загрузку внешней обработки:

2025-06-17 13:15:20 192.168.80.130 GET /mybase/ - 80 - 192.168.80.129 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/137.0.0.0+Safari/537.36+Edg/137.0.0.0 - 200 0 0 2


2025-06-17 13:18:55 192.168.80.130 GET /mybase/ru/e1cib/logForm cmd=elements&formId=urn:form:ext:0:ce244e8a-6d30-4e49-a244-c6d80d2ea085@n=%22%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D1%8F%D1%8F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0.%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D1%8F%D1%8F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B01%22;v=%223bb1cd7e449b0540951594ef9f12fb6d00000000%22&altFormId=urn:form:ext:8:add30da0-7627-464c-b936-820f49ac3e75@n=%22%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D1%8F%D1%8F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0.%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D1%8F%D1%8F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B01%22;v=%223bb1cd7e449b0540951594ef9f12fb6d00000000%22&sysver=8.3.18.1208&confver=3bb1cd7e449b0540951594ef9f12fb6d00000000&rolesId=0&clang=ru 80 - 192.168.80.129 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/137.0.0.0+Safari/537.36+Edg/137.0.0.0 https://192.168.80.130/mybase/ru/ 200 0 0 37


После декодирования URL запроса выше мы получим строку, которая говорит о взаимодействии с внешней обработкой:
"ВнешняяОбработка.ВнешняяОбработка1";v="3bb1cd7e449b0540951594ef9f12fb6d00000000"

Другой способ обнаружить следы вредоносной активности — проанализировать процесс rphost.exe. В случае выполнения кода через 1C_shell в памяти процесса остаются фрагменты кода внешней обработки (скриншот 2).

Стоит отметить, что этот метод не принесет результата, если сервер или процесс rphost.exe будут перезапущены после выполнения вредоносного кода.

#ir #detect #dfir #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍7🤝73🔥3🙏1
Нефритовый металл: уже не новая группа Telemanmilconfav атакует военные организации? 🪖

В марте исследователи из F6 опубликовали материал о группировке Telemancon, атаковавшей промышленные организации. Группа была названа в честь использования сервиса telegra.ph, man — от слова manufactory, con — из-за сохранения нагрузки в %userprofile%\Contacts\.

Нами были обнаружены несколько файлов, связанных с этой группой. Один из них — Письмо_в_АО_УАПО_запрос_РКМ_и_закл_ВП.scr 📬

При запуске, как и в случае с семплами, описанными F6, SCR-скрипт открывал decoy-документ PDF и вредоносный PowerShell-скрипт в той же %userprofile%\Contacts\, в честь которой назвали эту группу: тематика decoy-документа была связана с войсками национальной гвардии и оборонными заказами

Но больший интерес представляет обнаруженный архив Гуманитарная_помощь_накладные_июнь_2025_1.zip. Он содержит пять SCR-скриптов: четыре из них маскируются под XLSX-файлы, один — под картинку (скриншот 1).

После запуска каждый из них дропает два файла: PowerShell-скрипт (в папку %userprofile%\Favorites\) и легитимный XLSX-файл (в одном из пяти случаев это картинка). Excel-документы и картинка отсылали к информации о гуманитарной помощи для военных (скриншот 2).

🫤 Сами инструменты претерпели изменения: их стало сложнее анализировать и они повысили устойчивость к защитным механизмам. Основные изменения коснулись TMCDropper. Раньше код имел структуру с отдельными зашифрованными модулями, а в новой версии используется VM-based obfuscation.

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

Ключевым изменением является использование глобальной переменной, например $qvwml (для каждого скрипта они разные), которая управляет процессом расшифровки полезной нагрузки. Изначально $qvwml = 0, но после успешных проверок (включая .ps1 и отключение AMSI) ее значение увеличивается:

$qvwml += 2


Эта переменная влияет на regex-маску в цикле расшифровки:

foreach($ucbxt in $cjzuc){
"$ucbxt -replace ('.(.'+'.'*$qvwml+')'),('$'+$(h)+55/55)"|iex|iex
}


После изменения $qvwml повторно запустить скрипт невозможно, так как regex-маска больше не соответствует исходному шаблону.

TMCShell получает содержимое страницы c telegra.ph и из первой строки декодирует адрес С2, а из второй — цифровую подпись (скриншот 3; ответ, который парсит TMCShell). Сам C2-сервер на момент анализа имел IP-адрес 212.80.206.125, который принадлежит израильской AS 44709 (O.m.c. Computers & Communications Ltd), как почти во всех зафиксированных случаях, связанных с этой группировкой.

🏮 Самый интересный момент заключается в том, что Excel-документы содержали метаданные, которые указывают, что документ редактировался последний раз (вероятно, и создан) в системе с китайской локалью в WPS Office, аналоге Microsoft Office, созданной китайской компанией Kingsoft. Сам WPS Office поддерживает несколько языков, включая русский и английский, но в русской или английской версии в поле Heading Pairs должно быть указано Лист1 или Sheet1, в то время как во всех четырех документах-приманках поле Heading Pairs содержало 工作表, 1, где 工作表 означает «рабочий лист» (скриншот 4).

IoCs:

f8f096d2e94bbdbfd20aae45432af58a7bdf3406fa4dde568154b930cac855ca
20b0faa0f058cd71be39075ed1a0294e2a9e7c2f670b7ba5e3e35e6581907122
37bff1efb37a61f1e4d9f9fda43f33db852da01b22b623faedcef20173ee78fa
7c29891b5eacc464620db0a23b2e05b47373b98524aebba05cf3bd8c2b5f42fe
63b7073a8b74dd7810493700881b9afea3627126cbcb1d942e7a01d573207129
4102a0bec73711e754a5ad067d1779cb8c71628b0c38384e41b2041e64ffddba
5df092a5f3d088043cd5724197b63ba239b12edc8cd6dbcf7e3f9d7ce8594426

212.80.206.125


#TI #APT #malware #ioc
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥118👏2