В начале мая 2026 года в сфере кибербезопасности зафиксирована новая волна атак, связанная с известной фишинговой кампанией ClickFix. Злоумышленники модернизировали цепочку заражения, добавив в неё использование устаревшего протокола Finger и переносных сред выполнения Python. Конечная цель - установка многоступенчатого загрузчика CastleLoader (фреймворк для доставки вредоносного кода по модели MaaS) и трояна удалённого доступа, написанного на Python. Атака представляет серьёзную угрозу для пользователей, которые активно ищут работу через профессиональные сети.
Описание
Всё начинается с фишинговых страниц, которые подделывают популярные платформы для трудоустройства LinkedIn и Indeed. Атакующие регистрируют домены с опечатками в названиях (так называемый тайпсквоттинг) и продвигают их через платную рекламу Google. В ссылках присутствуют стандартные идентификаторы рекламных кампаний - gclid, gbraid, gad_campaignid. Анализ показывает, что для запуска цепочки заражения на стороне сервера достаточно лишь одного дополнительного параметра &verification=robot. Когда жертва переходит по такой ссылке, ей показывается поддельный элемент проверки Cloudflare Turnstile, имитирующий капчу.
При взаимодействии с фальшивой капчей в буфер обмена пользователя копируется команда, которая запускается через диалоговое окно Windows или комбинацию клавиш. Команда содержит вызов утилиты finger.exe через cmd.exe с обфускацией символов. Протокол Finger (работает через порт 79) практически не используется в современных корпоративных сетях, что делает его идеальным каналом для скрытой передачи следующего этапа полезной нагрузки. Сам вызов выглядит как последовательность команд, которая считывает данные с удалённого сервера и выполняет их.
После первого запуска сценарий немедленно завершает процесс explorer.exe и перезапускает его, скрывая панель задач и иконки рабочего стола - так атакующие дезориентируют жертву и затрудняют вмешательство. Затем вредоносная программа копирует легитимный системный файл curl.exe в папку %LocalAppData% с новым случайным именем. Этот переименованный curl используется для загрузки дальнейших компонентов. В частности, с официальных репозиториев GitHub и python.org скачивается архив с переносным интерпретатором Python - либо CPython версии 3.15.0a1, либо IronPython 3.4.2. Как сообщается в отчёте аналитиков LevelBlue, архив извлекается встроенной утилитой tar.exe, а сам интерпретатор переименовывается в случайное 18-значное имя, после чего выполняется inline-код Python.
Загруженный Python-скрипт декодирует сжатый в формате base64 и zlib шелл-код, который затем запускает в памяти новый процесс с флагом CREATE_NO_WINDOW, чтобы оставаться незаметным. Второй этап Python-загрузчика использует кириллическую подстановку для обфускации: перед раскодированием base64 некоторые латинские символы заменяются на визуально похожие кириллические. Это усложняет сигнатурный анализ и автоматическое распознавание. После расшифровки выполняется классический бестелесный шелл-код, который выделяет память через вызовы Windows API (VirtualAlloc, VirtualProtect) и копирует туда зашифрованные данные.
Следующая ступень - загрузчик CastleLoader. Этот фреймворк распространяется по модели MaaS и позволяет заказчикам гибко настраивать доставляемую нагрузку. CastleLoader получает RC4-зашифрованный шелл-код, где первые 64 байта служат ключом. После расшифровки загрузчик считывает конфигурацию, содержащую адрес командного центра (C2), идентификатор кампании, имя мьютекса и ключи для шифрования ChaCha20. В ходе инициализации загрузчик может запросить повышение привилегий до администратора, проверить наличие гипервизора (VirtualBox, VMware), собрать список установленных антивирусов через WMI, а также отобразить фальшивое окно ошибки о пропущенной библиотеке VCRUNTIME140.dll, чтобы усыпить бдительность пользователя.
Взаимодействие с C2-инфраструктурой осуществляется через зашифрованные контейнеры. Сначала загрузчик запрашивает настройки, затем - список задач. В ответ сервер присылает сериализованные объекты, содержащие указания: какие файлы скачать, как их запустить (executable, DLL, MSI) и куда сохранить. После выполнения задач отправляется отчёт с идентификатором машины, статусом и кодом ошибки. Загрузчик использует механизм однократного выполнения: при повторном запуске проверяет маркерный файл в %ProgramData%.
Финальной стадией является доставка Python-трояна удалённого доступа (RAT). Этот троян написан на Python и скомпилирован в байт-код .pyc. Для восстановления исходного кода потребовался инструмент pycdc, который показал, что разработка велась на машине с путём C:\Bot\projects\LOADER\PS_PythonLOADER\Interpretator. Троян использует WebSocket-соединение, поверх HTTPS, для связи с C2-сервером (в ходе кампании зафиксирован домен kevinnotanother.com). Все данные шифруются простым XOR с байтом 0x4F, при этом проверка сертификатов TLS отключена, что позволяет злоумышленникам использовать самоподписанные сертификаты.
Троян собирает обширную информацию о жертве: уровень привилегий, версию Windows, имя компьютера, имя пользователя, идентификатор оборудования через ключ реестра MachineGuid. Затем он регистрируется на C2 и переходит в режим ожидания команд. Оператор может удалённо открыть интерактивную оболочку (cmd.exe или PowerShell), выполнить произвольный код, загрузить и запустить файл на диске, а также выполнить полезную нагрузку полностью в памяти, без записи на диск. Для обеспечения постоянного присутствия троян создаёт мьютекс MissedCallsTrapPhone и запускает механизм "сторожевого пса": если процесс был завершён, он автоматически перезапускается.
Эта кампания демонстрирует эволюцию ClickFix, которая уже давно стала классикой социальной инженерии. Использование протокола Finger, переносных сред Python и LOLBin (легитимных системных утилит, применяемых во вредоносных целях) позволяет атаке оставаться низкоуровневой и сложной для обнаружения. Бестелесное выполнение на всех этапах минимизирует следы на диске. Защита от подобных угроз требует комплексного подхода: обучение персонала распознавать поддельные капчи и фишинговые ссылки, блокировка исходящего трафика на порт 79, ограничение запуска Python в пользовательских каталогах, а также мониторинг подозрительного поведения системных утилит.
Индикаторы компрометации
Domains
- crewlcrewlcrewl.com
- crewlworkinew.com
- golinked.net
- indeedhiring.com
- indeed-jobs.net
- kevinnotanother.com
- linkedall.org
- linked-hr.com
- linked-on.com
- linked-people.com
- linkedplus.org
- linkedwith.org
- novayastaruxa.com
- staruxaproruha.com
- teamsvoicehub.com
- uslinked.org
URLs
- http://linked-hr.com/leyts.php
- http://teamsvoicehub.com/leyts.php
- https://ai-like.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://candipoker.net/ebd417db-979c-51f8-aedf-88a2bf8aa6c3
- https://catalyst-ltd.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://dapala.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://dmtn-tv.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://domawe.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://idrci.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://indeedhiring.com/leyts.php
- https://indeed-jobs.net/leyts.php
- https://linkedall.org/infos.php
- https://linked-on.com/leyts.php
- https://linked-people.com/leyts.php
- https://linkedplus.org/leyts.php
- https://linkedwith.org/leyts.php
- https://mtg-life.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://sedaliarealty.net/ebd417db-979c-51f8-aedf-88a2bf8aa6c3
- https://sinjim.net/95126aeb-4120-56b1-8c9e-63fdf0c0b6f9
- https://tronscaner.net/infos.php
- https://uslinked.org/infos.php
SHA256
- 08a474368a2f94f347ad9e1a0a08d4258fcf49c6b9373214f7901bb770bacca4
- 0e346fb46176ffce4c7dbe40a8682bc1f4a2fc70b7389be427568d97a47bd149
- 7c54bcf3aea8348e8902cac80eb0df31b43a71601a62e2514087fef40a416bfd
- c024a3d852b73fef5bfca7ec5c80df3d59ff9ec858e0adad80c588fe22c39dfc
- cd4a51037bf58733c0cb24b273951dd3fcea45a2aaeb8b30a3c625e183c4c0c7
- d04ae4d214531d70c634d29763a9c0b84d601cf94aaca4720363f7512995393c
- d3e936fa36289fd1210047d8f25257bab0608825ed92908dc98c00e33bdb3db2
- d56b810dfacaa1630bf562ccdefd46835349710d9516334e1a182619335ddea7
- e5e43b0830369c39fab45363486da4d21a98c5097ea262c9816997f11c73c1c4
- eca03a7a2af5d410d65efb095cca22ccd94cf17a04caf41d808ec5bcecfde0b5
- ee2d34ac98eaf1451d19fdc99f0bb52db1db60f71933a91f5655af0703ff2464