Volver a actualizaciones
Nuevo releaseAug 2, 2026

macnoise v0.2.1

Generador extensible de telemetría del sistema macOS.

Compartir
Descripción de la imagen

CI Release

MacNoise

MacNoise genera telemetría real de macOS: conexiones de red, escrituras de archivos, creación de procesos, mutaciones de plist, sondas TCC y más. Apúntalo a una máquina que ejecute tu stack de EDR, SIEM o firewall y observa qué se activa realmente, no lo que la hoja de datos del proveedor afirma que se activará.

Para conocer los antecedentes 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 scenario configs/scenarios/file_flow.yaml --format jsonl --output /tmp/events.jsonl

Categorías de telemetría

CategoríaDescripción
networkConexiones TCP, HTTP, listeners, reverse shells, DNS y TLS
processEjecución exacta, entrega de señales, inyección de dylib, omisión de Gatekeeper y osascript
fileDescubrimiento acotado, lecturas/copias literales, creación, modificación, archivado, ocultamiento y cifrado señuelo
tccSondas de permisos TCC con requisitos exactos de Acceso Total al Disco, Contactos, Accesibilidad o Grabación de Pantalla
credentialAcceso nativo al almacén de credenciales
volumeCreación de imágenes de disco y ciclo de vida de volúmenes montados
serviceEnumeración de Launchd, persistencia de LaunchAgent/Daemon, cron, perfil de shell y elementos de inicio de sesión
plistCreación y modificación de plist
evasionBorrado de registros, timestomping, eliminación de historial y enmascaramiento

Consulte el catálogo de módulos generado para conocer cada módulo, parámetro, salida, tipo de evento, privilegio y mapeo ATT&CK.

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> [--input key=val] [--report report.json]
                                                Run a YAML scenario
macnoise categories                           List categories with counts
macnoise version                              Print version

Flags globales

FlagPredeterminadoDescripción
--formathumanFormato de salida: human o jsonl
--output(ninguno)Escribir la salida en un archivo (además de stdout)
--verbosefalseSalida detallada, incluidos los errores de limpieza
--dry-runfalsePrevisualizar las acciones sin ejecutarlas
--no-cleanupfalseDejar los artefactos del módulo en su lugar (ver más abajo)
--timeout30Tiempo de espera por módulo en segundos
--audit-log(ninguno)Escribir registros de auditoría OCSF 1.7.0 en un archivo JSONL
--config(ninguno)Cargar los valores predeterminados desde un archivo de configuración YAML
--run-idgeneradoEstablecer el identificador de correlación para esta ejecución

Flujo de datos de escenarios

Los archivos de escenario usan version: 1. Las entradas y las salidas de los módulos están tipadas, y un paso posterior las referencia con asignaciones explícitas en lugar de interpolación de cadenas:

version: 1
name: Archive one generated artifact
on_error: stop
inputs:
  content:
    type: string
    required: true
steps:
  # Custom modules declare these outputs through OutputSpecs.
  - id: create
    module: custom_create
    params:
      content:
        input: content
  - id: archive
    module: custom_archive
    params:
      source:
        output: create.path
outputs:
  archive:
    output: archive.path

Solo se puede hacer referencia a las salidas declaradas por un módulo. Los escenarios locales se pueden reutilizar con un paso include; las inclusiones son relativas, no pueden atravesar por encima del directorio raíz de escenarios, se comprueba que no haya ciclos y están limitadas a ocho niveles. MacNoise valida el grafo completo antes de la ejecución, asigna a la ejecución un espacio de trabajo privado y limpia los módulos invocados en orden inverso. Use --input content=value para proporcionar entradas y --report report.json para el informe de ejecución versionado.

Dejar artefactos en su sitio

Por defecto, cada módulo se revierte a sí mismo cuando termina. Normalmente eso es lo que se desea, pero implica que una detección solo llega a ver el evento de instalación. Para validar que tu stack detecta la persistencia en sí misma —un LaunchAgent situado en ~/Library/LaunchAgents, una entrada de cron, un perfil de shell modificado—, el artefacto tiene que seguir ahí cuando se ejecute el escaneo:

./macnoise run svc_launch_agent --no-cleanup

Cada módulo que omite la limpieza imprime una línea nombrándose a sí mismo, y el registro de auditoría registra cleanup_result: skipped en lugar de ok, de modo que una ejecución que dejó persistencia atrás nunca se confunde con una que limpió. Use macnoise info <module> para ver qué crea un módulo determinado.

Usted es responsable de eliminar estos elementos por sí mismo. Volver a ejecutar el mismo módulo sin el flag limpiará solo lo que esa ejecución creó, no lo que dejó atrás una ejecución anterior con --no-cleanup.

Registro de auditoría

MacNoise escribe dos flujos separados. Los eventos de telemetría —lo que su EDR/SIEM realmente ve— van a stdout o a --output. Un segundo flujo opcional registra lo que MacNoise hizo por sí mismo: qué módulos se ejecutaron, los resultados de prereq/cleanup y las asignaciones MITRE, en JSONL de OCSF 1.7.0.

./macnoise scenario configs/scenarios/amos_atomic_stealer.yaml --audit-log /tmp/audit.jsonl

Cada evento de telemetría lleva un outcome autoritativo y un subject tipado (esquema 2.0). El outcome indica qué le ocurrió a la acción que MacNoise intentó ejecutar, mientras que el subject identifica el archivo, proceso, endpoint de red, servicio o recurso involucrado:

outcomeSignificadoMarcador humano
executedLa acción se ejecutó e hizo lo que el módulo afirma[+]
deniedLa acción se ejecutó y el entorno la rechazó[-]
indeterminateLa acción se ejecutó, pero no se puede concluir nada[?]
errorMacNoise mismo falló al llevar a cabo la acción[!]

Categorías