• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Детальный анализ варианта ViperSoftX 2025 года

S3VE7N

RAM
Пользователь
Регистрация
02.08.2022
Сообщения
127
Реакции
154
Депозит
0.0001
Введение



В начале 2025 года на теневых форумах и в сообществах специалистов по поиску угроз (threat hunting) начали появляться новые образцы вредоносного ПО на базе PowerShell. Рассматриваемый образец напоминает стилеры ViperSoftX 2024 года, однако отличается заметно возросшей модульностью, улучшенными техниками скрытности и новыми механизмами закрепления в системе.

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

Поток выполнения кода



Fig-1.png

Рис. 1: Поток выполнения

На изображении выше показана структурированная логика выполнения вредоносного ПО, что подчёркивает его модульную структуру и ориентацию на выполнение конкретных задач. Жизненный цикл этого зловреда можно разделить на несколько ключевых этапов, в ходе которых он инициализируется, обеспечивает закрепление в системе, запускает сессию и осуществляет взаимодействие с командным сервером (C2).

Инициализация мьютекса



Fig-2.1.1_2024.png

Рис. 2.1.1: Простой мьютекс (версия 2024 г.)

Версия 2024 года использует базовый мьютекс, имя которого задано статической строкой. Если мьютекс уже существует (то есть вредоносная программа уже запущена), она ожидает 10 секунд, после чего завершает работу.


Fig-2.1.2-1024x311.png

Рис. 2.1.2: Мьютекс на основе GUID (версия 2025 г.)

Версия 2025 года использует идентификатор мьютекса в формате GUID и увеличивает время ожидания до 300 секунд. Это позволяет задержать обнаружение в песочнице, повысить вероятность избежать поведенческого анализа и надёжнее гарантировать запуск только одного экземпляра вредоноса.


Механизм закрепления в системе


Вредоносное ПО применяет несколько техник для закрепления в системе, что позволяет ему сохранять работоспособность после перезагрузки. В версии 2024 года конечная полезная нагрузка была сосредоточена на эксфильтрации данных и взаимодействии с командным сервером, но не управляла собственным закреплением. За этот механизм обычно отвечал загрузчик (loader) или дроппер (dropper), и он не был встроен в полезную нагрузку.

Однако версия 2025 года использует надёжную трёхуровневую резервную стратегию закрепления:
  1. Запланированная задача (
    Код:
    WindowsUpdateTask
    ), запускаемая при входе пользователя в систему.
  2. Ключ реестра
    Код:
    Run
    в ветке
    Код:
    HKCU
    .
  3. Bat-файл в папке автозагрузки.


Fig-3.1-AppData-Drop.png

Рис. 3.1: Самокопирование для обеспечения сохранности
Скрипт копирует сам себя в
Код:
AppData\Microsoft\Windows\Config\winconfig.ps1
.


Fig-3.2-_-Batch-Launcher-1024x123.png

Рис. 3.2: Пакетный файл (.bat) для запуска
Создаётся скрытый bat-файл, который выполняет скрипт .ps1 и использует многоуровневые техники уклонения и резервные сценарии на случай, если указанные пути уже существуют.


Fig-3.3-_-Task-Scheduler-Entry-1-1024x224.png

Рис. 3.3: Запись в Планировщике заданий
Регистрирует запланированную задачу Windows с именем
Код:
WindowsUpdateTask
, которая запускает bat-файл при входе пользователя в систему, обеспечивая закрепление.


Fig-3.4-_-Run-Entry-1024x88.png

Рис. 3.4: Запись в ключе Run
Код для обеспечения закрепления через реестр Windows.


Fig-3.5-_-Startup-Directory.png

Рис. 3.5: Папка автозагрузки
Размещает bat-файл в папке автозагрузки пользователя.


Подготовительный этап


Функция:
Код:
Generate-RandomGUID
Версия 2024 года создаёт идентификаторы, запрашивая аппаратные данные, такие как серийные номера.

Fig-4.1.1_2024.png

Рис. 4.1.1: Идентификатор на основе серийного номера
В то время как последняя версия генерирует полный 64-символьный шестнадцатеричный GUID, что делает каждое заражение уникально отслеживаемым.

Fig-4.1.2-GUID-Generator-1024x177.png

Рис. 4.1.2: Случайный GUID
Этот GUID передаётся в качестве аргумента в функции
Код:
Build-MetaRequest
и
Код:
Parse-MetaRequest
для идентификации заражённой машины или жертвы.



Функции:
Код:
Build-MetaRequest
и
Код:
Parse-MetaRequest

Fig-4.2-_-Meta-Request-Build-1024x344.png

Рис. 4.2: Формирование мета-запроса (Build-MetaRequest)
В версии 2025 года создание и разбор (парсинг) base64-запроса имитируют поведение обычного браузера. Это делает вредоносную активность более незаметной в сетевых журналах и позволяет обходить системы обнаружения вторжений (IDS). Скрипт формирует HTTP GET-запрос, кодирует его в base64 и сохраняет в переменной (
Код:
$meta_request
).


Fig-4.3-_-Meta-Request-pharse-1024x209.png

Рис. 4.3: Разбор мета-запроса (Parse-MetaRequest)
Функция декодирует base64-запрос (
Код:
$meta_request
) в его исходную ASCII-форму и использует регулярное выражение (regex) для извлечения 64-символьного GUID из пути, сохраняя его в переменной (
Код:
$session.api_guid
).



Функция:
Код:
Initialize-HttpClient
В версии 2024 года использовался класс
Код:
System.Net.WebClient
— базовый и устаревший класс .NET для работы с сетью.

Fig-4.4.1_2024.png

Рис. 4.4.1: Инициализация WebClient
В 2025 году вредонос использует
Код:
HttpClient
из современного .NET API.

Fig-4.4.2-_-HTTP-Client-Setup-1024x442.png

Рис. 4.4.2: Инициализация HttpClient
Переход на
Код:
HttpClient
предоставляет более продвинутые возможности — управление заголовками, контроль тайм-аутов и лучшую совместимость с HTTPS-трафиком. Это позволяет лучше соответствовать поведению легитимного ПО и оставаться незамеченным.



Функция:
Код:
Get-PublicIPAddress
Если версия 2024 года не предпринимала явных попыток получить публичный IP-адрес жертвы, то версия 2025 года пытается использовать для этого несколько веб-сервисов в резервном порядке.

Fig-4.5-_-Public-IP-Fetch.png

Рис. 4.5: Получение публичного IP-адреса
Сбор публичных IP-адресов помогает злоумышленникам определить местоположение и происхождение заражённого устройства (например, с помощью геолокации) и группировать заражения по целевому региону или кампании.


Выполнение основного функционала


Функции:
Код:
Get-ServerID
и
Код:
Test-ServerRestarted

Fig-5.1-_-Server-Sync-Check-1024x269.png

Рис. 5.1: Проверка синхронизации с сервером
Get-ServerID: Выполняет запрос к
Код:
api/v1/server-id
для получения числового идентификатора, который, вероятно, используется для обнаружения повторного развёртывания бэкенда.

Test-ServerRestarted: Сравнивает сохранённый (кэшированный) ID сервера с новым значением. Если оно изменилось, принудительно выполняет повторную инициализацию сессии. Это продуманный способ синхронизироваться с изменениями в инфраструктуре злоумышленника. Версия 2025 года осведомлена о повторных развёртываниях или миграциях сервера и соответствующим образом корректирует состояние своей сессии. Такое продвинутое поведение обычно встречается в модульных или профессиональных инструментариях.

Каждые 30 секунд:
  • Проверяет, был ли перезапущен C2 (с помощью
    Код:
    Test-ServerRestarted
    ).
  • Если да → сбрасывает сессию.
  • Иначе → запрашивает новые команды с C2.



Функция:
Код:
Get-Updates

Fig-5.2_invoke.png

Рис. 5.2: Вызов функции Invoke-Request
Вызывает функцию
Код:
Get-UserInfo
для сбора информации о пользователе, преобразует её в формат JSON и передаёт в функцию
Код:
Invoke-Request
.


Fig-5.3.png

Рис. 5.3: Сбор информации о пользователе (Get-UserInfo)

Fig-5.4-_-Keepass-Target-1024x174.png

Рис. 5.4: Цели для сбора данных

Fig-5.5-_-Recon-Targets-1024x304.png

Рис. 5.5: Цель — KeePass
Версия 2025 года поддерживает более широкий список целевых приложений и кошельков (Exodus, Atomic, Electrum, Ledger), браузерных расширений (MetaMask, Binance, Coinbase) и конфигураций KeePass. Она собирает и возвращает данные (ОС, имя пользователя, IP, обнаруженные приложения), что упрощает поддержку и расширение функционала вредоносной программы.

Взаимодействие с командным сервером (C2)


В варианте 2024 года команды отправлялись через HTTPS в виде открытого текста или в кодировке base64.

Fig-5.6.1_2024.png

Рис. 5.6.1: POST-запрос в открытом виде
В версии 2025 года полезная нагрузка шифруется с помощью простого XOR-шифра (
Код:
$XOR_KEY=65
), после чего зашифрованный буфер отправляется на C2-сервер POST-запросом.

Fig-5.6.2-_-C2-CommunicationPOST.png

Рис. 5.6.2: Взаимодействие с C2 (POST)
Вредонос получает ответ от C2-сервера — вероятно, ещё одну команду, зашифрованную или закодированную в base64. Затем он дешифрует полученные данные, выполняя обратную операцию шифрования, и возвращает дешифрованную полезную нагрузку в основной цикл.

Fig-5.7.png

Рис. 5.7: Взаимодействие с C2 (GET)



Выполнение полезной нагрузки (Set-Updates)


Версия 2024 года выполняла декодированные строки как команды оболочки с помощью
Код:
cmd.exe
.

Fig-5.8.1_2024.png

Рис. 5.8.1: Выполнение полезной нагрузки (CMD)
Текущий вариант создаёт фоновые задания PowerShell для выполнения каждой декодированной полезной нагрузки.

Fig-5.8.2-1024x336.png

Рис. 5.8.2: Выполнение полезной нагрузки (PowerShell)
Фоновые задания PowerShell труднее обнаружить, они не блокируют основной поток выполнения, и их легче завершить по тайм-ауту или отбросить в случае зависания, что повышает стабильность и скрытность вредоноса.



Заключение


Вариант ViperSoftX 2025 года демонстрирует явную эволюцию по сравнению со своим предшественником 2024 года. Ключевые улучшения:
  • Улучшенная операционная безопасность (простое шифрование, уникальная идентификация жертвы).
  • Повышенная модульность и простота поддержки.
  • Более широкий охват целей и улучшенное закрепление.
  • Динамическая адаптация к инфраструктуре (через синхронизацию ID сервера).
Эта версия показывает, как современные стилеры становятся более модульными, труднообнаруживаемыми и многофункциональными, представляя всё большую угрозу как для пользователей криптовалют, так и для предприятий. Поскольку стилер нацелен на кражу конфиденциальной информации, в современном мире необходимо защищать себя с помощью надёжного защитного продукта, такого как K7 Antivirus. Мы в K7 Labs обеспечиваем обнаружение подобных стилеров на разных стадиях заражения и защищаем от всех новейших угроз.



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


Хеш (HASH)Вариант (VARIANT)Название детекта (DETECTION NAME)
Код:
FEAA4AC1A1C51D1680B2ED73FF5DA5F2
2025
Код:
Trojan( 000112511 )
Код:
6549099FECFF9D41F7DF96402BCCDE9B
2024
Код:
Trojan( 0001140e1 )


:smile10: Переведено с любовью S3VE7N

ИСТОЧНИК: https://labs.k7computing.com/index.php/in-depth-analysis-of-a-2025-vipersoftx-variant/

если вы хотите сделать пожертвование и поддержать мою мотивацию продолжать переводить статьи )

LTC: LXszG8K1jaRYBdUKK8iRFpBgZn74HWQsBZ
BTC: 3LsctQ1VtaMormuVZzMt7rbcaen3TCJhdj
USDT TRC20
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх