Разбор малвари: как работает клипбординг под крипто-кошельки

Мне прислали архив My_Wallet_XSGD__XSGD_.zip предположительно кошелёк для XSGD, сингапурского стейблкоина. Внутри оказалось два файла: My Wallet 2026.exe (11 МБ) и XSGD.bin (580 КБ). Запустить я его не стал вместо этого разобрал статически. Вот что внутри.


Что такое XSGD и почему это важно

XSGD — это токен стандарта ERC-20, выпускаемый компанией StraitsX (бывший Xfers), привязанный к сингапурскому доллару один к одному. Торгуется на централизованных и децентрализованных биржах, используется для переводов внутри Юго-Восточной Азии.

Легитимного standalone-кошелька для XSGD в формате .exe в zip-архиве не существует. XSGD хранится в обычных Ethereum-кошельках MetaMask, Trust Wallet, аппаратных кошельках. Сам по себе факт существования такого файла красный флаг.


Первый слой: упаковщик

My Wallet 2026.exe — это PE32+ файл под x86-64, скомпилированный 18 марта 2026 года. Размер заголовков и секций — 326 КБ, всё остальное (11,1 МБ) это overlay данные после последней секции.

В overlay обнаруживается сигнатура PyInstaller: MEI\x0c\x0b\x0a\x0b\x0e. Это стандартный CArchive формат, которым PyInstaller упаковывает Python-приложения в один исполняемый файл. Внутри архива: Python 3.14, Tkinter/Tcl-Tk для GUI, стандартные модули и несколько нестандартных записей.

Одна из них называется Clip.exe.


Второй слой: Clip.exe

43 КБ, .NET Framework 4.5, скомпилировано с флагом asInvoker. При статическом анализе строк картина становится очень конкретной.

Пространства имён и классы:

Stub.TelegramAPI
Stub.TelegramAPI.SendDocument
Stub.Help.FileReplace
Stub.Help.StringHelper
Stub.Help.Modules.Loader
Stub.Startup
Stub.Protection
Stub.Install

Это не сторонние библиотеки. Это классы самого трояна с прозрачными именами.

Что умеет делать Clip.exe:

Клипбординг — основная функция. Классы GetClipboardText, SetText, GetBestWallet и поле addresses указывают на стандартную схему: мониторинг буфера обмена через AddClipboardFormatListener (Win32 API), при обнаружении крипто-адреса — подмена через SetText на адрес атакующего из локального списка addresses. Название GetBestWallet намекает на логику выбора: скорее всего, выбирает адрес подходящей сети под скопированный формат (Bitcoin начинается с 1, 3 или bc1; Ethereum с 0x; и т.д.).

Эксфильтрация через Telegram — поля botToken и chatId захардкожены в бинаре (при динамическом анализе их можно было бы извлечь из памяти). Метод SendDocument в комбинации с ScreenShot отправляет скриншоты жертвы в Telegram-бот атакующего. Это уже выходит за рамки простого клипбординга.

Закрепление в системе — три механизма одновременно: AddToStartup (ключ реестра HKCU\...\Run), autoRun_COM (регистрация как COM-объект — сложнее обнаружить), autoRun_Scheduler (Task Scheduler). Один из трёх почти наверняка переживёт поверхностную очистку.

Мониторинг USBWatchUSB/USBWatcher отслеживают подключение новых устройств через WM_DEVICECHANGE. Вероятно, для распространения копии трояна на флешку.

Загрузчик — поля loaderFileUrl и apiUrl плюс класс Loader означают, что это не конечный payload. При определённых условиях (или просто при каждом запуске) скачивается что-то ещё.

Антиэмуляция — класс AntiEmulation присутствует. Что именно проверяется без динамического анализа неизвестно, но типичный набор: количество процессов, наличие виртуального дисплея, имена запущенных процессов (VBoxService, vmtoolsd и т.д.).

Зачистка следовZoneIDCleaner/RemoveZoneIdentifier удаляет Zone.Identifier ADS с файлов, скачанных из интернета. Это убирает предупреждение Windows Defender при первом запуске.

Сбор информацииGetHardwareId, GetIP, метод опроса WMI через ManagementObjectSearcher. Fingerprinting жертвы перед отправкой данных.


Как это работает в связке

Пользователь запускает My Wallet 2026.exe. Python-обёртка показывает какой-то Tkinter-интерфейс — достаточно убедительный, чтобы не вызвать немедленных подозрений. В фоне распаковывается и запускается Clip.exe. Он удаляет с себя Zone.Identifier, прописывается в трёх местах автозапуска, проверяет среду на признаки sandbox, получает IP жертвы и hardware ID, отправляет первый отчёт в Telegram.

Дальше — ожидание. Как только пользователь копирует что-то похожее на адрес кошелька, буфер обмена подменяется. Деньги уходят атакующему. Жертва видит только то, что транзакция прошла не туда, и, как правило, уже после подтверждения.

Параллельно Clip.exe периодически делает скриншоты и отправляет их оператору на случай если в буфер обмена попадут seed-фразы, пароли, данные входа в биржи.


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

ЧтоЗначение
SHA256 My Wallet 2026.exe86476e72184b949fac65596c76a98a644d8521b57dffed0648174e6660d974e9
SHA256 Clip.exe (распакованный)f90327d282e4bbd97cf561965f0397e2d2f942fdd7cde5a0ad7d030d7ee33dcf
Timestamp2026-03-18 09:05:41 UTC
.NET GUID57E49C7E-C361-4A7F-8890-D665B3B9CB4F

Если файл уже запускался, нужно проверить:

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run наличие новых записей
  • HKCU\Software\Classes\CLSID\ — COM-записи с нестандартными GUID
  • Task Scheduler — задачи без явного источника
  • Процессы с именами Clip.exe или производными
  • Исходящие соединения на api.telegram.org

Почему это работает

Клипбординг существует давно — первые образцы под Bitcoin появились около 2017 года. Живучесть схемы объясняется просто: пользователи не проверяют адрес после вставки. Адрес кошелька это 42 символа случайного вида, сравнивать первые 4 и последние 4 лень, сравнивать полностью не приходит в голову.

Атакующие это знают и генерируют адреса с совпадающим префиксом и суффиксом так называемый vanity address. Инструменты для этого общедоступны. Жертва, даже если и смотрит на адрес, видит знакомые символы в начале и конце и не замечает подмены в середине.

Встраивание в поддельный кошелёк добавляет слой доверия: человек сам ищет нишевый инструмент, находит «официальный» архив, запускает. Сценарий работает лучше, чем рассылка по почте.


Что делать, если запустил

Отключить машину от сети сразу. Не пытаться «просто удалить файл» три механизма автозапуска это не лечат.

Дальше — загрузка с внешнего носителя, полная проверка системы антивирусом (Defender в этой ситуации может не увидеть часть, потому что Zone.Identifier уже удалён). Все крипто-активы перевести на новые адреса немедленно, потому что seed-фразы могут быть уже скомпрометированы через скриншоты. Пароли от бирж и Exchange-аккаунтов сменить!

Восстановление из чистого снапшота если он есть самый надёжный путь.


Этот образец — не особо изощрённый. .NET без обфускации, имена классов говорящие, Telegram как C2 без дополнительного слоя анонимизации. Но он рабочий, свежий (март 2026), и цепочка доставки через поддельный нишевый кошелёк достаточно убедительная для своей целевой аудитории.

BTC (Legacy): 1Br6Thztoei1HqqGDZY1ksJdn7v4h6kXar, 1K3bQ5hyCqouLKGm4YChmu7uDdZo3ucREy, 1Pq1nwLoMhTWqzRsAH8t1WrYgBHhHBSciq, 1BuKbHhBPURpkRdhW1buD9Bg9h9FMVG4h5

BTC (P2SH): 3HxybeHMFdPd8jAyysUR7iyJ12zteJY8VG, 3BufmhW2UEeTZq2CVXk3maPesghUubMzsy, 37pnNBT1862CKWFqFbDPrYyTCQtSouRP49

BTC (Bech32): bc1qpapycp55qem39g52k4u6clzxqs0dadtz4x6c2s, bc1qxcqgg8zq5k5nsgewcyfmadudfqmc9yktmzklt7

ETH/ERC-20 (XSGD): 0xBE372a40Ea19DB6F4641963B4741B1fF6a0De734, 0xCaf2C54E400437da717cF215181B170F65187aBf, 0x86e83a28BAc0359Ff6672bB6e1A474E527264641

TRON: TQyW71eg3DZrWEiK4nBKjR6Z7mr2YBhYPo, TAbCekcoiqvqkuW9p27HM1AEmKJ5hcuJES

Плюс Monero, XRP, Stellar, Zcash, Dash, BNB, TON, Solana всего ~15 монет охвачено.

Для проверки: BTC — mempool.space или blockstream.info, ETH — etherscan.io, TRON — tronscan.org. ETH-адреса особенно интересны — именно там живёт XSGD.

Оставьте комментарий