
Agente di rilevamento leggero per macOS basato sulla telemetria di Endpoint Security di Santa.

Sidecar di rilevamento macOS leggero per Santa che valuta la telemetria Endpoint Security localmente con regole CEL e inoltra solo i segnali di rilevamento corrispondenti a un server backend.
Sperimentale. Realizzato per home lab e flotte ridotte. Versione iniziale – ci si aspettano bug e modifiche all’API.
Santamon legge il flusso di telemetria protobuf di Santa, valuta le regole di rilevamento usando espressioni CEL e invia i segnali di sicurezza a un backend. La telemetria grezza rimane sul dispositivo – solo i rilevamenti vengono inoltrati.
Funzionalità principali:
Santamon è un sidecar di rilevamento per Santa, non un altro client ESF.
Creare uno strumento ESF personalizzato richiede entitlements Apple vincolati, profili di provisioning e una gestione attenta degli eventi Endpoint Security ad alto volume. Santa fa già questo ed è testato in produzione.
Il valore di Santamon:
Santa si occupa del lavoro pesante di ingestione affidabile e sicura degli eventi Endpoint Security; Santamon si concentra sulla logica di rilevamento e sulla qualità del segnale.
Santa Spool → Watcher → Decoder → Rules Engine → Signal Generator → Shipper → Backend
↓ ↓
┌────────────────────────┐
│ State DB (BoltDB) │
│ • Correlazioni │
│ • Tracciamento baseline│
│ • Coda segnali │
└────────────────────────┘
Albero processi: cache in memoria (TTL 1h, max 50K)
Flusso dei dati:
/var/db/santa/spool/new/) per nuovi file protobufCiclo di vita dello spool:
santa.archive_dir (predefinito: /var/lib/santamon/spool_hits)Albero dei processi:
tcc_modification richiedono macOS 15+)configs/examples/santa-config.mobileconfigSanta deve essere configurato per scrivere eventi protobuf. Usa il profilo di configurazione fornito:
# Rivedi e personalizza, poi installa tramite Impostazioni di Sistema
open configs/examples/santa-config.mobileconfig
# Verifica
santactl status | grep "Log Type"
# Dovrebbe mostrare: Log Type | protobuf
git clone https://github.com/0x4d31/santamon.git
cd santamon
make build
sudo make install
Questo installa:
/usr/local/bin/santamon/etc/santamon/config.yaml e rules.yaml/Library/LaunchDaemons/com.santamon.plist/var/lib/santamon/Modifica /etc/santamon/config.yaml:
shipper:
endpoint: "https://your-backend.example.com:8443/ingest"
api_key: "${SANTAMON_API_KEY}"
Imposta la chiave API nel plist del LaunchDaemon:
# Genera una chiave API forte
openssl rand -hex 32
# Modifica LaunchDaemon
sudo nano /Library/LaunchDaemons/com.santamon.plist
# Aggiungi sotto EnvironmentVariables:
<key>SANTAMON_API_KEY</key>
<string>your-generated-key-here</string>
# Avvia il servizio
sudo make start
# Monitora i log
make logs
Config 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" # Posizione spool di Santa
archive_dir: "/var/lib/santamon/spool_hits" # Archivia i file spool che hanno prodotto allarmi
stability_wait: "2s" # Attendi prima di leggere nuovi file
rules:
path: "/etc/santamon/rules.yaml" # File o directory
state:
db_path: "/var/lib/santamon/state.db"
sync_writes: true # Fsync dopo le scritture (più sicuro ma più lento)
first_seen:
max_entries: 10000 # Cache LRU per regole baseline
windows:
max_events: 1000 # Eventi massimi per finestra di correlazione
shipper:
batch_size: 100 # Segnali per lotto
flush_interval: "30s" # Tempo tra gli svuotamenti
timeout: "10s" # Timeout richiesta HTTP
tls_skip_verify: false # MAI true in produzione
Vedi configs/santamon.yaml per tutte le opzioni con commenti dettagliati.
Le regole sono espressioni CEL che valutano gli eventi di Santa. Tre tipi supportati: semplice, correlazione e baseline.
rules:
- id: SM-014
title: "Processo non interattivo che invoca curl/wget"
description: |
Processo non terminale, non di gestione pacchetti che esegue curl o wget.
expr: |
kind == "execution" &&
event.execution.target.executable.path in ["/usr/bin/curl", "/usr/bin/wget"] &&