MacSync — это семейство крипто- и информационных стилеров, которое активно развивается. Первые объявления о версии Mac.c появились в даркнете в 2025 году. Позже авторы переименовали его в MacSync. Ранние версии использовали скрипты AppleScript и имели сходство с семейством AMOS, но со временем MacSync получил отличительные черты, включая модуль бэкдора. В этом разборе описана кардинально переработанная цепочка заражения, которую впервые обнаружили в сентябре 2026 года.
Ключевые изменения
- Авторы перешли с дропперов на основе скриптов на бинарные исполняемые файлы.
- Основная нагрузка теперь состоит из модулей, написанных на Objective-C и Swift.
- На одном из этапов заражения используется инфраструктура iCloud для доставки следующей стадии.
Технические детали
Цепочка заражения
MacSync распространяется по модели MaaS (Malware-as-a-Service), поэтому начальный способ доставки зависит от оператора. Недавние исследования MacSync обычно описывали доставку через социальную инженерию и атаки ClickFix, но этот вредонос также распространяется под видом бесплатного или пиратского ПО, а также новых приложений. Например, исследователи обнаружили MacSync, маскирующийся под несуществующий криптокошелек Toria. Авторы создали для него отдельный веб-сайт и продвигали его через X и Telegram.
Последняя обнаруженная версия начинается с вредоносных образов дисков в формате DMG. В одной кампании под видом поддельного приложения обнаружили два варианта доставки. В первом варианте внутри DMG находился скомпилированный JXA-скрипт, который при запуске расшифровывал и передавал шелл-скрипт прямо в интерпретатор без сохранения на диск. Во втором варианте тот же скрипт появлялся на более позднем этапе, после цепочки дропперов и загрузчиков.
На всех этапах MacSync демонстрирует общие черты: все временные файлы располагаются в /tmp с защитными блокировками против повторного выполнения, после работы модуль удаляет следы, а все бинарные файлы представлены в формате Fat Mach-O для процессоров Apple и Intel.
Загрузчик и дропперы
Вредоносная нагрузка в DMG — это .APP-приложение. При запуске оно проверяет расширенный атрибут карантина com.apple.quarantine и удаляет его командой xattr. Затем извлекает зашифрованный XOR-алгоритмом URL из своего оверлея с ключом 73 6f 6e 6f 6d 61 62 6c 64 07. Данные отделены магическим словом SONOMAC1, и вредонос читает оверлей в обратном порядке.
Полученный URL указывает на следующий скрипт-загрузчик. В некоторых случаях это был прямой путь на управляемый сервер, но в одном образце URL вел на публичный календарь iCloud.
Загрузчик создает анонимный канал, запускает интерпретатор zsh в режиме чтения из стандартного ввода и перенаправляет содержимое календаря построчно. Поскольку календарь содержит невалидные команды, интерпретатор игнорирует их до строки DESCRIPTION:, где начинается вредоносная нагрузка. Скрипт загружает с iCloud архив tar.gz, содержащий .APP-бандл, удаляет атрибут карантина, подписывает локальной подписью и выполняет.
Загруженное приложение — дроппер. Он содержит сжатый zlib и зашифрованный AES в режиме CBC исполняемый файл. Дроппер расшифровывает, разархивирует и размещает его в /tmp/.sys-[случайные цифры].
Следующий дроппер содержит защиту от отладки: проверяет виртуальную машину через запросы sysctl и устанавливает флаг PT_DENY_ATTACH, запрещая подключение отладчика. Его нагрузка — шелл-скрипт, зашифрованный AES в CBC-режиме.
Второй дроппер доставляет скрипт-загрузчик, который получает нагрузку со управляющего сервера, расшифровывает AES в режиме CBC и выполняет в памяти.
Использование криптографии Curve25519
На этом этапе вредонос применяет нестандартный подход: использует созданную авторами утилиту pkgunpack с командами genkey и decrypt. Расшифровка выполняется так:
- Генерируются публичный и секретный ключи через genkey с использованием открытой реализации Диффи—Хеллмана на эллиптической кривой Curve25519.
- Публичный ключ кодируется в base64 и отправляется на сервер вместе с одноразовым кодом вида $(date +%s)-${RANDOM}-$$.
- Сервер возвращает JSON с build_pub_b64 (его публичный ключ) и dek_wrap_b64 (зашифрованный ключ шифрования).
- Команда decrypt вычисляет общий секрет на основе публичного ключа сервера и приватного ключа сессии через ECDH Curve25519, конкатенирует со строкой sn-dek-wrap-v1 и вычисляет SHA-256.
- Блок dek_wrap_b64 расшифровывается AES в режиме GCM с полученным ключом, IV и AAD.
- Результат — ключ для расшифрования основной нагрузки, которая также содержит AAD и IV в заголовке и зашифрована AES GCM.
На каждом этапе утилита заполняет буферы нулями после использования ключей, затрудняя криминалистический анализ.
Инфостилер
Инфостилер поставляется как .APP-приложение с главным исполняемым файлом на Swift. Сначала запрашивает пароль администратора, адаптируя окно под приложение-мишень. После ввода показывает окно, имитирующее системное уведомление о повреждении с предложением переместить в корзину.
Вместо стандартной проверки через dscl авторы использовали API подключаемых модулей аутентификации (PAM) — сравнительно новую технику для macOS-вредоносов, впервые применённую в июле 2026 года в семействе Pam Stealer.
Многие строки в стилере (имена файлов, директорий, teamid) зашифрованы XOR и хранятся в статических массивах. Ключи отличаются между образцами и генерируются в зависимости от длины шифртекста.
Стилер собирает историю браузеров, cookies, данные расширений криптокошельков, сохранённые логины и пароли, данные приложений криптокошельков, Telegram, логин и пароль устройства, файл связки ключей, информацию о системе (приложения, процессы, модель, UUID), конфигурации SSH, ZSH, AWS, Kubernetes, GIT, историю команд интерпретаторов, аватар пользователя.
Собранные данные сохраняются в скрытую директорию в /tmp. В модуле есть отключённая функция проверки наличия файла KcHelper, которая, похоже, находится в разработке. Она пытается модифицировать partition_id записей в связке ключей так, чтобы доступ предоставлялся без подтверждения для приложений с определённым teamID, служб Apple и консольных утилит Apple. В зашифрованных строках видны примеры аргументов, указывающие на интерес к секретам браузеров Chrome и Brave.
Бэкдор
Бэкдор — это исполняемый файл Fat Mach-O на Objective-C с двумя режимами: обычный и с флагом --persist-status (проверка способов закрепления в автозапуске). В стандартном режиме проверяет, закреплен ли в автозапуске, если нет — выполняет механизм закрепления. Для macOS старше версии 13.0 используется отдельный помощник, который через API CoreServices.framework добавляет исполняемый файл в объекты входа.
Конфигурация для связи с C2 хранится в оверлее, зашифрована XOR с тем же ключом и содержит магическую константу AGNT1, URL управляющего сервера, токен доступа и номер сборки (BLD-150).
Зловред пишет логи в $HOME/Library/Logs/.sysnotif-agent.log и поддерживает расширенные логи при переменной окружения LAUNCHER_DEBUG. Общение идёт через HTTP с ожидаемым JSON-ответом.
Бэкдор отправляет GET-запрос к /v1/agent/ping с ID жертвы и номером сборки для получения команды. При ошибке 403 пытается обновить токен через /v1/agent/refresh. Создание файла на сервере идёт через POST к /v1/asset/[upload_id]/init с размером и SHA-256. Загрузка идёт PUT-запросом к /v1/asset/[upload_id]. Статус команд отправляется POST к /v1/agent/[command_status].
Вместо исполнения отдельных команд бэкдор извлекает закодированный в base64 скрипт AppleScript из поля script_b64 и выполняет его. Поддерживаемые команды:
- deploy_ext — внедрить расширение браузера с сервера.
- deploy_ledger — заменить установленный кошелёк Ledger на версию с сервера.
- regrab — заново собрать информацию и/или конкретные файлы в архив /tmp/osalogging.zip.
- live_browser — проверяет наличие файла sn_relay, при отсутствии загружает и выполняет, предположительно для реализации MitM-атаки на браузерный трафик.
Итоги
Новая версия MacSync существенно отличается от предыдущих модификаций. Авторы переработали подход: перешли от скриптов AppleScript к полноценным исполняемым файлам на Swift и Objective-C. Цепочка заражения усложнилась — вместо обфусцированных шелл-скриптов через ClickFix теперь используются бинарные дропперы и загрузчики, включая инфраструктуру Apple как промежуточный этап доставки.
Характер собираемых данных (криптокошельки, разработчические инструменты, приложения) и приложения-маски указывают на целевую аудиторию: разработчиков, криптоэнтузиастов и IT-специалистов. Компрометация устройств разработчиков MacSync представляет риск как для конечных пользователей, так и для корпоративных систем, открывая перспективы дальнейшего продвижения атак.
