
Бинарная система авторизации и мониторинга для macOS
[!NOTE] С 2025 года Santa больше не поддерживается Google. Мы рекомендуем существующим пользователям перейти на активно поддерживаемый форк Santa, например, https://github.com/northpolesec/santa.
Santa — это система авторизации двоичных файлов и доступа к файлам для macOS. Она состоит из системного расширения, которое отслеживает выполнения, демона, принимающего решения о выполнении на основе содержимого локальной базы данных, GUI-агента, уведомляющего пользователя в случае блокировки, и утилиты командной строки для управления системой и синхронизации базы данных с сервером.
Она называется Santa, потому что отслеживает, какие двоичные файлы были плохими или хорошими.
Документация Santa хранится в каталоге Docs и опубликована на https://santa.dev.
Документация включает варианты развёртывания, подробности о том, как работают части Santa, и инструкции по разработке самой Santa.
Если у вас есть вопросы или вам нужна помощь в начале работы, группа santa-dev — отличное место.
Если вы считаете, что нашли ошибку, сообщите о ней через issue, и мы ответим так быстро, как сможем.
Если вы считаете, что нашли уязвимость, пожалуйста, прочитайте политику безопасности для сообщения о ней.
Несколько режимов: В режиме MONITOR по умолчанию все двоичные файлы, кроме помеченных как заблокированные, будут разрешены к запуску, при этом они регистрируются и записываются в базу данных событий. В режиме LOCKDOWN разрешены к запуску только указанные в списке двоичные файлы.
Журналирование событий: При загрузке системного расширения регистрируются все запуски двоичных файлов. В любом режиме все неизвестные или запрещённые двоичные файлы сохраняются в базе данных для последующей агрегации.
Правила на основе сертификатов с уровнями переопределения: Вместо того чтобы полагаться на хеш (или «отпечаток») двоичного файла, исполняемые файлы можно разрешать/блокировать по их сертификату подписи. Таким образом, вы можете разрешить/заблокировать все двоичные файлы от определённого издателя, подписанные этим сертификатом, при обновлениях версий. Двоичный файл может быть разрешён по сертификату только в том случае, если его подпись проверяется корректно, но правило по отпечатку двоичного файла переопределяет решение по сертификату; т.е. вы можете добавить сертификат в белый список, одновременно блокируя двоичный файл, подписанный этим сертификатом, или наоборот.
Правила на основе путей (через NSRegularExpression/ICU): Это предоставляет функциональность, аналогичную той, что была в Managed Client (предшественнике профилей конфигурации, использующих тот же механизм реализации), ограничения запуска приложений через двоичный файл mcxalr. Эта реализация имеет дополнительное преимущество: настройка через регулярные выражения и отсутствие зависимости от LaunchServices. Как подробно описано в вики, при оценке правил это имеет наименьший приоритет.
Отказоустойчивые правила сертификатов: Вы не можете установить правило запрета, которое блокировало бы сертификат, используемый для подписи launchd, также известного как pid 1, и, следовательно, всех компонентов, используемых в macOS. Поэтому двоичные файлы в каждом обновлении ОС (а в некоторых случаях целые новые версии) автоматически разрешаются. Это не затрагивает двоичные файлы из App Store от Apple, которые используют различные сертификаты, регулярно меняющиеся для обычных приложений. Аналогично, вы не можете заблокировать саму Santa, и Santa использует отдельный сертификат, отличный от других приложений Google.
Компоненты пользовательского пространства проверяют друг друга: каждый из компонентов пользовательского пространства (демон, GUI-агент и утилита командной строки) взаимодействуют друг с другом через XPC и проверяют идентичность своих сертификатов подписи, прежде чем любое взаимодействие будет принято.
Кеширование: разрешённые двоичные файлы кешируются, так что обработка, необходимая для выполнения запроса, выполняется только в том случае, если двоичный файл ещё не кеширован.
Ни одна отдельная система или процесс не остановит все атаки и не обеспечит 100% безопасности. Santa написана с целью помочь защитить пользователей от самих себя. Люди часто загружают вредоносное ПО и доверяют ему, предоставляя вредоносу учётные данные или позволяя неизвестному программному обеспечению извлекать больше данных о вашей системе. Как централизованно управляемый компонент, Santa может помочь остановить распространение вредоносного ПО среди большого парка машин. Независимо, Santa может помочь в анализе того, что запущено на вашем компьютере.
Santa является частью стратегии эшелонированной защиты, и вам следует продолжать защищать хосты любыми другими способами, которые вы считаете подходящими.
Santa блокирует только выполнение (execve и варианты), но не защищает от динамических библиотек, загруженных с помощью dlopen, библиотек на диске, которые были заменены, или библиотек, загруженных с использованием DYLD_INSERT_LIBRARIES.
Скрипты: В настоящее время Santa написана так, чтобы игнорировать любое выполнение, не являющееся двоичным файлом. Это связано с тем, что после оценки затрат на администрирование по сравнению с выгодой мы сочли это нецелесообразным. Кроме того, ряд приложений использует временно сгенерированные скрипты, которые мы не можем добавить в белый список, и отказ от этого вызвал бы проблемы. Мы с радостью вернёмся к этому вопросу (или хотя бы сделаем это опциональным), если это будет полезно другим.
Клиент командной строки santactl включает флаг для синхронизации с сервером управления, который загружает произошедшие на машине события и скачивает новые правила. Существует несколько серверов с открытым исходным кодом, с которыми можно синхронизироваться:
Кроме того, santactl может настраивать правила локально (без сервера синхронизации).
Такой инструмент, как Santa, не очень подходит для скриншотов, поэтому вот вместо этого видео.
Патчи к этому проекту приветствуются. Пожалуйста, ознакомьтесь с документом CONTRIBUTING.
Это не официальный продукт Google.