Блокчейн вместо сервера: почему TONResolver RAT нельзя остановить обычными методами?

С конца мая 2026 года японские отели и гостиничные сети, работающие через , оказались под прицелом целенаправленной фишинговой кампании. Атакующие рассылали письма на японском и английском языках, имитируя обращения службы поддержки с жалобами от постояльцев. Типичная тема письма: «重要:ゲスト滞在レビュー依頼» (Важно: запрос на отзыв о проживании гостя) или «Urgent: Bed bug complaint from guest». В тексте описывалась жалоба гостя на клопов во время проживания 11–14 мая 2026 года, а получателю предлагалось скачать «фотографии и видеозаписи» как доказательство. Ссылка вела на ZIP-архив.
Блокчейн вместо сервера: почему TONResolver RAT нельзя остановить обычными методами?
Изображение носит иллюстративный характер

Параллельно атакующие использовали так называемый conversational attack через Gmail: сначала завязывалась переписка на нейтральные темы (запрос о доступности номеров, уточнение цен), и лишь после установления контакта жертва получала вредоносную ссылку. Этот приём, который принято ассоциировать с группами уровня APT, позволял обходить первоначальную настороженность сотрудников. Зафиксированы десятки вариантов тем писем: от «Hotel Booking Request» до «Very bad experience with room service» и «{English name} {number}». Примечательно, что SPF, DKIM и DMARC оказались недостаточны для блокировки части этих писем — часть из них рассылалась через функционал уведомлений легитимного сервиса планирования.
Если сотрудник открывал архив и запускал вложенный LNK-файл, замаскированный под PNG-фотографию, начинался многоступенчатый процесс заражения. LNK содержал встроенную команду PowerShell, которая оперировала двумя большими целыми числами через [System.Numerics.BigInteger] (до конца мая 2026 года использовался [bigint]). Разница между числами многократно делилась на 256, а остатки конвертировались в символы — так восстанавливался адрес промежуточного сервера. PowerShell делал туда запрос через Invoke-WebRequest и скачивал PS1-скрипт в папку %TEMP%. Причём сервер проверял User-Agent входящего запроса: если он не содержал строку «Powershell» — возвращался 404, и никакого вредоносного файла жертва не получала.
PS1-скрипт разворачивал инфраструктуру в каталоге %USERPROFILE%\AppData\Local\Nodejs. Он предотвращал повторный запуск сразу двумя способами: через Get-Process с Where-Object (проверка, не запущен ли уже node.exe из того же пути) и через Mutex с AES-CBC-зашифрованным именем. AES-ключ (32 байта) и вектор инициализации (16 байт) хранились в скрипте в виде Base64. На строке 77 располагалась длинная Base64-строка, на строках 100–101 из неё извлекался JavaScript-пейлоад, на строке 103 через AES-CBC расшифровывалось имя домена-аргумента. Если node.exe отсутствовал, скрипт скачивал с официального и распаковывал его туда же. Версия v24.13.0 подтверждена во всех изученных образцах.
Здесь начинается самое технически необычное во всей кампании. Финальный JavaScript-пейлоад, классифицированный TrendAI™ как TrojanSpy.JS.TONRESOLVER.A, работает под Node.js и использует VM-обфускацию: логика транслирована в кастомный набор виртуальных инструкций с собственным интерпретатором vmn_22aed1 и диспетчером, маршрутизирующим обработку по виртуальным опкодам. Дешифровка строк идёт через функцию vme(0x...), массивы строк — через vmz.
Адрес C&C-сервера малварь не хранит локально. Вместо этого она обращается к блокчейну TON (The Open Network), изначально разработанному Telegram, а сегодня поддерживаемому TON Foundation. Конкретно запрос уходит на tonapi[.]io: [.]io/v2/blockchain/accounts/0:c66119f0e5635c4380441d7a79baf0c02a0ab7ea6cd78de06507fc5dc2c1a5d9/methods/get_domain. Смарт-контракт злоумышленников с адресом 0:6d5b44d0678e6bd6703f2cabd2531ccf5a0b11cc081f8f7175bd679db4c12d41 хранит текущий домен C&C и может быть обновлён в любой момент простой транзакцией. Если один домен заблокируют, атакующие запишут в контракт новый, и все уже заражённые машины автоматически переключатся.
История транзакций контракта восстановлена полностью. 7 февраля 2026 года в 13:37 UTC на контракт поступило около 5.99 TON с адреса, связанного с биржей Huobi, статус сменился с nonexist на uninit. В 14:03 того же дня был инициализирован метод get_domain и записан первый C&C-домен amanohuguta[.]cfd. 9 февраля 2026 года в 19:17 записан hsaertyuoang34[.]sbs, 20 февраля в 15:19 — zloapobikahy23[.]bond, 2 июня 2026 года в 02:53 — tonajukbhuakpo2[.]shop. Метод get_domain вычисляется через CRC16/XMODEM: crc16("get_domain") | 0x10000 = 119378. Смарт-контракт написан на TVM Assembly, дизассемблирован с помощью библиотеки tdisasm.
После старта TONResolver устанавливает WebSocket-соединение с C&C, зашифрованное по схеме ECDH + HKDF-SHA256 + AES-256-CBC с кривой secp256k1. Обнаружение через перехват трафика крайне затруднено именно из-за этой схемы. Протокол обмена структурирован по типам сообщений. Type:2 и type:3 — обмен публичными ключами и солью при старте. Type:4 — отправка информации об эндпоинте: имя пользователя, имя хоста, ОС, количество ядер CPU, объём памяти, MAC-адрес. Type:0 каждые 20 секунд приходит от C&C как пинг, type:1 — ответ клиента. Types 5–8 (по данным статического анализа) соответствуют выполнению произвольного JavaScript, обработке результатов, получению и запуску файлов, выполнению команд PowerShell.
Вредонос не крадёт данные немедленно после заражения. Атакующие сначала получают сведения об эндпоинте и IP-адресе, отбирают интересные цели и уже затем отдают команды. Среди возможностей зафиксированы: доступ к базам паролей Google Chrome и Microsoft Edge (SQLite-файлы в AppData\Local\Google\Chrome\User Data\ и AppData\Local\Microsoft\Edge\User Data\), кукам, истории, автозаполнению и закладкам. Дополнительная малварь запускается из %USERPROFILE%\AppData\Local\Temp.
Инфраструктура доставки строилась на четырёх группах доменов по TLD, все использовали Cloudflare. До июня 2026 года пара серверов имён Cloudflare называлась «galilea» и «moura», с июня сменилась на «brianna» и «roan» — одновременно с переходом с [bigint] на [System.Numerics.BigInteger]. Домены.com-группы регистрировались на одноразовый email-адрес с доменом, содержащим слово «ghastlier».
TrendAI™ публикует XDR-запросы для охоты по этой угрозе. Один из них ищет события с eventSubId: 101 и командой PowerShell, обращающейся к AppData\\Local\\Nodejs\\node.zip с родительской командой, содержащей [bigint] или BigInteger. Другой — события eventSubId: 901, где powershell.exe запускается дочерним процессом node-v24.13.0-win-x64\\node.exe и обращается к MachineGuid. Третий ищет DNS-запросы к tonapi от процесса node.exe из того же пути. На уровне сети организациям рекомендовано заблокировать доступ к tonapi[.]io: легитимных деловых причин обращаться к блокчейн-API у большинства корпоративных окружений нет, а блокировка разрывает цепочку атаки на промежуточном этапе до подключения к C&C. Исследование провели Don Ovid Ladores из Advanced Cyber Defense Group и команда JP Managed Service Team.


Новое на сайте

Ссылка