PamStealer для macOS получил серверную расшифровку и Git-закрепление

Jamf Threat Labs обнаружила новую версию macOS-вредоноса PamStealer: её второй этап расшифровывается только при участии сервера управления, а закрепление реализовано сразу несколькими способами, включая LaunchAgent, настройки zsh и Git hooks. Кампания использует поддельный криптокошелёк Wavel, образ Wavel.dmg и загрузчик на JavaScript for Automation.
Расшифровка зависит от сервера
Ранние варианты PamStealer, замеченные в июле и августе 2026 года, маскировались под Maccy, Scoppr и Nancy Clipboard. В них материал для ключа находился непосредственно в исходном коде JXA. Теперь жертву ведут на сайт wavel[.]app, рекламирующий несуществующий сервис Wavel.
Кнопка загрузки для macOS выдаёт disk image с компилированным AppleScript. При открытии файла запускается штатный Script Editor с инструкциями, которые приводят к выполнению JXA-загрузчика. Этот загрузчик декодирует строку Base64 и передаёт результат в /bin/zsh -s; сам JXA-процесс завершается, а zsh продолжает работу в фоне.
Скрипт zsh скачивает с домена wavel.apple03cloudstore[.]com утилиту pkgunpack, выполняет обмен ключами X25519, расшифровывает и размещает пакет полезной нагрузки. Закрытый ключ остаётся на стороне сервера, поэтому ключ шифрования данных нельзя получить без его участия. При каждом выполнении генерируется новая эфемерная пара ключей, и перехваченный ключ нельзя повторно использовать для извлечения содержимого пакета.
Четыре механизма закрепления
PamStealer отключает уведомления macOS о добавлении нового фонового элемента входа и устанавливает несколько резервных механизмов закрепления. Среди них LaunchAgent, скрипт восстановления, возвращающий пакет и LaunchAgent при их отсутствии, а также shell hook в ~/.zshrc, запускающий восстановление в каждой новой интерактивной сессии zsh.
Отдельно скрипт копируется в каталоги post-checkout и pre-commit внутри ~/Library/Application Support/System/.githooks/. Затем настройка git config --global core.hooksPath указывает Git на этот путь. В результате команда git checkout или git commit в любом репозитории на скомпрометированной системе незаметно запускает скрипт восстановления. Контекст macOS-атак с использованием штатных механизмов дополняет macOS-атаки через штатные механизмы, где такие техники рассматриваются среди других угроз недели.
Что собирает стилер
Финальный компонент написан на Swift, тогда как предшественник использовал Rust. Он выводит поддельное окно сбоя для захвата системного пароля и проверяет введённые данные через PAM. Также вредонос извлекает элементы Keychain, сведения о системе, профиль пользователя, историю оболочек и конфигурацию Git, список процессов и установленных приложений.
В список браузеров для кражи учётных данных входят Google Chrome, Microsoft Edge, Mozilla Firefox, Brave, Vivaldi, Opera, Opera GX, Arc, Zen, Waterfox, LibreWolf, Yandex Browser и Cốc Cốc. Собранный рабочий каталог архивируется в ZIP и отправляется оператору после опроса сервера.
Практический вывод
Организациям стоит проверять появление неизвестных LaunchAgent, изменения ~/.zshrc и глобального параметра core.hooksPath, а также запуск Script Editor и zsh из загруженных образов диска. В этой кампании доступность C2-сервера стала частью механизма расшифровки, поэтому для расследования важны не только файлы на устройстве, но и сетевые события и следы запуска.

