В продолжение предыдущих публикаций рассказываем, как обнаруживать уязвимость CVE-2025-33073 🕵️♂️
1️⃣ Отслеживать DNS-запросы с Marshalled-суффиксом
В атаках Reflection Relay злоумышленник вынуждает службы выполнять DNS-запросы к поддельным именам с паттерном
• Что мониторить
Все DNS-запросы, где имя узла заканчивается на marshalled-часть (
• События
Sysmon Event ID 22 (DNS-запросы на узлах).
События DNS-серверов, содержащие такие запросы.
2️⃣ Ловить LDAP-поиск с marshalled-суффиксом
Reflection Relay вызывает LDAP-запросы от атакуемого узла к контроллеру домена, в которых параметр
• Что мониторить:
Запросы LDAP, в которых параметр
• События:
Windows Security Event 1644 ("A search was performed in Active Directory") на контроллерах домена.
3️⃣ Знать механику CVE-2025-33073 и Coerce-атаки
Как работает уязвимость:
• Coerce-атаки (PetitPotam, PrinterBug) вынуждают жертву подключиться к поддельному DNS-имени.
• Windows ошибочно считает запрос локальным из-за marshalled-суффикса, отключая проверки NTLM и Kerberos.
• Это позволяет атакующему выполнить Relay сессии обратно на жертву для получения RCE с правами SYSTEM.
Примеры Coerce-атак:
• PetitPotam: принуждение через уязвимость в EFS RPC, заставляющее LSASS инициировать аутентификацию;
• PrinterBug: принудительная отправка NTLM-хешей через уязвимость в службе печати Windows (MS-RPRN).
4️⃣ Опираться на примеры сработавших правил корреляции
При реализации CVE-2025-33073 совместно с PetitPotam для дампа учетных данных сработали следующие правила корреляции:
• Coerce_Auth: правило обнаруживает Coerce-атаки на узел с целью перехвата хеша машинной учетной записи атакованного узла, а также пытается определить по названию используемого пайпа, какая техника атаки используется (netdfs = DFSCoerce; spoolss = PrinterBug; fssagentrpc = ShadowCoerce; efsrpc, lsarpc, samr, lsass, netlogon = PetitPotam; msftewds = WSPCoerce) и какой инструмент применяется.
• SVCCTL_Connection: правило обнаруживает подключение к именованному каналу
• Remote_Password_Dump: правило обнаруживает удаленный дамп паролей через обращение к именованному каналу
5️⃣ Использовать примеры SIGMA-правил
Если у вас нет MaxPatrol SIEM, то вот вам пример простых SIGMA-правил:
Для Sysmon Event ID 22.
Для Windows Security Event 1644.
6️⃣ Использовать наши публичные Suricata-сигнатуры для обнаружения этой атаки
#detect #cve #win #sigma #rules
@ptescalator
1️⃣ Отслеживать DNS-запросы с Marshalled-суффиксом
В атаках Reflection Relay злоумышленник вынуждает службы выполнять DNS-запросы к поддельным именам с паттерном
1UWhRCA + 37–45 символов Base64. Записи вида srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA.example.com или localhost1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA.example.com — индикаторы попытки Reflection Relay (NTLM, Kerberos).• Что мониторить
Все DNS-запросы, где имя узла заканчивается на marshalled-часть (
1UWhRCA + 37-45 символов Base64).• События
Sysmon Event ID 22 (DNS-запросы на узлах).
События DNS-серверов, содержащие такие запросы.
2️⃣ Ловить LDAP-поиск с marshalled-суффиксом
Reflection Relay вызывает LDAP-запросы от атакуемого узла к контроллеру домена, в которых параметр
name= содержит поддельное DNS-имя формата [имя_узла]1UWhRCA[Base64]. Это происходит при выполнении Relay-атаки обратно на жертву.• Что мониторить:
Запросы LDAP, в которых параметр
name= содержит конструкцию: "[имя_хоста]1UWhRCA[символы Base64]"• События:
Windows Security Event 1644 ("A search was performed in Active Directory") на контроллерах домена.
3️⃣ Знать механику CVE-2025-33073 и Coerce-атаки
Как работает уязвимость:
• Coerce-атаки (PetitPotam, PrinterBug) вынуждают жертву подключиться к поддельному DNS-имени.
• Windows ошибочно считает запрос локальным из-за marshalled-суффикса, отключая проверки NTLM и Kerberos.
• Это позволяет атакующему выполнить Relay сессии обратно на жертву для получения RCE с правами SYSTEM.
Примеры Coerce-атак:
• PetitPotam: принуждение через уязвимость в EFS RPC, заставляющее LSASS инициировать аутентификацию;
• PrinterBug: принудительная отправка NTLM-хешей через уязвимость в службе печати Windows (MS-RPRN).
4️⃣ Опираться на примеры сработавших правил корреляции
При реализации CVE-2025-33073 совместно с PetitPotam для дампа учетных данных сработали следующие правила корреляции:
• Coerce_Auth: правило обнаруживает Coerce-атаки на узел с целью перехвата хеша машинной учетной записи атакованного узла, а также пытается определить по названию используемого пайпа, какая техника атаки используется (netdfs = DFSCoerce; spoolss = PrinterBug; fssagentrpc = ShadowCoerce; efsrpc, lsarpc, samr, lsass, netlogon = PetitPotam; msftewds = WSPCoerce) и какой инструмент применяется.
• SVCCTL_Connection: правило обнаруживает подключение к именованному каналу
svcctl, который ответственен за удаленное конфигурирование служб Windows на узлах через Service Control Manager, что может привести к выполнению произвольного кода;• Remote_Password_Dump: правило обнаруживает удаленный дамп паролей через обращение к именованному каналу
WINREG.5️⃣ Использовать примеры SIGMA-правил
Если у вас нет MaxPatrol SIEM, то вот вам пример простых SIGMA-правил:
Для Sysmon Event ID 22.
Для Windows Security Event 1644.
6️⃣ Использовать наши публичные Suricata-сигнатуры для обнаружения этой атаки
#detect #cve #win #sigma #rules
@ptescalator
🔥21👍10❤9👏1
Во всемирный день рыболовства самое время спросить... Как часто вы получаете фишинг на почту? 🎣
Anonymous Poll
12%
Каждый раз, когда вижу руководителя в отправителях 😎
14%
Скучаю по нигерийским принцессам 👸🏿
2%
Больше, чем спама от рассылок 🛍
2%
Я точно в CRM у хакеров 👨💻
12%
Чаще, чем посты в ESCalator 😔
3%
На завтрак, обед и ужин 🍽
4%
Два раза в месяц от банка 💸
12%
Хотя бы они мне пишут... 🤝
23%
Отписался от фишинга 🙅
16%
Я и сам своего рода рыбак 😏
😁13👍4👏3👀2🤡1🗿1
А у нас большое событие! 😡
В PT ESC открылась Антивирусная лаборатория: мы объединили экспертизу «ВИРУСБЛОКАДА» с нашей, анализируем множество сэмплов и самостоятельно пишем сигнатуры для антивирусной базы.
🌚 Более того, на днях эксперт Позитива впервые создал детектирующую запись для антивирусного движка. А перед этим освоил теорию и практику новой для нас технологии и навык использования необходимого набора инструментов. Сможете угадать название детекта? Голосуйте в опросе ниже.
Если у вас есть интересный вредонос, который надо проанализировать и для которого необходимо создать правила обнаружения в наших продуктах, то не стесняйтесь: [email protected]
#avlab
@ptescalator
В PT ESC открылась Антивирусная лаборатория: мы объединили экспертизу «ВИРУСБЛОКАДА» с нашей, анализируем множество сэмплов и самостоятельно пишем сигнатуры для антивирусной базы.
Если у вас есть интересный вредонос, который надо проанализировать и для которого необходимо создать правила обнаружения в наших продуктах, то не стесняйтесь: [email protected]
#avlab
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤯13🔥11❤4👎2😁2
Какое название получил детект? 👾
Anonymous Poll
10%
Zlovred.vObed
5%
MaloWarja.Detect
5%
Ochen.Kusachiy.Virus
30%
Trojan.PaganReverseShell
5%
ThisIsS.Parta
15%
Bezumno.Mozhno_Byt_Pervym
9%
Trojan.NoNeKon
5%
Hack_Ne_Tak.A_Vot_Tak
12%
Backdoor.Riyki.Baziyki
5%
vptsigi.a.vvbazapisi
😁16🔥6🎉5🤣3👍2👏2
Вредоносы в SYSVOL: ищем источник 😐
Допустим, мы расследуем инцидент с шифровальщиком. Для запуска шифровальщика хакеры использовали групповую политику (например, прописали задачу планировщика). Сам вредонос они положили в папку
🥷 Как понять, откуда действовал хакер? В этом посте сфокусируемся на файловом следе.
Логика простая: чтобы положить файл в
Кажется, все просто, но есть нюанс: содержимое каталога
Посмотрим отладочные логи DFSR на произвольном DC из тех, на которых вредонос попал в папку
Поищем в логах имя нашего вредоноса (пусть это будет
Если коротко, то оно свидетельствует о появлении нового файла в реплицируемой папке, то есть искомый файл был изначально размещен на этом DC. В этом случае можно переходить к последнему абзацу в посте ниже 🙂
Если же вредонос был реплицирован на исследуемый DC, мы увидим в логах DFSR подобное сообщение:
Очень интересно, но ничего не понятно.
Продолжение в следующем посте 🔽
#ir #dfir #DFSR
@ptescalator
Допустим, мы расследуем инцидент с шифровальщиком. Для запуска шифровальщика хакеры использовали групповую политику (например, прописали задачу планировщика). Сам вредонос они положили в папку
SYSVOL на контроллере домена (DC).🥷 Как понять, откуда действовал хакер? В этом посте сфокусируемся на файловом следе.
Логика простая: чтобы положить файл в
SYSVOL, хакер должен был так или иначе «зайти» на DC. Поэтому смотрим, когда был создан файл (кстати, поэтому важно сначала собрать данные для расследования, а потом уже зачищать системы), и соотносим эту информацию с входами в систему.Кажется, все просто, но есть нюанс: содержимое каталога
SYSVOL реплицируется между DC с помощью DFSR (Distributed File System Replication). То есть хакеру достаточно положить вредоносный файл на один DC, а дальше система автоматически распространит его по всем остальным. Как понять, какой DC был исходным, особенно если DC много?Посмотрим отладочные логи DFSR на произвольном DC из тех, на которых вредонос попал в папку
SYSVOL. Обычно эти логи находятся в папке %systemroot%\debug, имена файлов имеют вид Dfsrxxxxx.log и Dfsrxxxxx.log.gz (.gz в Windows? Да!). Логи текстовые, вполне поддаются грепу, но при этом некоторые события имеют многострочный формат, — учитывайте это, если не хотите потерять контекст.Поищем в логах имя нашего вредоноса (пусть это будет
badfile.exe). Если мы нашли исходный DC с первого раза, мы должны найти в логах подобное сообщение:20250526 02:44:24.906 5628 USNC 2871 UsnConsumer::CreateNewRecord LDB Inserting ID Record:
+ <...>
+ name badfile.exe
Если коротко, то оно свидетельствует о появлении нового файла в реплицируемой папке, то есть искомый файл был изначально размещен на этом DC. В этом случае можно переходить к последнему абзацу в посте ниже 🙂
Можно на всякий случай перепроверить это в журнале$UsnJrnl:$J:badfile.exe,.exe,132035,6849,257939,4,.\Windows\SYSVOL\domain\scripts,52168700184,2025-05-25 23:44:23.6245532,FileCreate,Archive,436154648
Видно, что файл создается на файловой системе (FileCreate).
Если бы файл был реплицирован, это выглядело бы так:2025-03-25 23:44:25 +0000 UTC,badfile-{D5B54C1C-F832-4838-ABC8-C5027E7F9F51}-v123456.exe,System Volume Information\DFSR\Private\{F0285778-7EF8-4808-85D7-68223AA11FB5}-{24DC8227-6461-4D16-96D5-537D78549536}\Installing\badfile-{D5B54C1C-F832-4838-ABC8-C5027E7F9F51}-v123456.exe,FILE_CREATE,archive,7|109885
2025-05-25 23:44:25 +0000 UTC,badfile-{D5B54C1C-F832-4838-ABC8-C5027E7F9F51}-v123456.exe,System Volume Information\DFSR\Private\{F0285778-7EF8-4808-85D7-68223AA11FB5}-{24DC8227-6461-4D16-96D5-537D78549536}\Installing\badfile-{D5B54C1C-F832-4838-ABC8-C5027E7F9F51}-v123456.exe,RENAME_OLD_NAME,archive,7|109885
2025-05-25 23:44:25 +0000 UTC,badfile.exe,Windows\SYSVOL\domain\scripts\badfile.exe,RENAME_NEW_NAME,archive,5|269425
Видно, что файл сначала создается в папке DFSR, а потом уже переносится в SYSVOL.
Если же вредонос был реплицирован на исследуемый DC, мы увидим в логах DFSR подобное сообщение:
20250526 02:44:24.949 4452 INCO 3065 InConnection::ReceiveUpdates Received: uid:{D5B54C1C-F832-4838-ABC8-C5027E7F9F51}-v123456 gvsn:{D5B54C1C-F832-4838-ABC8-C5027E7F9F51}-v123456 fileName:badfile.exe session:86382 connId:{C62DFB26-63FA-4E9F-B533-0F487BF8E043} csId:{F0285778-7EF8-4808-85D7-68223AA11FB5} csName:SYSVOL Share
Очень интересно, но ничего не понятно.
Продолжение в следующем посте 🔽
#ir #dfir #DFSR
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤12⚡7🔥4
Продолжаем искать файловый след из поста выше 🐾
Чтобы понять, с какого DC реплицировался файл, нужно узнать, какому хосту соответствует указанный
Как это сделать
1️⃣ Можно посмотреть таблицу соответствия в файле
2️⃣ Можно поискать в логах DFSR события, содержащие одновременно интересующий нас
3️⃣ Если DC «живы», то информацию о GUID’ах можно извлечь с помощью утилиты
Итак, в ходе расследования мы выяснили, что изначально вредоносный файл был размещен на DC02.
Дело за малым — узнать, кто и откуда заходил на этот DC и положил туда этот файл. Журналы ОС и SUM в помощь — никто не обещал, что будет легко! 🙂
#ir #dfir #DFSR
@ptescalator
Чтобы понять, с какого DC реплицировался файл, нужно узнать, какому хосту соответствует указанный
connId (это значение статично и соответствует однонаправленной связи между двумя машинами).Как это сделать
1️⃣ Можно посмотреть таблицу соответствия в файле
\System Volume Information\DFSR\Config\Replica_<GUID группы репликации>.XML. Поищем в нем наш connId и увидим примерно следующее:<DfsrConnection>
<ConnectionGuid>C62DFB26-63FA-4E9F-B533-0F487BF8E043</ConnectionGuid>
<...>
<PartnerName>DC02</PartnerName>
<...>
<PartnerDns>dc02.corp.local</PartnerDns>
<...>
</DfsrConnection>
2️⃣ Можно поискать в логах DFSR события, содержащие одновременно интересующий нас
connId и слова "partnerDns", "partnerName" или "partnerAddress". Можем обнаружить что-то типа:20250314 01:22:31.307 6304 DOWN 3959 [ERROR] DownstreamTransport::EstablishConnection EstablishConnection failed. Check that the connection partner is valid. If not then recreate the connection with valid partner. connId:{C62DFB26-63FA-4E9F-B533-0F487BF8E043} rgName:Domain System Volume partnerName:DC02 partnerDns:dc02.corp.local
3️⃣ Если DC «живы», то информацию о GUID’ах можно извлечь с помощью утилиты
Dfsradmin. Этот способ разбирать не будем — более подробно про логи DFSR можно почитать по ссылке.Итак, в ходе расследования мы выяснили, что изначально вредоносный файл был размещен на DC02.
Дело за малым — узнать, кто и откуда заходил на этот DC и положил туда этот файл. Журналы ОС и SUM в помощь — никто не обещал, что будет легко! 🙂
#ir #dfir #DFSR
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25👏8✍7🔥4❤3
Нефритовый металл: уже не новая группа Telemanmilconfav атакует военные организации? 🪖
В марте исследователи из F6 опубликовали материал о группировке Telemancon, атаковавшей промышленные организации. Группа была названа в честь использования сервиса
Нами были обнаружены несколько файлов, связанных с этой группой. Один из них —📬
При запуске, как и в случае с семплами, описанными F6, SCR-скрипт открывал decoy-документ PDF и вредоносный PowerShell-скрипт в той же
Но больший интерес представляет обнаруженный архив
После запуска каждый из них дропает два файла: PowerShell-скрипт (в папку
🫤 Сами инструменты претерпели изменения: их стало сложнее анализировать и они повысили устойчивость к защитным механизмам. Основные изменения коснулись TMCDropper. Раньше код имел структуру с отдельными зашифрованными модулями, а в новой версии используется VM-based obfuscation.
Сам же TMCShell не претерпел больших изменений: в него добавили дополнительную проверку на наличие файлов с расширением
Ключевым изменением является использование глобальной переменной, например
Эта переменная влияет на regex-маску в цикле расшифровки:
После изменения
TMCShell получает содержимое страницы c
🏮 Самый интересный момент заключается в том, что Excel-документы содержали метаданные, которые указывают, что документ редактировался последний раз (вероятно, и создан) в системе с китайской локалью в WPS Office, аналоге Microsoft Office, созданной китайской компанией Kingsoft. Сам WPS Office поддерживает несколько языков, включая русский и английский, но в русской или английской версии в поле Heading Pairs должно быть указано Лист1 или Sheet1, в то время как во всех четырех документах-приманках поле Heading Pairs содержало
IoCs:
#TI #APT #malware #ioc
@ptescalator
В марте исследователи из 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).Сам же 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🔥11❤9👏2
Собеседование → ПО на iPhone от «работодателя» → у вас больше нет смартфона 👋
Новая старая схема блокировки iPhone через «режим пропажи» снова в ходу. Только теперь она стала изощреннее: в начале поста — реальный пример многоходовочки, который мы подробно описали в статье на Хабре.
Там же — еще несколько случаев и разбор действий злоумышленника: как он получает доступ, блокирует устройство и переходит к требованию выкупа. И главное — инструкция о том, что делать, если вы уже оказались в такой ситуации: какие инструменты помогут, куда стоит написать, а к кому лучше не обращаться, чтобы не сделать еще хуже.
😎 Бонус: мы подготовили наглядную схему восстановления доступа к iPhone. Она доступна в формате PDF с кликабельными ссылками — скачивайте и сохраняйте на разные устройства (на всякий случай).
#ios #dfir #mobile
@ptescalator
Новая старая схема блокировки iPhone через «режим пропажи» снова в ходу. Только теперь она стала изощреннее: в начале поста — реальный пример многоходовочки, который мы подробно описали в статье на Хабре.
Там же — еще несколько случаев и разбор действий злоумышленника: как он получает доступ, блокирует устройство и переходит к требованию выкупа. И главное — инструкция о том, что делать, если вы уже оказались в такой ситуации: какие инструменты помогут, куда стоит написать, а к кому лучше не обращаться, чтобы не сделать еще хуже.
#ios #dfir #mobile
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍8👏7🏆3❤1😈1
HTML-вложения как инструмент фишинга 🤑
Популярным инструментом у злоумышленников становится доставка HTML-подобных вложений электронных писем, содержащих различные техники открытия стороннего веб-контента, взаимодействия с ним и отправки сведений на сторонние серверы.
В этом посте разберем пару примеров HTML-подобных вложений, доставляемых с целью кражи учетных данных.
1️⃣ Первый фишинговый образец направлен на вызов методов, позволяющих при его открытии отобразить контент сторонней веб-страницы, с которой может провзаимодействовать получатель.
В начале JavaScript-кода (скриншот 1) определяются константы P и W, являющиеся ключом шифрования и зашифрованным текстом, а также функция дешифрования k. Полученные дешифрованные инструкции помещаются в константу Y и имеют вид, представленный на скриншоте 2.
Как можно понять по этим инструкциям, они создают элемент iframe, содержимое которого получено из фишингового URL-адреса (его значение закодировано в base64); также установлены CSS-стили, позволяющие полученному контенту занять всю доступную область экрана. Кроме того, в этих инструкциях видим вызов метода document.write для размещения полученного контента на вкладке браузера.
Пока что это просто набор текста. Отдельно остановимся на способе запуска инструкций из константы Y. Для этого из вложения вызывается следующая часть скрипта (скриншот 3).
При определении константы H создается ссылка на глобальный объект o, которым в JavaScript-коде является window. Вызов
Чтобы дополнительно усложнить детектирование исполнения вредоносного кода скрипта, злоумышленники создают пустую функцию y, переопределяют для нее метод
Подозрительные маркеры при анализе подобных образцов — переопределение стандартных методов (вроде toString); маппинг слов из числового массива через вызов функции
2️⃣ Еще один заинтересовавший нас образец содержит интересные методы «антидебага», но о них чуть попозже. Он представляет собой форму ввода учетных данных для открытия заблюренного pdf-документа.
HTML-образец содержит два скрипта. Первый после простой валидации наличия email-адреса в поле ввода содержит POST-метод, отправляющий учетные данные на сторонний сервер (скриншот 4).
Как можем видеть, в качестве query-параметра у URL-ссылки есть количество попыток. Естественно, никакой аутентификации по введенным в форму данным не производится, они просто утекают по указанному адресу. При этом параметрСпасибо авторам за комментарии к коду, позволившие понять, что вообще происходит.
Второй скрипт, о котором мы упомянули ранее, имеет следующий вид, представленный на скриншоте 5.
Этот скрипт отслеживает вызов контекстного меню, нажатие клавиш с вызовом встроенного в браузер инструмента разработчика, а также попытки выделить, вырезать, копировать текст с подгружаемой страницы, открыть исходник файла и сохранить его в отдельный файл. Вероятно, по мнению злоумышленников, ограничение возможностей взаимодействия с загруженным интерфейсом скорее вынудит жертву ввести пароль в единственный доступный элемент на странице.
Помимо вызова POST-методов на незнакомые веб-ресурсы, внимание аналитика, по нашему мнению, может привлечь определение вот таких ограничивающих методов, запрещающих вызов дебаг-инструментов, а также дополнительное взаимодействие с интерфейсом страницы.
#phishing #detect #tip
@ptescalator
Популярным инструментом у злоумышленников становится доставка HTML-подобных вложений электронных писем, содержащих различные техники открытия стороннего веб-контента, взаимодействия с ним и отправки сведений на сторонние серверы.
В этом посте разберем пару примеров HTML-подобных вложений, доставляемых с целью кражи учетных данных.
1️⃣ Первый фишинговый образец направлен на вызов методов, позволяющих при его открытии отобразить контент сторонней веб-страницы, с которой может провзаимодействовать получатель.
В начале JavaScript-кода (скриншот 1) определяются константы P и W, являющиеся ключом шифрования и зашифрованным текстом, а также функция дешифрования k. Полученные дешифрованные инструкции помещаются в константу Y и имеют вид, представленный на скриншоте 2.
Как можно понять по этим инструкциям, они создают элемент iframe, содержимое которого получено из фишингового URL-адреса (его значение закодировано в base64); также установлены CSS-стили, позволяющие полученному контенту занять всю доступную область экрана. Кроме того, в этих инструкциях видим вызов метода document.write для размещения полученного контента на вкладке браузера.
Пока что это просто набор текста. Отдельно остановимся на способе запуска инструкций из константы Y. Для этого из вложения вызывается следующая часть скрипта (скриншот 3).
При определении константы H создается ссылка на глобальный объект o, которым в JavaScript-коде является window. Вызов
o[X] (в X просто закодировано слово Function) эквивалентен вызову у глобального объекта свойства Function, при передаче параметров в которое они будут исполнены как новые функции. Как мы видим далее по коду, в объект передаются декодированные инструкции из константы Y.Чтобы дополнительно усложнить детектирование исполнения вредоносного кода скрипта, злоумышленники создают пустую функцию y, переопределяют для нее метод
toString, дополняя его вызовом вышеупомянутого глобального объекта window. Далее выполняется строчка U = ${y}: y преобразуется в строку, вызывая переопеределенный toString, внутри которого уже запускается загрузка контента.Подозрительные маркеры при анализе подобных образцов — переопределение стандартных методов (вроде toString); маппинг слов из числового массива через вызов функции
fromCharCode (в константе X), а также определение длинных числовых и текстовых констант с дальнейшим определением функций по их декодированию.2️⃣ Еще один заинтересовавший нас образец содержит интересные методы «антидебага», но о них чуть попозже. Он представляет собой форму ввода учетных данных для открытия заблюренного pdf-документа.
HTML-образец содержит два скрипта. Первый после простой валидации наличия email-адреса в поле ввода содержит POST-метод, отправляющий учетные данные на сторонний сервер (скриншот 4).
Как можем видеть, в качестве query-параметра у URL-ссылки есть количество попыток. Естественно, никакой аутентификации по введенным в форму данным не производится, они просто утекают по указанному адресу. При этом параметр
attempt инкрементируется, и при третьей попытке ввести в форму какие-то данные производится перенаправление на легитимный веб-ресурс. Второй скрипт, о котором мы упомянули ранее, имеет следующий вид, представленный на скриншоте 5.
Этот скрипт отслеживает вызов контекстного меню, нажатие клавиш с вызовом встроенного в браузер инструмента разработчика, а также попытки выделить, вырезать, копировать текст с подгружаемой страницы, открыть исходник файла и сохранить его в отдельный файл. Вероятно, по мнению злоумышленников, ограничение возможностей взаимодействия с загруженным интерфейсом скорее вынудит жертву ввести пароль в единственный доступный элемент на странице.
Помимо вызова POST-методов на незнакомые веб-ресурсы, внимание аналитика, по нашему мнению, может привлечь определение вот таких ограничивающих методов, запрещающих вызов дебаг-инструментов, а также дополнительное взаимодействие с интерфейсом страницы.
#phishing #detect #tip
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23🔥17👍12
Страсти вокруг PyPI: 🪰⮕🐘?
На прошлой неделе CNews выпустили новость: "Россиян погнали из сообщества Python. Пока только избранных, но критерии отбора до предела странные". В ней выясняется, что Python Package Index (PyPI), крупнейшее хранилище пакетов Python, запретила регистрацию новых пользователей с указанием почты на домене inbox.ru.
Блокировка россиян в различных комьюнити — животрепещущая тема. Её процитировали и другие издания.
@banksta:
@imaxairu:
Команда Supply Chain Security активно сотрудничает с PyPI в области обнаружения троянов. Мы решили провалидировать, были ли действия администрации репозитория обоснованными.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 1/4
Продолжение⬇️
На прошлой неделе CNews выпустили новость: "Россиян погнали из сообщества Python. Пока только избранных, но критерии отбора до предела странные". В ней выясняется, что Python Package Index (PyPI), крупнейшее хранилище пакетов Python, запретила регистрацию новых пользователей с указанием почты на домене inbox.ru.
В официальном заявлении сказано, что с почтовых ящиков inbox.ru пришла волна спама – пользователи с такой почтой создали 250 профилей и добавили к ним свыше полутора тысяч проектов, которые якобы «обманывают пользователей и представляют угрозу безопасности» (leading to end-user confusion, abuse of resources, and potential security issues).
Блокировка россиян в различных комьюнити — животрепещущая тема. Её процитировали и другие издания.
@banksta:
Россиян изгоняют из сообщества программистов Python. Им запретили пользоваться репозиторием PyPI с пакетами для Python. Ограничения коснулись только тех, кто создает новый аккаунт с привязкой почты на inboxru и тех, кто хочет добавить такую почту в уже существующий профиль. Домен принадлежит Mailru.
@imaxairu:
Россиянам запретили пользоваться репозиторием PyPI с пакетами для Python
Ограничения коснулись только тех, кто создает новый аккаунт с привязкой почты на inbox .ru и тех, кто хочет добавить такую почту в уже существующий профиль
Домен принадлежит Mail .ru. На другие домены компании лимиты пока не распространяются
Команда Supply Chain Security активно сотрудничает с PyPI в области обнаружения троянов. Мы решили провалидировать, были ли действия администрации репозитория обоснованными.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 1/4
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
zoom.cnews.ru
Россиян погнали из сообщества Python. Пока только избранных, но критерии отбора до предела странные
Россиянам запретили пользоваться репозиторием PyPI с пакетами для Python. Ограничения коснулись только тех, кто создает новый аккаунт с привязкой почты на inbox.ru и тех, кто хочет добавить такую почту в уже существующий профиль. Домен принадлежит Mail.ru.…
❤14👍9🔥6🤝1
Даём оценку официальным заявлениям
CNews ссылаются на статью в блоге PyPI, выпущенную 15 июля 2025. В ней говорится, что, руководствуясь практикой блокировки мусорных почтовых доменов, они закрывают регистрацию новых пользователей в Python Package Index с использованием почты на домене
Схожее решение администрация PyPI выносила и год назад, 16 июня 2024, в отношении доменов
Следует уточнить, что для скачивания пакетов не требуется регистрация. Учётная запись нужна для публикации своих проектов.
PyPI приводит статистику:
По нашему мнению не существует легитимного сценария, в котором одному пользователю потребуется столько учёток. Создавать большое количество проектов имеет смысл в борьбе с неймсквоттингом (на примере Яндекса), но для этого достаточно и одной учётки.
Обращаем внимание на последний абзац поста на PyPI (ниже перевод):
Давайте разберемся с кампанией.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 2/4
Продолжение⬇️
CNews ссылаются на статью в блоге PyPI, выпущенную 15 июля 2025. В ней говорится, что, руководствуясь практикой блокировки мусорных почтовых доменов, они закрывают регистрацию новых пользователей в Python Package Index с использованием почты на домене
inbox.ru.Схожее решение администрация PyPI выносила и год назад, 16 июня 2024, в отношении доменов
outlook.com и hotmail.com (принадлежат Microsoft) — они стали излюбленным решением для злоумышленников из-за простоты массовой регистрации доменов.Следует уточнить, что для скачивания пакетов не требуется регистрация. Учётная запись нужна для публикации своих проектов.
PyPI приводит статистику:
9 июня: появилась первая учётная запись кампании.
11 июня: за 3 часа было создано 46 учётных записей.
24 июня: за 4 часа было создано 207 учётных записей.
С 26 июня по 7 июля ими было создано 1525 проектов:
2025-06-26 9
2025-06-27 295
2025-06-28 39
2025-06-29 119
2025-06-30 740
2025-07-01 249
2025-07-02 46
2025-07-10 16
2025-07-11 12
По нашему мнению не существует легитимного сценария, в котором одному пользователю потребуется столько учёток. Создавать большое количество проектов имеет смысл в борьбе с неймсквоттингом (на примере Яндекса), но для этого достаточно и одной учётки.
Обращаем внимание на последний абзац поста на PyPI (ниже перевод):
Надеемся, что мы сможем отменить это решение в будущем, когда будем более уверены в способности этого провайдера электронной почты предотвращать злоупотребления. Если вы работаете в этом провайдере, пожалуйста, напишите нам по адресу [email protected], чтобы обсудить это решение.
Давайте разберемся с кампанией.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 2/4
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
blog.pypi.org
Prohibiting inbox.ru email domain registrations - The Python Package Index Blog
We have prohibited new registrations of accounts using inbox.ru email domains.
❤12👍8🤝7
Характер кампании
Изучим проекты, выпустившие свой первый релиз в рамках действия кампании 26 июня — 7 июля, захватив слева и справа дополнительное время для наглядности: с 12 июня по 15 июля.
Разработчик, публикуя проект, может по желанию оставить email для обратной связи. В этот промежуток было опубликовано всего 4 пакета с явным указанием почты на
График 1 (см. ниже) демонстрирует, принял ли решение разработчик указать email в первом релизе своего проекта.
Наблюдаем:
1. Снижение общей активности разработчиков в выходные (видны двухдневные ямы, чередующиеся с пятидневными буднями).
2. Всплески пакетов без email, выпущенные 27 июня (378), 30 июня (662), 1 июля (509).
Второе наблюдение соотносится со статистикой PyPI: 27 июня выпущено 295 пакетов на
В рамках периода активности есть 1403 проекта без email с одинаковым описанием: "Minimal package created automatically" — и версией 0.0.1 (график 2). Они совпадают с периодом активности кампании, которой были недовольны администраторы PyPI.
Названия пакетов из этой пачки — явный тайпсквоттинг (атака на то, что разработчик опечатается в названии пакета при установке или поведется на хорошее название — и поставит себе троян):
🟢 🐱
🟢
🟢
🟢
🟢
🟢
🟢
🟢 🍉
🟢
🟢
🟢
🟢 💀
🟢
🟢
🟢
🟢
🟢
🟢
Некоторые из названий тагретят разработчиков российских компаний:
🟢 🐱
🟢 💀
🟢
🟢
🟢 😺
🟢
На этих названиях становится понятно, что администрация PyPI пресекла кампанию, от которой могли пострадать наши соотечественники🥺
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 3/4
Продолжение⬇️
Изучим проекты, выпустившие свой первый релиз в рамках действия кампании 26 июня — 7 июля, захватив слева и справа дополнительное время для наглядности: с 12 июня по 15 июля.
Разработчик, публикуя проект, может по желанию оставить email для обратной связи. В этот промежуток было опубликовано всего 4 пакета с явным указанием почты на
@inbox.ru, все легитимные.График 1 (см. ниже) демонстрирует, принял ли решение разработчик указать email в первом релизе своего проекта.
Наблюдаем:
1. Снижение общей активности разработчиков в выходные (видны двухдневные ямы, чередующиеся с пятидневными буднями).
2. Всплески пакетов без email, выпущенные 27 июня (378), 30 июня (662), 1 июля (509).
Второе наблюдение соотносится со статистикой PyPI: 27 июня выпущено 295 пакетов на
@inbox.ru, 30 июня — 740, 1 июля — 249, с поправкой на часовые пояса.В рамках периода активности есть 1403 проекта без email с одинаковым описанием: "Minimal package created automatically" — и версией 0.0.1 (график 2). Они совпадают с периодом активности кампании, которой были недовольны администраторы PyPI.
Названия пакетов из этой пачки — явный тайпсквоттинг (атака на то, что разработчик опечатается в названии пакета при установке или поведется на хорошее название — и поставит себе троян):
avoid common-iowin32cryptwin32compywintypesjsapwebdav2arbuzmining requirements-cpu-txtrequirements-cuda-txtdl-pivot-pandassteambaselib catboost-sparknumpynumpyantlr4-runtimecelery-telegramexllama-kernelsbooking-apiНекоторые из названий тагретят разработчиков российских компаний:
youla-spark-session ipy-kaspersky vkads vkpayvkplay-sync vkplay-metricsНа этих названиях становится понятно, что администрация PyPI пресекла кампанию, от которой могли пострадать наши соотечественники
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 3/4
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍10🤝6🤯1
Оправдано ли внесение почты
В настоящее время при создании почтового ящика на
Вероятно немаловажную роль играет простота автоматизации и более простой обход эвристик на подозрительные действия, раз злоумышленник смог управлять 207 почтами в рамках 4 часов.
Зарегистрированных на PyPI разработчиков, привязавших почту
Подводя итог
Ограничение создания новых учётных записей с использованием почты на
Почтовые домены от Microsoft также год назад попали под блокировку, это дополнительно уменьшает вероятность, что в этих действиях выражается какое-либо предвзятое отношение.
Получился опенсорсный myth busters👀
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 4/4
@inbox.ru в чёрный список?В настоящее время при создании почтового ящика на
@inbox.ru требуется номер телефона или учётная запись VK. Есть упоминание, что два года назад можно было обойтись без почты. Также можно создать до 10 анонимных ящиков к своей основной почте в рамках официального функционала mail.ru.Вероятно немаловажную роль играет простота автоматизации и более простой обход эвристик на подозрительные действия, раз злоумышленник смог управлять 207 почтами в рамках 4 часов.
Зарегистрированных на PyPI разработчиков, привязавших почту
@inbox.ru, "репрессии" не касаются — были заблокированы только "пользователи", участвовавшие в кампании. Нельзя создавать новые учётные записи или привязывать эти ящики к существующим аккаунтам.Подводя итог
Ограничение создания новых учётных записей с использованием почты на
@inbox.ru — закономерная реакция на кампанию, в рамках которой пара сотен учётных записей, зарегистрированных за короткое время, начинает творить беспредел.Почтовые домены от Microsoft также год назад попали под блокировку, это дополнительно уменьшает вероятность, что в этих действиях выражается какое-либо предвзятое отношение.
Получился опенсорсный myth busters
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 4/4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍16🤝10👀1