
Agent de détection macOS léger, basé sur la télémétrie Endpoint Security de Santa.

Sidecar de détection macOS léger pour Santa qui évalue la télémétrie Endpoint Security localement avec des règles CEL et transmet uniquement les signaux de détection correspondants à un serveur backend.
Expérimental. Conçu pour les laboratoires maison et les petits parcs. Version précoce – attendez-vous à des bugs et à des changements d'API.
Santamon lit le flux de télémétrie protobuf de Santa, évalue les règles de détection à l'aide d'expressions CEL et envoie les signaux de sécurité à un backend. La télémétrie brute reste sur l'endpoint—seules les détections sont transmises.
Fonctionnalités principales :
Santamon est un sidecar de détection pour Santa, pas un autre client ESF.
Construire un outil ESF personnalisé nécessite les entitlements restreints d'Apple, des profils de provisionnement et une gestion minutieuse des événements Endpoint Security à haut volume. Santa fait déjà cela et est éprouvé en production.
La valeur de Santamon :
Santa s'occupe du gros du travail d'ingestion des événements Endpoint Security de manière fiable et sûre ; Santamon se concentre sur la logique de détection et la qualité des signaux.
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)
Flux de données :
/var/db/santa/spool/new/) pour les nouveaux fichiers protobufCycle de vie du spool :
santa.archive_dir (par défaut : /var/lib/santamon/spool_hits)Filiation des processus :
tcc_modification nécessitent macOS 15+)configs/examples/santa-config.mobileconfigSanta doit être configuré pour écrire des événements protobuf. Utilisez le profil de configuration fourni :
# Review and customize, then install via System Settings
open configs/examples/santa-config.mobileconfig
# Verify
santactl status | grep "Log Type"
# Should show: Log Type | protobuf
git clone https://github.com/0x4d31/santamon.git
cd santamon
make build
sudo make install
Ceci installe :
/usr/local/bin/santamon/etc/santamon/config.yaml et rules.yaml/Library/LaunchDaemons/com.santamon.plist/var/lib/santamon/Modifiez /etc/santamon/config.yaml :
shipper:
endpoint: "https://your-backend.example.com:8443/ingest"
api_key: "${SANTAMON_API_KEY}"
Définissez la clé API dans le plist du LaunchDaemon :
# Generate strong API key
openssl rand -hex 32
# Edit LaunchDaemon
sudo nano /Library/LaunchDaemons/com.santamon.plist
# Add under EnvironmentVariables:
<key>SANTAMON_API_KEY</key>
<string>your-generated-key-here</string>
# Start service
sudo make start
# Monitor logs
make logs
Configuration principale : /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 spool location
archive_dir: "/var/lib/santamon/spool_hits" # Archive spool files that produced alerts
stability_wait: "2s" # Wait before reading new files
rules:
path: "/etc/santamon/rules.yaml" # File or directory
state:
db_path: "/var/lib/santamon/state.db"
sync_writes: true # Fsync after writes (safer but slower)
first_seen:
max_entries: 10000 # LRU cache for baseline rules
windows:
max_events: 1000 # Max events per correlation window
shipper:
batch_size: 100 # Signals per batch
flush_interval: "30s" # Time between flushes
timeout: "10s" # HTTP request timeout
tls_skip_verify: false # NEVER true in production
Voir configs/santamon.yaml pour toutes les options avec commentaires détaillés.
Les règles sont des expressions CEL qui évaluent les événements Santa. Trois types sont pris en charge : simple, corrélation et baseline.