Введение
В начале 2025 года на теневых форумах и в сообществах специалистов по поиску угроз (threat hunting) начали появляться новые образцы вредоносного ПО на базе PowerShell. Рассматриваемый образец напоминает стилеры ViperSoftX 2024 года, однако отличается заметно возросшей модульностью, улучшенными техниками скрытности и новыми механизмами закрепления в системе.
В этой статье мы детально разберём его код, опишем функционал, используемые механизмы и представляемые им угрозы. Мы также проведём сравнительный анализ нового варианта и его предшественников, выделив ключевые сходства и различия.
Поток выполнения кода
Рис. 1: Поток выполнения
На изображении выше показана структурированная логика выполнения вредоносного ПО, что подчёркивает его модульную структуру и ориентацию на выполнение конкретных задач. Жизненный цикл этого зловреда можно разделить на несколько ключевых этапов, в ходе которых он инициализируется, обеспечивает закрепление в системе, запускает сессию и осуществляет взаимодействие с командным сервером (C2).
Инициализация мьютекса
Рис. 2.1.1: Простой мьютекс (версия 2024 г.)
Версия 2024 года использует базовый мьютекс, имя которого задано статической строкой. Если мьютекс уже существует (то есть вредоносная программа уже запущена), она ожидает 10 секунд, после чего завершает работу.
Рис. 2.1.2: Мьютекс на основе GUID (версия 2025 г.)
Версия 2025 года использует идентификатор мьютекса в формате GUID и увеличивает время ожидания до 300 секунд. Это позволяет задержать обнаружение в песочнице, повысить вероятность избежать поведенческого анализа и надёжнее гарантировать запуск только одного экземпляра вредоноса.
Механизм закрепления в системе
Вредоносное ПО применяет несколько техник для закрепления в системе, что позволяет ему сохранять работоспособность после перезагрузки. В версии 2024 года конечная полезная нагрузка была сосредоточена на эксфильтрации данных и взаимодействии с командным сервером, но не управляла собственным закреплением. За этот механизм обычно отвечал загрузчик (loader) или дроппер (dropper), и он не был встроен в полезную нагрузку.
Однако версия 2025 года использует надёжную трёхуровневую резервную стратегию закрепления:
Рис. 3.1: Самокопирование для обеспечения сохранности
Скрипт копирует сам себя в
.
Рис. 3.2: Пакетный файл (.bat) для запуска
Создаётся скрытый bat-файл, который выполняет скрипт .ps1 и использует многоуровневые техники уклонения и резервные сценарии на случай, если указанные пути уже существуют.
Рис. 3.3: Запись в Планировщике заданий
Регистрирует запланированную задачу Windows с именем
, которая запускает bat-файл при входе пользователя в систему, обеспечивая закрепление.
Рис. 3.4: Запись в ключе Run
Код для обеспечения закрепления через реестр Windows.
Рис. 3.5: Папка автозагрузки
Размещает bat-файл в папке автозагрузки пользователя.
Подготовительный этап
Функция:
Версия 2024 года создаёт идентификаторы, запрашивая аппаратные данные, такие как серийные номера.
Рис. 4.1.1: Идентификатор на основе серийного номера
В то время как последняя версия генерирует полный 64-символьный шестнадцатеричный GUID, что делает каждое заражение уникально отслеживаемым.
Рис. 4.1.2: Случайный GUID
Этот GUID передаётся в качестве аргумента в функции
и
для идентификации заражённой машины или жертвы.
Функции:
и
Рис. 4.2: Формирование мета-запроса (Build-MetaRequest)
В версии 2025 года создание и разбор (парсинг) base64-запроса имитируют поведение обычного браузера. Это делает вредоносную активность более незаметной в сетевых журналах и позволяет обходить системы обнаружения вторжений (IDS). Скрипт формирует HTTP GET-запрос, кодирует его в base64 и сохраняет в переменной (
).
Рис. 4.3: Разбор мета-запроса (Parse-MetaRequest)
Функция декодирует base64-запрос (
) в его исходную ASCII-форму и использует регулярное выражение (regex) для извлечения 64-символьного GUID из пути, сохраняя его в переменной (
).
Функция:
В версии 2024 года использовался класс
— базовый и устаревший класс .NET для работы с сетью.
Рис. 4.4.1: Инициализация WebClient
В 2025 году вредонос использует
из современного .NET API.
Рис. 4.4.2: Инициализация HttpClient
Переход на
предоставляет более продвинутые возможности — управление заголовками, контроль тайм-аутов и лучшую совместимость с HTTPS-трафиком. Это позволяет лучше соответствовать поведению легитимного ПО и оставаться незамеченным.
Функция:
Если версия 2024 года не предпринимала явных попыток получить публичный IP-адрес жертвы, то версия 2025 года пытается использовать для этого несколько веб-сервисов в резервном порядке.
Рис. 4.5: Получение публичного IP-адреса
Сбор публичных IP-адресов помогает злоумышленникам определить местоположение и происхождение заражённого устройства (например, с помощью геолокации) и группировать заражения по целевому региону или кампании.
Выполнение основного функционала
Функции:
и
Рис. 5.1: Проверка синхронизации с сервером
Get-ServerID: Выполняет запрос к
для получения числового идентификатора, который, вероятно, используется для обнаружения повторного развёртывания бэкенда.
Test-ServerRestarted: Сравнивает сохранённый (кэшированный) ID сервера с новым значением. Если оно изменилось, принудительно выполняет повторную инициализацию сессии. Это продуманный способ синхронизироваться с изменениями в инфраструктуре злоумышленника. Версия 2025 года осведомлена о повторных развёртываниях или миграциях сервера и соответствующим образом корректирует состояние своей сессии. Такое продвинутое поведение обычно встречается в модульных или профессиональных инструментариях.
Каждые 30 секунд:
Функция:
Рис. 5.2: Вызов функции Invoke-Request
Вызывает функцию
для сбора информации о пользователе, преобразует её в формат JSON и передаёт в функцию
.
Рис. 5.3: Сбор информации о пользователе (Get-UserInfo)
Рис. 5.4: Цели для сбора данных
Рис. 5.5: Цель — KeePass
Версия 2025 года поддерживает более широкий список целевых приложений и кошельков (Exodus, Atomic, Electrum, Ledger), браузерных расширений (MetaMask, Binance, Coinbase) и конфигураций KeePass. Она собирает и возвращает данные (ОС, имя пользователя, IP, обнаруженные приложения), что упрощает поддержку и расширение функционала вредоносной программы.
Взаимодействие с командным сервером (C2)
В варианте 2024 года команды отправлялись через HTTPS в виде открытого текста или в кодировке base64.
Рис. 5.6.1: POST-запрос в открытом виде
В версии 2025 года полезная нагрузка шифруется с помощью простого XOR-шифра (
), после чего зашифрованный буфер отправляется на C2-сервер POST-запросом.
Рис. 5.6.2: Взаимодействие с C2 (POST)
Вредонос получает ответ от C2-сервера — вероятно, ещё одну команду, зашифрованную или закодированную в base64. Затем он дешифрует полученные данные, выполняя обратную операцию шифрования, и возвращает дешифрованную полезную нагрузку в основной цикл.
Рис. 5.7: Взаимодействие с C2 (GET)
Выполнение полезной нагрузки (Set-Updates)
Версия 2024 года выполняла декодированные строки как команды оболочки с помощью
.
Рис. 5.8.1: Выполнение полезной нагрузки (CMD)
Текущий вариант создаёт фоновые задания PowerShell для выполнения каждой декодированной полезной нагрузки.
Рис. 5.8.2: Выполнение полезной нагрузки (PowerShell)
Фоновые задания PowerShell труднее обнаружить, они не блокируют основной поток выполнения, и их легче завершить по тайм-ауту или отбросить в случае зависания, что повышает стабильность и скрытность вредоноса.
Заключение
Вариант ViperSoftX 2025 года демонстрирует явную эволюцию по сравнению со своим предшественником 2024 года. Ключевые улучшения:
Индикаторы компрометации (IOCs)
Переведено с любовью S3VE7N
ИСТОЧНИК: https://labs.k7computing.com/index.php/in-depth-analysis-of-a-2025-vipersoftx-variant/
если вы хотите сделать пожертвование и поддержать мою мотивацию продолжать переводить статьи )
LTC: LXszG8K1jaRYBdUKK8iRFpBgZn74HWQsBZ
BTC: 3LsctQ1VtaMormuVZzMt7rbcaen3TCJhdj
USDT TRC20
В начале 2025 года на теневых форумах и в сообществах специалистов по поиску угроз (threat hunting) начали появляться новые образцы вредоносного ПО на базе PowerShell. Рассматриваемый образец напоминает стилеры ViperSoftX 2024 года, однако отличается заметно возросшей модульностью, улучшенными техниками скрытности и новыми механизмами закрепления в системе.
В этой статье мы детально разберём его код, опишем функционал, используемые механизмы и представляемые им угрозы. Мы также проведём сравнительный анализ нового варианта и его предшественников, выделив ключевые сходства и различия.
Поток выполнения кода
Рис. 1: Поток выполнения
На изображении выше показана структурированная логика выполнения вредоносного ПО, что подчёркивает его модульную структуру и ориентацию на выполнение конкретных задач. Жизненный цикл этого зловреда можно разделить на несколько ключевых этапов, в ходе которых он инициализируется, обеспечивает закрепление в системе, запускает сессию и осуществляет взаимодействие с командным сервером (C2).
Инициализация мьютекса
Рис. 2.1.1: Простой мьютекс (версия 2024 г.)
Версия 2024 года использует базовый мьютекс, имя которого задано статической строкой. Если мьютекс уже существует (то есть вредоносная программа уже запущена), она ожидает 10 секунд, после чего завершает работу.
Рис. 2.1.2: Мьютекс на основе GUID (версия 2025 г.)
Версия 2025 года использует идентификатор мьютекса в формате GUID и увеличивает время ожидания до 300 секунд. Это позволяет задержать обнаружение в песочнице, повысить вероятность избежать поведенческого анализа и надёжнее гарантировать запуск только одного экземпляра вредоноса.
Механизм закрепления в системе
Вредоносное ПО применяет несколько техник для закрепления в системе, что позволяет ему сохранять работоспособность после перезагрузки. В версии 2024 года конечная полезная нагрузка была сосредоточена на эксфильтрации данных и взаимодействии с командным сервером, но не управляла собственным закреплением. За этот механизм обычно отвечал загрузчик (loader) или дроппер (dropper), и он не был встроен в полезную нагрузку.
Однако версия 2025 года использует надёжную трёхуровневую резервную стратегию закрепления:
- Запланированная задача (
), запускаемая при входе пользователя в систему.Код:
WindowsUpdateTask - Ключ реестра
в веткеКод:
Run.Код:HKCU - Bat-файл в папке автозагрузки.
Рис. 3.1: Самокопирование для обеспечения сохранности
Код:
AppData\Microsoft\Windows\Config\winconfig.ps1
Рис. 3.2: Пакетный файл (.bat) для запуска
Рис. 3.3: Запись в Планировщике заданий
Код:
WindowsUpdateTask
Рис. 3.4: Запись в ключе Run
Рис. 3.5: Папка автозагрузки
Подготовительный этап
Функция:
Код:
Generate-RandomGUID
Рис. 4.1.1: Идентификатор на основе серийного номера
Рис. 4.1.2: Случайный GUID
Код:
Build-MetaRequest
Код:
Parse-MetaRequest
Функции:
Код:
Build-MetaRequest
Код:
Parse-MetaRequest
Рис. 4.2: Формирование мета-запроса (Build-MetaRequest)
Код:
$meta_request
Рис. 4.3: Разбор мета-запроса (Parse-MetaRequest)
Код:
$meta_request
Код:
$session.api_guid
Функция:
Код:
Initialize-HttpClient
Код:
System.Net.WebClient
Рис. 4.4.1: Инициализация WebClient
Код:
HttpClient
Рис. 4.4.2: Инициализация HttpClient
Код:
HttpClient
Функция:
Код:
Get-PublicIPAddress
Рис. 4.5: Получение публичного IP-адреса
Выполнение основного функционала
Функции:
Код:
Get-ServerID
Код:
Test-ServerRestarted
Рис. 5.1: Проверка синхронизации с сервером
Код:
api/v1/server-id
Test-ServerRestarted: Сравнивает сохранённый (кэшированный) ID сервера с новым значением. Если оно изменилось, принудительно выполняет повторную инициализацию сессии. Это продуманный способ синхронизироваться с изменениями в инфраструктуре злоумышленника. Версия 2025 года осведомлена о повторных развёртываниях или миграциях сервера и соответствующим образом корректирует состояние своей сессии. Такое продвинутое поведение обычно встречается в модульных или профессиональных инструментариях.
Каждые 30 секунд:
- Проверяет, был ли перезапущен C2 (с помощью
).Код:
Test-ServerRestarted - Если да → сбрасывает сессию.
- Иначе → запрашивает новые команды с C2.
Функция:
Код:
Get-Updates
Рис. 5.2: Вызов функции Invoke-Request
Код:
Get-UserInfo
Код:
Invoke-Request
Рис. 5.3: Сбор информации о пользователе (Get-UserInfo)
Рис. 5.4: Цели для сбора данных
Рис. 5.5: Цель — KeePass
Взаимодействие с командным сервером (C2)
В варианте 2024 года команды отправлялись через HTTPS в виде открытого текста или в кодировке base64.
Рис. 5.6.1: POST-запрос в открытом виде
Код:
$XOR_KEY=65
Рис. 5.6.2: Взаимодействие с C2 (POST)
Рис. 5.7: Взаимодействие с C2 (GET)
Выполнение полезной нагрузки (Set-Updates)
Версия 2024 года выполняла декодированные строки как команды оболочки с помощью
Код:
cmd.exe
Рис. 5.8.1: Выполнение полезной нагрузки (CMD)
Рис. 5.8.2: Выполнение полезной нагрузки (PowerShell)
Заключение
Вариант ViperSoftX 2025 года демонстрирует явную эволюцию по сравнению со своим предшественником 2024 года. Ключевые улучшения:
- Улучшенная операционная безопасность (простое шифрование, уникальная идентификация жертвы).
- Повышенная модульность и простота поддержки.
- Более широкий охват целей и улучшенное закрепление.
- Динамическая адаптация к инфраструктуре (через синхронизацию ID сервера).
Индикаторы компрометации (IOCs)
| Хеш (HASH) | Вариант (VARIANT) | Название детекта (DETECTION NAME) |
|
Код:
| 2025 |
Код:
|
|
Код:
| 2024 |
Код:
|
Переведено с любовью S3VE7N ИСТОЧНИК: https://labs.k7computing.com/index.php/in-depth-analysis-of-a-2025-vipersoftx-variant/
если вы хотите сделать пожертвование и поддержать мою мотивацию продолжать переводить статьи )
LTC: LXszG8K1jaRYBdUKK8iRFpBgZn74HWQsBZ
BTC: 3LsctQ1VtaMormuVZzMt7rbcaen3TCJhdj
USDT TRC20