Операция DualScript – многоэтапная вредоносная кампания на основе PowerShell, нацеленная на криптовалюты и финансовую деятельность.
Введение
В ходе нашего расследования мы выявили многоэтапное заражение вредоносным ПО, использующее сохранение активности в рамках запланированных задач, средства запуска VBScript и выполнение на основе PowerShell. Атака осуществляется через две параллельные цепочки: веб-загрузчик PowerShell, который получает удаленные полезные нагрузки, и вторичную цепочку загрузчиков PowerShell, которая выполняет имплантат RetroRAT.
Злоумышленники, используя легитимные компоненты Windows и выполняя вредоносные программы непосредственно в оперативной памяти, минимизируют следы на диске и обходят традиционные механизмы обнаружения.
Первоначальные результаты
Расследование было начато после выявления подозрительных запланированных задач, выполняющих файлы VBScript из доступных пользователю каталогов. Задачи были настроены на запуск скрытых команд PowerShell, что указывает на потенциальное злоупотребление собственными компонентами сценариев Windows для обеспечения постоянного присутствия в системе.
Дальнейшее обследование выявило множество подозрительных артефактов, в том числе:
- VBScript-запускатели, использующие PowerShell с обходом политики выполнения.
- Скрипт PowerShell (ppamproServiceZuneWAL.ps1), загружающий и выполняющий удаленный контент из внешнего домена.
- Дополнительные скрипты PowerShell, используемые для выполнения вредоносных программ непосредственно в памяти.
Исходящие соединения с удалённым веб-ресурсом, на котором размещён файл Wallet.txt, подтвердили активное получение команд с внешнего сервера, что указывает на возможность удалённого выполнения команд.
Эти результаты подтвердили наличие устойчивой многоэтапной атаки с использованием вредоносных программ, распространяемых через Интернет, и методов выполнения PowerShell в оперативной памяти.
Обзор цепочки заражения
Компромисс заключается в использовании двух параллельных цепочек выполнения, запускаемых посредством обеспечения постоянного присутствия, установленного через планировщик задач Windows. Обе цепочки используют средства запуска VBScript и выполнение PowerShell для развертывания вредоносных компонентов с минимальным количеством артефактов на диске.
Одна цепочка загружает и запускает удаленную полезную нагрузку PowerShell, которая осуществляет перехват буфера обмена криптовалюты. Вторая цепочка использует средство запуска VBScript (PiceVid.vbs) для запуска полезной нагрузки на основе PowerShell (PiceVid.ps1), которая развертывает вредоносное ПО RetroRAT для мониторинга системы, отслеживания финансовой активности и удаленного выполнения команд.

Цепочка 1 – Компоненты веб-бэкдора
Сохранение запланированных задач
Сохранение данных обеспечивалось с помощью запланированных задач Windows, настроенных на выполнение файлов VBScript из каталогов, доступных для записи пользователем. Задачи запускают PowerShell в скрытом режиме с включенным обходом политики выполнения.
Это обеспечивает надежное повторное выполнение вредоносной цепочки, избегая при этом традиционных механизмов регистрации при запуске.
VBS Launcher – ppamproServiceZuneWAL.vbs
Этот скрипт служит промежуточным звеном для выполнения, запуская PowerShell в фоновом режиме. Он не содержит саму полезную нагрузку, но выступает в качестве контролируемой точки входа в цепочку удаленных загрузчиков.
Удалённый загрузчик – ppamproServiceZuneWAL.ps1
Этот скрипт функционирует как веб-бэкдор и выполняет следующие действия:
- Проверка отдельного экземпляра с помощью перечисления процессов WMI.
- Получение удаленного скрипта (Wallet.txt) по протоколу HTTP
- Динамическое выполнение с использованием [ScriptBlock]::Create().Invoke()
Удалённая полезная нагрузка выполняется полностью в оперативной памяти. Поскольку содержимое размещается на внешнем носителе, оно может динамически обновляться, обеспечивая непрерывный контроль со стороны злоумышленника.

ppamproServiceZuneWAL.ps1 скрипт выступает в роли Удаленный загрузчик и контроллер выполнения на основе PowerShellПервоначально скрипт получает собственное имя скрипта, используя объект $MyInvocation, и запускает функцию с именем CURRENT-instance, которая проверяет все запущенные процессы powershell.exe через WMI, чтобы определить, активен ли уже другой экземпляр того же скрипта. Если обнаружен дубликат, скрипт завершает работу, чтобы предотвратить множественное одновременное выполнение. После обеспечения выполнения в одном экземпляре скрипт загружает сетевую библиотеку .NET System.Net.Http и использует HttpClient для загрузки удаленного контента. hxxps://anycourse[.]net/wp-content/uploads/2025/04/Wallet[.]txtПолученный файл Wallet.txt содержит команды PowerShell, контролируемые злоумышленником. Вместо сохранения этого содержимого на диск, скрипт динамически преобразует загруженный текст в исполняемый код PowerShell с помощью [ScriptBlock]::Create() и выполняет его непосредственно в памяти. Этот механизм фактически преобразует скрипт в исполняемый код PowerShell. Веб-бэкдор, позволяющий злоумышленникам удаленно обновлять и выполнять команды в скомпрометированной системе, просто изменяя содержимое файла. Файл Wallet.txt находится на сервере.
Веб-полезная нагрузка – Wallet.txt
Загруженный файл содержит инструкции PowerShell, полученные с внешнего сервера.

Это позволяет злоумышленнику:
- Выдача команд
- Обновите или переустановите компоненты.
- Провести разведку
- Извлечение данных
Этот механизм фактически превращает скомпрометированную систему в удаленно управляемый имплант PowerShell.
Wallet.txt содержит Скрипт PowerShell для перехвата буфера обмена Этот скрипт предназначен для кражи криптовалютных транзакций. Он постоянно отслеживает буфер обмена системы на предмет скопированного текста и использует шаблоны регулярных выражений для обнаружения адресов криптовалютных кошельков, таких как Bitcoin или другие криптографические форматы. При обнаружении соответствующего адреса скрипт заменяет скопированный адрес кошелька адресом, контролируемым злоумышленником и хранящимся в его внутреннем словаре. В результате, если жертва копирует легитимный адрес кошелька для отправки криптовалюты, содержимое буфера обмена незаметно изменяется, и средства перенаправляются на кошелек злоумышленника. Скрипт постоянно отслеживает содержимое буфера обмена через регулярные интервалы, что позволяет злоумышленнику... тайно перехватывать и перенаправлять платежи в криптовалюте на скомпрометированной системе.
Адреса криптовалютных кошельков, контролируемые злоумышленником
Wallet.txt Вредоносная программа хранит словарь адресов криптовалютных кошельков, находящихся под контролем злоумышленника. При обнаружении соответствующего формата кошелька в буфере обмена вредоносное ПО заменяет адрес жертвы на адрес соответствующего кошелька, находящегося под контролем злоумышленника.
Заменяющие адреса охватывают несколько криптовалют, включая
Биткойн (BTC), Litecoin (LTC), Ethereum (ETH), Monero (XMR), XRP, NEO, Bitcoin Cash (BCH), Dogecoin (DOGE), Dash, Stellar (XLM), Binance Coin (BNB), Tezos (XTZ), Tron (TRX), VeChain (VET), DigiByte (DGB), Qtum, Cardano (ADA), Polkadot (DOT), Cosmos (ATOM), Lisk, Kava, Algorand (ALGO), Filecoin (FIL), Nano, NEM, Waves, Zcash (ZEC), Terra и THORChain (RUNE).
Цепочка 2 – Компоненты загрузчика PowerShell
VBS Launcher – PiceVid.vbs
Этот скрипт запускает выполнение файла PiceVid.ps1, выступающего в качестве точки входа для локальной цепочки загрузчиков, и выполняется через запланированное задание.
PowerShell Loader – PiceVid.PS1
Скрипт содержит полезную нагрузку RetroRAT и выполняется непосредственно в памяти.

Вместо записи полезной нагрузки в отдельный исполняемый файл, скрипт считывает его содержимое и динамически выполняет его с помощью Invoke-Expression (IEx).
Такой подход позволяет злоумышленнику запустить вредоносное ПО, минимизируя при этом количество обнаруживаемых артефактов на диске.
Выявленная в ходе анализа полезная нагрузка в оперативной памяти соответствует РетроРАТ, троянская программа удаленного доступа, нацеленная на финансовую деятельность, связанную с Американские банковские учреждения и криптовалютные платформыВредоносная программа отслеживает активность пользователей, перехватывает нажатия клавиш и выборочно отслеживает взаимодействие с финансовыми сервисами с целью сбора конфиденциальной информации.
Анализ полезной нагрузки – RetroRAT
Анализируемая полезная нагрузка, получившая название RetroRAT, представляет собой троян удаленного доступа (RAT) с финансовой мотивацией, нацеленный на операции, связанные с криптовалютами и банковскими операциями. Вредоносная программа устанавливает глобальный перехватчик клавиатуры и постоянно отслеживает заголовки активных окон на наличие ключевых слов, связанных с финансовыми приложениями и часто используемыми банковскими или криптовалютными платформами. Ее модульная архитектура в сочетании с каналом связи управления и контроля (C2) на основе TCP позволяет злоумышленнику выполнять удаленные команды, манипулировать файлами, получать доступ к данным буфера обмена и динамически загружать дополнительные сборки непосредственно в память.
Методы уклонения от обороны и противодействия анализу
В данном примере реализованы многочисленные методы противодействия анализу и обхода защиты, позволяющие избежать обнаружения и ограничить выполнение в средах анализа, таких как песочницы, виртуальные машины и автоматизированные системы анализа вредоносного ПО.
– Проверки на обход ограничений песочницы
В примере содержится жестко закодированный список распространенных идентификаторов песочницы и среды анализа, включая известные имена пользователей, такие как «John Doe», «virus», «test user», «sand box» и т. д.
В процессе выполнения эти значения сравниваются с атрибутами системы для выявления потенциальных сред анализа. Если совпадение найдено, вредоносная программа изменяет свое поведение, вероятно, в качестве механизма обхода защиты.


– Обнаружение виртуальных машин
Вредоносное ПО также проверяет, работает ли оно под виртуальной машиной, запрашивая информацию из каталогов виртуальной машины, драйверов и связанных служб. Если обнаруживаются какие-либо следы, оно завершает свою работу.


– Использование обфускации
В полезной нагрузке активно используется простая, но эффективная обфускация. Имена методов и классов агрессивно переименовываются, а несколько идентификаторов содержат управляющие символы Unicode, из-за чего они выглядят некорректно в декомпиляторе. Кроме того, большинство осмысленных строк хранятся в закодированном виде и восстанавливаются во время выполнения. Это препятствует прямолинейному статическому анализу и заставляет аналитика наблюдать за значениями динамически. Используя de4dot, нам удалось частично деобфусцировать бинарный код, восстановив читаемые имена методов.
Использование мьютекса
На ранней стадии выполнения бинарный файл проверяет, присутствует ли уже в системе именованный мьютекс. Если он найден, вредоносная программа мгновенно завершает свое выполнение, используя Environment.Exit(0). Этот метод часто используется вредоносными программами для предотвращения повторного заражения системы.


Многопоточное выполнение
Вредоносная программа запускает множество рабочих потоков для параллельного выполнения различных компонентов своей функциональности. Такая конструкция позволяет вредоносной программе поддерживать непрерывный мониторинг и фоновую активность, не прерывая другие операции, такие как обмен данными и управление или обработка данных.
– Поток 1 – Цикл перехвата событий клавиатуры
- new Thread(new ThreadStart(GClass25.smethod_1)).Start();
Встроенный вредоносный код создает отдельный поток выполнения для обработки перехвата клавиатуры с помощью функции SetWindowsHookExA(). В рамках этой процедуры регистрируется низкоуровневый (WH_KEYBOARD_LL) перехватчик, позволяющий вредоносной программе отслеживать низкоуровневый ввод с клавиатуры.

После установки перехватчика поток немедленно переходит в цикл обработки сообщений, используя Application.Run(). Это гарантирует, что перехватчик останется активным на протяжении всего времени работы процесса, позволяя импланту непрерывно перехватывать нажатия клавиш.

Внутри функции обратного вызова обработчика вредоносная программа проверяет, соответствует ли перехваченное сообщение событию нажатия клавиши. Условие if (int_2 >= 0 && intptr_1 == (IntPtr)256) Это гарантирует, что обработчик обрабатывает только допустимые события нажатия клавиш. Значение 256 соответствует сообщению WM_KEYDOWN в Windows, то есть код выполняется только при нажатии клавиши.

В конце этого потока вредоносная программа вызывает функцию UnhookWindowsHookEx() для удаления ранее установленного перехватчика нажатий клавиш. Это обеспечивает непрерывный мониторинг нажатий клавиш до тех пор, пока вредоносная программа не будет завершена.
— Тема 2 — Мониторинг банковских и криптовалютных сервисов США на основе ключевых слов
- new Thread(new ThreadStart(GClass11.smethod_0)).Start();
В дополнение к потоку 1, перехватывающему события клавиатуры, вредоносная программа запускает дополнительный поток, отвечающий за независимую обработку проверок во время выполнения, связанных с финансовой активностью пользователя.
Во-первых, программа подготавливает и инициализирует каталоги и имена файлов журналов, которые будут использоваться позже для хранения результатов мониторинга. Здесь инициализируются два отдельных файла: один для операций, связанных с криптовалютой («crypto_results.txt»), а другой — для операций, связанных с банковскими операциями («banks_results.txt»). Эти файлы хранятся в каталоге пользователя %localappdata%.

Далее вредоносная программа инициализирует два строковых массива с именами «array» и «array2». Значения этих массивов динамически восстанавливаются во время выполнения с помощью внутренних процедур декодирования. Этот метод скрывает значимые ключевые слова от статического анализа, позволяя при этом вредоносной программе использовать их во время выполнения.
Первый массив (array) содержит 47 (0x2F) ключевых слов, связанных с криптовалютами, включая такие платформы, как coinbase, blockchain, bitcoin и другие. Второй массив (array2) содержит 51 (0x33) ключевое слово, связанное с финансовыми учреждениями и платежными сервисами, включая bankofamerica, wellsfargo, chime и paypal.
Более детальное изучение ключевых слов в array2 показывает, что автор вредоносного ПО уделяет большое внимание финансовой экосистеме США, включая крупные национальные банки, региональные учреждения, цифровые банковские платформы и широко используемые онлайн-платежные сервисы.


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

Для ранее созданных файлов результатов создаются два объекта HashSet, что позволяет вредоносной программе избежать дублирования записей и поддерживать запись уже выявленных совпадений.
В бесконечном цикле вредоносная программа многократно получает заголовок текущего активного окна.

Захваченный текст нормализуется с помощью метода `.ToLower()` перед сравнением с предопределенными списками ключевых слов, содержащими криптовалютные платформы и банковские услуги. При обнаружении совпадения, которое ранее не было зафиксировано, соответствующее ключевое слово записывается в специальный файл результатов с помощью метода `File.AppendAllText()`. Кроме того, вредоносная программа начинает перехватывать и записывать последующие нажатия клавиш, связанные с данной сессией, что позволяет ей собирать потенциально конфиденциальную информацию пользователя, касающуюся финансовой деятельности.

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

Первоначально исполняемый файл перебирает список жестко закодированных доменов (Class15.string_0) и связанных с ними портов (Class15.int_0).

Для каждой комбинации домен-порт создается объект TcpClient. После установления TCP-соединения выполняется процедура проверки (smethod_6), которая служит проверкой подтверждения того, что удаленный сервер отвечает ожидаемым идентификатором.

В нашем образце мы обнаружили строковый идентификатор «RETRO-OK-2025». Соединения, не прошедшие эту проверку, немедленно закрываются, и предпринимается попытка использовать следующий сервер-кандидат.
После успешной проверки C2 вредоносное ПО активирует функцию RAT, которая периодически собирает данные о перехваченных нажатиях клавиш, хранящиеся в локальных файлах результатов, и передает их на сервер C2.

Вредоносная программа считывает собранные данные о нажатиях клавиш из результирующего файла с помощью File.ReadAllText(). Украденные данные объединяются с информацией об идентификации жертвы и упаковываются в структурированное сообщение с помощью внутренней процедуры формирования пакетов (GClass10). Затем сообщение передается на сервер управления и контроля через активный канал связи TCP (GClass12), где полезная нагрузка шифруется перед передачей.
Этот механизм позволяет вредоносному ПО надежно собирать и передавать конфиденциальную информацию от пользователей на удаленную инфраструктуру управления и контроля, что дает злоумышленнику возможность получить доступ к финансовой информации и учетным данным из скомпрометированной системы.
Модуль RAT
Будучи троянской программой удаленного доступа, вредоносное ПО поддерживает широкий спектр возможностей удаленного управления. Команды, полученные с сервера управления (C2), обрабатываются централизованным диспетчером, реализованным в виде оператора switch, который оценивает идентификаторы команд, определенные в перечислении GEnum1, и вызывает соответствующую функциональность.

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


Функциональность этой RAT-программы позволяет злоумышленникам в интерактивном режиме отслеживать и контролировать зараженную систему, а также совершать кражу финансовых данных.
Возможности управления RAT
| Возможности | Экшн |
| Удаленный доступ к рабочему столу / Мониторинг экрана | Запуск/остановка захвата экрана и настройка потоковой передачи удаленного рабочего стола. |
| Операции файлового менеджера | Просмотр каталогов, загрузка/скачивание файлов, управление файловой системой. |
| Мониторинг процессов/систем | Перечислите процессы, соберите информацию о системе, управляйте задачами. |
| Выполнение команды | Выполняйте команды или программы на скомпрометированной системе. |
| Системный контроль | Выключите/перезагрузите систему или завершите работу вредоносного ПО. |
| Память / Расширенные операции | Выполнение задач по манипулированию памятью или процессами. |
Целевые финансовые ключевые слова
| криптовалюта | |||
| coinbase | metamask | bitflyer | poloniex |
| блокчейн | trustwallet | Bitget | единица вероятности |
| freewallet | bitpay | ворота | hitbtc |
| бумажник | paxful | coincheck | mercatox |
| Bitcoin | localbitcoins | выводить | hotbit |
| BTC | крипто- | bitso | Digifinex |
| binance | bitfinex | битмарт | bitbank |
| Кракен | bitstamp | Exmo | LUNO |
| Etoro | хорошо | bitpanda | Близнецы |
| coingecko | байбит | жидкость | битбнс |
| coinmarketcap | kucoin | Coinmetro | Cotiger |
| tradingview | huobi | bittrex | |
| Финансовые учреждения / Платежные платформы | |||
| Банк Америки | пятый третий банк | первая республика | морозный берег |
| Компания "Уэллс-Фарго | Хантингтон | сионсбанк | онб |
| погоня | синхронность | коммерцибанк | первые граждане |
| Ситибанк | банк ключей | банк запада | CenturyLinkbank |
| Usbank | American Express | onefinance | синовус |
| CapitalOne | обнаружить | go2bank | первый горизонт |
| PNC | nbkc | зеленая точка | Ebay |
| тдбанк | Sofi | декриминализовано | PayPal |
| истина | перезвон | стремление | payeer |
| союзник | варобанк | nbkcbank | Амазонка |
| BBT | аксосбанк | флагзвезда | контроль |
| солнечное доверие | гражданский банк | BMO | оплата |
| районы | m&tbank | Everbank | |
Заключение
Операция DualScript — это многоэтапная вредоносная кампания, которая использует легитимные компоненты Windows, такие как планировщики задач, VBScript и PowerShell, для обеспечения постоянного присутствия в системе при минимизации следов на диске. Атака осуществляется через две параллельные цепочки: веб-загрузчик PowerShell, который развертывает вредоносную программу для перехвата содержимого буфера обмена криптовалюты, и вторичная цепочка загрузчиков PowerShell, которая выполняет имплантат RetroRAT непосредственно в памяти.
Сочетая финансовые кражи посредством манипулирования кошельками с возможностями удаленного доступа, злоумышленники добиваются как целенаправленной кражи криптовалюты, так и постоянного мониторинга системы. Эта кампания демонстрирует растущее злоупотребление доверенными системными утилитами и методами выполнения операций в оперативной памяти для обхода традиционных механизмов обнаружения.
Показатели компромисса
Файловый
| Артефакт | MD5-хэш | обнаружение |
| РетроРэт | 7546ada1e3144371724db209ba4c5f37 | Trojan.RetroRAT.S3882604 |
| PiceVid.ps1 | 173b27e7541427929da72ebf37c6db8e | Script.RetroRat.50517.GC |
| PiceVid.vbs | 243af69d85550232da45f5a30703a4a3 | Script.RetroRat.50517.GC |
| ppamproServiceZuneWAL.ps1 | 43cac07a501e7a717023e0fa8f6111e0 | Script.Trojan.49593.GC |
| ppamproServiceZuneWAL.vbs | 163c38bd7ff7dd27e88eaef1a7a4819f | Ps.Trojan.50374 |
| Wallet.txt | 1dc82fd02a0db3e338128b6f587d7122 | Script.RetroRat.50517.GC |
Сетевой
| URL / Домен | Категория |
| info[.]1cooldns[.]com | Malware |
| floatsdk[.]1cooldns[.]com | Malware |
| thewpiratebay[.]st | Malware |
Картирование угловых соединений
| тактика | Техника | Идентификатор техники |
| Настойчивость | Запланированная задача/задание | T1053.005 |
| Типы | Интерпретатор команд и сценариев: PowerShell | T1059.001 |
| Типы | Интерпретатор команд и сценариев: VBScript | T1059.005 |
| Уклонение от защиты | Зашифрованные/сжатые файлы и информация | T1027 |
| Уклонение от защиты | Нарушение защиты: отключение или изменение инструментов (обход политики выполнения) | T1562.001 |
| Дискавери | Обнаружение процесса | T1057 |
| | Захват ввода: кейлоггинг | T1056.001 |
| | Данные буфера обмена | T1115 |
| | Захват экрана | T1113 |
| Доступ к учетным данным | Захват ввода | T1056 |
| Управление и контроль | Протокол прикладного уровня (веб-протоколы) | T1071 |
| эксфильтрации | Эксфильтрация через канал C2 | T1041 |
Авторы:
Нирадж Макасаре
Прашил Мун
Раяпати Лакшми Прасанна Саи



