Злоумышленники распространяют EtherRAT под видом техподдержки
EtherRAT, имплант удалённого доступа на Node.js, распространяют в кампании с выдачей себя за службу технической поддержки. Он получает адрес C&C через Ethereum и выполняет JavaScript-код, возвращаемый сервером.
Доставка и запуск импланта
Жертвы получают фишинговое письмо с поддельным PDF-файлом анкеты. Затем с ними связываются через Microsoft Teams с внешнего аккаунта, владелец которого выдаёт себя за системного администратора. Получив удалённый контроль, злоумышленники устанавливают HopToDesk и AnyDesk для закрепления, скачивают MSI-установщик v7.msi и используют портал ServiceNow жертвы для подготовки дальнейшего доступа.
Установщик помещает в локальный каталог данных приложения обфусцированный пакетный скрипт, файл JavaScript, замаскированный под файл с расширением .dat, и зашифрованный файл конфигурации. Пакетный скрипт при необходимости загружает с сайта nodejs.org легитимный рантайм Node.js версии 18.20.5, извлекает его и многократно ищет файл node.exe.
Загрузчик на JavaScript расшифровывает следующий этап, копирует бинарный файл Node.js под случайным именем и запускает новый процесс Node.js с флагом -. Конечная полезная нагрузка EtherRAT передаётся через стандартный поток ввода. Она выполняется в памяти, не сохраняясь в виде файла JavaScript, и может автоматически перезапускаться после завершения работы.
Связь с C&C и обнаружение
Ядро EtherRAT импортирует только базовые модули Node.js и поддерживает связь с контроллером. Полученные от сервера задачи выполняются с доступом к require и process. Операторы могут динамически загружать child_process, обращаться к файлам, выполнять команды и создавать сетевые соединения. Задачи могут выполняться параллельно, а возможности для постэксплуатации доставляются во время выполнения, а не встроены в образец.
Для разрешения основного адреса C&C EtherRAT параллельно отправляет запросы eth_call к семи публичным RPC-эндпоинтам. Он опрашивает контракт 0x788a5336c0ef70be87619a3c13a43050c426f7ec с селектором 0x7d434425, соответствующим функции getString(address). Бот выбирает URL, возвращённый чаще всего, и обновляет поиск примерно каждые пять минут. Если разрешить адрес не удаётся, EtherRAT переключается на резервный адрес necropatia[.]com.
Кошелёк оператора имеет адрес 0x6e044e19000487c4a6e6af15b4132a5561b5ee1f. Согласно транзакциям в блокчейне, смена адреса C&C обходится примерно в 0,02 доллара. Авторы отчёта рекомендуют при обнаружении коррелировать следующие признаки:
- необычные пути выполнения Node.js;
- процессы Node.js, запущенные с флагом
-; - выполнение скриптов через стандартный поток ввода;
- вызовы RPC с адресом контракта и селектором;
- последующие соединения с разрешённым адресом C&C;
- HTTP-запросы с заголовком
X-Bot-Server.
В отчёте также описана связанная техника NullReceiver. Она кодирует IPv4-адрес в поле получателя транзакции Ethereum с нулевой стоимостью и устраняет фиксированные индикаторы контракта и calldata, используемые EtherRAT.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



