Volver a actualizaciones
Nuevo releaseJul 31, 2026

macnoise v0.2.0

Generador extensible de telemetría del sistema macOS.

Compartir
Descripción de la imagen

CI Release

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

CategoryDescriptionModules
networkConexiones salientes, DNS, beaconing, listeners, reverse shells, exfiltraciónnet_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil
processCreación de procesos, entrega de señales, inyección de dylib, descubrimiento, bypass de Gatekeeper, osascriptproc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript
fileCreación de archivos, modificación, lectura de credenciales del navegador, archivado, ocultaciónfile_create, file_modify, file_browser_creds, file_archive, file_hide
tccSondeos de permisos TCC (FDA, Contactos, Llavero)tcc_fda, tcc_contacts, tcc_keychain
endpoint_securityDisparadores de eventos del framework ESes_file, es_process
servicePersistencia de LaunchAgent/Daemon, cron, perfil de shellsvc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile
plistCreación y modificación de plistplist_create, plist_modify
xpcEnumeración de servicios XPCxpc_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

FlagDefaultDescription
--formathumanFormato de salida: human o jsonl
--output(ninguno)Escribe la salida en un archivo (además de stdout)
--verbosefalseSalida verbosa, incluidos los errores de limpieza
--dry-runfalseVista previa de las acciones sin ejecutarlas
--timeout30Tiempo 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:

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.

FileDescription
network_only.yamlTodos los módulos de red
edr_validation.yamlCobertura integral de detección EDR
full_sweep.yamlTodas las categorías
lazarus_group.yamlGrupo Lazarus: inyección de dylib, descubrimiento de servicios, reverse shell, persistencia de plist
amos_atomic_stealer.yamlAMOS / 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.

Categorías