Обнаружен новый загрузчик OXLOADER, доставляющий стилер CASTLESTEALER через вредоносную рекламу Google

information security

Специалисты Elastic Security Labs выявили ранее недокументированный загрузчик вредоносного кода, получивший название OXLOADER. Этот инструмент используется для доставки информационного стилера CASTLESTEALER. Распространение происходит через вредоносные объявления Google Ads, а уровень обнаружения как статическими антивирусными движками, так и при запуске в изолированных средах остаётся крайне низким.

Описание

Новый загрузчик привлёк внимание аналитиков в ходе активной кампании, нацеленной на одного из клиентов Elastic Security Labs. Характер используемых механизмов - в частности, проверка на принадлежность к странам СНГ и настройки русского языка в системе - указывает на финансово мотивированного злоумышленника, предположительно говорящего на русском языке. Публичных упоминаний этого семейства вредоносного ПО ранее не было.

Вредоносная реклама, задействованная в кампании, имитировала официальные объявления о загрузке Node.js. Жертва, переходя по спонсируемой ссылке, направлялась на поддельный сайт, внешне похожий на легитимную платформу для развёртывания Node.js. Далее срабатывала цепочка переадресаций, которая в итоге приводила к загрузке пакетного скрипта с файлообменного сервиса Storj. Именно этот скрипт скачивал и запускал OXLOADER. Как показал анализ цепочки заражения, рекламодатель был зарегистрирован под именем ВОЛОДИМИР ТЕРЕЩЕНКО с адресом в Украине, однако достоверно установить, является ли это реальным оператором кампании или подставным аккаунтом, не представляется возможным. К середине мая 2026 года рекламодатель и его объявления были полностью удалены из Google.

Пакетный скрипт, полученный жертвой, отображал поддельное окно установки программного обеспечения, после чего через PowerShell загружал исполняемый файл следующей стадии. При этом он запускался с повышенными привилегиями через запрос контроля учётных записей (UAC). В рассматриваемом случае сработали правила поведенческого анализа Elastic Defend, которые зафиксировали подозрительную активность, в том числе загрузку .NET-сборки, характерной для стилера CASTLESTEALER.

Техническое устройство OXLOADER демонстрирует высокий уровень проработки. Первый обнаруженный образец маскировался под легитимную утилиту API Monitor. Наличие значительного объёма безвредного кода и применение методов сокрытия позволяют загрузчику проходить мимо статических анализаторов.

Запуск вредоносного кода происходит на этапе инициализации среды выполнения C++, до выполнения пользовательского кода. Злоумышленник перехватил одну из записей таблицы инициализации, направив её на собственную функцию, которая затем переходит к первой стадии расшифровки. Загрузчик использует самоизменяющийся код: в память поочерёдно подгружаются небольшие заглушки дешифрования, каждая из которых расшифровывает следующую область. Всего выполняется три раунда расшифровки с использованием скользящего ключа XOR, где каждый предыдущий расшифрованный байт влияет на ключ для следующего.

Для обхода статического обнаружения OXLOADER применяет четыре слоя обфускации. Контрольный поток программы сплющивается (control-flow flattening), что затрудняет восстановление логики работы дизассемблерами. Используется смешанная булево-арифметическая (MBA) обфускация, а также введение заведомо истинных или ложных предикатов (opaque predicates). Функции разбиваются на несмежные блоки кода, соединённые безусловными переходами, причём часть адресов вычисляется динамически через MBA-арифметику. Такой подход делает невозможным автоматическое выявление границ функций инструментами вроде IDA Pro без ручной правки.

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

Перед запуском полезной нагрузки OXLOADER выполняет ряд проверок на выявление песочниц и виртуальных машин. Он пытается подключить заведомо некорректный сетевой ресурс через функцию WNetAddConnection2W и проверяет, вернулась ли ожидаемая ошибка. Эмуляторы или изолированные среды, которые безусловно "успешно" отрабатывают такой вызов, будут распознаны. Загрузчик также проверяет количество процессоров (не менее трёх), объём физической памяти (не менее 3 ГБ) и частоту обновления экрана (не менее 20 Гц, в то время как головные виртуальные машины часто показывают 0 или 1). Кроме того, выполняется проверка географического региона через GetUserGeoID и сравнение со списком стран СНГ, а также проверка языка интерфейса на русский. Если какое-либо условие не выполняется, загрузчик прекращает работу.

После прохождения всех проверок OXLOADER создаёт копию системной библиотеки dui70.dll, сохраняя её во временной папке с расширением .ocx и случайным именем. В эту копию добавляется новый раздел с правами на чтение, запись и выполнение. После этого загрузчик извлекает шелл-код, расположенный в разделе .reloc исходного вредоносного файла (что нетипично, поскольку в легитимных программах этот раздел содержит только таблицы перемещения), и копирует его в созданный раздел, после чего выполняет.

Этот шелл-код оказывается полезной нагрузкой, сгенерированной DonutLoader - открытым инструментом для упаковки .NET-сборок в позиционно-независимый шелл-код. После расшифровки с использованием блочного шифра Chaskey-LTS в режиме CTR и декомпрессии через aPLib, DonutLoader запускает финальный payload. Им и является стилер CASTLESTEALER, ранее описанный исследователями Huntress. Атрибуция основана на совпадении ключа AES, используемого для связи с командным сервером.

Во втором варианте загрузчика, обнаруженном позднее, OXLOADER маскировался под установщик Node.js, а не под API Monitor. Механизм загрузки и действия полностью идентичны. Это говорит о том, что оператор кампании, вероятно, по ошибке использовал первый вариант, ориентированный на API Monitor, вместо целевой темы Node.js.

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

Индикаторы компрометации

IPv4

  • 89.124.115.82
  • 89.124.95.161

Domains

  • app.miloyannopoulos.com
  • node-js.prentiva99.info

SHA256

  • 39019279686c820c3af5684012a0085a7e2109f612c9fab886dd0577ace5b5c6
  • 4ec9d9d4d10ad78fc6d7bda7cb17d52984878ccd2dd4302fd1cef152313b9741
  • 9a9939dff297997732aaade9b243d695632cbd64033c5fbcb9de3d09b7e6c28d
  • c85f2765a6c3c3f3907c17e57df12f8f68826f74bff3bbfd272af50666d065fe
  • de4f51649ec1a33071854aefe93ffb3fc225e19f802d8dd914676dd5dfef2615
  • fdfc7831e5c24cfa80152860dfe8c056ba079f7df1393bf6bb7b18ed974eda37

Комментарии: 0