Специалисты по анализу угроз из ANY.RUN провели глубокий анализ вредоносной программы CastleLoader, представляющей собой начальное звено в цепочке атак на различные отрасли, включая государственные учреждения и объекты критической инфраструктуры. Исследование представляет собой детальный разбор всего пути выполнения, от упакованного установщика до подключения к серверу управления (C2), а также включает обзор разработанного парсера для извлечения и автоматической расшифровки индикаторов компрометации.
Описание
Основные выводы
CastleLoader - это скрытный загрузчик вредоносного ПО, используемый на первой стадии атак против государственных структур и множества отраслей. Он полагается на многоэтапную цепочку выполнения для уклонения от обнаружения. Конечный вредоносный модуль проявляется только в памяти после модификации легитимного процесса, что делает традиционные методы статического анализа неэффективными. CastleLoader доставляет похитители данных и удаленные трояны (RAT), обеспечивая кражу учетных данных и устойчивый доступ.
CastleLoader как угроза начального доступа
Этот загрузчик, созданный для доставки и установки других вредоносных компонентов, стал отправной точкой для атак с начала 2025 года. Его популярность обусловлена высокой эффективностью и универсальностью. Одна из кампаний затронула 469 устройств, став значительной угрозой для организаций, особенно государственных структур в США. В более широком масштабе под удар попадают IT-сектор, логистика, туризм и критические инфраструктуры Европы. Опасность CastleLoader заключается в его роли в цепочке поставки шпионского ПО, что создает высокий риск компрометации.
Обнаружение CastleLoader с помощью актуальных разведданных
Современные угрозы, подобные CastleLoader, созданы для обхода традиционных систем защиты. Для эффективного противодействия командам безопасности необходимы актуальные разведданные. ANY.RUN предлагает фиды угроз, которые предоставляют индикаторы в реальном времени, извлеченные из исполнения живых образцов тысячами команд SOC по всему миру. Это позволяет ускорить обнаружение угроз, повысить точность решений за счет контекста выполнения, улучшить эффективность работы SOC за счет снижения ложных срабатываний и усилить управление рисками благодаря раннему выявлению новых семейств вредоносного ПО.
Начальный анализ: телеметрия песочницы
Анализ начался с детонации образца в интерактивной песочнице ANY.RUN. Внимание исследователей сразу привлекла цепочка системных процессов, завершившаяся запросом к IP-адресу 94[.]159[.]113[.]32:80. Для понимания этой активности был выполнен переход к анализу бинарного кода.
Статический анализ: изучение установщика Inno Setup
Использование инструмента DIE показало, что бинарный файл состоит из кода на Object Pascal и модуля установщика Inno Setup. Распаковка установщика выявила несколько исполняемых файлов, среди которых ключевую роль играли Autolt3.exe и скомпилированный скрипт freely.a3x. Декомпиляция скрипта AutoIt показала 24 402 строки кода, большая часть которого была обфусцирована. Однако удалось идентифицировать множество оберток для функций WinAPI, что указывало на подготовку среды для дальнейшего заражения. Комбинация вызовов функций, таких как CreateProcessW, VirtualAllocEx и WriteProcessMemory, намекала на манипуляции с процессами.
Динамический анализ: трассировка выполнения
Запуск Autolt3.exe в отладчике x32dbg с точками останова подтвердил гипотезу. Было обнаружено создание приостановленного процесса jsc.exe с флагом CREATE_SUSPENDED, что характерно для техники "process hollowing". Затем в его адресное пространство была выделена память с разрешением на выполнение, куда записывался PE-файл. Последующие вызовы ReadProcessMemory и SetThreadContext заменяли базовый адрес в структуре PEB и устанавливали точку входа внедренного модуля. После вызова ResumeThread управление передавалось вредоносному коду. Этот метод, обходящий стандартный процесс hollowing, снижает вероятность обнаружения системами мониторинга.
Возвращение к статическому анализу
Анализ дампа памяти в Ghidra начался с обнаружения вызова MessageBoxW, выводящего фейковое сообщение об ошибке, что служило прикрытием. Дальнейший разбор выявил функцию, разрешающую адреса API по их хеш-суммам. Автоматизация этого процесса позволила заменить хеши на читаемые имена функций, что упростило анализ. Были идентифицированы сетевые функции, такие как WinHttpOpen, и прослежена логика установки HTTP-сессии.
Ключевым моментом стало обнаружение функции, расшифровывающей конфигурационные строки с помощью простого побитового XOR с циклическим ключом. Данные хранились в стеке в виде байтовых массивов, преобразовывались в UTF-16LE и копировались в глобальную область памяти.
Создание собственного парсера
Понимание алгоритма дешифровки позволило автоматизировать процесс. Был написан Python-скрипт, который извлек все строки конфигурации из дампа. В результате были получены высокодостоверные индикаторы компрометации, включая адрес C2-сервера, User-Agent и имя мьютекса. Это окончательно подтвердило роль извлеченных данных и их надежность для обнаружения угрозы.
Заключительные наблюдения
Полный цикл анализа, от гипотезы до верификации, позволил восстановить всю цепочку выполнения, понять внутреннюю логику загрузчика и подтвердить индикаторы. На практике использование возможностей песочницы ANY.RUN может значительно сократить время анализа, предоставляя детальную телеметрию. Однако глубокое исследование дало не только конечный набор IOC, но и понимание механизмов их работы, что крайне важно для построения эффективной защиты против таких сложных и скрытных угроз, как CastleLoader.
Индикаторы компрометации
IPv4
- 94.159.113.32
URLs
- http://94.159.113.32/service
MD5
- 1e0f94e8ec83c1879ccd25fec59098f1
- 9a0960c674378a049b8d9ad0e1c641c3
- afbaba49796528c053938e0397f238ff
SHA1
- 0580a364ab986b051398a78d089300cf73481e70
- 9e11e8866f40e5e9c20b1f012d0b68e0d56e85b3
- dd029cd4711c773f87377d45a005c8d9785281a3
SHA256
- 8b7c1657f4d5cf0cc82d68c1f1a385adf0de27d46fc544bba249698e6b427856
- dfaf277d54c1b1cf5a3af80783ed878cac152ff2c52dbf17fb05a7795fe29e79
- fddc186f3e5e14b2b8e68ddbd18b2bda41d38a70417a38e67281eb7995e24bac
Mutex
- N3sBJNQKOyBSqzOgQSQVf9
User-Agents
- gM7dczM61ejubNuJljRx
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | rule CastleLoader { meta: author = "ANY.RUN" date = "2025-12-02" description = "Identifies CastleLoader malware samples" threat = "CastleLoader" strings: $p1 = { 44 a0 2d 39 } //CreateMutexW $p2 = { 82 06 d7 4e } //WinHttpOpen $p3 = { 81 03 08 6f } //WinHttpConnect $p4 = { 18 7b d4 2e } //WinHttpOpenRequest $p5 = { e4 f4 96 33 } //WinHttpReceiveResponse $p6 = { d8 da 54 96 } //ShellExecuteW $p7 = { 5f 9e 43 16 } //GetUserNameW $p8 = { b4 89 86 1b } //GetComputerNameW condition: all of ($p*) } |