Атака на macOS: кража пароля, перехват TLS и удалённый доступ
Кампания против пользователей macOS начинается с вредоносной рекламы. Злоумышленники используют рекламный ролик на YouTube и целевую страницу в стиле TradingView, чтобы распространять поддельный нативный установщик .pkg. В дальнейшем вредоносная программа перехватывает пароль администратора, устанавливает механизм закрепления в системе и загружает удалённо управляемый имплант.
Поддельный установщик сохраняет пароль в открытом виде
Установщик запрашивает пароль администратора через стандартный диалог Installer.app. После этого он сохраняет пароль в открытом виде по пути /Users/Shared/.passwd и устанавливает LaunchAgent для маскировки активности.
Каталог /Users/Shared доступен для чтения всем пользователям. Поэтому пароль может быть получен локальными процессами и должен считаться скомпрометированным.
Закрепление в системе осуществляется через файл ~/Library/LaunchAgents/com.microsoft.service.systemhelperwatcher.v8mgfk.plist. Незагруженный LaunchAgent каждые пять минут повторно выполняет стейджер curl | bash. Попытка завершить процесс или отключить LaunchAgent приводит к его повторному включению.
Стейджер обходит проверку исходящего трафика
Стейджер связывается с доменом velvetforge.net, а при недоступности использует резервный домен cedarengine.com. Он загружает ресурс /script и выполняет полученный ответ с помощью eval.
Перед запуском стейджер проверяет индикаторы среды, связанные с launchd. Это помогает предотвратить выполнение во время ручного анализа или в некоторых средах песочницы.
Для обхода корпоративной проверки исходящего трафика используется параметр --noproxy '*'. Кроме того, стейджер передаёт кэшированный пароль в sudo, что позволяет выполнять привилегированные операции.
Имплант работает через Node.js
Основной имплант представляет собой удалённо управляемый исполнитель задач, реализованный как упакованное Node.js-приложение. Его полезная нагрузка хранится в виде V8-байткода, зашифрованного с использованием AES-256-CBC. Расшифровка выполняется только в памяти.
Механизм NODE_OPTIONS=--require ./preload.js запускает код, контролируемый злоумышленником, до старта основного приложения. Вредоносная программа использует легитимный бинарный файл Node.js, подписанный Developer ID, в качестве прокси и загружает неподписанные нативные модули.
Связь с C2 осуществляется через tRPC поверх WebSocket. Имплант также поддерживает проксирование через HTTP и SOCKS5.
Нативные модули получают доступ к функциям macOS
Нативные модули вредоносной программы обеспечивают широкий набор возможностей:
- глобальную регистрацию нажатий клавиш;
- захват экрана и запись виртуального дисплея;
- доступ к связке ключей и приложению «Пароли»;
- синтетический ввод;
- автоматизацию на основе доступности;
- одобрение разрешений конфиденциальности;
- подавление уведомлений;
- настройку системного прокси.
Локальный прокси перехватывает HTTPS-трафик
В системную связку ключей устанавливается поддельный корневой центр сертификации CA. Локальный прокси прослушивает адрес 127.0.0.1:49313 и выполняет перехват TLS, генерируя листовые сертификаты, подписанные этим CA.
Такая схема позволяет перехватывать HTTPS-трафик приложений, которые учитывают системные настройки прокси.
Возможная связь с WEEVILPROXY и JSCEAL
Семейство вредоносного ПО может представлять собой адаптацию WEEVILPROXY/JSCEAL для macOS. Эта атрибуция остаётся неподтверждённой.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



