MacOS пал: северокорейцы проникли туда, где Apple считала себя неуязвимой

Пока вы ждёте созвона, чужие руки копаются в ваших файлах.


kfmg66ucch0eahs4aal7nng2q8f8qmec.jpg


Группировка, связанная с КНДР , активно атакует компании, работающие в сфере Web3 и криптовалют, с использованием вредоносного ПО, написанного на языке программирования Nim . Эти действия демонстрируют постоянное совершенствование тактик и технических приёмов со стороны киберпреступников.

Как сообщили специалисты компании SentinelOne, вредоносное ПО отличается редкой для macOS функцией — применением технологии инъекции процессов и использованием для удалённого взаимодействия защищённого протокола wss, который представляет собой зашифрованную версию WebSocket.

Одной из наиболее нетривиальных особенностей является механизм сохранения присутствия вредоносного ПО в системе. Он реализован через обработчики системных сигналов SIGINT и SIGTERM. Это позволяет установить постоянное присутствие вредоносного кода, если процесс был завершён или перезагружена сама система.

Новый зловред получил название NimDoor. Ранее отдельные элементы этой кампании уже описывались исследовательскими группами Huntabil.IT, Huntress и Validin, но текущая атака отличается используемыми вредоносными модулями.

Сценарий атаки начинается с социальной инженерии. Злоумышленники выходят на связь с потенциальными жертвами через мессенджеры, такие как Telegram, предлагая организовать видеовстречу через платформу Zoom. С помощью сервиса для планирования встреч Calendly назначается время. Затем жертва получает электронное письмо якобы со ссылкой для участия в Zoom-встрече и инструкцией о необходимости запуска обновления SDK Zoom для «обеспечения совместимости».

Фактически пользователь запускает AppleScript, который загружает со стороннего сервера второй этап вредоносного кода. При этом происходит перенаправление на официальный сайт Zoom, что создаёт иллюзию легитимности процесса. Далее распаковываются ZIP-архивы с исполняемыми файлами, обеспечивающими закрепление зловреда в системе и запуск bash-скриптов для кражи данных.

Ключевым элементом заражения является загрузчик на C++ под названием InjectWithDyldArm64 (известный также как InjectWithDyld). Этот модуль расшифровывает два встроенных бинарных файла — Target и trojan1_arm64. Затем загрузчик запускает Target в приостановленном состоянии и внедряет в него исполняемый код второго файла. После этого выполнение процесса Target возобновляется.

Следующий этап — установление связи с удалённым сервером и выполнение полученных команд. Злоумышленники могут собирать системную информацию, запускать произвольные команды и изменять рабочие директории. Все результаты передаются обратно на сервер управления.

Вредоносный модуль trojan1_arm64 способен загружать дополнительные компоненты, которые специализируются на сборе учётных данных из популярных браузеров, включая Arc, Brave, Google Chrome, Microsoft Edge и Mozilla Firefox. Также злоумышленники крадут данные из мессенджера Telegram.

Отдельно отмечается использование исполняемых файлов на языке Nim, служащих платформой для запуска CoreKitAgent. Эта часть вредоносного комплекса следит за попытками пользователя завершить процессы вредоносного ПО и оперативно восстанавливает его присутствие, что делает систему крайне устойчивой к элементарным действиям защиты.

Вредоносный код также запускает скрипт на AppleScript, который каждые 30 секунд отправляет сигнал на один из двух заранее заданных серверов и пересылает список активных процессов. Через этот канал также выполняются дополнительные команды, полученные от злоумышленников.

Вся эта кампания свидетельствует о растущем интересе северокорейских группировок к macOS и о применении AppleScript в качестве инструмента постэксплуатации и кражи данных. Ранее аналогичные группировки уже использовали языки Go и Rust для построения многоступенчатых цепочек атак.

Выбор языка Nim в данном случае обусловлен его возможностями по усложнению структуры кода. Благодаря особенностям компиляции, функциональность может быть скрыта внутри бинарных файлов таким образом, что граница между пользовательским и системным кодом становится практически неразличимой.