Инцидент, задокументированный аналитиком по обратной разработке, демонстрирует серьёзную угрозу для пользователей, устанавливающих непроверенные модификации видеоигр. Жертва, профессионально занимающаяся реверс-инжинирингом, установила с GitHub архив Chapter.Skip.zip, замаскированный под полезный мод для Resident Evil 9, позволяющий пропускать главы. Вместо этого система получила сложную многоступенчатую инфекцию, которая оставалась незамеченной в течение одиннадцати дней. Конечным этапом стал инжектированный в память исполняемый файл на языке Go, совмещающий функции похитителя учётных данных (infostealer) и инструмента удалённого доступа (RAT).
Описание
Первым звеном цепочки стала вредоносная DLL-библиотека ChapterSkip.dll, извлечённая из архива. При запуске она выполняла команду, загружающую удалённый пакетный скрипт через curl с легитимного, но скомпрометированного сайта южноафриканской охранной компании Nomgwenya Security Services, и передавала его напрямую в cmd.exe. Этот скрипт, названный vscode-bootstrap.cmd, проверял наличие Node.js на компьютере и при отсутствии загружал его с официального сайта nodejs.org, после чего разворачивал портативную среду Node. Внутри самого скрипта был закодирован блок, маскирующийся под сертификат, который с помощью утилиты certutil декодировался в обфусцированный JavaScript. Данный JavaScript, в свою очередь, загружал портативную среду Python (python3.zip) и запускал защищённый PyArmor-скрипт exec.py.
Именно Python-стадия стала центральным звеном, поскольку она загружала из памяти финальную полезную нагрузку - исполняемый файл Go, располагавшийся по адресам /go/boing на двух доменах (postprocesser[.]com и cosmoplanets[.]net). Декодирование полезной нагрузки проходило в три этапа: сдвиг символов (шифр Цезаря с вычитанием 4), декодирование base64 и распаковка LZMA. Анализ полученного Go-файла, проведённый с помощью IDA, capa и динамической отладки, выявил широкий набор функций. Среди них - сбор сохранённых паролей, cookie-файлов, истории браузера, данных автозаполнения и банковских карт из браузеров на базе Chromium (Edge, Chrome, Brave, Opera, Vivaldi, Yandex и другие) и Firefox. Кроме того, вредоносная программа нацеливалась на криптовалютные кошельки (Coinomi, Exodus, MetaMask), данные сессий Discord, Telegram, Steam, Signal, файловые менеджеры (FileZilla), SSH-ключи, базы данных KeePass и файлы сертификатов.
Согласно телеметрии, собранной в ходе динамического анализа в песочнице Triage (доступен публичный отчёт по тому же образцу), процесс calc.exe использовался как хост для туннеля Cloudflare (calc.exe tunnel --url http://localhost:49906), что указывает на возможность организации скрытого канала управления (hVNC). Тот же отчёт зафиксировал запуск ffmpeg.exe с перечислением устройств DirectShow, что является признаком функциональности веб-камеры. При этом автор инцидента отмечает, что на его собственном ПК не обнаружено следов активации веб-камеры или передачи видеопотока. Однако сам факт наличия такого кода в финальной нагрузке подтверждён.
Отдельный тревожный сигнал - обнаружение процессов dllhost.exe с использованием большого объёма оперативной памяти (около 2,5 ГБ) и подключения к пулу для майнинга Monero pool[.]hashvault[.]pro. Это указывает на то, что помимо кражи данных, злоумышленники могли использовать ресурсы заражённой машины для криптомайнинга. Тем не менее, встроенных строк, связанных с майнером, в изученном Go-файле не найдено, что позволяет предположить отдельную загрузку и инжекцию майнера через тот же механизм, что и основная нагрузка.
Механизм эксфильтрации также был детально восстановлен. Анализ показал, что Go-полезная нагрузка взаимодействует с сервисом Wormhole.app для организации защищённых комнат-сессий. Процесс включал создание комнаты, получение токена авторизации и динамического URL для загрузки архива на Backblaze B2. Альтернативным путём выявлена загрузка на Gofile.io - в песочнице Triage зафиксирована передача 846 691 байта на store-eu-par-5.gofile.io. Автор инцидента подчёркивает, что не может однозначно утверждать, были ли украдены и загружены данные с его конкретной машины, поскольку локальные журналы межсетевого экрана и DNS-клиента не были включены. Однако доступ к данным был: на компьютере жертвы в браузере Edge хранилось 427 сохранённых логинов, в Firefox - 208, а также имелись обширные базы cookie, история просмотров и данные приложений.
Для закрепления в системе использовалась запись в реестре HKCU\...\Run с именем "Microsoft Display Driver Manager", запускающая Python-скрипт exec.py. После удаления этой записи и завершения процессов инфекция не проявляла себя вновь, но Go-нагрузка содержит код для создания задач по расписанию и перезапуска, что делает полное удаление сложной задачей.
Инцидент пересекается с публичными отчётами об угрозе Akira Stealer, а также с цепочками заражения, описанными в исследованиях Contagious Interview (Abstract Security, VS Code / Cursor). Тем не менее, точная атрибуция группировке остаётся неопределённой. Основные выводы для пользователей: любой непроверенный код из ненадёжных источников, даже в виде мода для игры, может привести к полной компрометации системы. Регулярное резервирование данных, включение детального логирования сетевой активности и немедленная реакция на подозрительные процессы - единственные способы минимизировать ущерб от подобных атак, которые становятся всё более изощрёнными и многоступенчатыми.
Индикаторы компрометации
IPv4
- 104.16.230.132
- 104.21.92.55
- 162.159.138.232
- 172.67.186.209
- 172.67.206.54
- 185.199.109.133
- 185.84.98.5
- 185.84.98.85
- 188.114.96.1
- 195.154.100.106
- 198.41.192.67
- 198.41.192.7
- 198.41.200.13
- 208.94.117.187
- 208.95.112.1
- 51.159.107.119
- 51.75.242.210
- 94.139.32.9
Domain
- api.gofile.io
- api.trycloudflare.com
- pool.hashvault.pro
- probe.cftunnel.com
- region1.v2.argotunnel.com
- region2.v2.argotunnel.com
- release-assets.githubusercontent.com
- store9.gofile.io
- store-eu-par-5.gofile.io
- www.gyan.dev
URL
- http://ip-api.com/json
- https://cosmoplanets.net/.well-known/pki-validation/go/boing
- https://nomgwenya.co.za/js/settings?win=25
- https://postprocesser.com/.well-known/pki-validation/go/boing
- https://postprocesser.com/.well-known/pki-validation/go/python3.zip
- https://store-eu-par-1.gofile.io/contents/uploadfile
- https://wormhole.app/api
WebSocket Secure
- wss://wormhole.app/websocket
MD5
- a5ffe2141e12dc1f7e0a844fa51bd0cc
SHA1
- e3007dfeb3d3d0d7b232200af409af387f20441d
SHA256
- 6d9379e365a4da282531d7f234c69eefa48567c01ba173b462e907a1ddfc71b2
- 6ff4c76b33d43b6b7cc6714db30eb10ee4c2b79430f7b4accba04ab49b62be76
- 861ae8b9a0e41a82e47dcc7b590a811ccdbbb4784e9c055628eba64584881499
- c506e1a058e6d1ec3df90be91817619bc3bee8a7806e34e5c1d169f999347808
- c792b19826be17faa3164c5a77d42dcc07002080b690c8527f73c1cf000880ea
- edcce8f1da6ac154a0e4d6fa1b4dfa4f06122e77951ea4a54c0ba91a174c5ff2
- fd022b5cde7c1b1dd0a2ece3fdd6876ee8de81596581b72d46b8432d05dbce27