Чем популярнее система у пользователей, тем больший интерес она представляет для злоумышленников. Хотя самая широкая аудитория у Windows, macOS находится на втором месте по распространенности. Как результат, эта ОС все чаще становится целью атакующих.
В macOS предусмотрено довольно много механизмов защиты, которые по большей части обеспечивают комплексную безопасность конечного пользователя. В этой статье мы рассмотрим, как работают некоторые из них, приведем распространенные атаки на них, а также способы детектирования и предотвращения таких атак.
Обзор защитных механизмов macOS
Для начала обозначим набор механизмов защиты в macOS и дадим им краткое описание:
- Keychain — менеджер паролей, установленный по умолчанию в системе.
- TCC — механизм управления доступами приложений.
- SIP — технология защиты целостности информации в чувствительных к атакам директориях и процессах.
- File Quarantine — защита от запуска подозрительных файлов, скачанных из интернета.
- Gatekeeper — система защиты от запуска непроверенных приложений.
- XProtect — сигнатурная защита от вредоносного ПО в macOS.
- 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
security dump-keychain -a -d— делает дамп всех 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, а также пример правила детектирования.
Sigma:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
title: Keychain access description: This rule detects dumping of keychain tags: - attack.credential-access - attack.t1555.001 logsource: category: process_creation product: macos detection: selection: cmdline: security cmdline: -list-keychains -dump-keychain condition: selection falsepositives: - Unknow level: medium |
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. Зачастую злоумышленник проверяет статус SIP для понимания доступных возможностей. Поскольку csrutil disable они применяют в режиме восстановления системы, до загрузки каких-либо мониторинговых решений, данная команда не залогируется и, соответственно, отслеживание ее выполнения не имеет смысла. Вместо этого можно организовать мониторинг состояния SIP и при его изменении отправлять оповещение безопасности.
Sigma:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
title: SIP status discovery description: This rule detects SIP status discovery tags: - attack.discovery - attack.t1518.001 logsource: category: process_creation product: macos detection: selection: cmdline: csrutil status condition: selection falsepositives: - Unknow level: low |
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).
Целостность этих баз и защита от несанкционированного доступа реализованы с помощью механизма SIP (System Integrity Protection), который делает невозможным их модификацию напрямую. Чтобы вмешаться в эти базы, злоумышленнику нужно либо отключить SIP, либо получить доступ к одному из доверенных системных процессов. Это обеспечивает высокий уровень устойчивости механизма TCC к вмешательству и манипуляциям.
TCC работает следующим образом: каждый первичный доступ приложения к чувствительным функциям (таким как камера, микрофон, геолокация, Full Disk Access, управление вводом и др.) сопровождается запросом на подтверждение со стороны пользователя — интерактивным окном, информирующим о запрашиваемых разрешениях. Это позволяет пользователю контролировать расширение привилегий.
Одним из возможных векторов обхода этого механизма может стать 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, прикрепленный к этому файлу. Он нужен для хранения записи о файле в базе данных.
Информация, полученная при помощи этой команды, сохраняется в базе ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2, что делает возможным последующий аудит.
Злоумышленники не заинтересованы в том, чтобы их файлы попадали в карантин, поэтому используют различные приемы, чтобы обойти File Quarantine. Например, загрузка файлов через утилиты curl, wget или другие низкоуровневые инструменты, не интегрированные с File Quarantine, позволяет избежать присвоения карантинного атрибута.
Также возможно удаление атрибута вручную с помощью команды xattr -d com.apple.quarantine <filename>.
Если атрибут карантина успешно удален, при запуске файла не будет отображаться предупреждение. Это может быть использовано в атаках с применением социальной инженерии или в случаях, когда злоумышленник предпочитает выполнять вредоносное ПО вообще без ведома пользователя.
Для детектирования данной активности необходимо следить за выполнением команды xattr в связке с -d и com.apple.quarantine, что будет означать снятие метки карантина. Также при расследовании инцидента, связанного с компрометацией macOS, стоит узнать природу происхождения файла: если он попал на хост путем, при котором метка карантина не выставляется, то это будет дополнительным фактором опасности. Ниже приведен пример срабатывания EDR на событие удаления метки карантина, а также пример правила для детектирования таких событий.
Sigma:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
title: Quarantine attribute removal description: This rule detects removal of the Quarantine attribute, that leads to avoid File Quarantine tags: - attack.defense-evasion - attack.t1553.001 logsource: category: process_creation product: macos detection: selection: cmdline: xattr -d com.apple.quarantine condition: selection falsepositives: - Unknow level: high |
Gatekeeper
Gatekeeper — один из ключевых элементов системы безопасности macOS, предназначенных для защиты пользователей от запуска потенциально опасных приложений. Впервые представленный в OS X Leopard (2012), Gatekeeper проверяет цифровую подпись приложений и, при наличии атрибута карантина (com.apple.quarantine), ограничивает запуск неподписанных и не одобренных пользователем программ, тем самым снижая риск выполнения вредоносного кода.
Для управления Gatekeeper используется утилита spctl. Ниже можно видеть пример вызова утилиты для проверки валидности подписи и того, заверена ли она со стороны Apple:
Spctl -a -t exec -vvvv <путь до файла>
Gatekeeper требует, чтобы приложение было:
- либо подписано с использованием действительного сертификата разработчика Apple;
- либо заверено Apple после проверки исходного кода.
Если приложение не удовлетворяет этим требованиям, Gatekeeper по умолчанию блокирует его при попытке запуска через двойной клик. Разблокировка возможна, но для этого пользователю необходимо лезть в настройки и ориентироваться в них. Соответственно, для успешной атаки злоумышленнику придется не только убедить жертву пометить приложение как доверенное, но и объяснить ей, как это делается. При этом необходимость сложных манипуляций для запуска ПО сама по себе выглядит подозрительно. Однако при запуске через контекстное меню (правая кнопка мыши → Открыть) пользователь получает возможность обойти блокировку «в один клик», подтвердив свое намерение использовать приложение прямо во всплывающем уведомлении. Эта особенность используется в атаках с применением социальной инженерии: вредоносное ПО может сопровождаться инструкциями, побуждающими пользователя запустить файл именно через контекстное меню.
Проверим метод, связанный с запуском программ с помощью контекстного меню, а не с помощью двойного клика. При двойном клике на иконку программы, которая имеет атрибут карантина, мы видим следующее окно.
Если же мы запустим программу с помощью контекстного меню, а именно кликнем правой кнопкой мыши и выберем опцию «Открыть», то мы увидим следующее.
Злоумышленники с локальным доступом и правами администратора могут отключить Gatekeeper с помощью команды spctl –master disable или --global-disable.
Для детектирования данной активности необходимо отслеживать выполнение команды spctl с параметрами –master disable или --global-disable, что приводит к отключению Gatekeeper. Ниже приведен пример срабатывания EDR на событие отключения Gatekeeper, а также пример правила для его детектирования.
Sigma:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
title: Gatekeeper disable description: This rule detects disabling of Gatekeeper tags: - attack.defense-evasion - attack.t1562.001 logsource: category: process_creation product: macos detection: selection: cmdline: spctl cmdline: - '--master-disable' - '--global-disable' condition: selection |
Вывод
Встроенные механизмы защиты macOS обладают высокой степенью устойчивости и играют важную роль в обеспечении безопасности системы. Тем не менее, как и в любой зрелой операционной системе, злоумышленники продолжают адаптироваться и искать способы обхода даже самых надежных защитных барьеров. В ряде случаев при успешном обходе стандартных механизмов может оказаться непросто внедрить дополнительные средства безопасности и остановить атаку. Поэтому для полноты защиты от киберугроз стоит использовать в том числе передовые решения сторонних вендоров. Продукты «Лаборатории Касперского», такие как Kaspersky EDR Expert или Kaspersky Endpoint Security, способны детектировать и блокировать активность, описанную в этой статье. Кроме того, чтобы защититься от обхода стандартных мер защиты, вы можете использовать приведенные нами Sigma-правила.
Безопасность macOS: как атакующие адаптируются к встроенным механизмам защиты
























Артём
Да, спасибо.