В последние месяцы мы наблюдаем значительный рост рассылок с достаточно однотипными вложениями в письмах, представляющими собой ZIP-архивы со скриптами JScript. Файлы скриптов маскируются под запросы и заявки от потенциальных клиентов или партнеров и называются «Запрос цены и предложения от Индивидуального предпринимателя <ФИО> на август 2024. АРТ-КП0005272381.js», «Запрос предложений и цен от общества с ограниченной ответственностью <предприятие> на сентябрь 2024. отэк-мн0008522309.js» и т. д.
По данным нашей телеметрии, кампания началась ориентировочно в марте 2023 года и затронула больше тысячи частных пользователей, торговых предприятий и предприятий в сфере услуг, расположенных преимущественно в России. Мы назвали эту кампанию Horns&Hooves в честь известной вымышленной организации, главной целью которой было «смешаться с бодрой массой служащих», то есть в нашем случае — с запросами от реальных пользователей и компаний.
Оглавление
Статистика
Количество пользователей, столкнувшихся с вредоносным скриптом, по месяцам, март 2023 — сентябрь 2024 гг. (скачать)
Вредоносные скрипты
За время существования кампании злоумышленники несколько раз значительно изменили вредоносный скрипт, сохранив при этом метод распространения. Практически во всех случаях рассылался JS-скрипт в ZIP-архиве с характерным именем вроде «Заявка на закупку…», «Запрос цен…» и т. д. В более редких случаях скрипты назывались «Акт сверки…», «Заявление на возврат…», «Досудебная претензия…» или просто «Претензия…». В самых ранних версиях, которые мы встречали в апреле и мае, вместо JS-скриптов использовались скрипты с расширением HTA.
Для убедительности вместе со скриптом в архиве также могли находиться различные документы, относящиеся к организации или человеку, за которых себя выдают злоумышленники. Так, например, архив в письме об отмене бронирования содержал PDF-файл с копией паспорта, а в письмах с запросом цен — выписки из ЕГРЮЛ, свидетельства о постановке на налоговый учет и карточки компаний. Далее в статье мы подробнее рассмотрим несколько версий скриптов, используемых в этой кампании.
Версия A (HTA)
Одни из первых образцов скриптов, которые мы видели в апреле и начале мая 2023 года, имели сравнительно небольшой размер. В качестве примера мы проанализировали образец с хэш-суммой MD5 327a1f32572b4606ae19085769042e51.
Во время запуска скрипт скачивает с адреса https://www.linkpicture[.]com/q/1_1657.png документ-приманку в виде картинки в формате PNG, а затем показывает ее пользователю. В данном случае картинка выглядит как скриншот таблицы со списком разных наименований для закупки. Вероятно, он мог быть сделан с одной из ранее зараженных машин.
Стоит отметить, что документы-приманки в формате PNG — это довольно нестандартный ход. Обычно заявки и запросы, под которые маскируется вредоносное ПО, распространяются в офисных форматах, таких как DOCX, XSLX, PDF и некоторых других. Вероятнее всего, использование такого формата объясняется тем, что в самых первых версиях злоумышленники скрывали полезную нагрузку в конце файла-приманки. Изображения PNG представляют собой удобные контейнеры, поскольку продолжают корректно отображаться даже после добавления полезной нагрузки.
Для скачивания документа-приманки злоумышленники используют утилиту curl, которая предустановлена на устройствах с Windows 10 начиная со сборки 17063 операционной системы. Вместе с документом, используя другую встроенную утилиту Windows — bitsadmin, скрипт скачивает и запускает BAT-файл bat_install.bat для установки основной полезной нагрузки. Тот также использует в своих целях утилиту bitsadmin, которая позволяет управлять задачами на передачу файлов.
С помощью bitsadmin BAT-скрипт скачивает с адреса злоумышленников hxxps://golden-scalen[.]com/files/ и устанавливает следующие файлы:
Название файла
Описание
AudioCapture.dll
NetSupport Audio Capture
client32.exe
Клиент NetSupport с именем CrossTec
client32.ini
Конфигурационный файл
HTCTL32.DLL
Утилита NetSupport для передачи данных по HTTP
msvcr100.dll
Библиотека среды выполнения Microsoft C
nskbfltr.inf
Конфигурационный файл Windows Driver Frameworks для установки дополнительных драйверов
NSM.LIC
Файл лицензии для NetSupport
nsm_vpro.ini
Дополнительные настройки NSM
pcicapi.dll
Файл pcicapi из пакета NetSupport Manager
PCICHEK.DLL
CrossTec VueAlert PCIChek
PCICL32.DLL
Клиент NetSupport в виде DLL
remcmdstub.exe
Удаленная командная строка CrossTec
TCCTL32.DLL
Утилита NetSupport для передачи данных по TCP
Чтобы загрузить нужный файл, bat_install.bat добавляет в конец URL его название. Скачанные файлы скрипт сохраняет в пользовательскую директорию %APPDATA%VCRuntineSync.
Полезная нагрузка представляет собой легитимное ПО для удаленного управления ПК NetSupport Manager (NSM). Это ПО часто используется в корпоративной среде для технической поддержки, обучения сотрудников и управления рабочими станциями. Однако из-за его возможностей им регулярно злоупотребляют в своих целях злоумышленники из различных группировок. Наблюдаемые в кибератаках версии и модификации этого ПО, которые обеспечивают скрытый запуск, получили название NetSupport RAT.
Чаще всего NetSupport RAT проникает в систему через мошеннические веб-сайты и поддельные обновления браузеров. В декабре 2023 мы выпустили отчет об одной из таких кампаний, где NetSupport RAT устанавливался под видом обновления для браузера, когда пользователь заходил на скомпрометированный вебсайт.
После загрузки файлов скрипт bat_install.bat запускает файл client32.exe и прописывает его в автозагрузку.
start /B cmd /C «start client32.exe & exit»
reg add «HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun» /v
«VCRuntineSync» /t REG_SZ /d ‘%APPDATA%VCRuntineSyncclient32.exe’ /f
Также BAT-скрипт делает попытки скачать и запустить файл-приманку, на случай если это не удалось HTA-скрипту.
После запуска NetSupport RAT устанавливает соединение с одним из прописанных в конфигурационном файле client32.ini серверов злоумышленников: основным, xoomep1[.]com:1935, или резервным, xoomep2[.]com:1935.
Версия B (JS + NSM)
Несколько позже, в середине мая 2023, появились версии скриптов, мимикрирующие под легитимные JS-файлы.
В коде такого скрипта содержится комментарий из общедоступной JavaScript-библиотеки Next.js с информацией о лицензии и авторском праве. Таким образом злоумышленники пытаются создать видимость легитимности кода. Также мы видим, что они добавили вредоносный код в середину файла таким образом, чтобы он не бросался в глаза при беглом осмотре, но при этом был исполнен во время запуска.
Функциональность у JS-версий скрипта практически не изменилась по сравнению с HTA-версиями. Они так же показывают документ-приманку и устанавливают NetSupport RAT. Однако есть и некоторые различия. Так, например, скрипт с хэш-суммой b3bde532cfbb95c567c069ca5f90652c, который мы нашли с именем файла «досудебная претензия от 18.05.2023 №5 от компании ооо <НАЗВАНИЕ_КОМПАНИИ>.js», сначала скачивает промежуточный JS-скрипт с адреса hxxp://188[.]227[.]58[.]243/pretencia/www.php.
Этот второй скрипт загружает еще два файла: документ-приманку zayavka.txt и установщик NetSupport RAT — installer_bat_vbs.bat. Как и PNG-изображения, документы-приманки в формате TXT — нестандартный ход. Кроме того, в файлах этой версии мы видим сгенерированный текст, не имеющий никакого смысла, но написанный несколько раз с использованием различных альтернативных символов, похожих на кириллицу. По всей видимости, это были первые тесты нового формата файлов-приманок.
Загрузив файлы, скрипт www.php открывает текстовый документ и запускает установщик NetSupport RAT, который сохраняет с именем BLD.bat. Скрипт установщика использует для загрузки компонентов NetSupport тот же путь, что и версия A: hxxps://golden-scalen[.]com/files/. Однако в отличие от предыдущей версии этот скрипт скачивает файлы в директорию %APPDATA%EdgeCriticalUpdateService. Ключ реестра для автозапуска, который использует эта версия, имеет соответствующее название — EdgeCriticalUpdateService. Также в файле BLD.bat нет избыточного кода для повторного скачивания файла-приманки.
Версия С (JS + BurnsRAT)
Еще один интересный образец мы также нашли в середине мая с названием «заявка на закупки №113 от компании <НАЗВАНИЕ_КОМПАНИИ> на май 2023 года.js» и хэш-суммой MD5 5f4284115ab9641f1532bb64b650aad6.
Здесь также можно заметить комментарий с информацией о лицензии и авторском праве библиотеки Next.js, но от исходного кода библиотеки здесь уже ничего не осталось. Сам же вредоносный код сильнее обфусцирован, и в нем нельзя невооруженным глазом обнаружить ссылку на промежуточный скрипт hxxp://188[.]227[.]106[.]124/test/js/www.php.
В этой версии промежуточный скрипт загружает еще три файла: документ-приманку zayavka.txt, полезную нагрузку BLD.exe и вспомогательный скрипт 1.js. Документ-приманка в этом экземпляре выглядит более осмысленно, вероятно, это уже программно-распознанный текст со снимка экрана.
Загрузив файлы, скрипт www.php открывает документ-приманку и запускает файл 1.js, который в свою очередь запускает файл BLD.exe.
Наиболее интересным моментом в этом экземпляре является полезная нагрузка.
BLD.exe (MD5: 20014b80a139ed256621b9c0ac4d7076) представляет собой NSIS-установщик, который создает в папке %PROGRAMDATA%UsorisLastVersion архив Silverlight.7z и распаковывает из него ряд файлов:
Название файла
Описание
libeay32.dll
Разделяемая библиотека (shared library) OpenSSL
msimg32.dll
Вредоносный загрузчик
settings.dat
Конфигурационный файл для RMS
Silverlight.Configuration.exe
Легитимная утилита Microsoft Silverlight Configuration Utility
ssleay32.dll
Разделяемая библиотека (shared library) OpenSSL
w32.dat
Архив с RDP Wrapper x32
w64.dat
Архив с RDP Wrapper x64
WUDFHost.exe
Remote Manipulator System
Следующим шагом запускается легитимный файл Silverlight.Configuration.exe. В момент запуска он загружает динамические библиотеки (DLL), необходимые для работы программы, по относительному пути. Это позволяет злоумышленникам произвести атаку DLL sideloading: они размещают вредоносную библиотеку msimg32.dll и утилиту в одной директории, в результате чего вместо системной библиотеки загружается и получает управление компонент вредоносной программы. Хотя бэкдор и поддерживает команды для удаленной загрузки и запуска файлов, а также различные методы выполнения команд через командную строку Windows, основной задачей этого компонента является запуск Remote Manipulator System (RMS) как сервиса и отправка идентификатора RMS-сессии на сервер злоумышленников.
svchost.exe -k «WUDFHostController» -svcr «WUDFHost.exe»
Также msimg32.dll отправляет информацию о компьютере на сервер hxxp://193[.]42[.]32[.]138/api/.
Отправленные данные шифруются при помощи алгоритма RC4 со значением Host в качестве ключа — в данном случае это IP-адрес сервера 193.42.32[.]138.
Remote Manipulator System (RMS) — это приложение, позволяющее пользователям взаимодействовать с удаленными системами через сеть. Оно обеспечивает возможность управления рабочим столом, выполнения команд, передачи файлов и обмена данными между устройствами, находящимися в разных географических точках. RMS обычно использует технологии шифрования для защиты данных и может работать в разных операционных системах. Сборку RMS, которую распространяли злоумышленники, также называют BurnsRAT.
RMS поддерживает подключение к удаленному компьютеру по протоколу RDP (Remote Desktop Protocol), поэтому помимо самого приложения и файлов, помогающих его запустить, NSIS-установщик сохраняет на устройство архивы w32.dat и w64.dat, в которых содержится набор библиотек, созданных с помощью RDP Wrapper, для активации дополнительных возможностей RDP.
RDP Wrapper — программа, которая позволяет активировать функции удаленного рабочего стола в версиях Windows, где они не поддерживаются по умолчанию, таких как Windows Home, а также позволяет нескольким пользователям одновременно подключаться к одной системе.
По своей сути RMS является близким аналогом NetSupport, но полезная нагрузка в виде RMS не получила дальнейшего распространения.
Версия D (JS + Hosted NSM ZIP)
Еще несколько характерных изменений в скриптах мы заметили в конце мая 2023 года. Рассмотрим их на примере файла с хэш-суммой 63647520b36144e31fb8ad7dd10e3d21 и именем «заявка на закупку от ооо <НАЗВАНИЕ_КОМПАНИИ> №3.js». Сам первоначальный скрипт очень похож на версию B и отличается только ссылкой на второй скрипт — hxxp://45[.]133[.]16[.]135/zayavka/www.php. Но в отличие от версии B здесь полностью переписан BAT-файл для установки NetSupport RAT.
В этой версии он находится по адресу hxxp://45[.]133[.]16[.]135/zayavka/666.bat, а для установки NetSupport выкачивает промежуточный PowerShell-скрипт hxxp://45[.]133[.]16[.]135/zayavka/1.yay, который в свою очередь скачивает и распаковывает архив с NetSupport RAT с адреса hxxp://golden-scalen[.]com/ngg_cl.zip. Содержимое архива полностью идентично версии NetSupport, устанавливаемой скриптом версии B.
Версия E (JS + Embedded NSM ZIP)
Следующие заметные, но не столь принципиальные изменения появились в июне 2023 года. Злоумышленники стали помещать закодированный ZIP-архив c NetSupport RAT внутрь скрипта, вместо того чтобы скачивать его. Как следствие, увеличился размер скрипта. Кроме того, изменился комментарий в заголовке файла, который на этот раз был взят из библиотеки Backbone.js.
Помимо этого, ориентировочно с сентября 2023 года файлы NetSupport RAT были разделены на два архива, а с февраля 2024 года вместо текстовых файлов-приманок злоумышленники для большей правдоподобности начали использовать PDF-документы, которые также содержались в коде скрипта.
Атрибуция
Во всех обнаруженных сборках NetSupport RAT в рамках текущей кампании присутствовал один из трех файлов лицензии со следующими параметрами:
Файл 1
licensee=HANEYMANEY
serial_no=NSM385736
Файл 2
licensee=DCVTTTUUEEW23
serial_no=NSM896597
Файл 3
licensee=DERTERT
serial_no=NSM386098
Эти файлы лицензии также использовались в различных кампаниях, не связанных с текущей рассылкой. В частности, они были замечены в рассылках, нацеленных на пользователей из других стран, например из Германии. Кроме того, эти файлы фигурировали в сборках NetSupport RAT, ассоциируемых с группировкой TA569 (также известной как Mustard Tempest или Gold Prelude). При этом стоит отметить, что лицензии, принадлежащие HANEYMANEY и DCVTTTUUEEW23, в рассылке Horns&Hooves использовались сравнительно недолго и через три месяца были полностью вытеснены лицензией, выданной на имя DERTERT.
HANEYMANEY
DCVTTTUUEEW23
DERTERT
Дата создания согласно комментарию в файле
2022.07.17
2014.03.29
2017.07.26
Дата из атрибутов файлов в архиве
2022.07.17
2023.03.29
2022.07.26
Замечен в рамках кампании
2023.04.17
2023.05.28
2023.07.09
Тот факт, что рассылка Horns&Hooves использует те же лицензии, что и TA569, навел нас на мысль о возможной связи текущей кампании с этой группой. Однако приписывать вредоносную активность TA569, опираясь на одни лишь файлы лицензий, нельзя, поэтому мы решили поискать другие сходства. Мы сравнили различные конфигурационные файлы, фигурировавшие в рассылке Horns&Hooves, и те, что были использованы TA569, и выяснили, что они практически полностью идентичны. Рассмотрим в качестве примера конфигурационный файл из рассылки (edfb8d26fa34436f2e92d5be1cb5901b) и известный конфигурационный файл группы TA569 (67677c815070ca2e3ebd57a6adb58d2e).
Как мы можем заметить, они совпадают во всем, кроме доменов и портов. При этом стоит обратить особое внимание на поле GSK (Gateway Security Key). То, что значения совпадают, указывает на то, что злоумышленники используют один и тот же ключ безопасности для доступа к клиенту NetSupport. Это, в свою очередь, значит, что операторами командных центров в обоих случаях с большой долей вероятности являются злоумышленники из TA569.
Мы проверили, не встречался ли ключ GSK=GF<MABEF9G?ABBEDHG:H в иных кампаниях, которые нельзя было бы отнести ни к рассылке Horns&Hooves, ни к атакам TA569, и убедились, что таковых нет. Стоит также отметить, что помимо этого ключа мы встречали в кампании Horns&Hooves и другое значение — GSK=FM:N?JDC9A=DAEFG9H<L>M, а в более поздних версиях появился еще один вариант ключа, который был задан параметром SecurityKey2=dgAAAI4dtZzXVyBIGlsJn859nBYA.
Что происходит после установки RMS или NetSupport RAT
Установка BurnsRAT или NetSupport RAT является лишь промежуточным звеном в атаке, предоставляющим злоумышленникам удаленный доступ к компьютеру. В ряде наблюдаемых случаев мы заметили попытки использовать NetSupport RAT для установки таких стилеров, как Rhadamanthys и Meduza. Однако, как правило, TA569 продает доступ к инфицированным компьютерам другим группировкам, например, для установки различных троянцев-вымогателей.
Мы также допускаем, что злоумышленники могут собирать различные документы и электронные адреса для дальнейшего развития кампании, поскольку самые ранние скрипты вместо NetSupport RAT распространяли Rhadamanthys.
Выводы
В этой статье мы подробно рассмотрели несколько вариантов доставки и использования легитимного ПО для вредоносных целей в рамках одной продолжительной кампании. В ходе кампании злоумышленники меняли некоторые свои тактики и экспериментировали с новыми инструментами. Так, они постепенно уходили от использования дополнительных серверов для доставки полезной нагрузки, в итоге оставив только два, которые используются самим ПО для удаленного администрирования. Также атакующие сначала добавили в свой арсенал BurnsRAT, а затем отказались от него, а весь необходимый программный код для установки и запуска NetSupport RAT перенесли в один единственный скрипт. Вероятно, злоумышленники нашли такой подход более эффективным как с точки зрения разработки, так и в плане сложности обнаружения.
Нам удалось с высокой долей уверенности определить, что кампания связана с группой TA569, которая получает доступ к организациям, чтобы в дальнейшем продать его в даркнете другим злоумышленникам. В зависимости от того, в чьи руки в дальнейшем попадет этот доступ, последствия для пострадавшей компании могут быть разными — от кражи данных до шифрования и повреждения систем. Мы наблюдали попытки установить стилеры на некоторые из зараженных машин.
Индикаторы компрометации
Хэши вредоносных файлов
Версия A
327a1f32572b4606ae19085769042e51 — HTA
34eb579dc89e1dc0507ad646a8dce8be — bat_install.bat
Версия B
b3bde532cfbb95c567c069ca5f90652c — JS
29362dcdb6c57dde0c112e25c9706dcf — www.php
882f2de65605dd90ee17fb65a01fe2c7 — installet_bat_vbs.bat
Версия C
5f4284115ab9641f1532bb64b650aad6 — JS
0fea857a35b972899e8f1f60ee58e450 — www.php
20014b80a139ed256621b9c0ac4d7076 — BLD.exe
7f0ee078c8902f12d6d9e300dabf6aed — 1.js
Версия D
63647520b36144e31fb8ad7dd10e3d21 — JS
8096e00aa7877b863ef5a437f55c8277 — www.php
12ab1bc0989b32c55743df9b8c46af5a — 666.bat
50dc5faa02227c0aefa8b54c8e5b2b0d — 1.yay
e760a5ce807c756451072376f88760d7 — ngg_cl.zip
Версия E
b03c67239e1e774077995bac331a8950 — 2023.07
ba69cc9f087411995c64ca0d96da7b69 — 2023.09
051552b4da740a3af5bd5643b1dc239a — 2024.02
BurnsRAT C&C
hxxp://193[.]42[.]32[.]138/api/
hxxp://87[.]251[.]67[.]51/api/
Ссылки, версия A
hxxp://31[.]44[.]4[.]40/test/bat_install.bat
hxxps://golden-scalen[.]com/files/*
Ссылки, версия B
hxxp://188[.]227[.]58[.]243/pretencia/www.php
hxxp://188[.]227[.]58[.]243/zayavka/www.php
hxxp://188[.]227[.]58[.]243/pretencia/installet_bat_vbs.bat
hxxps://golden-scalen[.]com/files/*
Ссылки, версия C
hxxp://188[.]227[.]106[.]124/test/js/www.php
hxxp://188[.]227[.]106[.]124/test/js/BLD.exe
hxxp://188[.]227[.]106[.]124/test/js/1.js
Ссылки, версия D
hxxp://45[.]133[.]16[.]135/zayavka/www.php
hxxp://45[.]133[.]16[.]135/zayavka/666.bat
hxxp://45[.]133[.]16[.]135/zayavka/1.yay
hxxp://golden-scalen[.]com/ngg_cl.zip
Client32.ini для Horns&Hooves
edfb8d26fa34436f2e92d5be1cb5901b
3e86f6fc7ed037f3c9560cc59aa7aacc
ae4d6812f5638d95a82b3fa3d4f92861
Известный Client32.ini, принадлежащий TA569
67677c815070ca2e3ebd57a6adb58d2e
Nsm.lic
17a78f50e32679f228c43823faabedfd — DERTERT
b9956282a0fed076ed083892e498ac69 — DCVTTTUUEEW23
1b41e64c60ca9dfadeb063cd822ab089 — HANEYMANEY
Командные центры NetSupport RAT из Horns&Hooves
xoomep1[.]com
xoomep2[.]com
labudanka1[.]com
labudanka2[.]com
gribidi1[.]com
gribidi2[.]com
Известные командные центры, связанные с TA569
shetrn1[.]com
shetrn2[.]com
Securelist