Специалисты SOC (Security Operations Center) компании Blackpoint Cyber зафиксировали новый инцидент, связанный с атакой на основе социальной инженерии, известной как ClickFix. Эта техника, остающаяся популярной на протяжении последнего года, побуждает пользователей выполнить вредоносную команду через диалоговое окно «Выполнить» (Win+R), выдавая её за шаг «верификации пользователя». В данном случае злоумышленники использовали её для доставки нового семейства загрузчиков - CastleLoader. Этот вредоносный загрузчик, впервые обнаруженный в начале 2025 года, предназначен для безопасной доставки следующей стадии атаки. Он извлекает зашифрованный финальный модуль с инфраструктуры злоумышленников, расшифровывает его в памяти и передаёт управление выбранному вредоносному коду (payload).
Описание
Атака началась с классической команды ClickFix, которую жертва ввела вручную. Команда запускала скрытое окно conhost.exe, которое инициировало цепочку вызова стандартных системных утилит Windows. Сначала с помощью curl.exe загружался архив с IP-адреса злоумышленников в папку AppData\Roaming пользователя. Затем утилита tar извлекала содержимое архива в новую подпапку. После подготовки файлов команда запускала pythonw.exe - версию интерпретатора Python без окна консоли. Он исполнял файл python.cat, содержащий скомпилированный Python-байткод, что затрудняет анализ исходного кода.
Для исследования логики загрузчика байткод был декомпилирован. Анализ показал, что скрипт является обфусцированным загрузчиком. Он содержал строку, смешанную с латинскими и кириллическими символами. Последовательные операции .replace() преобразовывали её в валидную строку Base64. После декодирования и выполнения полученного кода (exec()) в памяти оказывался простой загрузчик шелл-кода. Он расшифровывал два хардкодированных блоба Base64 с помощью XOR-операции, где второй блоб служил ключом.
Далее, используя библиотеку ctypes, скрипт выделял область памяти с правами на чтение, запись и исполнение (VirtualAlloc), копировал туда расшифрованный шелл-код (RtlMoveMemory) и передавал ему управление, создавая указатель на функцию (CFUNCTYPE). Таким образом, вредоносный код начинал исполняться внутри процесса pythonw.exe, минуя запись на диск.
Для анализа следующей стадии исследователи модифицировали скрипт, чтобы записать расшифрованный шелл-код в файл. Анализ показал, что это 32-битный код (x86), что типично для подобных загрузчиков из-за совместимости с WoW64. Основная функция шелл-кода (loaderEntry()) формировала URL, содержащий хардкодированный домен dperforms[.]info и путь /service/download/load_1, после чего инициировала загрузку.
Сетевая функция httpDownloadPayload() использовала PEB Walking для динамического разрешения API WinINet во время выполнения, обходя стандартную систему импорта Windows. Важной деталью был заголовок User-Agent со значением «GoogeBot», имитирующий легитимного веб-краулера. Именно этот специфичный заголовок и путь /service/download/ являются ключевыми индикаторами компрометации (IoC), связывающими данную атаку с семейством CastleLoader.
После загрузки финального блоба шелл-код разделял его. Первые 16 байт использовались как ключ XOR для расшифровки оставшейся части. Расшифрованный модуль затем исполнялся непосредственно в памяти. На момент анализа конечный модуль с сервера получить не удалось, так как инфраструктура была недоступна.
Методология и атрибуция
Атрибуция атаки семейству CastleLoader основана на нескольких точных совпадениях. Во-первых, использование специфичного User-Agent «GoogeBot» и пути /service/download/ полностью соответствует предыдущим кампаниям этого загрузчика. Во-вторых, сама схема доставки через ClickFit эволюционировала: если ранее использовались скрипты на AutoIt, то теперь их место занял компактный Python-дроппер. Однако общая концепция осталась прежней.
В-третьих, поведение загрузчика идентично: динамическое разрешение API через PEB Walking и хеширование имён функций, загрузка и расшифровка финального модуля в памяти. Незначительное отличие - использование первых 16 байт загруженного блоба как ключа - не меняет базовый дизайн CastleLoader. Таким образом, цепочка атаки - от метода доставки до деталей реализации шелл-кода - уверенно указывает на это семейство вредоносных загрузчиков.
Рекомендации по защите
Для противодействия подобным угрозам эксперты рекомендуют усилить внимание к социальной инженерии. Необходимо обучать пользователей не выполнять непонятные команды, особенно через диалог «Выполнить». Технические меры включают ограничение через групповые политики доступа к Run, cmd.exe, PowerShell и средам выполнения Python для пользователей, которым они не требуются по работе. Мониторинг подозрительных цепочек вызова легитимных бинарников (LOLBin), таких как последовательный запуск conhost.exe, cmd.exe, curl, tar и pythonw.exe, может помочь в обнаружении атаки. Также важно внедрить фильтрацию DNS для блокировки подозрительных доменов, отслеживать запуск Python из нетипичных каталогов (например, AppData) и контролировать исходящие сетевые соединения от процесса pythonw.exe, который часто используется для скрытной доставки вредоносного кода.
Индикаторы компрометации
IPv4
- 78.153.155.131
Domains
- dperforms.info
URLs
- http://78.153.155.131/service/download/p2.tar
- https://dperforms.info/service/download/load_1
SHA256
- 0f5c3ac4b4f997acd2cd71c451082cd8fbd1cbdb1a6db2bdf470714f2e7ef4bb
- 8a539355d317bd8a490f470319410e5d2a2851a38828c900f357fbac9083583c
- bfea06a7ef5b25b40178cfffd802d8ab4f5ee35ca5cd8d2b9ff29b4e201b3b7f