В последние месяцы мы наблюдаем значительный рост рассылок с достаточно однотипными вложениями в письмах, представляющими собой 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 и прописывает его в автозагрузку.
1 2 3 |
start /B cmd /C "start client32.exe & exit" reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "VCRuntineSync" /t REG_SZ /d '%APPDATA%\VCRuntineSync\client32.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%\Usoris\LastVersion архив 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-сессии на сервер злоумышленников.
1 |
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
Рассылка Horns&Hooves доставляет NetSupport RAT и BurnsRAT