
macnoise v0.2.0
Generatore di telemetria di sistema MacOS estensibile.
MacNoise
MacNoise genera telemetria macOS reale: connessioni di rete, scritture su file, avvio di processi, mutazioni di plist, sonde TCC e altro. Puntalo su una macchina che esegue il tuo stack EDR, SIEM o firewall e osserva cosa scatta davvero - non ciò che la scheda tecnica del vendor sostiene che scatti.
Per il contesto su motivazioni e progettazione, consulta il post del blog di rilascio.
Avvio rapido
# Build (add build-amd64 / build-arm64 to cross-compile for Darwin, or release for both)
make build
# List available modules
./macnoise list
# Run a single module
./macnoise run net_connect --param target=127.0.0.1 --param port=8080
# Preview without executing
./macnoise run svc_launch_agent --dry-run
# Run all network modules
./macnoise run --category network
# Run a scenario
./macnoise scenario configs/scenarios/edr_validation.yaml
# Emit structured JSONL output
./macnoise run --category file --format jsonl --output /tmp/events.jsonl
Categorie di telemetria
| Categoria | Descrizione | Moduli |
|---|---|---|
network | Connessioni in uscita, DNS, beaconing, listener, reverse shell, esfiltrazione | net_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil |
process | Avvio di processi, invio di segnali, iniezione dylib, discovery, bypass di Gatekeeper, osascript | proc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript |
file | Creazione di file, modifica, lettura di credenziali del browser, archiviazione, occultamento | file_create, file_modify, file_browser_creds, file_archive, file_hide |
tcc | Sonde di autorizzazione TCC (FDA, Contatti, Keychain) | tcc_fda, tcc_contacts, tcc_keychain |
endpoint_security | Attivatori di eventi del framework ES | es_file, es_process |
service | Persistenza LaunchAgent/Daemon, cron, profilo di shell | svc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile |
plist | Creazione e modifica di plist | plist_create, plist_modify |
xpc | Enumerazione dei servizi XPC | xpc_connect |
Comandi
macnoise run <module> [--param key=val ...] Run a specific module
macnoise run --category <cat> Run all modules in a category
macnoise run --all Run all modules
macnoise list [--category <cat>] List modules
macnoise info <module> Show module details, params, MITRE
macnoise scenario <file.yaml> Run a YAML scenario
macnoise categories List categories with counts
macnoise version Print version
Flag globali
| Flag | Predefinito | Descrizione |
|---|---|---|
--format | human | Formato di output: human o jsonl |
--output | (nessuno) | Scrive l'output su file (oltre che su stdout) |
--verbose | false | Output verboso inclusi gli errori di pulizia |
--dry-run | false | Anteprima delle azioni senza eseguirle |
--timeout | 30 | Timeout per modulo in secondi |
--audit-log | (nessuno) | Scrive i record di audit OCSF 1.7.0 in un file JSONL |
--config | (nessuno) | Carica le impostazioni predefinite da un file di configurazione YAML |
Registrazione di audit
MacNoise scrive due flussi separati. Gli eventi di telemetria - ciò che il tuo EDR/SIEM vede effettivamente - vanno su stdout o su --output. Un secondo flusso opzionale registra ciò che MacNoise ha fatto: quali moduli sono stati eseguiti, esiti dei prerequisiti/pulizia e mapping MITRE, in JSONL OCSF 1.7.0.
./macnoise scenario configs/scenarios/amos_atomic_stealer.yaml --audit-log /tmp/audit.jsonl
Il log di audit si apre in modalità append, quindi i record di più esecuzioni si accumulano in un unico file per l'analisi batch. Se stai aggiungendo un modulo e vuoi sapere come un nuovo tipo di evento viene classificato in OCSF, consulta CONTRIBUTING.md.
Riferimento moduli
La documentazione dei moduli si trova accanto a ciascuna categoria:
| Categoria | README |
|---|---|
network | modules/network/README.md |
process | modules/process/README.md |
file | modules/file/README.md |
tcc | modules/tcc/README.md |
endpoint_security | modules/endpoint_security/README.md |
service | modules/service/README.md |
plist | modules/plist/README.md |
xpc | modules/xpc/README.md |
Scenari
Gli scenari concatenano i moduli in sequenze ordinate: un singolo file YAML che riproduce un pattern di intrusione multi-fase contro le tue rilevazioni.
| File | Descrizione |
|---|---|
network_only.yaml | Tutti i moduli di rete |
edr_validation.yaml | Copertura completa delle rilevazioni EDR |
full_sweep.yaml | Tutte le categorie |
lazarus_group.yaml | Lazarus Group: iniezione dylib, discovery dei servizi, reverse shell, persistenza plist |
amos_atomic_stealer.yaml | AMOS / Atomic Stealer: infostealer MaaS, bypass di Gatekeeper, dump del Keychain, esfiltrazione ZIP, persistenza backdoor |
I due scenari APT seguono sequenze di intrusione reali e documentate, tecnica per tecnica: ogni file YAML cita la threat intelligence effettiva da cui è stato costruito e annota ogni passaggio con la tecnica MITRE che esercita, quindi parti da lì per l'analisi completa invece di una riscrittura qui.
Esegui prima la dry-run:
./macnoise scenario configs/scenarios/<scenario>.yaml --dry-run
Incrocia i risultati con il tuo SIEM/EDR: il commento di ogni passaggio indica la tecnica che dovrebbe attivare. Nessun alert corrispondente dopo un'esecuzione reale è un vuoto nella tua copertura.
Creare il tuo scenario:
name: My Custom Scenario
steps:
- module: net_connect
params:
target: "192.168.1.1"
port: "443"
- category: file
params:
base_dir: "/tmp/test"
Contribuire
Consulta CONTRIBUTING.md per aggiungere nuovi moduli, lo stile del codice e l'intero processo delle PR.
I rilasci sono automatizzati: release-please crea una nuova versione direttamente dal titolo della tua PR Conventional Commit, quindi feat: add net_tls module o fix: correct beacon jitter è sia il titolo della PR sia la voce del changelog.
Dichiarazione di non responsabilità
MacNoise è pensato per test di sicurezza autorizzati, validazione EDR e ingegneria delle rilevazioni su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta a testare. Gli autori non si assumono alcuna responsabilità per un uso improprio.
Politica sul codice AI
I contributi di codice AI sono ben accetti, ma tieni presente che la revisione del codice è attualmente un processo guidato da esseri umani, il che significa che possiamo recensire solo una quantità limitata di codice. Limita le PR a un fix specifico o a un nuovo modulo di telemetria. Le PR con modifiche estese verranno probabilmente chiuse.