Технологии безопасности

Безопасность macOS: как атакующие адаптируются к встроенным механизмам защиты

Чем популярнее система у пользователей, тем больший интерес она представляет для злоумышленников. Хотя самая широкая аудитория у Windows, macOS находится на втором месте по распространенности. Как результат, эта ОС все чаще становится целью атакующих.

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

Обзор защитных механизмов macOS

Для начала обозначим набор механизмов защиты в macOS и дадим им краткое описание:

  1. Keychain — менеджер паролей, установленный по умолчанию в системе.
  2. TCC — механизм управления доступами приложений.
  3. SIP — технология защиты целостности информации в чувствительных к атакам директориях и процессах.
  4. File Quarantine — защита от запуска подозрительных файлов, скачанных из интернета.
  5. Gatekeeper — система защиты от запуска непроверенных приложений.
  6. XProtect — сигнатурная защита от вредоносного ПО в macOS.
  7. Xprotect Remediator — средство автоматического реагирования на выявленные с помощью XProtect угрозы.

Keychain

Менеджер паролей, представленный в macOS еще в 1999 году, остается одной из ключевых составляющих системы безопасности Apple. Он обеспечивает централизованное и защищенное хранение различных секретов — от сертификатов и ключей шифрования до паролей и учетных данных. По умолчанию все сохраненные пользователем учетные записи и пароли хранятся именно в Keychain. Доступ к данным защищен мастер-паролем.

Файлы Keychain располагаются в каталогах ~/Library/Keychains/, /Library/Keychains/ и /Network/Library/Keychains/. Помимо мастер-пароля каждый из них может быть защищен собственным ключом. По умолчанию доступ к этим файлам имеют только владельцы соответствующей копии Keychain и администраторы. Кроме того, данные в этих файлах шифруются с использованием надежного алгоритма AES-256-GCM. Такой подход обеспечивает высокий уровень защиты даже в случае физического доступа к системе.

Тем не менее злоумышленники пытаются атаковать «родной» менеджер паролей macOS. Существуют специализированные утилиты, такие как Chainbreaker, нацеленные на извлечение данных из файлов Keychain. При наличии доступа к самому файлу и его паролю Chainbreaker позволяет провести локальный анализ и полностью расшифровать данные без привязки к устройству жертвы. Кроме того, штатные инструменты macOS, такие как графическое приложение Keychain Access или командная утилита /usr/bin/security, также могут использоваться во вредоносных целях, если система уже скомпрометирована.

Таким образом, хотя архитектура Keychain обеспечивает устойчивую защиту, важными остаются контроль над локальным доступом, защита мастер-пароля и минимизация возможности вывода данных за пределы системы. Ниже представлен пример команды, с помощью которой злоумышленник может воспользоваться Chainbreaker:

python -m chainbreaker -pa test_keychain.keychain -o output

Для управления через командную строку, как и было упомянуто ранее, может использоваться утилита security, а именно следующие команды:

  • security list-keychains — выводит все доступные файлы Keychain
Доступные keychain-файлы для пользователя

Доступные Keychain-файлы для пользователя

  • security dump-keychain -a -d — делает дамп всех Keychain-файлов
Дамп keychain-файла

Дамп Keychain-файла

  • security dump-keychain ~/Library/Keychains/login.keychain-db — дамп конкретного файла Keychain (для примера указан файл пользователя)

Чтобы детектировать атаки такого типа, необходимо настроить логирование событий запуска процесса. Лучше всего с этой задачей поможет справиться встроенный в macOS механизм логирования под названием ESF. Он позволит организовать сбор необходимых событий, с помощью которых можно будет построить детектирующую логику. В Kaspersky Endpoint Detection and Response (KEDR) уже реализован и настроен сбор необходимых событий с помощью этого механизма.

К необходимым для детектирования описанной активности событиям относятся события, содержащие команды security dump-keychain и security list-keychains, так как данная активность не является регулярной для рядового пользователя maсOS. Ниже приведен пример срабатывания EDR на событие дампа Keychain, а также пример правила детектирования.

Пример события из EDR

Пример события из EDR

Sigma:

SIP

System Integrity Protection (SIP) — это один из важнейших защитных механизмов macOS, направленный на предотвращение несанкционированного вмешательства в критически важные файлы и процессы системы даже со стороны пользователей с правами администратора. Впервые SIP был внедрен в OS X 10.11 El Capitan и стал значительным шагом в укреплении безопасности за счет ограничения возможностей модификации системных компонентов, защищающего от потенциального вредоносного воздействия.

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

  • /System
  • /sbin
  • /bin
  • /usr (за исключением /usr/local)
  • /Applications (предустановленные приложения)
  • /Library/Application Support/com.apple.TCC

Полный список защищаемых директорий хранится в конфигурационном файле /System/Library/Sandbox/rootless.conf. В первую очередь это системные файлы и предустановленные приложения, однако в SIP также предусмотрена возможность добавления дополнительных путей.

SIP обеспечивает высокий уровень защиты системных компонентов, однако при наличии физического доступа к системе или в случае компрометации прав администратора SIP может быть отключен — но только через перезапуск системы в режиме восстановления (Recovery Mode) с последующим выполнением команды csrutil disable в терминале. Для проверки текущего статуса SIP используется команда csrutil status.

Вывод команды csrutil status

Вывод команды csrutil status

Для детектирования данной активности необходимо отслеживать команду csrutil status. Зачастую злоумышленник проверяет статус SIP для понимания доступных возможностей. Поскольку csrutil disable они применяют в режиме восстановления системы, до загрузки каких-либо мониторинговых решений, данная команда не залогируется и, соответственно, отслеживание ее выполнения не имеет смысла. Вместо этого можно организовать мониторинг состояния SIP и при его изменении отправлять оповещение безопасности.

Пример события из EDR

Пример события из EDR

Sigma:

TCC

В macOS входит система контроля привилегий приложений — TCC (Transparency, Consent, and Control), обеспечивающая прозрачность в отношении доступа приложений к чувствительным данным и функциям системы и необходимость явного согласия пользователя при запросе подобного доступа. В основе TCC лежит структура SQLite-баз данных (TCC.db), размещенных как в общих директориях (/Library/Application Support/com.apple.TCC/TCC.db), так и в каталогах отдельных пользователей (/Users/<username>/Library/Application Support/com.apple.TCC/TCC.db).

Содержимое одной из таблиц в базе данных TCC

Содержимое одной из таблиц в базе данных TCC

Целостность этих баз и защита от несанкционированного доступа реализованы с помощью механизма SIP (System Integrity Protection), который делает невозможным их модификацию напрямую. Чтобы вмешаться в эти базы, злоумышленнику нужно либо отключить SIP, либо получить доступ к одному из доверенных системных процессов. Это обеспечивает высокий уровень устойчивости механизма TCC к вмешательству и манипуляциям.

TCC работает следующим образом: каждый первичный доступ приложения к чувствительным функциям (таким как камера, микрофон, геолокация, Full Disk Access, управление вводом и др.) сопровождается запросом на подтверждение со стороны пользователя — интерактивным окном, информирующим о запрашиваемых разрешениях. Это позволяет пользователю контролировать расширение привилегий.

Окно разрешения на доступ от TCC

Окно разрешения на доступ от TCC

Одним из возможных векторов обхода этого механизма может стать TCC Clickjacking — техника, при которой поверх окна запроса прав размещается визуально измененное окно, скрывающее истинный характер запроса. В результате пользователь, не подозревая об этом, нажимает на кнопку предоставления прав вредоносному ПО. Хотя эта техника не эксплуатирует сам механизм TCC, она позволяет злоумышленникам получать доступ к чувствительным функциям системы, невзирая на защиту.

Пример подмененного окна

Пример подмененного окна

Злоумышленники заинтересованы в получении прав Full Disk Access или Accessibility, так как эти разрешения предоставляют практически неограниченный доступ к системе. В связи с этим мониторинг изменений в TCC.db и контроль за назначением чувствительных привилегий остаются важными задачами для обеспечения комплексной безопасности macOS.

File Quarantine

Встроенный механизм macOS File Quarantine впервые был представлен в OS X 10.5 Tiger. Он повышает безопасность системы при работе с файлами, загруженными из внешних источников. Этот механизм аналогичен технологии Mark-of-the-Web в Windows и служит для предупреждения пользователей о потенциальной опасности перед запуском загруженного файла.

Когда файл загружается через браузер или другое приложение, совместимое с File Quarantine, ему присваивается специальный атрибут com.apple.quarantine. При первом запуске такого файла, если он подписан действительной подписью и не вызывает подозрений у Gatekeeper, который мы рассмотрим позже, отображается уведомление с предложением подтвердить запуск. Это позволяет предотвратить сценарий, когда пользователь, сам того не подозревая, выполняет вредоносную программу.

Пример атрибутов файла, включающих атрибут карантина

Пример атрибутов файла, включающих атрибут карантина

Получить подробную информацию об атрибуте com.apple.quarantine можно с помощью команды xattr -p com.apple.quarantine <Имя файла>. Например, на скриншоте ниже можно увидеть следующие данные в выводе этой команды:

  • 0083 — флаг для дальнейших действий Gatekeeper.
  • 689cb865 — временная метка в шестнадцатеричном формате (Mac Absolute Time).
  • Safari — браузер, через который был загружен файл.
  • 66EA7FA5-1F9E-4779-A5B5-9CCA2A4A98F5 — UUID, прикрепленный к этому файлу. Он нужен для хранения записи о файле в базе данных.
Подробная информация об атрибуте com.apple.quarantine

Подробная информация об атрибуте com.apple.quarantine

Информация, полученная при помощи этой команды, сохраняется в базе ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2, что делает возможным последующий аудит.

Данные в базе com.apple.LaunchServices.QuarantineEventsV2

Данные в базе com.apple.LaunchServices.QuarantineEventsV2

Злоумышленники не заинтересованы в том, чтобы их файлы попадали в карантин, поэтому используют различные приемы, чтобы обойти File Quarantine. Например, загрузка файлов через утилиты curl, wget или другие низкоуровневые инструменты, не интегрированные с File Quarantine, позволяет избежать присвоения карантинного атрибута.

Обход карантина при помощи curl

Обход карантина при помощи curl

Также возможно удаление атрибута вручную с помощью команды xattr -d com.apple.quarantine <filename>.

Удаление атрибута карантина

Удаление атрибута карантина

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

Запуск файла без проверки File Quarantine

Запуск файла без проверки File Quarantine

Для детектирования данной активности необходимо следить за выполнением команды xattr в связке с -d и com.apple.quarantine, что будет означать снятие метки карантина. Также при расследовании инцидента, связанного с компрометацией macOS, стоит узнать природу происхождения файла: если он попал на хост путем, при котором метка карантина не выставляется, то это будет дополнительным фактором опасности. Ниже приведен пример срабатывания EDR на событие удаления метки карантина, а также пример правила для детектирования таких событий.

Пример события из EDR

Пример события из EDR

Sigma:

Gatekeeper

Gatekeeper — один из ключевых элементов системы безопасности macOS, предназначенных для защиты пользователей от запуска потенциально опасных приложений. Впервые представленный в OS X Leopard (2012), Gatekeeper проверяет цифровую подпись приложений и, при наличии атрибута карантина (com.apple.quarantine), ограничивает запуск неподписанных и не одобренных пользователем программ, тем самым снижая риск выполнения вредоносного кода.

Для управления Gatekeeper используется утилита spctl. Ниже можно видеть пример вызова утилиты для проверки валидности подписи и того, заверена ли она со стороны Apple:

Spctl -a -t exec -vvvv <путь до файла>

Проверка недоверенного файла с помощью spctl

Проверка недоверенного файла с помощью spctl

Проверка доверенного файла с помощью spctl

Проверка доверенного файла с помощью spctl

Gatekeeper требует, чтобы приложение было:

  • либо подписано с использованием действительного сертификата разработчика Apple;
  • либо заверено Apple после проверки исходного кода.

Если приложение не удовлетворяет этим требованиям, Gatekeeper по умолчанию блокирует его при попытке запуска через двойной клик. Разблокировка возможна, но для этого пользователю необходимо лезть в настройки и ориентироваться в них. Соответственно, для успешной атаки злоумышленнику придется не только убедить жертву пометить приложение как доверенное, но и объяснить ей, как это делается. При этом необходимость сложных манипуляций для запуска ПО сама по себе выглядит подозрительно. Однако при запуске через контекстное меню (правая кнопка мыши → Открыть) пользователь получает возможность обойти блокировку «в один клик», подтвердив свое намерение использовать приложение прямо во всплывающем уведомлении. Эта особенность используется в атаках с применением социальной инженерии: вредоносное ПО может сопровождаться инструкциями, побуждающими пользователя запустить файл именно через контекстное меню.

Пример использования данной техники в исполнении Chropex Adware

Пример использования данной техники в исполнении Chropex Adware

Проверим метод, связанный с запуском программ с помощью контекстного меню, а не с помощью двойного клика. При двойном клике на иконку программы, которая имеет атрибут карантина, мы видим следующее окно.

Запуск программы с атрибутом карантина двойным щелчком мыши

Запуск программы с атрибутом карантина двойным щелчком мыши

Если же мы запустим программу с помощью контекстного меню, а именно кликнем правой кнопкой мыши и выберем опцию «Открыть», то мы увидим следующее.

Запуск программы с атрибутом карантина с помощью контекстного меню

Запуск программы с атрибутом карантина с помощью контекстного меню

Злоумышленники с локальным доступом и правами администратора могут отключить Gatekeeper с помощью команды spctl –master disable или --global-disable.

Для детектирования данной активности необходимо отслеживать выполнение команды spctl с параметрами –master disable или --global-disable, что приводит к отключению Gatekeeper. Ниже приведен пример срабатывания EDR на событие отключения Gatekeeper, а также пример правила для его детектирования.

Пример события из EDR

Пример события из EDR

Sigma:

Вывод

Встроенные механизмы защиты macOS обладают высокой степенью устойчивости и играют важную роль в обеспечении безопасности системы. Тем не менее, как и в любой зрелой операционной системе, злоумышленники продолжают адаптироваться и искать способы обхода даже самых надежных защитных барьеров. В ряде случаев при успешном обходе стандартных механизмов может оказаться непросто внедрить дополнительные средства безопасности и остановить атаку. Поэтому для полноты защиты от киберугроз стоит использовать в том числе передовые решения сторонних вендоров. Продукты «Лаборатории Касперского», такие как Kaspersky EDR Expert или Kaspersky Endpoint Security, способны детектировать и блокировать активность, описанную в этой статье. Кроме того, чтобы защититься от обхода стандартных мер защиты, вы можете использовать приведенные нами Sigma-правила.

Безопасность macOS: как атакующие адаптируются к встроенным механизмам защиты

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

  1. Артём

    Да, спасибо.

Отчеты

ToddyCat — ваш скрытый почтовый ассистент. Часть 1

Эксперты «Лаборатории Касперского» разбирают атаки APT ToddyCat через корпоративную электронную почту. Изучаем новую версию TomBerBil, инструменты TCSectorCopy и XstReader, а также способы кражи токенов доступа из Outlook.

Криптоафера группы BlueNoroff: «призрачные» инвестиции и фиктивные рабочие предложения

Эксперты команды GReAT проанализировали кампании GhostCall и GhostHire APT-группы BlueNoroff: несколько цепочек вредоносного ПО для macOS, поддельные клиенты Zoom и Microsoft Teams, а также изображения, улучшенные с помощью ChatGPT.

Mem3nt0 mori – Hacking Team снова с нами!

Исследователи «Лаборатории Касперского» впервые обнаружили шпионское ПО Dante, разработанное Memento Labs (бывшей Hacking Team) в дикой природе и нашли его связь с APT ForumTroll.