Introducing MacNoise!
MacNoise is a modular, open-source macOS telemetry noise generator built to help defenders validate EDR, SIEM, and firewall detection coverage by emitting real system events — network connections, process spawns, dylib injection, file writes, plist mutations, TCC permission probes, and launch agent persistence. It ships a REPL (macnoise run/list/info/scenario), a dry-run testing mode, and OCSF-compliant JSONL audit/telemetry logs tagged with MITRE ATT&CK mappings and correlation IDs, and supports YAML "scenarios" that chain modules to emulate specific adversary tradecraft (e.g., an EDR Validation Suite covering proc_inject, net_dns, tcc_fda). It's positioned as a macOS-focused complement to the EDR-Telemetry project and Windows-centric atomic-testing tools, aimed at surfacing logging gaps before an incident.
What it is
MacNoise, a modular macOS telemetry noise generator written in Go, released by 0xv1n. It emits real system events — network connections, DNS lookups, file writes, process spawns, process injection, plist/service mutations, and TCC permission probes — so defenders can confirm their EDR/SIEM/firewall actually records them. Repo: https://github.com/0xv1n/macnoise.
How it works
It ships as a cross-platform binary with a REPL. Modules are grouped into categories and each carries MITRE technique mappings viewable via macnoise info <module>. Two output streams are kept distinct:
- Telemetry events —
TelemetryEventrecords to stdout (or--output <file>); this is what your tooling is supposed to see. - Audit records — a separate structured log of what MacNoise itself did (modules run, prereq outcomes, timing, events emitted, cleanup, MITRE mappings), meant to be sent to the SIEM to confirm each run.
Both streams are OCSF JSONL; MacNoise-specific fields sit in the OCSF unmapped object to stay schema-compliant. Audit runs are tagged with correlation IDs, so you can pivot per-module in the SIEM to pinpoint which event types went unlogged.
What to do
Core commands:
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 countsPreview without emitting telemetry, and capture the audit trail, with:
--dry-run
--audit-logScenarios chain modules to emulate adversary tradecraft. A step references a module plus params, e.g. proc_spawn, proc_inject (dylib_path, target), net_connect (target, port), net_dns (domains), file_create, svc_launch_agent, tcc_fda, tcc_contacts. The repo bundles sample scenarios including an "EDR Validation Suite." Scenario YAML can be generated by feeding a threat-intel report plus the repo's "AI Guidance" doc to an LLM.
Caveats
The author states coverage is not feature complete — telemetry breadth depends on community contributions and their own time. The tool validates logging gaps; it does not remediate them. Process injection and TCC probing modules perform real actions (e.g. writing a dylib to /tmp, launch agents), so use --dry-run first to eye-check behavior before running against production endpoints.
Organisations named here
- EDR-Telemetry
Technologies named here
- MacNoise
- macOS
- EDR-Telemetry project
- MITRE ATT&CK
- EDR
- SIEM
Techniques named here
- Process spawn / execution
- Process injection
- Process signaling
- Network connection
- DNS resolution / lookups
- File creation
- Persistence via LaunchAgent
- TCC permission probing - Full Disk Access
- TCC permission probing - Contacts
- Plist mutation
- MITRE ATT&CK technique mapping
Related in Blue Team & Detection
AI-Coded Malware | Analyzing Vibe-Coded AD Enumeration | Huntress
