Исследователи зафиксировали масштабную кампанию малвертайзинга, нацеленную на пользователей macOS. Злоумышленники размещают спонсируемые объявления в Google, имитирующие страницу загрузки инструмента Claude Code CLI от Anthropic. Под видом легитимной установки жертва получает многоступенчатый стилер MacSync Stealer версии 1.1.2, способный извлекать пароли, ключи и файлы, а также подменять пакетные файлы приложений Ledger Live и Ledger Wallet для кражи сид-фраз криптокошельков. Источником данных выступил анализ, выполненный автономной платформой киберразведки Caronte.
Описание
Вредонос распространяется через спонсируемый результат поиска по фразе “claude code mac install”. Объявление ведёт на страницу Google Sites, стилизованную под официальный сайт Anthropic. Использование сервисов Google не случайно - sites.google.com находится в белых списках большинства корпоративных прокси, а весь контент страницы подгружается через JavaScript. Автоматические сканеры, не исполняющие JS, видят пустой лист и оценивают URL как безопасный. Для атаки применяется техника ClickFix (в варианте для macOS - InstallFix): пользователя просят открыть Терминал и вставить команду. Для разработчиков, привыкших к curl | bash, это выглядит стандартной процедурой установки CLI-утилиты.
Команда содержит внешний слой Base64, который декодируется в вызов curl с ключом -k (отключение проверки TLS-сертификата) для загрузки дроппера с сервера oklahomawarehousing.com по протоколу HTTP. Первый этап скачивает файл с суффиксом .daily, который, вероятно, меняется ежедневно. Второй этап представляет собой инлайн-архив gzip с рандомизированными именами переменных для затруднения сигнатурного анализа. Третий этап - скрытый демон, который параллельно загружает финальную нагрузку на AppleScript (osascript) и готовится к эксфильтрации собранных данных.
Основной пейлоад - AppleScript-сценарий, называемый MacSync Stealer. Его первое действие - принудительное завершение процесса Terminal, чтобы скрыть введённую команду из истории терминала. Затем с помощью dscl . authonly проверяется валидность пароля учётной записи macOS. Если пароль пустой, сбор продолжается без запроса. Если пароль требуется, злоумышленники показывают поддельное диалоговое окно "Системные настройки" с иконкой LockedIcon.icns, которая визуально неотличима от настоящей. Диалог зациклен до ввода правильного пароля. После его получения стилер немедленно разблокирует связку ключей login.keychain-db и извлекает мастер-ключ Chrome Safe Storage, единый для всех браузеров на базе Chromium.
После сбора пароля сценарий начинает массовый сбор данных. Он копирует профили всех обнаруженных браузеров (Chrome, Brave, Edge, Arc, Opera и десятки других), файлы cookie, логины, веб-данные, локальные хранилища и IndexedDB. Отдельно перечислено более 80 расширений для криптокошельков (MetaMask, Phantom, Trust, Coinbase, OKX, Rabby, Bybit и другие), а также около 20 десктопных кошельков, включая Exodus, Electrum, Atomic, Guarda, Coinomi, Sparrow, Wasabi, Bitcoin Core, Armory, Electrum Cash, Monero, Litecoin Core, Dash, Dogecoin, BlueWallet, Zengo, Trust Wallet, Ledger Live, Ledger Wallet и Trezor Suite. Стилер извлекает связки ключей macOS (все *.keychain-db), iCloud Keychain (локальный кэш), файлы SSH, AWS, kubectl, сессию Telegram Desktop, файлы определённых типов (.pdf, .docx, .wallet, .key, .seed, .kdbx, .pem, .ovpn) из папок Desktop, Documents, Downloads (до 100 МБ на каждую). Также копируются история и куки Safari, база заметок Apple, файлы .zshrc, .zsh_history, .bash_history, .gitconfig, а также полная информация о системе через system_profiler.
Все собранные данные упаковываются в ZIP-архив /tmp/osalogging.zip. Внутрь архива вшивается файл с метаданными: name MacSync Stealer, Build Tag claude1, версия 1.1.2_release, IP жертвы, имя пользователя и украденный пароль. Затем появляется поддельное диалоговое окно с сообщением "Ваш Mac не поддерживает это приложение. Попробуйте переустановить или загрузить версию для вашей системы". Это диалог без тайм-аута; пока пользователь не нажмёт "ОК", выполнение блокируется. Критическая особенность: эксфильтрация архива и троянизация кошельков происходит только после нажатия. Если жертва перезагрузит компьютер, принудительно завершит процесс или просто закроет ноутбук до клика, архив остаётся в /tmp (который очищается при перезагрузке) и никогда не отправляется на C2. Таким образом, ошибка в проектировании последовательности даёт непреднамеренную защиту: социальная инженерия сработала против самого атакующего.
При нажатии "ОК" запускается вторая часть - замена app.asar внутри установленных приложений Ledger Live и Ledger Wallet. Подмена происходит для каждой найденной программы. С сервера oklahomawarehousing.com загружается ZIP-архив с троянизированным asar-пакетом и Info.plist. Оригинальный app.asar заменяется, после чего приложение переподписывается с помощью ad-hoc подписи (codesign -f -s -), чтобы избежать предупреждений Gatekeeper. Для Trezor Suite также был заготовлен эндпоинт /trezor/<token>, но на момент сбора C2 возвращал ошибку 520 Cloudflare, что указывает на неготовность пейлоада.
Троян вшит в файл main.bundle.js. В нём присутствует единственная вставка после инициализации главного окна BrowserWindow, помеченная комментарием на русском языке "// ←=== ВСТАВЬТЕ СЮДА ===→". Через пять секунд после запуска приложения (чтобы пользователь успел увидеть нормальный интерфейс) setTimeout вызывает e.loadURL("file://.../recovery-step-1.html"). Этот HTML-файл находится внутри того же asar и показывает поддельную процедуру восстановления Ledger, запрашивающую PIN-код и сид-фразу. Введённые данные через ipcRenderer отправляются на тот же C2-сервер. Подобный шаблон (один и тот же комментарий, одна точка внедрения для обоих троянов) указывает на использование готового набора инструментов, вероятно, по модели Malware-as-a-Service, аналогичной Needle.
Таким образом, атака сочетает классическую социальную инженерию (малвертайзинг + ClickFix) с мощным стилером и троянизацией криптокошельков. Учитывая, что злоумышленники используют датированные URL (claud-version-0505, где 0505 - дата 5 мая), они, скорее всего, регулярно меняют страницы, чтобы обходить блокировки. После уведомления Google реклама была удалена в течение 24 часов. Тем не менее, пользователям macOS, особенно разработчикам и владельцам криптокошельков, рекомендуется проявлять повышенную бдительность: не запускать команды из рекламных объявлений, всегда проверять легитимность домена загрузки (только claude.ai и официальные каналы Anthropic), не вводить пароль по запросу подозрительных диалогов и ни при каких обстоятельствах не сообщать сид-фразы в каких-либо программах. Полная очистка и переустановка из официальных источников - единственный способ гарантированно устранить троянскую замену app.asar.
Индикаторы компрометации
Domain
- oklahomawarehousing.com
SHA256
- 1abf943e97356e07bde23663da544e7c106afc19827a2106361a52035737de43
- bd348a40261aa2d95566ccdc4e6f304ff25aa97d34e5c713c77c937583ad04f0
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | rule MacSync_Stealer_Dropper_Daily { meta: description = "MacSync Stealer zsh dropper (.daily): base64+gzip payload with daemon exfil to /gate endpoint" author = "Beelzebub Research" date = "2026-05-06" reference = "https://beelzebub.ai/blog/macsync-stealer-fake-claude-code-google-ads" strings: $s1 = "osalogging.zip" ascii $s2 = "daemon_function" ascii $s3 = "/gate?buildtxd=" ascii $s4 = "/dynamic?txd=" ascii $s5 = "PAYLOAD_m" ascii $s6 = "| gunzip" ascii condition: 5 of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | rule MacSync_Stealer_Osascript_Payload { meta: description = "MacSync Stealer osascript credential harvester, build claude1, v1.1.2" author = "Beelzebub Research" date = "2026-05-06" reference = "https://beelzebub.ai/blog/macsync-stealer-fake-claude-code-google-ads" strings: $b1 = "MacSync Stealer" ascii $b2 = "Build Tag: claude" ascii $b3 = "osalogging.zip" ascii $b4 = "dscl . authonly" ascii $b5 = "security unlock-keychain" ascii $b6 = "Chrome Safe Storage" ascii $b7 = "killall Terminal" ascii $b8 = "GrabFolder" ascii $b9 = "DesktopWallets" ascii condition: 6 of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | rule MacSync_Stealer_AppAsar_Trojan { meta: description = "MacSync Stealer trojanized Electron app.asar: Ledger Live/Wallet with recovery-flow injection" author = "Beelzebub Research" date = "2026-05-06" reference = "https://beelzebub.ai/blog/macsync-stealer-fake-claude-code-google-ads" strings: // Russian "INSERT HERE" injection marker (UTF-8) $marker = { E2 86 90 3D 3D 3D 20 D0 92 D0 A1 D0 A2 D0 90 D0 92 D0 AC D0 A2 D0 95 20 D0 A1 D0 AE D0 94 D0 90 20 3D 3D 3D E2 86 92 } $recovery = "recovery-step-1.html" ascii $loadurl = "loadURL" ascii wide condition: $marker and $recovery and $loadurl } |