Специалисты компании "Хуронг" (Huorong) из центра анализа угроз обнаружили новую угрозу для пользователей Windows: информационный стилер под названием SeanPalia. Зловред маскируется под обычное настольное приложение, созданное на базе фреймворка Electron, но на деле представляет собой сложную многоступенчатую систему для кражи паролей, файлов cookie, данных банковских карт, а также содержимого криптовалютных кошельков и учётных записей Discord и Steam.
Описание
Особую опасность придаёт тот факт, что программа использует технологии V8-байткода и шифрования, чтобы скрыть свою вредоносную нагрузку от антивирусных средств и затруднить обратную разработку. В "Хуронг" отмечают, что образец уже полностью блокируется их продуктами, но пользователям стоит проявлять бдительность.
Как устроен SeanPalia
Внешне вредоносная программа ничем не отличается от легитимного Electron-приложения. В её состав входят файлы "package.json", "main.js" и ресурсы, упакованные в ASAR-архив. Однако настоящая логика спрятана в зашифрованном V8-байткоде. При запуске основной файл "main.js" загружает зашифрованный файл "9Bgr5Cugh6G3UuU1.enc", расшифровывает его с помощью AES и получает промежуточную нагрузку "decrypted_payload.jsc", которая уже содержит байткод для выполнения на движке V8.
Этот промежуточный слой, в свою очередь, восстанавливает основную вредоносную логику - большую обфусцированную JavaScript-функцию "BAVSItA". Именно она отвечает за все крадущие и деструктивные действия. Для борьбы с защитой хакеры использовали библиотеку "bytenode", которая позволяет компилировать код JavaScript в V8-байткод, что делает его нечитаемым для человека и многих статических анализаторов. Чтобы восстановить логику, исследователям пришлось модифицировать исходный код самого движка V8, отключить проверки магических чисел и написать специальный загрузчик байткода.
После запуска вредоносная программа выполняет несколько последовательных этапов.
Первый этап: подготовка и снятие защиты
Прежде чем начать кражу данных, SeanPalia пытается нейтрализовать возможные помехи. Сначала он проверяет наличие средств анализа трафика и отладки: завершает процессы таких утилит, как HTTP Toolkit, HTTPDebugger и другие инструменты для перехвата сетевых запросов. Затем программа массово закрывает все процессы браузеров (Chrome, Edge, Brave, Firefox и другие), чтобы снять блокировки с файлов баз данных SQLite и LevelDB, в которых хранятся учётные данные. Для этого используется системная команда "taskkill /F /T" с перебором десятков имён процессов.
После этого вредоносная программа сканирует системные каталоги браузеров, находит профили (Default, Profile 1-5) и приступает к чтению локальных файлов: "Login Data" (сохранённые пароли), "Web Data" (автозаполнение, кредитные карты, CVC-коды), "Cookies", "History", "Bookmarks", а также папок "Local Storage/leveldb". Для расшифровки защищённых паролей и cookie она использует мастер-ключ, извлечённый из файла "Local State". Пароли извлекаются в формате "v10/v11" AES-GCM, cookie - через аналогичную процедуру.
Второй этап: кража криптокошельков и токенов Discord
Наибольший интерес для злоумышленников представляют криптовалютные активы. SeanPalia включает в себя модуль для сбора данных с настольных кошельков (Exodus, Atomic, Guarda, Electrum и многих других), а также расширений браузеров (MetaMask, Phantom, Ronin, Trust Wallet и т.д.). Для Exodus предусмотрена специальная процедура восстановления мнемонической фразы (seed) и пароля из файлов "seed.seco" и "passphrase.json". Аналогично обрабатываются и другие кошельки, где код пытается получить доступ к конфиденциальным файлам.
Отдельное внимание уделено Discord. Вредоносная программа сканирует файлы ".ldb" и ".log" из хранилищ LevelDB, которые находятся как в папках самого Discord, так и в браузерах, где пользователь входил в мессенджер. Она извлекает обычные токены авторизации и, если токен зашифрован (с префиксом "dQw4w9WgXcQ"), расшифровывает его с помощью мастер-ключа. После этого программа обращается к API Discord ("/api/v9/users/@me") и дополнительно собирает платёжные источники, промокоды, список друзей и информацию о серверах (гильдиях), чтобы оценить ценность аккаунта - так называемую "обогащение" профиля.
Третий этап: второй загрузчик и обход App-Bound
Наиболее сложная часть атаки связана с так называемым "App-Bound" шифрованием, которое применяется в новых версиях Chromium для защиты наиболее чувствительных данных. SeanPalia скачивает второй этап нагрузки (payload2) с удалённого сервера. Как показал анализ, URL для загрузки был зашифрован в теле вредоносной программы с помощью AES-256-GCM, а сам полезный файл был передан через GitHub по адресу "https://raw.githubusercontent[.]com/RobertJunas2145/x0x/refs/heads/main/mm". Второй этап представляет собой нативный Windows-модуль (PE), который, в свою очередь, взаимодействует с COM-сервисами браузеров (Elevation Service). Для каждого поддерживаемого браузера (Chrome, Chrome Beta, Brave, Edge, Avast) в коде жёстко прописаны CLSID и IID. Модуль запускает процесс браузера в головном режиме с отключёнными средствами безопасности (отключение sandbox, Web Security, расширений и т.д.) и через COM-интерфейс расшифровывает данные, которые не удаётся прочитать напрямую из файлов. После дешифровки результаты передаются обратно в основную JavaScript-оболочку.
Четвёртый этап: сбор сведений о системе и загрузка архива
Параллельно с кражей данных SeanPalia собирает информацию об атакуемом устройстве: операционную систему, модель процессора и видеокарты, объём оперативной памяти, уникальный идентификатор оборудования (HWID), а также публичный IP-адрес через сервисы ipify и ipapi. Вредоносная программа проверяет наличие игр (Riot Games, Minecraft, Epic Games, Steam), коммуникационных инструментов (Telegram, FileZilla) и программ удалённого доступа (AnyDesk, RustDesk). Если обнаружен Steam, программа читает файл "loginusers.vdf" для получения идентификаторов SteamID64 и через Steam Web API получает детальную информацию об игроках (уровень, список игр, профиль).
Все собранные файлы (пароли, cookie, автозаполнение, данные кошельков, файлы конфигурации и т.д.) помещаются в единую ZIP-архиву с паролем, после чего архивы загружаются на несколько временных файлообменных сервисов ("tmpfile.link", "temp.sh", "tempfile.org", "gofile.io"). Итоговая сводка - ссылка на архив, пароль и краткая характеристика жертвы (количество паролей, кошельков, токенов Discord и т.д.) - отправляется на управляющий сервер атакующих ("api.hypercoreengine.com/sender-moss").
Как отмечают эксперты в отчёте, такая многоуровневая архитектура делает SeanPalia серьёзной угрозой. Она способна обходить многие механизмы защиты, особенно если пользователь сам запустил подписанное приложение, не вызвавшее подозрений у антивируса.
Последствия и рекомендации
Успешная атака SeanPalia может привести к полной компрометации личных аккаунтов, утечке банковских данных, краже средств из криптовалютных кошельков и захвату учётных записей в играх и мессенджерах. Злоумышленники получают не только пароли, но и сессионные cookie, что позволяет им входить в профили без двухфакторной аутентификации.
Пользователям следует установить надёжное антивирусное решение и включить функцию поведенческого анализа. Необходимо с осторожностью относиться к приложениям из неофициальных источников, особенно к взломанным программам, так как именно они часто становятся носителями подобных угроз. Также стоит регулярно проверять список активных процессов в диспетчере задач - если вы заметили, что браузеры или другие программы неожиданно закрылись, это может быть признаком активности стилера. Специалисты "Хуронг" подтверждают, что их продукты уже детектируют и обезвреживают SeanPalia, но предотвращение заражения остаётся ключевым фактором безопасности.
Индикаторы компрометации
URLs
- https://api.hypercoreengine.com/sender-moss
- https://raw.githubusercontent.com/RobertJunas2145/x0x/refs/heads/main/mm
SHA256
- 55e80a984d85bc95cd3b5ac2678e478b966001b270398b0147e7314e9a2126ad
- be219a47bb2adb65aa02cde88baaa9bee4041e846b4b32ba05921f7c078323d9