
macnoise v0.2.0
Generador extensible de telemetría del sistema macOS.
MacNoise
MacNoise genera telemetría macOS real: conexiones de red, escrituras de archivos, creación de procesos, mutaciones de plist, sondeos de TCC y más. Dirígelo a una máquina que ejecute tu stack de EDR, SIEM o firewall y observa qué se dispara realmente, no lo que afirma la ficha técnica del proveedor.
Para más contexto sobre la motivación y el diseño, consulta la publicación del blog de lanzamiento.
Inicio Rápido
# 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
Categorías de Telemetría
| Category | Description | Modules |
|---|---|---|
network | Conexiones salientes, DNS, beaconing, listeners, reverse shells, exfiltración | net_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil |
process | Creación de procesos, entrega de señales, inyección de dylib, descubrimiento, bypass de Gatekeeper, osascript | proc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript |
file | Creación de archivos, modificación, lectura de credenciales del navegador, archivado, ocultación | file_create, file_modify, file_browser_creds, file_archive, file_hide |
tcc | Sondeos de permisos TCC (FDA, Contactos, Llavero) | tcc_fda, tcc_contacts, tcc_keychain |
endpoint_security | Disparadores de eventos del framework ES | es_file, es_process |
service | Persistencia de LaunchAgent/Daemon, cron, perfil de shell | svc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile |
plist | Creación y modificación de plist | plist_create, plist_modify |
xpc | Enumeración de servicios XPC | xpc_connect |
Comandos
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
Banderas Globales
| Flag | Default | Description |
|---|---|---|
--format | human | Formato de salida: human o jsonl |
--output | (ninguno) | Escribe la salida en un archivo (además de stdout) |
--verbose | false | Salida verbosa, incluidos los errores de limpieza |
--dry-run | false | Vista previa de las acciones sin ejecutarlas |
--timeout | 30 | Tiempo de espera por módulo en segundos |
--audit-log | (ninguno) | Escribe registros de auditoría OCSF 1.7.0 en un archivo JSONL |
--config | (ninguno) | Carga los valores predeterminados desde un archivo de configuración YAML |
Registro de Auditoría
MacNoise escribe dos flujos separados. Los eventos de telemetría (lo que tu EDR/SIEM ve realmente) van a stdout o a --output. Un segundo flujo opcional registra lo que hizo el propio MacNoise: qué módulos se ejecutaron, los resultados de prerequisitos/limpieza y las asignaciones MITRE, en JSONL OCSF 1.7.0.
./macnoise scenario configs/scenarios/amos_atomic_stealer.yaml --audit-log /tmp/audit.jsonl
El registro de auditoría se abre en modo anexar, por lo que los registros de varias ejecuciones se acumulan en un solo archivo para el análisis por lotes. Si vas a añadir un módulo y quieres saber cómo se clasifica un nuevo tipo de evento en OCSF, consulta CONTRIBUTING.md.
Referencia de Módulos
La documentación de los módulos se encuentra junto a cada categoría:
| Category | 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 |
Escenarios
Los escenarios encadenan módulos en secuencias ordenadas: un único archivo YAML que reproduce un patrón de intrusión de múltiples etapas contra tus detecciones.
| File | Description |
|---|---|
network_only.yaml | Todos los módulos de red |
edr_validation.yaml | Cobertura integral de detección EDR |
full_sweep.yaml | Todas las categorías |
lazarus_group.yaml | Grupo Lazarus: inyección de dylib, descubrimiento de servicios, reverse shell, persistencia de plist |
amos_atomic_stealer.yaml | AMOS / Atomic Stealer: infostealer MaaS, bypass de Gatekeeper, volcado del llavero, exfiltración ZIP, persistencia de backdoor |
Los dos escenarios APT siguen secuencias de intrusión reales y documentadas, técnica por técnica: cada archivo YAML cita la inteligencia de amenazas real sobre la que se basa y anota cada paso con la técnica MITRE que ejercita, así que empieza ahí para ver el desglose completo en lugar de un resumen aquí.
Dry-run primero:
./macnoise scenario configs/scenarios/<scenario>.yaml --dry-run
Coteja con tu SIEM/EDR: el comentario de cada paso nombra la técnica que debería activar. Si tras una ejecución real no hay una alerta que coincida, es una brecha en tu cobertura.
Escribe el tuyo propio:
name: My Custom Scenario
steps:
- module: net_connect
params:
target: "192.168.1.1"
port: "443"
- category: file
params:
base_dir: "/tmp/test"
Contribuciones
Consulta CONTRIBUTING.md para añadir nuevos módulos, el estilo de código y el proceso completo de PR.
Los lanzamientos están automatizados: release-please genera una nueva versión directamente desde el título del PR con Conventional Commit, de modo que feat: add net_tls module o fix: correct beacon jitter son tanto el título de tu PR como la entrada de tu changelog.
Descargo de Responsabilidad
MacNoise está diseñado para pruebas de seguridad autorizadas, validación de EDR e ingeniería de detección en sistemas que posees o para los que tienes permiso explícito por escrito para probar. Los autores no asumen ninguna responsabilidad por el mal uso.
Política de Código con IA
Las contribuciones de código con IA son bienvenidas, pero ten en cuenta que la revisión de código será actualmente un proceso liderado por humanos, lo que significa que solo podemos revisar una cantidad limitada de código. Limita los PR a una corrección específica o a un nuevo módulo de telemetría. Es probable que los PR con cambios extensos se cierren.