ESCalator
6.56K subscribers
477 photos
1 video
18 files
190 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
Download Telegram
Выступаем на SOC FORUM 2025 🎤

Если вы здесь — заходите, а если нет — смотрите онлайн. Вот наша программа на ближайшие дни:

➡️ 18 ноября

• 13:15, зал №3. Денис Гойденко, руководитель департамента комплексного реагирования на угрозы PT ESC, представит результаты расследований инцидентов ИБ за 2025 год. Он поделится обширной статистикой по типам атак, использованным методам и целям хакеров.

➡️ 20 ноября

• 10:30, зал №3. О том, как действует APT31 сегодня, в своем докладе расскажут Варвара Колоскова, специалист группы исследования сложных угроз PT ESC, и Даниил Григорян, старший специалист департамента комплексного реагирования на киберугрозы PT ESC. Будут разобраны последние пополнения в арсенале злоумышленника: вариации бэкдоров COFFProxy и AufTime, инструменты с облачными C2 VtChatter, OneDriveDoor, CloudyLoader.

• 11:00, зал №4. Дмитрий Федосов, руководитель отдела наступательной безопасности PT ESC, и Владислав Дриев, ведущий специалист того же отдела, расскажут о своем опыте автоматизации рутины пентеста, проблемах, с которыми столкнулись, особенностях известных инструментов (Masscan, NetExec, Impacket, NTLM Relay и других), а также о том, как тестировали полученные решения.

До встречи офлайн и онлайн 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2213👍12👏2
APT31. Атаки разящей панды 🐼

С 2024 по 2025 год российские IT-компании, работающие как подрядчики и интеграторы решений для государственных органов, столкнулись с серией хорошо продуманных и ловко реализованных целевых атак, что позволяло злоумышленникам долго оставаться необнаруженными.

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

🥷 О тактиках и техниках группы, а также ее уникальных инструментах можно прочитать в нашем блоге.

#TI #APT #DFIR #malware
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍14🦄9🙏3🤔2
PrevedNetMedved 🐻

В октябре 2025 года нашей группой киберразведки была зафиксирована продолжающаяся фишинговая активность хакерской группировки, обозначенной нами как NetMedved. Атаки были нацелены на российские организации: жертвам рассылались ZIP-архивы с набором документов-приманок, имитирующих документооборот российских компаний, а также замаскированными LNK-файлами, которые инициировали загрузку следующего стейджа и развертывание NetSupportRAT на устройствах жертв.

Операторы ВПО использовали несколько векторов атаки — от более классических цепочек с PowerShell-скриптами и HTA-файлами до значительно более редкого приема: доставки вредоносного кода по протоколу Finger и его последующего исполнения в командной строке.

Проанализировав активность и сетевую инфраструктуру NetMedved, мы увидели устойчивые пересечения с декабрьской кампанией 2024 года против российских компаний, о которой ранее писали в посте «PrevedMedved 👋 — это снова Lumma Stealer».

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

#TI #APT #Phishing
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍109
Деобфусцируем имена функций .NET вручную 🙌

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

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

Откроем бинарь в dnSpy и увидим следующую картину (скриншот 1).

Вспомним, что существует de4dot и попробуем скормить ему бинарь. Взяв то, что похоже на наиболее актуальную версию среди кучи форков (или форков форков (или форков форков форков)), выполним команду:

>  de4dotex .\sample.bin -vv


Результат на скриншоте 2.

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

🐍Попробуем сделать это на питоне, используя связку dnfile и dncil, набросав код для сбора обфусцированных имен функций и полей (скриншот 3).

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

Перепишем то же самое на C#, позаимствовав dnlib.dll у de4dot, дабы не страдать с самостоятельной ее сборкой. А чтобы не путаться среди кучи меню Visual Studio, просто приведем .csproj к следующему виду (требуется .Net 4.8 и его SDK):

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>10.0</LangVersion>
<Nullable>enable</Nullable>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<Reference Include="dnlib">
<HintPath>dnlib.dll</HintPath>
</Reference>
</ItemGroup>
</Project>


Заведем класс Utils, с двумя функциями — проверкой валидности имени и формированием нового имени (скриншот 4). Наконец, опишем основную логику по переименованию типов, методов, свойств, полей и событий классов (скриншот 5). Результат прогона программы представлен на скриншоте 6.

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

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

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

В альтернативном случае можно сразу обращаться к dnlib или инструментам на его основе.

Happy reversing!

#TI #reverse #malware #tip
@ptescalator
🔥27👍109
Новое подключение к старым техникам 📡

В ходе расследования инцидентов команда PT ESC IR обнаружила реверс-шелл, разработанный на .NET и наблюдаемый с 2023 года. Злоумышленниками он использовался для управления скомпрометированными хостами. ВПО создает процесс cmd.exe и перенаправляет поток ввода/вывода на управляющий сервер, который, как правило, являлся одним из хостов во внутренней инфраструктуре. Для безопасного сетевого соединения использовалась техника защищенного TCP-клиента с SSL/TLS.

Особенность инструмента в том, что он реализован средствами компонента System.Windows.Data из состава Windows Presentation Framework. Сама техника не новая — примитивы выполнения кода с использованием System.Windows.Data активно применяются при эксплуатации уязвимостей. Рассмотрим его реализацию подробнее.

В функции Main (скриншот 1) демонстрируется техника прямого выполнения через ObjectDataProvider из пространства имен System.Windows.Data. Несмотря на отсутствие явного вызова метода, при последовательной настройке свойств ObjectInstance, MethodParameters и, в завершение, MethodName объект автоматически инициирует выполнение указанного метода (Connect.Start) — прямо во время его инициализации в методе Main. Использование обертки ExpandedWrapper<Connect, ObjectDataProvider> указывает на заимствование паттерна из известных gadget-цепочек для десериализации, хотя в данном случае эксплуатация происходит напрямую, без этапа сериализации.

Метод Connect.Start (скриншот 2) запускает системную командную оболочку (cmd.exe) в качестве дочернего процесса, асинхронно перехватывает ее вывод через обработчик P_OutputDataReceived и перенаправляет данные обратно на C2-сервер, одновременно используя кастомный делегат (Delegate.Combine) для динамической связи с компонентом Px, отвечающим за сетевую передачу команд и результатов. Такая архитектура позволяет злоумышленнику выполнять произвольные команды в контексте cmd.exe на зараженной машине, сохраняя взаимодействие основанным на легитимных API .NET.

В методе Net.Run (скриншот 3) реализована сетевая C2-логика, устанавливающая зашифрованное соединение с удаленным сервером через TcpClient и SslStream с принудительным использованием TLS 1.2; IP-адрес и порт берутся из зашифрованных конфигурационных данных (скриншот 4) и расшифровываются «на лету» с помощью AES256 в режиме CBC/NoPadding, причем для генерации ключа используется PBKDF2 (RFC 2898), на вход которого передается строковое значение пароля и соли (скриншот 5).

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

1. Генерация ключа, в который необходимо передать App.PasswordHash и App.SaltKey;

2. Алгоритм расшифровки.

🗂 Вредоносные файлы были расположены в легитимных каталогах:

C:\Program Files\Internet Explorer\mshealthupdate.exe

C:\Program Files\Common Files\System\msadds.exe

C:\Program Files\Common Files\System\ado\msader.exe

Для закрепления в инфраструктуре и запуска исполняемых файлов злоумышленники использовали планировщик задач Windows.

Данный инструмент схож с реализацией общеизвестной утилиты ncat. Для вызова вредоносного метода используется легитимный класс ObjectDataProvider из системной библиотеки WPF, применяются делегаты для динамического подключения обработчиков, не оставляя четкой цепочки вызовов в IL-коде. Для шифрования вывода консоли используется TLS 1.2 и игнорируются ошибки сертификата (ValidateServerCertificate => true), что позволяет работать с любым C2, включая динамические IP.

YARA:

rule MSADDShell {
strings:
$v1 = "net_handlerDelOutDataNet"
$v2 = "P_OutputDataReceived"
$v3 = "add_OutputDataReceived"
$v4 = "SendDataFwd"
$v5 = "OnhandlerDelFwfPx"
$v6 = "OnhandlerDelOutDataNet"
$v7 = "msadds.exe" wide
condition:
uint16(0) == 0x5A4D and 5 of ($v*) and filesize < 100KB
}


#IOC #yara #dfir #detect #win #ti #ir
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍9👏61
Как молот грома помешал клешням безмолвия 🦀

Во время расследования инцидентов команда Incident Response при поддержке департамента Threat Intelligence обнаружила следы использования вредоносного ПО KrustyLoader.

Впервые это ВПО было описано в январе 2024 года экспертами из Volexity и Mandiant: они обнаружили его использование в атаках, нацеленных на эксплуатацию RCE-уязвимостей нулевого дня в Ivanti Connect Secure. Тогда же было указано, что KrustyLoader написан для Linux, однако позже появились версии для Windows. Примечательно, что на момент исследования загрузчик использовала только одна группировка, которую мы называем QuietCrabs.

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

Мы предполагаем, что второй группой является Thor. На основе изучения сетевой инфраструктуры злоумышленников и данных телеметрии мы пришли к выводу, что они проводили массовые атаки на российские компании. Для получения первоначального доступа к инфраструктуре группировка эксплуатировала ряд уязвимостей типа RCE (Remote Code Execution), например CVE-2025-53770, CVE-2021-27065.

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

#IR #TI #APT
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥1284👏1
Мы бы очень хотели сделать для вас обзор «томатного гозе», но в пятницу вы проголосовали за новый разбор (Ex)Cobalt... 🙄

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

Наряду с хорошо известными и проверенными инструментами — бэкдором Cobint, шифровальщиками Babuk и Lockbit, а также разного рода сетевыми туннелями — группа продолжает создавать и развивать новые средства, такие как Pumakit и Octopus 🐙

Обзор инструментов группы, которые она применяла в атаках в 2024–2025 годах, можно посмотреть в нашей статье.

#dfir #ir #linux #ti #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20😁15👏11🍾41
He may not, as unvalued persons do, Carve for himself (W. Shakespeare)


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

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

В случае карвинга событий журналов ОС Windows хорошо зарекомендовала себя техника «забудь про BinXML»: для полноценного декодирования содержимого полей единичного события необходимы шаблоны, хранящиеся в заголовке чанка, который по понятным причинам может просто отсутствовать. Не пытаясь даже искать такие шаблоны, можно составить текстовое описание единичного события, где однозначно выделяются даты, хранимые в стандартных расположениях, коды событий и несколько других служебных полей, а также декодируемые «как текст» (с вырезанием служебных последовательностей BinXML) байтовые последовательности, содержащие данные для подстановки в шаблоны.

В итоге подобная техника позволяет получить существенно больше данных, нежели при попытке восстановления чанков EVTX: имея дату, код события EventID и тип журнала, хранимый в виде текста, можно понять, о чем идет речь (скриншот 1).

Схожий подход может применяться и для «живых» систем, где атакующие предприняли попытку удаления данных с целью сокрытия следов своих перемещений.

🔎 Для поиска остаточных данных таблицы MFT, помимо восстановления единичных записей стандартного формата, в ряде случаев хорошо работает техника поиска единичных атрибутов: как правило, ценность представляют атрибуты типа 0x30, то есть $FILE_NAME, содержащие четыре метки времени, имя файла и его размер (скриншот 2). В отдельных случаях такие единичные атрибуты даже для «живой» системы позволяют обнаружить, например, в файле подкачки (pagefile.sys) следы присутствия вредоносных файлов, отсутствующие в других артефактах. Подобные результаты также возможно получить с помощью поиска USN-записей, содержащих одну метку времени и имя файла, с которым производились какие-либо операции ФС (скриншот 3).

💽 Для поиска исполняемых файлов в образе диска хорошо работает тактика поиска заголовка PE с последующей оценкой размера файла по совокупному размеру секций. При небольшом усложнении алгоритма возможно реализовать более точный подход: определение энтропии конечных фрагментов файла с последовательным уменьшением размера фрагмента до момента перехода эмпирически определенного порогового значения «снизу вверх» при соблюдении паддинга в ряде случаев позволяет получить исполняемые файлы с совпадением по хешу. Однако даже «вырубленные топором» исполняемые файлы ВПО или их фрагменты прекрасно детектируются с помощью YARA-правил (скриншоты 4, 5).

📁 Для восстановления файлов реестра возможно использование поиска по заголовку с определением размера файла по полю HiveBinsDataSize: данное приближение в ряде случаев позволяет получить набор файлов, пригодных для обработки классическими инструментами. Характерной особенностью в данном случае является наличие в заголовке даты модификации и типа файла (primary/log), а также имени файла в UTF-16 размером 64 байта. Несмотря на то что для некоторых потенциально интересных с точки зрения форензики файлов (UsrClass.dat) структура пути не позволяет определить с достаточной точностью исходное размещение файла, для большинства случаев имеющейся информации вполне достаточно.

Наконец, прекрасно зарекомендовала себя техника поиска в образе диска читаемых текстовых фрагментов, ассоциируемых с выявленным инструментарием атакующих: в ряде случаев она позволяет восстановить командлайны и логи использованных инструментов, включая пароли, имена УЗ и подобные «приятные мелочи» (скриншот 6).

#yara #dfir #ir #windows
@ptescalator
🔥1612👍7