Исследователи из Jamf Threat Labs раскрыли новые детали масштабной кампании GhostClaw, которая эволюционирует от использования исключительно пакетов npm к более изощрённым методам распространения через GitHub и автоматизированные рабочие процессы с искусственным интеллектом. Целью атаки остаются компьютеры под управлением macOS, с которых злоумышленники похищают учётные данные пользователей. Этот сдвиг в тактике значительно расширяет потенциальную аудиторию жертв, превращая в мишень не только разработчиков, но и любого пользователя или автоматизированный процесс, следующий инструкциям из интернета.
Описание
Ранние сообщения о кампании, получившей названия GhostClaw или GhostLoader, фокусировались на вредоносных пакетах в реестре npm. Однако, как выяснили эксперты Jamf, параллельно действовал и другой канал доставки, активно использующий платформу GitHub. Злоумышленники создают репозитории, маскирующиеся под легитимные инструменты: торговых ботов, SDK (комплекты для разработки программного обеспечения) и утилиты для программистов. Эти проекты тщательно оформлены, чтобы с первого взгляда выглядеть правдоподобно, а некоторые даже набирают сотни звёзд (stars), что дополнительно укрепляет доверие к ним в сообществе. Для большей убедительности репозитории могут изначально содержать безвредный или частично рабочий код, который остаётся неизменным в течение некоторого времени, прежде чем в него будут внедрены вредоносные компоненты. Такая подготовительная стадия помогает наработать репутацию и привлечь внимание до момента реальной атаки.
Механизм заражения варьируется в зависимости от целевой аудитории. В классическом сценарии злоумышленники полагаются на прямое взаимодействие с пользователем. В файле README репозитория размещаются пошаговые инструкции по установке, которые побуждают скопировать и выполнить в терминале определённую команду. Обычно она использует утилиту "curl" для загрузки и немедленного запуска удалённого скрипта. Эта техника эксплуатирует доверие пользователя, представляя опасное действие как часть стандартного процесса установки, и обходит традиционные средства защиты, связанные с менеджерами пакетов.
Более сложный и современный вектор атаки нацелен на автоматизированные рабочие процессы с использованием ИИ-агентов для разработки. В этом случае репозитории содержат специальные файлы SKILL.md. Эти файлы выглядят совершенно безобидно: они описывают метаданные "скилла" - команды, зависимости и точку входа для выполнения. Вредоносная нагрузка скрыта не в манифесте, а в процессе установки. Когда разработчик или ИИ-агент (например, в рамках таких фреймворков, как OpenClaw) следует стандартным шагам настройки из репозитория - запускает "install.sh" или устанавливает зависимости, - он невольно запускает цепочку заражения. Таким образом, атакующие используют в своих интересах стандартные процедуры установки и неявное доверие к инструментам разработки.
Независимо от точки входа, цепочка выполнения во всех наблюдаемых вариантах остаётся единой и состоит из нескольких этапов. Всё начинается с выполнения скрипта "install.sh", который маскируется под легитимный установщик: определяет архитектуру системы и версию macOS, проверяет наличие Node.js и при необходимости устанавливает его в пользовательскую директорию, не требуя прав администратора. Однако уже на этом этапе заметны тревожные признаки, например, использование флага "-k" в команде "curl", который отключает проверку TLS-сертификатов, что нетипично для легальных инсталляторов.
Далее управление передаётся обфусцированному скрипту на JavaScript "setup.js". Его основная задача - обман пользователя и кража пароля. Скрипт очищает терминал, показывает фейковые индикаторы прогресса, имитируя установку SDK, а затем выводит запрос на ввод пароля. Хотя подсказка выглядит как стандартная системная, она генерируется самим вредоносным кодом. Для проверки введённых учётных данных используется легальная системная утилита "dscl". Кроме того, с помощью AppleScript могут отображаться нативные диалоговые окна, максимально похожие на запросы системы безопасности macOS, которые просят пользователя предоставить доступ к "безопасному хранилищу кошелька и учётных данных" или включить полный доступ к диску (Full Disk Access).
После успешного сбора данных скрипт связывается с командным сервером (C2, от англ. command-and-control) по домену "trackpipe[.]dev", чтобы загрузить зашифрованную вторичную полезную нагрузку. Этот этап соответствует ранее задокументированному GhostLoader. Полученный модуль записывается во временный файл, запускается как отдельный процесс, после чего временный файл удаляется. Для обеспечения закрепления в системе (persistence) вредоносное ПО копирует себя в пользовательские директории, маскируясь под легитимную активность npm, например, по пути "~/.cache/.npm_telemetry/monitor.js".
Финализирующий этап выполняется скриптом "postinstall.js", который занимается анти-криминалистикой и сокрытием следов. В одних вариантах он просто очищает терминал, стирая видимые свидетельства предыдущих этапов, а затем пытается установить через "npm" старый публичный пакет "antigravity" с несуществующим тегом "@install". Эта ошибка выводится пользователю без контекста, выглядя как изолированная проблема с npm. В других случаях скрипт, напротив, выводит в терминал сообщение об успешной установке, завершая спектакль и укрепляя у жертвы ложное ощущение, что всё прошло штатно.
Анализ инфраструктуры показывает, что кампания скоординирована: все репозитории используют один и тот же C2-домен, но с уникальными идентификаторами в пути запроса, что позволяет атакующим сегментировать трафик от разных приманок. Наблюдаемая активность является частью более широкой тревожной тенденции, когда атакующие переносят фокус с прямого взлома на компрометацию цепочек поставок программного обеспечения. Подобные методы, использующие доверенные платформы и привычные рабочие процессы, позволяют с минимальными усилиями внедрять вредоносный код сразу в большое количество систем, что демонстрируют и другие недавние кампании вроде Glassworm. Этот инцидент служит серьёзным напоминанием для разработчиков и компаний о необходимости повышенной осторожности при выполнении команд установки из непроверенных онлайн-источников, включая репозитории и инструкции для ИИ-агентов. Тщательная проверка происхождения и поведения кода перед запуском остаётся ключевой практикой кибергигиены для снижения подобных рисков.
Индикаторы компрометации
SHA256
- 189b8419863830f2732324a0e02e71721ec550ffa606f9dc719f935db5d25821
- 3ab0bcc8ff821bd6ba0e5fdbb992836922a67524f8284d69324f61e651981040
- 3c2fa99741e71436eb7f52fcf382bb92425104bd63f82d0bd0111caf2c8b91b4
- 43dc96bde2d5214ea3e93c1d9f62da54c260587e0b5bd366bb55ab615262384e
- 593aa8051b146e7b1effd90708210ccac3527076e2b5b5068216553a5557396d
- 72bc4f82786e23f067d8731dac2b51c033f49ceceab0a64065a160cdff54f488
- 8da42291c7c8ad4d7b174367c7b59e6cf57804f659490947957212d16dfcfe16
- 946206d42497ea54a4df3f3fed262a99632672e99b02abcc7a9aff0f677efba8
- a80f2f5ba53bd19c35af5eed763fbaf9f00487bb4df0997651af861ef157ccea
- ad23c83bbcd2e2ed7ba3338b723f3a36ef7a6866672395a04fdb8fbd1bf68a90
- b04cdafdaa9220ab819f33790f014fd84a10f3908e3d7e97a652fa0d76f40c2f
- baaa13491ddaba1fc8eb5a3e7848fb1e33f6f1f5b19b5efb0d433ab09e38a1f0
- df8bc4bf6f312a914fa82e56dab59ceb0b2066830696ea7457067f7d446518eb
- e3ee5909f908b489a93702709fae038f0b3c864b155013a9ad7d590f1eec7fe4
- ec8d3b922db1cf3a82141a53a472538d10563860dfb93259e99d0aec3661734c
- ee968f51f1b2c0d9fcdacfd6aa9ef24cc6212118464093e67f1fdaa1144e15b1