macOS Defensive Apps
Firewalls
- Little Snitch: It will monitor every connection made by each process. Depending on the mode (silent allow connections, silent deny connection and alert) it will show you an alert every time a new connection is stablished. It also has a very nice GUI to see all this information.
- LuLu: Objective-See firewall. This is a basic firewall that will alert you for suspicious connections (it has a GUI but it isn't as fancy as the one of Little Snitch).
Persistence detection
- KnockKnock: Objective-See application that will search in several locations where malware could be persisting (it's a one-shot tool, not a monitoring service).
- BlockBlock: Like KnockKnock by monitoring processes that generate persistence.
Keyloggers detection
- ReiKey: Objective-See application to find keyloggers that install keyboard "event taps"
Endpoint telemetry / execution control
- Santa: Binary authorization and monitoring system for macOS. It uses an Endpoint Security client to authorize
execevents before code runs, so it is common in enterprise fleets focused on allowlisting/denylisting instead of only post-execution detection. - Mac Monitor: Procmon-like macOS dynamic analysis tool. It ingests Endpoint Security telemetry (process, file, interprocess, login, and XProtect-related events) and is useful to understand what a mature ES-based sensor can actually observe.
- ProcessMonitor / FileMonitor / DNSMonitor: Lightweight Objective-See tools for process, file, and DNS telemetry. On modern macOS they have extra prerequisites such as root, Terminal Full Disk Access, or System/Network Extension approval. For more instrumentation ideas check this other page about macOS app inspection/debugging.
Quick triage of defensive tooling
Most modern macOS security products run as some combination of System Extensions / Endpoint Security clients, launchd agents/daemons, and applications with Full Disk Access. A quick operator checklist:
# System / network extensions (EDRs, DNS filters, firewalls, VPNs)
systemextensionsctl list
# Legacy kernel agents on older boxes / upgraded fleets
kmutil showloaded 2>/dev/null | rg -i 'crowdstrike|carbon|sentinel|defender|sophos|eset|symantec|trellix|sentinelone'
# Older releases:
kextstat 2>/dev/null | rg -i 'crowdstrike|carbon|sentinel|defender|sophos|eset|symantec|trellix|sentinelone'
# Userland agents / helpers
launchctl print system | rg -i 'santa|lulu|little snitch|crowdstrike|sentinel|defender|jamf|sophos|eset|symantec'
launchctl print gui/$UID | rg -i 'santa|lulu|little snitch|crowdstrike|sentinel|defender|jamf|sophos|eset|symantec'
# Inspect code-signing and entitlements of a defensive app
codesign -dvv --entitlements :- /Applications/SomeAgent.app
# Check common TCC grants used by sensors / telemetry tools
for db in "$HOME/Library/Application Support/com.apple.TCC/TCC.db" "/Library/Application Support/com.apple.TCC/TCC.db"; do
[ -f "$db" ] || continue
echo "== $db =="
sqlite3 "$db" 'SELECT service,client,auth_value,last_modified FROM access WHERE service IN ("kTCCServiceSystemPolicyAllFiles","kTCCServiceEndpointSecurityClient") ORDER BY last_modified DESC;'
done
If systemextensionsctl list shows a sensor as [activated enabled], it is usually the fastest indicator that the extension is actually live. On macOS 15 Sequoia and later, MDM can also mark specific security extensions as non-removable from the UI, so "disable it from System Settings" is no longer a safe assumption. For internals, see macOS System Extensions.
Recent native telemetry defenders can consume
Recent macOS releases made some previously annoying-to-detect user-driven bypasses much noisier for blue teams:
- macOS 15+: Endpoint Security clients can receive
gatekeeper_user_overrideevents, so manual Gatekeeper bypasses can be centrally logged. - Current macOS Endpoint Security tooling can also ingest XProtect malware detection events, making it easier to confirm what Apple already detected on the endpoint.
- macOS 15.4+: Endpoint Security adds
tcc_modify, which finally gives defenders a supported way to monitor TCC grants/revokes instead of scraping TCC debug logs.
# Gatekeeper user overrides
sudo eslogger gatekeeper_user_override
# XProtect detections
sudo eslogger xp_malware_detected
# macOS 15.4+
sudo eslogger tcc_modify
This is useful both for defenders and for red teamers doing self-assessment: if the target has a mature ES-based stack, user-approved Gatekeeper / TCC bypass chains may be much more visible than they used to be. For background on these protections, see Gatekeeper / Quarantine / XProtect and TCC.