Аналитики компании Hybrid Analysis обнаружили новое двухэтапное вредоносное программное обеспечение, получившее названия LeakyInjector и LeakyStealer. Этот тандем выполняет разведку на зараженном компьютере и целенаправленно похищает данные криптовалютных кошельков, включая соответствующие браузерные расширения. Кроме того, вредоносная программа собирает файлы истории посещений из браузеров Google Chrome, Microsoft Edge, Brave, Opera и Vivaldi.
Описание
Первый этап атаки, LeakyInjector, расшифровывает зашифрованный алгоритмом ChaCha20 второй компонент, LeakyStealer, и внедряет его в процесс explorer.exe. Для этого используются низкоуровневые API, что позволяет избежать обнаружения системами защиты. После внедрения стилер (stealer, программа-похититель) вычисляет уникальный идентификатор зараженного компьютера (Bot ID) и обеспечивает свое постоянное присутствие в системе, создавая запись в разделе реестра Run. Особенностью LeakyStealer является реализация так называемого "полиморфного движка", который способен изменять собственную область памяти в процессе выполнения с помощью жестко заданных байтов.
LeakyStealer проводит активный поиск установленных криптовалютных кошельков, таких как Electrum, Exodus, Atomic, Sparrow, Ledger Live, Guarda и BitPay. Также он нацелен на популярные браузерные расширения для работы с криптовалютами: MetaMask, Phantom, Coinbase Wallet и Trust Wallet. Программа реализует две бэкдор-команды: загрузку и выполнение файла, а также выполнение произвольных команд Windows.
С технической точки зрения, образец представляет собой 64-разрядный исполняемый файл для Windows объемом около 30 МБ, дополненный нулевыми байтами. Важной деталью является то, что вредоносная программа была подписана действующим расширенным сертификатом проверки (Extended Validation, EV). Наличие многочисленных отладочных строк и артефактов указывает на минимальный уровень обфускации кода.
LeakyInjector, являясь загрузчиком, активно ищет процесс explorer.exe в системе. Для внедрения следующего этапа он использует низкоуровневые API. Сам стилер LeakyStealer хранится внутри инжектора в зашифрованном виде и расшифровывается с помощью алгоритма ChaCha20, где ключ и одноразовый номер (nonce) жестко заданы в коде.
Идентификатор бота (Bot ID) вычисляется путем операции XOR между серийным номером тома "C:\" и константой 0xDEADBEEF. Если серийный номер недоступен, идентификатор инициализируется с помощью функции GetTickCount. Вредоносная программа также собирает информацию о системе: имя хоста, имя пользователя и домен, а также определяет, запущена ли она с привилегиями администратора, используя API GetTokenInformation.
Для связи с командным сервером (C2) бинарный файл подключается к домену everstead[.]group, используя жестко заданный пользовательский агент. Инициализируется поле "Traffic Tag" со значением "convert". В процессе работы наблюдаются подробные выводы, содержащие информацию, извлеченную на предыдущих этапах.
Обеспечивая постоянство, стилер копирует себя под именем "MicrosoftEdgeUpdateCore.exe" в каталог "%AppData%". Он создает запись с названием "EdgeUpdateCore" в разделе реестра Run, что гарантирует его автозагрузку при каждом старте системы.
Реализованный в LeakyStealer "полиморфный движок" модифицирует свою область памяти жестко заданными байтами во время выполнения. Поиск выполняется для 8-байтового маркера "DE AD BE EF CA FE BA BE". Процесс изменяет защиту памяти первых 16 байт (включая маркер) с помощью функции VirtualProtect, устанавливая атрибут PAGE_EXECUTE_READWRITE. Эти 16 байт заменяются на рандомизированную последовательность ассемблерных инструкций "нет операции", таких как 0x90 для NOP, "EB 00" для JMP 0x2 или "66 90" для XCHG AX, AX. Код, выполняющий исправление, довольно распространен и часто встречается в движках читов для видеоигр. Его цель в данном образце остается неясной, поскольку он не изменяет фактический код и ограничивает исправление байтами маркера.
Бинарный файл входит в цикл, в котором формирует регистрационный пакет для отправки на C2-сервер. LeakyStealer регулярно отправляет сигналы (beaconing) на сервер управления. Методы RtlGetVersion и GetVersionExA используются для получения информации о версии операционной системы Windows.
Регистрационный пакет, предназначенный для эксфильтрации, содержит "магическую" строку "LOAD", идентификатор бота, значение 0x01 (соответствующее пакету регистрации), флаг администратора, тег трафика, имя хоста, имя пользователя, домен Windows и версию ОС.
LeakyStealer ищет файлы истории из браузеров Google Chrome, Microsoft Edge, Brave, Opera и Vivaldi. Каждый найденный файл истории копируется во временную папку под именем "history_%d.db", где "%d" генерируется с помощью вызова функции GetTickCount. Вредоносная программа считывает эти файлы в память, а затем удаляет их с помощью API DeleteFileA. История браузера передается на C2-сервер с использованием URI "/api/beacon/history". Наблюдается, что стилер добавляет в запрос заголовок "X-Bot-Id".
Ответ сервера имеет следующую структуру: "LOAD<1-байтовый тип команды><4-байтовая длина команды><Команда>". Тип команды может быть 0 (отсутствие команды от сервера), 1 (две команды, реализованные стилером) и >=2 (неизвестный тип команды).
Первая команда используется для загрузки и выполнения файла с C2-сервера. Она имеет структуру "download URL Localfile". Процесс загружает файл с C2-сервера, создает и заполняет вновь созданный файл, и, наконец, выполняет его с помощью метода CreateProcessA.
Вторая команда может использоваться для выполнения команд Windows на зараженной машине с последующей отправкой вывода на C2-сервер. Вывод считывается с использованием анонимного канала.
Данные о сертификате указывают на регистранта из Гонконга. Аналогичные версии стилера были подписаны тем же сертификатом. На момент анализа сертификат все еще был действительным, однако к моменту публикации данного отчета он был отозван издателем. Отпечаток сертификата A8BF7554363D27DEB374C4E2658AC05C60E3BAA7 выявил семь связанных образцов, что демонстрирует повторное использование инфраструктуры подписи злоумышленником для нескольких полезных нагрузок.
Информация о подписанте: Hefei Nudan Jukuang Network Technology Co., Ltd. Срок действия: с 9 сентября 2025 года по 9 сентября 2026 года. Издатель: Sectigo Public Code Signing CA EV R36. Этот легитимный расширенный сертификат проверки мог быть потенциально получен мошенническим путем, или скомпрометированная бизнес-структура могла быть использована для подписи вредоносного программного обеспечения. Семь образцов демонстрируют согласованные операционные patterns: механизмы обеспечения постоянства присутствуют во всех вариантах, маскировка под законные компоненты обновления Microsoft Edge, недавняя активность с образцами в период с 1 по 9 октября 2025 года.
Поиск в Shodan по IP-адресу возвращает открытые порты 22, 80 и 443. С этим IP-адресом связаны два домена: everstead[.]group и ip-ptr[.]tech. Файл MSI с именем "dynatrc.php" размещает LeakyStealer, который взаимодействует с тем же C2-сервером. Установщик мог быть загружен с домена paycnex[.]com. На том же домене был идентифицирован скрипт PowerShell, связанный с NetSupportRAT.
Отчет Hybrid Analysis идентифицирует множество поведенческих моделей и индикаторов, которые классифицируют LeakyStealer как новый вредоносный похититель информации. Платформа предоставляет детальный контекст и информацию, которая может быть исследована далее в ходе динамического анализа вредоносного программного обеспечения.
Индикаторы компрометации
Domains
- everstead.group
Certificate thumbprint
- A8BF7554363D27DEB374C4E2658AC05C60E3BAA7
SHA256
- 88e0c1652eb91c517a5fec9d356c7f30c0136d544f5d55ac37f20c5612134efb
- 9b8bd9550e8fdb0ca1482f801121113b364e590349922a3f7936b2a7b6741e82