
Легкий агент обнаружения для macOS, построенный на телеметрии Endpoint Security от Santa.

Облегченный сайдкар обнаружения для macOS для Santa, который локально оценивает телеметрию Endpoint Security с помощью правил CEL и пересылает только совпавшие сигналы обнаружения на сервер бэкенда.
Экспериментальный. Создан для домашних лабораторий и небольших парков устройств. Ранний релиз – ожидайте ошибок и изменений API.
Santamon читает поток телеметрии protobuf от Santa, оценивает правила обнаружения с помощью выражений CEL и отправляет сигналы безопасности на бэкенд. Необработанная телеметрия остается на конечной точке – пересылаются только обнаружения.
Основные возможности:
Santamon – это сайдкар обнаружения для Santa, а не еще один клиент ESF.
Создание собственного инструмента ESF требует ограниченных привилегий Apple, профилей обеспечения и тщательной обработки высокообъемных событий Endpoint Security. Santa уже делает это и проверен в производстве.
Ценность Santamon:
Santa берет на себя тяжелую работу по надежному и безопасному приему событий Endpoint Security; Santamon фокусируется на логике обнаружения и качестве сигнала.
Santa Spool → Watcher → Decoder → Rules Engine → Signal Generator → Shipper → Backend
↓ ↓
┌────────────────────────┐
│ State DB (BoltDB) │
│ • Correlation windows │
│ • Baseline tracking │
│ • Signal queue │
└────────────────────────┘
Process lineage: in-memory cache (1h TTL, 50K max)
Поток данных:
/var/db/santa/spool/new/) на предмет новых файлов protobufЖизненный цикл спула:
santa.archive_dir (по умолчанию: /var/lib/santamon/spool_hits)Родословная процессов:
tcc_modification, требуют macOS 15+)configs/examples/santa-config.mobileconfigSanta должна быть настроена на запись событий protobuf. Используйте предоставленный профиль конфигурации:
# Просмотрите и настройте, затем установите через Системные настройки
open configs/examples/santa-config.mobileconfig
# Проверьте
santactl status | grep "Log Type"
# Должно отображать: Log Type | protobuf
git clone https://github.com/0x4d31/santamon.git
cd santamon
make build
sudo make install
Это устанавливает:
/usr/local/bin/santamon/etc/santamon/config.yaml и rules.yaml/Library/LaunchDaemons/com.santamon.plist/var/lib/santamon/Отредактируйте /etc/santamon/config.yaml:
shipper:
endpoint: "https://your-backend.example.com:8443/ingest"
api_key: "${SANTAMON_API_KEY}"
Установите API-ключ в plist LaunchDaemon:
# Сгенерируйте надежный API-ключ
openssl rand -hex 32
# Отредактируйте LaunchDaemon
sudo nano /Library/LaunchDaemons/com.santamon.plist
# Добавьте в раздел EnvironmentVariables:
<key>SANTAMON_API_KEY</key>
<string>your-generated-key-here</string>
# Запустите службу
sudo make start
# Мониторинг логов
make logs
Основной конфиг: /etc/santamon/config.yaml
agent:
id: "${HOSTNAME}"
shipper:
endpoint: "https://backend.example.com:8443/ingest"
api_key: "${SANTAMON_API_KEY}"
santa:
spool_dir: "/var/db/santa/spool" # Расположение спула Santa
archive_dir: "/var/lib/santamon/spool_hits" # Архив файлов спула, вызвавших оповещения
stability_wait: "2s" # Ожидание перед чтением новых файлов
rules:
path: "/etc/santamon/rules.yaml" # Файл или каталог
state:
db_path: "/var/lib/santamon/state.db"
sync_writes: true # Fsync после записи (безопаснее, но медленнее)
first_seen:
max_entries: 10000 # LRU-кэш для базовых правил
windows:
max_events: 1000 # Максимум событий на окно корреляции
shipper:
batch_size: 100 # Сигналов на пакет
flush_interval: "30s" # Время между отправками
timeout: "10s" # Таймаут HTTP-запроса
tls_skip_verify: false # НИКОГДА не true в продакшене
Полный справочник всех опций с подробными комментариями см. в configs/santamon.yaml.
Правила — это выражения CEL, которые оценивают события Santa. Поддерживаются три типа: простое, корреляция и базовое.
rules:
- id: SM-014
title: "Неинтерактивный процесс, запускающий curl/wget"
description: |
Не терминальный, не пакетный менеджер процесс запускает curl или wget.
expr: |
kind == "execution" &&
event.execution.target.executable.path in ["/usr/bin/curl", "/usr/bin/wget"] &&