Исследователи из Huntress зафиксировали инцидент, в котором классическая социальная инженерия, известная как ClickFix, привела к полномасштабному проникновению в корпоративную сеть. Атака началась с одного немониторируемого рабочего места, а затем распространилась на одиннадцать хостов с использованием кастомного загрузчика Potemkin, модульной платформы RMMProject и бэкдора EtherRAT, который получает адрес управляющего сервера из блокчейна Ethereum. Этот случай наглядно демонстрирует, как один не охваченный мониторингом компьютер может стать отправной точкой для компрометации всей инфраструктуры.
Описание
Всё началось с того, что пользователь, посетив скомпрометированный веб-сайт, выполнил команду, скопированную в диалоговое окно "Выполнить" Windows. Команда использовала легитимный системный инструмент pcalua.exe для прокси-запуска mshta.exe, который загрузил и выполнил удалённый HTA-скрипт. Этот скрипт, в свою очередь, молча загрузил и установил MSI-пакет с загрузчиком Potemkin. Пакет был создан с помощью WiX Toolset и разместил исполняемый файл в каталоге пользователя, добавив его в автозагрузку через ключ реестра Run.
Загрузчик Potemkin представляет собой 64-битный модульный инструмент, не содержащий жёстко заданного адреса командного центра. Вместо этого он использует алгоритм генерации доменных имён (DGA) для поиска активного управляющего сервера. Алгоритм детерминирован: на основе фиксированного начального числа 151678 он последовательно генерирует десять тысяч кандидатов в домены, комбинируя слова из встроенного словаря. Каждый кандидат проверяется посредством HTTP-запроса к определённому пути, и при получении ожидаемого ответа загрузчик прекращает поиск. Такой подход позволяет оператору менять домен инфраструктуры, регистрируя один из заранее вычисленных вариантов, а защитникам - предвычислять все возможные домены и вносить их в блок-листы.
После установления связи Potemkin получает от сервера задание в виде полезной нагрузки - динамической библиотеки RMMProject. Эта библиотека размером 4,4 мегабайта содержит встроенный интерпретатор LuaJIT и предоставляет 15 различных типов задач. Среди наиболее заметных возможностей - кража учётных данных и файлов cookie из браузеров Chrome, Firefox и Edge. Для обхода новой защиты App-Bound Encryption, введённой в Chrome 127, RMMProject запускает вложенную вспомогательную библиотеку внутри процесса браузера, используя классическую технику внедрения DLL. Эта библиотека, будучи исполненной в контексте браузера, получает доступ к идентичности приложения Chrome и расшифровывает ключи шифрования.
Кроме того, RMMProject содержит модуль удалённого рабочего стола, названный RTSC. При его активации на системе создаётся скрытый рабочий стол Windows, на котором запускается браузер. Оператор через два отдельных сокетных соединения получает видеопоток этого скрытого рабочего стола и может передавать на него движения мыши, нажатия клавиш и клики, не оставляя видимых следов для пользователя. Также библиотека умеет выполнять инжекцию в процессы, загружать дополнительные модули прямо в память и делать скриншоты.
После того как RMMProject завершил свою работу, оператор, сидя за клавиатурой, начал развёртывание второго этапа атаки - бэкдора EtherRAT. Эта программа на Node.js загружает зашифрованный скрипт из файла XML и расшифровывает его с помощью пользовательского шифра, использующего вычитание, XOR и подстановочную таблицу. Полученный код запускает бэкдор, который сохраняет конфигурацию в зашифрованном JSON-файле в специальном каталоге, имя которого генерируется на основе хеша имени компьютера и имени пользователя.
EtherRAT не использует жёстко заданный адрес управляющего сервера. Вместо этого он обращается к смарт-контракту в блокчейне Ethereum через открытые RPC-провайдеры (Tenderly, Flashbots и другие) и получает оттуда URL командного центра. Такой метод, известный как EtherHiding, позволяет оператору менять адрес сервера, отправив одну дешёвую транзакцию в блокчейн. Все инфицированные устройства автоматически получают новый адрес при следующем опросе. В ходе расследования контракт возвращал домен "hxxps://resumeacceptable[.]com".
Для обеспечения постоянного доступа оператор развернул туннель Cloudflare на первоначально заражённой машине. Утилита cloudflared была переименована в "svchost.exe" для маскировки под легитимный процесс Windows и запущена с ключом "tunnel --url http://127.0.0.1:31024". Таким образом, внутренний сервис стал доступен из интернета через публичный хост Cloudflare без открытия портов на файрволе.
В последующие несколько часов оператор вручную перемещался по сети. Были предприняты попытки отключить Windows Defender: сначала через реестр, затем через остановку служб и, наконец, через полный набор политик, включая отключение защиты в реальном времени и мониторинга поведения. Защитник сопротивлялся и блокировал попытки загрузить инструмент Chisel, но после того, как оператор добавил каталог в исключения и полностью остановил службу WinDefend, Chisel был успешно развёрнут для создания прокси-канала.
Латеральное перемещение выполнялось с помощью WMIExec и SMBExec - утилит из набора Impacket. Оператор использовал скомпрометированные учётные данные администратора для выполнения команд на удалённых хостах, причём команды были обёрнуты в конструкцию "запись во временный bat-файл → выполнение → немедленное удаление". Каждая такая команда разворачивала MSI-пакет, который устанавливал EtherRAT в служебный профиль системы. Таким способом бэкдор попал на все одиннадцать машин, включая контроллер домена.
Аналитики Huntress отметили, что вся активность происходила до того, как на атакованных устройствах был установлен их агент мониторинга. Когда агент всё же появился, специалисты SOC смогли блокировать дальнейшее распространение и начать восстановление, однако ущерб уже был нанесён. Продолжительность непросматриваемого окна от первоначального заражения до установки агента составила несколько часов - этого времени злоумышленнику хватило, чтобы закрепиться на одиннадцати хостах с использованием разных механизмов персистентности (ключи Run, запланированные задачи, туннели).
Данный анализ подтверждает, что ключевым фактором, определившим масштаб инцидента, стало отсутствие мониторинга на первой заражённой рабочей станции. Если бы на этом устройстве был установлен агент, атака была бы обнаружена на стадии выполнения скрипта ClickFix, и все последующие этапы - установка загрузчика, развёртывание бэкдора, создание туннеля и латеральное перемещение - оказались бы пресечены до того, как злоумышленник получил доступ к сети. Очистка одного хоста значительно проще, чем очистка одиннадцати машин с разными именами папок, именами файлов и значениями реестра.
Для защиты от подобных атак эксперты рекомендуют прежде всего обеспечить мониторинг всех конечных точек, включая рабочие станции и серверы, имеющие выход в сеть. Отключение диалогового окна "Выполнить" (Win+R) через групповые политики полностью исключает выполнение команд ClickFix, поскольку атака зависит от возможности вставки команды. Также следует контролировать запуски cloudflared и любых его переименованных копий, а также настроить защиту от несанкционированного отключения антивируса.
Индикаторы компрометации
IPv4
- 213.165.41.26
- 77.110.122.58
IPv4 Port Combinations
- 77.110.122.58:43301
Domains
- anus-staylard.xyz
- cl.distritovagas.com
- resumeacceptable.com
- sonra.eutialyson.com
SHA256
- 2abe5dd3a057fdef935722e50e9251c272d29fd26113187b853a1f9a9cb89d9b
- 2ada24dd6e517f37942b749c2bd57ddd97445e9853002cee70a0bc30d0b0ce3a
- 3b7ae925e2d64522b4f69b56285b05aeca8c5aab5ab46a9c02c4fafb69d881ce
- 79f7b67ce8b39070f3e1c2b90fce0ce84134782a7dedcccc1edac197ee9e089b
- cd4e5e2c65b1660470d3446539ee68adf5faeece3eaeb46583623be9911ee145
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule RMMProject { meta: author = "RussianPanda" description = "Detects RMMProject RAT" date = "6/4/2026" hash = "3b7ae925e2d64522b4f69b56285b0 5aeca8c5aab5ab46a9c02c4fafb69d881ce " strings: $s1 = "[RTSC] OpenInputSocket: sending session_id=" ascii $s2 = "kCookies: total_cookies=" ascii $s3 = "GetChromiumKey" ascii condition: uint16(0) == 0x5A4D and all of ($s*) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule PotemkinLoader { meta: author = "RussianPanda" description = "Detects Potemkin Loader" date = "6/4/2026" hash = "2abe5dd3a057fdef935722e50e 9251c272d29fd26113187b853a1f9a9cb89d9b" strings: $s1 = "[Agent] DLL returned (updatedll), reloading..." ascii $s2 = "dll_debug.log" ascii $s3 = "[Agent] LoadAndRunDLL=" ascii condition: uint16(0) == 0x5A4D and all of ($s*) } |