Исследователи Jamf Threat Labs обнаружили нацеленное на macOS вредоносное программное обеспечение, которое получило название PamStealer. Этот инфостилер распространяется под видом легитимного менеджера буфера обмена Maccy и использует многоступенчатую схему заражения, сочетающую скомпилированные сценарии AppleScript с полезной нагрузкой, написанной на языке Rust. Атака представляет серьёзную угрозу для пользователей macOS, особенно для тех, кто работает в корпоративной среде, поскольку инструментарий кражи паролей, данных браузеров и буфера обмена объединён с продвинутыми методами маскировки и обхода стандартных средств защиты.
Описание
Вредоносная программа распространяется посредством образа диска, содержащего файл Maccy.scpt. Легитимный проект Maccy - это менеджер буфера обмена с открытым исходным кодом, что делает подделку убедительной для целевой аудитории. Когда пользователь дважды щёлкает по файлу .scpt, macOS по умолчанию открывает его в приложении Script Editor. Злоумышленники используют эту особенность: видимая часть документа содержит краткую инструкцию с брендированием, а реальный код скрыт за большим блоком пустых строк. Для того чтобы запустить вредоносный сценарий, жертве предлагается нажать комбинацию клавиш Command+R или кнопку Run. Социальная инженерия дополнена использованием омоглифов - греческих и кириллических символов, визуально неотличимых от латиницы в слове Maccy. Это затрудняет автоматическое выявление поддельного текста.
Первый этап атаки - скомпилированный сценарий AppleScript, обёрнутый вокруг загрузчика на JavaScript for Automation (JXA). В отличие от многих других загрузчиков, которые используют системные утилиты (curl, osascript, zsh), PamStealer выполняет загрузку и запуск второго этапа напрямую через API Objective-C, в частности NSURLSession. Такой подход снижает количество создаваемых процессов и оставляет меньше поведенческих следов для систем обнаружения. Перед загрузкой полезной нагрузки сценарий выполняет проверку окружения: он формирует ключ на основе характеристик хоста (архитектура процессора, локаль, раскладка клавиатуры, часовой пояс) и расшифровывает конфигурацию, которая содержит URL для загрузки и путь установки. Если конфигурация не расшифровывается (например, на Intel Mac при привязке к процессорам Apple Silicon), скрипт завершается без каких-либо действий.
Важной особенностью PamStealer является региональная фильтрация. Сценарий проверяет часовой пояс, код страны и используемые раскладки клавиатуры. Жертвы из стран бывшего Советского Союза (Россия, Беларусь, Казахстан, Армения, Азербайджан, Киргизия, Молдавия, Таджикистан, Туркменистан, Узбекистан, Грузия) оказываются исключены из атаки. Если какая-либо из проверок указывает на принадлежность к этому региону, расшифровка конфигурации не происходит, и вредоносная программа бездействует. Кроме того, код содержит механизмы антиотладки и проверку статуса System Integrity Protection (SIP), что указывает на целенаправленный обход песочниц и аналитических сред.
После успешной проверки загрузчик скачивает исполняемый файл Mach-O (второй этап) и записывает его на диск, предварительно проверяя, не существует ли уже такой файл. Загруженная полезная нагрузка помещается внутрь приложения-обманки, маскирующегося под системный компонент macOS. В разных образцах злоумышленники использовали имена вроде Finder.app с идентификатором com.apple.finder.core или Software Update.app с com.apple.security.daemon. Приложение подписывается произвольной подписью (ad-hoc signing), а для запуска используется скрытый режим без окна и иконки в Dock. Для отслеживания заражения рядом с поддельным приложением создаётся маркерный файл .Maccy.
Согласно отчёту Jamf Threat Labs, все косметические элементы (названия, зашифрованная конфигурация, значения в обфускации) меняются от сборки к сборке, что указывает на автоматизированную генерацию образцов, а не ручное редактирование. Поведенческая логика и списки регионов остаются постоянными.
Второй этап - инфостилер, написанный на Rust, собранный для архитектуры arm64 (Apple Silicon). Rust пока редко встречается в экосистеме вредоносных программ для macOS, где доминируют Swift, Go и Objective-C. Основная часть строк исполняемого файла расшифровывается во время выполнения, поэтому статический анализ ограничен. Вредоносная программа выполняет кражу логинов и паролей, читая напрямую базы данных браузеров (SQLite), а также извлекает данные из связки ключей (Keychain) через динамически загружаемый фреймворк Security.framework. Для кражи содержимого буфера обмена используется системная утилита pbpaste, которая запускается многократно с интервалами от 10 до 90 секунд, что указывает на непрерывный мониторинг.
Наиболее характерная особенность PamStealer - захват пароля учётной записи macOS с локальной проверкой через Pluggable Authentication Modules (PAM). Вредоносная программа отображает поддельное окно аутентификации, стилизованное под системный запрос: заголовок "Maccy wants to make changes. Enter your password to allow this." Когда жертва вводит пароль, стелер вызывает PAM-функции pam_start, pam_authenticate и pam_end для проверки подлинности непосредственно в памяти, без вызова внешних процессов (которые обычно используются в других инфостилерах). Если пароль неверен, окно не закрывается до тех пор, пока не будет введён корректный. Таким образом, злоумышленники получают подтверждённый пароль без дополнительных системных следов.
После кражи пароля вредоносная программа демонстрирует второе поддельное окно с сообщением "Maccy is damaged and can't be opened. You should move it to the Trash", копирующее стандартное уведомление Gatekeeper. Это отвлекающий манёвр: к моменту его появления стелер уже выполнил все вредоносные действия и закрепился в системе. Для постоянного присутствия используются два механизма: современный API ServiceManagement (SMAppService) и устаревший LSSharedFileListInsertItemURL через специальный вспомогательный исполняемый файл, встроенный в основной бинар и сохраняемый в /private/tmp/System Settings. Вспомогательный код добавляет поддельное приложение Finder.app в список элементов входа, обеспечивая перезапуск при каждом входе пользователя.
Важный элемент атаки - попытка получить полный доступ к диску (Full Disk Access). Через длительное время после запуска (до 40 минут) на экране появляется поддельное системное предупреждение с иконкой Finder: "Finder has lost access to protected data". Если пользователь нажимает "Open Settings", открывается панель "Full Disk Access" в Системных настройках, где приложение Finder.app (с настоящей иконкой Finder) уже присутствует в списке. Включение галочки даёт стелеру возможность читать защищённые папки, включая данные других приложений, Mail, Messages и резервные копии Time Machine.
Перехваченный сетевой трафик показывает, что второй этап использует для эксфильтрации конечную точку avenger-sync[.]live, отличную от URL загрузчика. Данные упаковываются в JSON-конверт {"data":"..."}, внутри которого находится шифротекст ChaCha20-Poly1305. Ключи шифрования генерируются динамически и не сохраняются на диск, что затрудняет дешифровку перехваченных сообщений. В кэше NSURLCache (Cache.db) остаются записи о соединении, но содержимое зашифровано. Исследователи смогли восстановить ключ из памяти отлаживаемого процесса и расшифровать конфигурационный объект avenger-config-v2, который содержал адреса публичных Ethereum-узлов eth.drpc.org и ethereum-rpc.publicnode[.]com. На заражённом хосте были зафиксированы соединения от имени процесса Finder к одному из этих узлов. Назначение контактов с блокчейн-инфраструктурой пока не установлено: это может быть как резервный канал управления, так и сбор данных о криптовалютных кошельках.
Разработчики PamStealer вложили значительные усилия в скрытность: использование JXA вместо shell-утилит, проверка окружения, региональная фильтрация, динамически загружаемые библиотеки, PAM-аутентификация без порождения процессов и задержка перед запросом полного доступа к диску. Эти приёмы усложняют обнаружение традиционными средствами защиты, опирающимися на поведенческий анализ запущенных процессов. Для противодействия подобным угрозам рекомендуется включать продвинутые средства контроля приложений, настраивать политики блокировки недоверенных кодов и использовать системы, способные анализировать сетевое взаимодействие даже при использовании шифрования. Инцидент подтверждает, что вредоносное ПО для macOS становится всё более изощрённым, перенимая методы, ранее характерные для APT-групп.
Индикаторы компрометации
Domain
- avenger-sync.live
URL
- https://api.live-updates.online/v1
- https://api.live-updates.online/v2
- https://api.sync-master.online/v1
- https://api.sync-master.online/v3
- https://avenger-sync.live/api/sync
- https://avngr.netlify.app/api
- https://maccyapp.com
SHA256
- 06fdd1d97df1105c542ddb881d751b659d555b5522c266f6364dae9f350fcfd0
- 2b512f6c393edad89a89ecafe26cd23b71cfdd271c10522f8dba98997ebf39bb
- 36d46ac7123e0cef04f179d88e590891c7e7c64ec5a77df4512cb485e40286da
- 60df952153696d46a09774e44ca602393c6829f9e2c2ec4f95d571f9846242a8
- 96c8ad78f6ccdf83d3dcabfd33ba563f7995f7237fe825de1eefd340821abdf3
- ab3a14096851cc18a253c1cd1c25df74f2cf23eb29051784ce47f9fc318f0f22
- bb01f3c36110d2cc31ae51c4ff2f17be19bea625755b5339680431fab98616df
- ca7f5c0668f1a871523d485e42884c3b98910117d7ca17c8b3c3b3744a936e0f
- e8b18c420669deb8fc6f69e74146e499057c3c77436ac6ca54af37befa9ddaa5
- f48b69e4b7fb4d53de25b4c9be8e8dbe0999c10d5306e01aa08e1761fc3dedbe
- ff20b429cb1c89e1cdb6734b00cc8cf021d2d13fd686bbc70709b3dd549285d2