
Agente de detecção leve para macOS baseado na telemetria do Endpoint Security do Santa.

Sidecar de detecção leve para macOS, voltado para o Santa, que avalia a telemetria do Endpoint Security localmente com regras CEL e encaminha apenas os sinais de detecção correspondentes para um servidor backend.
Experimental. Construído para laboratórios domésticos e pequenas frotas. Versão inicial – espere bugs e mudanças na API.
O Santamon lê o fluxo de telemetria protobuf do Santa, avalia regras de detecção usando expressões CEL e envia sinais de segurança para um backend. A telemetria bruta permanece no endpoint — apenas as detecções são encaminhadas.
Principais recursos:
O Santamon é um sidecar de detecção para o Santa, não outro cliente ESF.
Construir uma ferramenta ESF personalizada exige os entitlements restritos da Apple, perfis de provisionamento e o tratamento cuidadoso de eventos de Endpoint Security em alto volume. O Santa já faz isso e é testado e comprovado em produção.
O valor do Santamon:
O Santa cuida da parte pesada da ingestão de eventos de Endpoint Security de forma confiável e segura; o Santamon foca na lógica de detecção e na qualidade do sinal.
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)
Fluxo de dados:
/var/db/santa/spool/new/) em busca de novos arquivos protobufCiclo de vida do spool:
santa.archive_dir (padrão: /var/lib/santamon/spool_hits)Linhagem de Processos:
tcc_modification, exigem macOS 15+)configs/examples/santa-config.mobileconfigO Santa deve ser configurado para gravar eventos protobuf. Use o perfil de configuração fornecido:
# 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
Isso instala:
/usr/local/bin/santamon/etc/santamon/config.yaml e rules.yaml/Library/LaunchDaemons/com.santamon.plist/var/lib/santamon/Edite /etc/santamon/config.yaml:
shipper:
endpoint: "https://your-backend.example.com:8443/ingest"
api_key: "${SANTAMON_API_KEY}"
Defina a chave de API no plist do 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
Configuração principal: /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
Consulte configs/santamon.yaml para ver todas as opções com comentários detalhados.
As regras são expressões CEL que avaliam eventos do Santa. Três tipos suportados: simples, correlação e linha de base.
rules:
- id: SM-014
title: "Non-interactive process invoking curl/wget"
description: |
Non-terminal, non-package-manager process launching curl or wget.
expr: |
kind == "execution" &&
event.execution.target.executable.path in ["/usr/bin/curl", "/usr/bin/wget"] &&