Native Windows logging tells you a process started; it rarely tells you what that process touched, loaded, connected to or injected into, which is exactly what investigators need. Microsoft Sysinternals System Monitor (Sysmon) fills that gap with a driver and service that record process, network, file, registry, WMI and DNS activity to the Windows event log, controlled by an XML configuration. Its value depends almost entirely on that configuration, on getting the events to a SIEM, and on noticing when an attacker turns it off. This guide covers the event IDs, configuration and filtering, community baselines, deployment, log volume, forwarding, tamper protection and detection use cases mapped to MITRE ATT&CK, with a short section on Sysmon for Linux. It is written for detection engineers, SOC analysts and endpoint teams.
Key takeaways
- Sysmon records, it does not detect. Microsoft states that Sysmon "does not provide analysis of the events it generates, nor does it attempt to hide itself from attackers"; detections live in your SIEM.
- The configuration is the product. Include and exclude rules decide whether you get useful telemetry or a flood; start from a maintained community baseline and tune it.
- Two delivery routes now exist. Standalone Sysinternals Sysmon (v15.22 at the time of writing) and built-in Sysmon, an optional feature on Windows 11 and Windows Server 2025 serviced through Windows Update. They cannot run together.
- Volume is set by a few event types. Network connections (3), image loads (7) and process access (10) generate the most events and need the tightest filters.
- Plan for tampering. ATT&CK v20 T1685 names Sysmon as a target; watch events 4, 16 and 255 and alert when a host goes silent.
What Sysmon adds to native logging and EDR
Sysmon installs a service and a kernel driver, writes to the Microsoft-Windows-Sysmon/Operational channel (Applications and Services Logs, Microsoft, Windows, Sysmon, Operational) with UTC timestamps, and generates events from early in the boot process. Each process gets a ProcessGuid that Microsoft describes as "a unique value for this process across a domain", which makes it far easier to join a process to its network connections, file writes and child processes than Windows process IDs, which are reused.
| Source | Strengths | Gaps | Best use |
|---|---|---|---|
| Windows Security log (4688, 4624 and others) | Built in; logon and account events Sysmon does not record | No hashes, no process access, network or DNS by process | Identity and authentication events. See the Windows Event Log Guide. |
| Sysmon | Hashes, ProcessGuid, parent lineage, process access, DNS, WMI, registry, file events; transparent, rule-driven and free | No analysis or response; configuration effort; a privileged attacker can disable it | Detection engineering, hunting, forensics, and a second telemetry path alongside EDR |
| EDR | Detection, response and vendor-managed telemetry | Telemetry often filtered, sampled or locked in the vendor console | Primary prevention and response. See the EDR Evasion and Defence Guide. |
Running Sysmon alongside EDR is common: Olaf Hartong's sysmon-modular even ships an "MDE-augment" profile intended "to complement Microsoft Defender for Endpoint with less overlap". The independent event stream matters most when the EDR agent is the thing an attacker targets.
Sysmon event ID reference
Event names follow Microsoft's Sysinternals page. Events 4 and 16 cannot be filtered.
| ID | Event | What it gives you | Notes |
|---|---|---|---|
| 1 | Process creation | Command line, hashes, parent process, user, ProcessGuid | The core event; keep broad |
| 2 | File creation time changed | Timestomping evidence | Many legitimate processes do this |
| 3 | Network connection | TCP/UDP connections by process, with ports and addresses | Disabled by default; high volume |
| 4 | Sysmon service state changed | Service started or stopped | Cannot be filtered |
| 5 | Process terminated | End of process lifetime | Useful for duration and short-lived processes |
| 6 | Driver loaded | Driver hashes and signature information | Low volume; high value |
| 7 | Image loaded | DLLs loaded by a process | Disabled by default; very high volume |
| 8 | CreateRemoteThread | Thread created in another process | Classic injection signal |
| 9 | RawAccessRead | Raw disk reads using \\.\ | Locked-file theft such as registry hives |
| 10 | ProcessAccess | One process opening another, with access rights | "Significant amounts of logging"; filter to sensitive targets |
| 11 | FileCreate | File created or overwritten | Filter by path and extension |
| 12, 13, 14 | Registry object create and delete; value set; key and value rename | Registry changes with values | Target autostart and security settings |
| 15 | FileCreateStreamHash | Alternate data streams, such as Zone.Identifier | Shows where downloads came from |
| 16 | ServiceConfigurationChange | Sysmon configuration changed | Cannot be filtered; tamper signal |
| 17, 18 | Pipe created; pipe connected | Named pipe activity | Common to lateral movement and C2 frameworks |
| 19, 20, 21 | WMI event filter; consumer; consumer-to-filter binding | WMI event subscriptions | Rare in normal use |
| 22 | DNS query | Domain queried, by process | Windows 8.1 and later |
| 23 | FileDelete (archived) | Deleted file copied to the archive directory | Needs disk space and an ACL-protected folder |
| 24 | ClipboardChange | Clipboard contents changed | Privacy-sensitive; use sparingly |
| 25 | ProcessTampering | Process image change, such as hollowing or herpaderping | Low volume; high value |
| 26 | FileDeleteDetected | File deletion logged without archiving | Cheaper alternative to 23 |
| 27 | FileBlockExecutable | Blocked creation of a PE executable | Preventive; test before enforcing |
| 28 | FileBlockShredding | Blocked shredding by tools such as SDelete | Preventive |
| 29 | FileExecutableDetected | New PE executable created | Detect-only counterpart to 27 |
| 255 | Error | Internal Sysmon error | Alert on it |
Configuration and filtering
The configuration is an XML file applied with sysmon -accepteula -i config.xml at install and sysmon -c config.xml afterwards; neither needs a reboot. sysmon -s prints the schema, and the schemaversion attribute is independent of the binary version so older files still parse. Key top-level settings:
- HashAlgorithms: MD5, SHA1, SHA256, IMPHASH or
*. Pick what your threat intelligence uses; IMPHASH helps cluster related malware. - CheckRevocation and DnsLookup: signature revocation checks and reverse DNS, both on by default. Reverse lookups generate traffic from every host; consider turning DnsLookup off and enriching in the SIEM.
- ArchiveDirectory and CopyOnDelete settings: control where event 23 keeps deleted files.
- DriverName: changes the driver name, which makes simple name-based tampering slightly harder.
Filtering rules, from the Microsoft schema documentation:
- onmatch="include": only matching events are logged. An empty include block logs nothing for that event; an empty exclude block logs everything.
- onmatch="exclude": everything is logged except matches. When both exist for an event, "exclude matches take precedence".
- Combining conditions: conditions on the same field are ORed, conditions on different fields are ANDed. A
RuleGroupwithgroupRelation="and"or"or"makes the logic explicit. - Operators:
is,is any,is not,contains,contains any,contains all,excludes,begin with,end with,not begin with,not end with,less than,more thanandimage, all case-insensitive. - Rule names: a
nameattribute on a rule is written into the event's RuleName field, so naming rules after ATT&CK technique IDs tags events at source.
An illustrative fragment that logs only access to LSASS and tags it (schema per Microsoft's Sysmon documentation):
<RuleGroup name="lsass" groupRelation="or">
<ProcessAccess onmatch="include">
<TargetImage name="T1003.001" condition="end with">\lsass.exe</TargetImage>
</ProcessAccess>
</RuleGroup>
Write exclusions as narrowly as possible. An exclusion on Image ending with a filename, rather than the full path, lets an attacker hide by naming a tool after an excluded program.
Community baseline configurations
| Baseline | Approach | Strengths | Watch for |
|---|---|---|---|
| SwiftOnSecurity sysmon-config | One heavily commented file, "a Microsoft Sysinternals Sysmon configuration file template with default high-quality event tracing" | Readable as a tutorial; filters chosen for low performance impact; simple to deploy as sysmonconfig-export.xml | Assumes software installs system-wide, not under user profiles; the README asks you to test locally and exclude antivirus activity |
| Olaf Hartong sysmon-modular | Small XML modules per event type with ATT&CK mappings, merged by a Go CLI (sysmon-modular merge) | Profiles: Balanced, Balanced with FileDelete, Excludes only (very verbose), Research (extremely verbose, short sessions) and MDE-augment; easy to add or remove modules; MIT licence | The README stresses that ATT&CK mappings show useful telemetry, not guaranteed detection, and that "every configuration is a starting point" |
SwiftOnSecurity's README describes sysmon-modular as able to "act as a superset of sysmon-config". Choose the single file if you want something a small team can read end to end; choose modular if you maintain several profiles (workstation, server, domain controller) and want changes reviewed module by module. Either way, keep your fork in version control and record which upstream commit it came from.
Deployment and updates at scale
- Choose the delivery route: built-in Sysmon is disabled by default and enabled with
Enable-WindowsOptionalFeature -Online -FeatureName Sysmon, then configured withsysmon -i. Microsoft delivers its improvements through Windows quality updates and security fixes in the monthly security release. Standalone Sysmon is updated by redeploying the Sysinternals binary. Microsoft states the two "can't be enabled on the same device at the same time" and standalone must be uninstalled first. - Distribute with the tools you already trust: Configuration Manager, Intune Win32 apps or remediation scripts, Group Policy startup scripts, or your server configuration management. The script should install if missing, compare the installed config (dumped with
sysmon -c) to the approved version, and update if different. - Version the configuration: include a version string in a comment and a named rule, and report it per host so you can prove fleet adoption.
- Different profiles by role: domain controllers, servers, developer workstations and standard endpoints have different noise. Avoid one configuration everywhere.
- Localisation: built-in Sysmon localises the rendered message but not the XML event data, so parse the XML fields, not message text.
Performance and log volume
Microsoft warns that monitoring all image loads "will generate a significant amount of logging" and that process access monitoring "should only be done so with filters that remove expected accesses". sysmon-modular warns its Research profile "can consume substantial CPU, memory and logging capacity". Practical controls:
- Measure before rollout: record events per host per day by event ID on representative pilot machines, and size SIEM licences and the Sysmon channel's maximum log size from that.
- Exclude your own tooling: antivirus, EDR, backup and management agents generate repetitive file, registry and process access events.
- Filter at source, then in the pipeline: filter in Sysmon what you will never need; drop or summarise the rest in the pipeline. See the Security Data Pipeline Guide.
- Use high-volume events selectively: enable 7 only for specific DLLs or processes, and keep 3 for servers and unusual processes rather than every browser connection.
Forwarding to a SIEM
Windows Event Forwarding (WEF) sends selected events to a Windows Event Collector (WEC) using WinRM. Microsoft recommends source-initiated (push) subscriptions configured by Group Policy for scale, and plans for about 3,000 events per second on average per collector. Add the Sysmon channel to the subscription query with <Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>. For the Security channel, clients need the Network Service account in the Event Log Readers group. The alternative is a SIEM or log shipper agent on each host, which avoids collector infrastructure but adds another agent to manage. Whichever route you choose, forward to storage the endpoint cannot alter and retain long enough for investigations. See the SIEM Guide and the Log Management and Retention Guide.
Tampering and protecting Sysmon
ATT&CK v20 technique T1685 Disable or Modify Tools (tactic TA0112 Defense Impairment) names Sysmon as a target, and T1685.001 covers disabling or modifying the Windows event log. An administrator can uninstall Sysmon, unload its minifilter driver, change the configuration stored under the driver's service key in the registry, or clear and disable the channel. The Sysmon service runs as a protected process, which blocks many user-mode interactions, but not an attacker with full administrative rights.
- Alert on Sysmon's own events: event 4 (service stopped), 16 (configuration changed outside your deployment process) and 255 (errors).
- Alert on silence: ATT&CK's detection guidance highlights the "abnormal absence of expected telemetry". Build a heartbeat rule for hosts that stop sending Sysmon events while still sending others.
- Watch the tools: process creation for
sysmon -u,fltmc unloadandwevtutil clorsl /e:falseagainst the Sysmon channel, and registry writes to the Sysmon driver parameters. - Forward fast: events already in the SIEM survive a later log clear. See the EDR Evasion and Defence Guide for tamper protection in the wider endpoint stack.
Detection use cases mapped to ATT&CK
Each detection below joins Sysmon fields in the SIEM. Behaviour descriptions follow the ATT&CK technique pages; tune thresholds to your environment.
| Technique | Sysmon events | Detection logic |
|---|---|---|
| T1003.001 LSASS Memory | 10, 1, 11 | A process outside an allowlist of security and system tools opens lsass.exe with memory-read access, or a dump file appears soon after. See the Credential Dumping Guide. |
| T1059.001 PowerShell | 1, 3, 22 | powershell.exe launched by Office, browser or script hosts, with encoded or download commands, followed by outbound connections or DNS lookups. |
| T1218 System Binary Proxy Execution | 1, 3, 7 | rundll32, regsvr32 or mshta with unusual parents, network connections or DLLs from user-writable paths. See the Living off the Land Guide. |
| T1055 Process Injection | 8, 10, 25 | Remote thread creation into another process, or process image tampering, by non-system binaries. |
| T1547.001 Registry Run Keys | 12, 13 | New values under Run and RunOnce keys pointing to user-writable or unusual paths. |
| T1546.003 WMI Event Subscription | 19, 20, 21 | Any new permanent consumer or binding outside approved management tools. |
| T1047 Windows Management Instrumentation | 1 | Shells or script hosts spawned by WmiPrvSE.exe. |
| T1543.003 Windows Service and T1068 Exploitation for Privilege Escalation | 6, 13, 1 | New services or drivers, especially signed drivers with known vulnerabilities loaded on endpoints. |
| T1570 Lateral Tool Transfer and T1021.002 SMB/Windows Admin Shares | 11, 29, 17, 18, 3 | Executables written by the System process over SMB, followed by new services or named pipes. |
| T1071.004 DNS | 22 | Rare domains, high query rates or long subdomains from unusual processes. |
| T1685, T1685.001 | 4, 16, 255, 1 | Sysmon stopped, reconfigured or silent, or event log tooling run against its channel. |
Where identity fits: event 1 records the user behind every process. Service accounts and other non-human identities should have predictable process trees, so a service account launching cmd.exe, PowerShell or remote tools is a strong signal of a stolen or misused credential. See the Service Account Security Guide. For building, testing and maintaining these rules, see the Detection Engineering Guide.
Sysmon for Linux
Sysmon for Linux monitors "process lifetime, network connections" and file system writes, using eBPF through the SysinternalsEBPF library, and writes events to syslog. It uses the same XML configuration approach and is installed from Microsoft's Linux package repositories. The bundled sysmonLogView tool in /opt/sysmon filters and formats output, for example sudo tail -f /var/log/syslog | sudo /opt/sysmon/sysmonLogView. It complements, not replaces, auditd and EDR on Linux servers.
Rolling out Sysmon
- Define the questions: list the ATT&CK techniques you need to detect and the investigations you run, and map them to event IDs.
- Pick a baseline and fork it: import SwiftOnSecurity or a sysmon-modular Balanced profile into version control.
- Pilot: deploy to a ring of representative machines per role (including developers and servers), measure CPU, events per day and SIEM cost for two weeks, and tune exclusions.
- Forward and validate: confirm events arrive parsed in the SIEM, then test detections with safe simulations. See the Breach and Attack Simulation (BAS) Guide.
- Expand in rings: domain controllers and critical servers, then servers, then endpoints, checking volume at each step.
- Rollback: keep the previous config and reapply it with
sysmon -c, or uninstall withsysmon -u; neither needs a reboot.
Detection and measurement
- Coverage: percentage of Windows endpoints and servers that sent Sysmon events in the last 24 hours, by role.
- Config compliance: percentage of hosts running the approved configuration version.
- Volume: events per host per day by event ID, against the budget set in the pilot.
- Detection coverage: number of prioritised ATT&CK techniques with a tested Sysmon-based rule, and the pass rate of simulations.
- Silent hosts: count and time to investigate hosts that stop sending Sysmon telemetry.
Framework mapping
| Framework | Reference | Relevance |
|---|---|---|
| NIST CSF 2.0 | DE.CM-09, DE.AE-02 | Monitor computing hardware, software and runtime environments; analyse adverse events |
| NIST SP 800-53 Rev. 5 | AU-2, AU-9, AU-12, SI-4 | Event logging; protection of audit information; audit record generation; system monitoring |
| CIS Controls v8.1 | 8.2, 8.5, 8.9, 13.1 | Collect audit logs; collect detailed audit logs; centralise logs; centralise security event alerting |
| ISO/IEC 27001:2022 Annex A | A.8.15, A.8.16 | Logging; monitoring activities |
| MITRE ATT&CK v20 | T1685, T1685.001 | Defence impairment targeting Sysmon and event logs |
Common failure patterns
- Default or untuned config: installing with no config or a verbose research profile, then turning Sysmon off when the SIEM bill arrives.
- Logs stay on the host: events are never forwarded, so they are cleared or rolled over before anyone looks.
- Broad filename exclusions: excluding by image name lets attackers rename tools to match.
- Configuration drift: nobody knows which config version each host runs, and old hosts miss new rules.
- No tamper alerting: events 4 and 16 are collected but never alerted on, and silent hosts go unnoticed.
- Telemetry without detections: data lands in the SIEM but no rules or hunts use it.
Practitioner checklist
- Decide between standalone and built-in Sysmon per platform and never run both.
- Fork SwiftOnSecurity or sysmon-modular into version control and keep role-specific profiles.
- Pilot, measure events per host per day and tune exclusions with full paths.
- Name rules after ATT&CK technique IDs so RuleName tags events at source.
- Forward the Sysmon channel through WEF or an agent to storage endpoints cannot alter.
- Alert on events 4, 16 and 255 and on hosts that stop sending Sysmon events.
- Report config version per host and remediate drift.
- Build and test detections for LSASS access, injection, persistence and lateral movement.
- Deploy Sysmon for Linux where Linux servers lack equivalent telemetry.
Standards and references
- Microsoft Learn: Sysmon (Sysinternals)
- Microsoft Learn: Built-in Sysmon overview
- Microsoft Learn: Enable and configure Sysmon in Windows
- Microsoft Learn: Use Windows Event Forwarding to help with intrusion detection
- MITRE ATT&CK: T1685 Disable or Modify Tools
- Microsoft: Sysmon for Linux
- SwiftOnSecurity: sysmon-config
- Olaf Hartong: sysmon-modular
Related NHI Mgmt Group resources: Detection Engineering Guide · Windows Event Log Guide · SIEM Guide · Credential Dumping Guide · Living off the Land Guide