Введение
В конце апреля 2026 года к нам обратился клиент с запросом о помощи в устранении заражения — на компьютерах пользователей запускался майнер. Позже выяснилось, что вредоносное ПО распространялось через сайты для пиратского просмотра фильмов и сериалов. Сценарий заражения был построен вокруг фейкового обновления плагина для просмотра видео. При попытке открыть фильм в плеере пользователю показывалось сообщение, что версия плагина устарела и для продолжения просмотра необходимо установить обновление.
После перехода по ссылке на устройство загружался ZIP-архив со следующим содержимым:
Внутри архива находились легитимный исполняемый файл HLS Installer.874.exe и вредоносная DLL-библиотека. При запуске EXE-файла срабатывал механизм подгрузки DLL, и вредоносный модуль внедрялся в процесс легитимной программы, выполняя код в ее контексте. В библиотеке была реализована логика развертывания и закрепления майнера на устройстве.
На момент исследования риск заражения был связан с двумя сайтами с пиратским видео в зонах .ru и .top.
Связь с предыдущими кампаниями
Текущий случай не выглядит изолированным. Проанализировав способ заражения и логику DLL-библиотеки, мы пришли к выводу, что эта активность является продолжением кампании, связанной с пиратскими библиотеками, которую ранее описывали наши коллеги.
Механизм доставки вредоносного архива остался практически тем же. Прежде архив загружался по частям с домена file[.]ipfs[.]us[.]69[.]mu, однако на момент нашего исследования этот домен был недоступен. Вместо него злоумышленники стали использовать новый ресурс — urush1bar4[.]online.
Сохранилась и структура доставляемого архива: внутри находится легитимный исполняемый файл и вредоносная DLL-библиотека большого размера (пример на скриншоте ниже).
В ходе исследования мы также обнаружили статью из блога NTT Security, в которой описывался похожий способ доставки вредоносного архива. В том случае злоумышленники показывали пользователю фейковую страницу сбоя браузера (она приведена далее) и одновременно загружали на устройство архив с именем, начинающимся с chromium-patch-nightly.
Этот сценарий похож на текущую схему с фейковым обновлением плагина для просмотра видео. С учетом ранее описанной активности можно предположить, что данная кампания действует как минимум с 2022 года. При этом злоумышленники на протяжении всего периода обновляли как доставляемое вредоносное ПО, так и отдельные элементы механизма заражения.
Масштаб потенциального распространения
Как и в предыдущих эпизодах кампании, заражение происходит через сайты, популярные среди пользователей. На конец апреля 2026 года ресурсы, связанные с кампанией, демонстрировали, как правило, очень высокую месячную посещаемость. Так, аудитория самой скромной из бесплатных онлайн-библиотек составила 11 тысяч пользователей, а крупнейшей — 4,7 млн. Для пиратских сайтов с фильмами и сериалами этот показатель варьировался от 2,1 млн до 27,4 млн. Суммарное число визитов на ресурсы, где было обнаружено описанное в исследовании вредоносное ПО, в апреле достигло 40 млн.
Популярность этих ресурсов увеличивает потенциальный масштаб распространения майнера. При этом кампания не ограничивается одним типом площадок: вредоносный архив распространяется как через сайты онлайн-библиотек, так и через сайты для просмотра фильмов и сериалов. Это расширяет потенциальную аудиторию атаки и усложняет ее привязку к одному конкретному сценарию заражения.
Загружаемый архив
Актуальная версия загружаемого вредоносного ПО представляет собой ZIP-архив, содержащий легитимный .exe-файл и вредоносную DLL-библиотеку. При запуске исполняемого файла библиотека подгружается в его процесс, после чего начинается выполнение вредоносной логики.
Дальнейший технический анализ относится к актуальной версии этого вредоносного ПО. Впервые эта версия была зафиксирована в апреле 2025 года; на протяжении более года она распространяется без изменений.
Анализ DLL-библиотеки
Большая часть данных внутри DLL-библиотеки не несет смысловой нагрузки и была случайным образом сгенерирована исключительно для искусственного увеличения объема файла и затруднения анализа.
Среди большого количества мусорного кода внутри DLL-библиотеки существует одна функция, во время выполнения которой происходит переполнение стека:
Судя по коду, размер буфера stackBuf в стеке составляет всего 64 байта, а функция SmashStack перезаписывает этот буфер, не проверяя длину входных данных.
Через переполнение формируется ROP-цепочка, которая расшифровывает следующий этап. После расшифровки она передает управление на код, расположенный в измененном DOS-заголовке PE-файла:
При этом заголовок был преднамеренно изменен, чтобы тот стал валидным шелл-кодом:
|
1 2 3 4 5 6 7 8 9 |
pop r10 push r10 call $+5 pop rcx sub rcx, 9 mov rax, rcx add rax, 5C1000h call rax retn |
Этот шелл-код передает управление функции, которая находится по смещению 0x5C1000 от начала PE-файла. Внутри нее происходит рефлексивная загрузка этого же PE-файла в память.
Далее будем называть расшифрованный PE-файл основным модулем.
Основной модуль
Поведение модуля на разных этапах его работы:
Основной модуль является модифицированным форком проекта SilentCryptoMiner. Ранее мы уже рассматривали майнеры, использующие этот проект, в других материалах (Система управления событиями опасности, Майнер под прикрытием). Однако данный форк ранее нигде не описывался, поэтому в этой статье мы решили подробно разобрать его особенности.
При первом запуске основной модуль проверяет наличие разрешения на дальнейшее исполнение. Для этого с устройства жертвы собираются следующие данные:
- информация о процессоре;
- серийный номер диска C:/;
- был ли запущен процесс с повышенными привилегиями (или нет);
- время запуска процесса в формате Unix.
Эта информация передается в виде одного большого DNS-запроса с использованием техники DNS-туннелирования. Пример DNS-запроса изображен ниже:
Злоумышленники маскируют DNS-запрос под легитимный трафик с помощью низкоуровневого формирования пакетов и использования доменного имени, оканчивающегося на microsoft.com. Однако IP-адрес, на который фактически отправляется запрос, не имеет никакого отношения к компании Microsoft.
Выполнение основного модуля продолжается только при обнаружении в полученных данных следующей последовательности байтов: 01 02 03 04. После успешной проверки запускается основной модуль, а дальнейшая логика корректируется в зависимости от наличия повышенных привилегий у процесса на скомпрометированном узле.
Рассмотрим оба варианта.
1. Процесс запущен с повышенными привилегиями
В таком случае проводятся подготовительные действия перед самим запуском майнера.
- Настраиваются исключения защитника Windows на расширения типов файлов *.exe и *.dll, а также на папки
%USERPROFILE%,%PROGRAMDATA%и%WINDIR%. - Удаляется MSRT (Malicious Software Removal Tool, средство удаления вредоносных программ Microsoft) путем вызова
ZwSetInformationFileс типомFileDispositionInformation, в результате чего файл mrt.exe будет удален при закрытии. Чтобы избежать автоматической установки MSRT при следующем обновлении, в разделе реестраHKLM\Software\Policies\Microsoft\MRTсоздается параметрDontOfferThroughWUAUсо значением 1. - Отключаются автоматическая гибернация и переход в спящий режим при питании устройства как от сети, так и от батареи.
|
1 2 3 4 |
powercfg /x -hibernate-timeout-ac 0 powercfg /x -hibernate-timeout-dc 0 powercfg /x -standby-timeout-ac 0 powercfg /x -standby-timeout-dc 0 |
Делается это для того, чтобы увеличить возможное время работы майнера на устройстве.
Далее в целях закрепления создается копия в каталоге C:\ProgramData\Google\Chrome, после чего регистрируется служба GoogleUpdateTaskMachineQC и настраивается ее автоматический запуск при старте системы.
В конце производятся четыре рефлективные загрузки: компоненты внедряются непосредственно в память целевых процессов без записи на диск, минуя стандартные механизмы загрузки Windows. Каждый имплант внедряется в свой процесс-носитель:
- RAT agent → в conhost.exe
- Watchdog → в explorer.exe
- CPU-майнер → в explorer.exe
- GPU-майнер → в explorer.exe, но только при наличии дискретной видеокарты в системе (проверяется путем перечисления всех видеоадаптеров в системе)
2. Процесс запущен с обычными привилегиями
В таком случае майнер начинает регулярно инициализировать запросы контроля учетных записей (UAC) — до тех пор, пока не будет запущен с повышенными правами. Механизм работы выглядит следующим образом:
- При первоначальном запуске производится копирование в директорию
%USERPROFILE%\AppData\Roaming\Sandboxieи повторный запуск из нее. Одновременно с этим происходит попытка запуска с повышенными правами через UAC. - Если запуск произошел из папки
Sandboxie:- настраивается автозагрузка копии майнера из этой папки путем добавления записи в
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run; - каждые три минуты происходит попытка запуска с повышенными правами через UAC, пока сервис
GoogleUpdateTaskMachineQCне будет установлен корректно.
- настраивается автозагрузка копии майнера из этой папки путем добавления записи в
Корректность установки определяется совокупностью следующих условий:
- Сервис
GoogleUpdateTaskMachineQCсуществует в системе. - Значение
Startдля этого сервиса равно 2 (автозагрузка). - Значение
ImagePathуказывает на файл в папкеC:\ProgramData\Google\Chrome. - Этот файл существует на диске.
Watchdog
Смысл работы этого компонента заключается в обеспечении бесперебойной работы майнера. В самом начале своей работы он копирует все файлы из папки C:\ProgramData\Google\Chrome и шифрует содержимое каждого файла циклическим алгоритмом XOR с ключом AFeIboiOmImJS2ypJU0pTpAO61SELkUc. После этого зашифрованное содержимое записывается в память процесса, и для каждого файла в памяти создается следующая структура:
|
1 2 3 4 5 |
class FileContainer{ wchar_t* fullPath; // полный путь к файлу size_t* ptrSize; // указатель на размер файла uint8_t* xorEncryptedFile; // указатель на буфер зашифрованного содержимого файла }; |
Как только содержимое всех файлов будет сохранено в памяти, Watchdog входит в бесконечный цикл, в котором каждые пять секунд, как и в основном модуле, проверяется корректность установленного сервиса GoogleUpdateTaskMachineQC. В случае, если сервис будет установлен некорректно, майнер перезапишет свои файлы по пути C:\ProgramData\Google\Chrome тем содержимым, которое было получено в самом начале работы.
Для корректного избавления от майнера необходимо предварительно завершить работу этого модуля, который выполняется внутри процесса explorer.exe.
RAT agent
Этот модуль дает возможность удаленного управления с помощью четырех команд. Их описание представлено в конце главы. Адреса управления, с которых происходит получение команд, имеют следующий вид:
http://{domain}.space/index.php?authorization=1http://{domain}.site/index.php? запасная версия
При этом домен {domain} вычисляется на основе текущей даты. Сначала берется текущий год, затем к нему добавляется идентификатор зоны, к которой относится текущий месяц. Все 12 месяцев при этом разбиты на четыре зоны. После этого к полученной строке добавляется слово microsoft. Полученная таким образом строка используется в качестве исходных данных для последующего двойного хэширования с помощью алгоритма MurmurHash64. Результатом хэширования является домен, с которым будет коммуницировать имплант.
На момент написания этой статьи были зарегистрированы следующие домены:
- 2025, апрель-июль → 5d14vnfb[.]space
- 2025, август-ноябрь → r7mvjl67[.]space
- 2025, декабрь → zgj1tam9[.]space
- 2026, январь-март → jeaw520i[.]space
- 2026, апрель-июль → qdmagva5[.]space
Пример запроса к серверу управления можно увидеть ниже:
Как видно, внутри запроса содержится зашифрованное тело, представляющее собой данные, зашифрованные алгоритмом AES-CBC с ключом 0123456789abcdef0123456789abcdef и вектором инициализации 000102030405060708090a0b0c0d0e0f. Внутри данных находится список установленных программ в системе вместе с информацией о процессоре и серийном номере диска С:
Вероятно, эта информация используется серверной частью для проверки на виртуальное или же отладочное окружение.
Первые 16 байт тела ответа сервера представляют из себя вектор инициализации для алгоритма AES-CBC с ключом 0123456789abcdef0123456789abcdef, остальные байты — данные, зашифрованные этим алгоритмом. Расшифрованные данные содержат в себе вредоносную нагрузку payload, а также ее подпись sign с помощью алгоритма RSA-SHA256:
|
1 2 3 4 5 6 |
struct PLAINTEXT{ uint32_t len_payload; uint8_t payload[len_payload]; uint32_t len_sign; uint8_t sign[len_signature]; } |
Подлинность сообщения проверяется по подписи sign c использованием публичного ключа сервера, встроенного в исполняемый файл.
Внутри вредоносной нагрузки находится 4-байтовый код, который определяет дальнейшее поведение программы и дополнительные данные, смысл которых зависит от кода.
В таблице ниже — четыре команды для удаленного управления модулем RAT agent.
| Код | Назначение |
| 1 | Выполнение произвольной команды |
| 2 | Рефлективное выполнение переданного PE-файла в процессе explorer.exe |
| 3 | Выполнение переданного шелл-кода |
| 4 | Выход |
Майнеры
В зависимости от наличия в системе дискретного графического адаптера запускается либо CPU-майнер, либо связка CPU- и GPU-майнеров. CPU-майнер основан на XMRig, а GPU-майнер поддерживает несколько алгоритмов.
Оба майнера пытаются в самом начале своей работы получить конфигурацию для запуска с удаленного сервера. Возможные адреса приведены ниже:
- «{domain}.strangled.net»
- «{domain}.ignorelist.com»
- «{domain}.ftp.sh»
- «{domain}.zanity.net»
Как и в компоненте RAT agent, адрес сервера формируется на основе текущей даты — в данном случае адрес сервера будет меняться каждую неделю. Для периода с 2020 по 2030 год получается довольно много доменов, однако все они располагаются на одном IP-адресе 107[.]172[.]212[.]235. Из ранее перечисленных четырех возможных доменов будет использоваться первый доступный.
Алгоритм получения конфигурации с сервера абсолютно такой же, как и в случае RAT agent, за исключением того, что в данном случае в качестве ключа для алгоритма AES-CBC используется th1s1sth3key0f4n1ntere5t1ngw0rld, конфигурация при этом будет лежать внутри payload. Полученная конфигурация шифруется алгоритмом AES-CBC с ключом UXUUXUUXUUCommandULineUUXUUXUUXU и вектором инициализации UUCommandULineUU, после чего зашифрованные данные преобразуются в base64-строку, которая передается как параметр для запуска майнера, который будет запущен внутри процесса explorer.exe через механизм process hollowing.
Заключение
В ходе исследования мы рассмотрели продолжающуюся кампанию по распространению майнеров через популярные сайты с пиратским контентом. Злоумышленники используют ресурсы разной тематики: от онлайн-библиотек до сайтов для просмотра фильмов и сериалов. Затруднительно предсказать, через какие каналы будет распространяться вредоносный архив в дальнейшем. Однако текущий кейс показывает, что использование пиратских ресурсов остается значимым фактором риска для пользователей.
Наши продукты детектируют данное вредоносное ПО со следующими Generic-вердиктами:
- HEUR:Trojan.Win64.DllHijack.gen
- MEM:Trojan.Win32.SEPEH.gen
Индикаторы компрометации
Адрес загрузки вредоносного архива
Вредоносные DLL-библиотеки
6A0FE6065D76715FEEBC1526D456DB73
7F624407AE489324E96A708A09C17E6F
02A43B3423367B9DDDC24CC7DFC070DF
RAT C&C
Адрес получения конфигурации
Адреса панели управления UnamWebPanel














Пираты под прицелом: как одна группировка годами заражает любителей книг, фильмов и сериалов