wazuh-windows-sysmon · v1.0 · 2026-09-24 · sha256 474f8aa0477409ca
wazuh-windows-sysmon v1.0A
Immutable. This exact content never changes and is served at /api/v1/blob/474f8aa0477409ca.
--- name: wazuh-windows-sysmon description: Interpret Wazuh Windows EventChannel and Sysmon alerts — logon, privilege, account and service events, Sysmon detection groups, field paths and logon types — mapping Windows Event IDs to Wazuh rules; use for any Windows or Sysmon alert and for Windows-focused hunts. allowed-tools: get_wazuh_alerts search_security_events get_alerts_aggregated get_wazuh_rules_summary get_case search_cases add_finding link_mitre metadata: category: detection display_name: Wazuh Windows and Sysmon standards: [mitre-attack, nist-csf-2, cis-v8-1, sigma] version: "1.0" --- # Wazuh Windows and Sysmon Windows logs reach Wazuh through the EventChannel collector and are decoded as JSON under `data.win.*`. Security-log rules live in the `windows_security` group; Sysmon rules in the `sysmon` group. ## Field paths | Field | Content | |---|---| | `data.win.system.eventID` | Windows Event ID | | `data.win.system.channel` | `Security`, `System`, `Microsoft-Windows-Sysmon/Operational`, … | | `data.win.system.computer` | Host name as Windows reports it | | `data.win.eventdata.targetUserName` / `subjectUserName` | Account acted on / acting account | | `data.win.eventdata.logonType` | Logon type (below) | | `data.win.eventdata.ipAddress` / `workstationName` | Source of a network logon | | `data.win.eventdata.status` / `subStatus` | Failure reason codes | | `data.win.eventdata.image`, `parentImage`, `commandLine`, `hashes` | Sysmon process fields | | `data.win.eventdata.destinationIp`, `destinationPort` | Sysmon network fields | | `data.win.eventdata.targetObject` | Sysmon registry target | ## Security log: Event ID → Wazuh rule | Windows event | Wazuh rule (level) | Notes | |---|---|---| | Event ID 4624 logon success | rule 60106 (level 3) | Workstation variant: rule 60118 (level 3) | | Event ID 4625 logon failure | rule 60122 (level 5) | Parent: rule 60105 (level 5) | | Repeated Event ID 4625 | rule 60204 (level 10) | Correlation: multiple Windows logon failures within 240s | | Event ID 4740 account locked out | rule 60115 (level 9) | | | Event ID 4720 / Event ID 4722 account created / enabled | rule 60109 (level 8) | | | Event ID 4738 account changed | rule 60110 (level 8) | | | Administrators group changed | rule 60154 (level 12) | Privilege escalation / persistence | | Event ID 4672 special privileges assigned | rule 67028 (level 3) | In the WEF baseline ruleset; noisy on its own — join with 4624 for the same logon | | Event ID 1102 audit log cleared | rule 60117 (level 9) | Also rule 593 (level 9, "Microsoft Event log cleared") — defence evasion, always investigate | | Audit policy changed | rule 60112 (level 8) | | | Event ID 7045 new service installed (System log) | rule 61138 (level 5) | Persistence / lateral movement (PsExec creates a service) | ## Logon types 2 interactive, 3 network (SMB, most lateral movement), 4 batch, 5 service, 7 unlock, 8 network cleartext, 9 new credentials (runas /netonly; pass-the-hash indicator with NTLM), 10 remote interactive (RDP), 11 cached. Type 3 or 10 from workstation to workstation is unusual in most environments. ## Sysmon detection groups Sysmon events are decoded under generic `sysmon_event*` groups; Wazuh's behavioural detections sit in `sysmon_eid*_detections` groups — query these, not the raw event groups: | Group | Sysmon event | Example rules | |---|---|---| | `sysmon_eid1_detections` | Process creation | rule 92000 (level 4, scripting interpreter spawned a new process), rule 92002 (level 6, scripting interpreter spawned a Windows command shell) | | `sysmon_eid3_detections` | Network connection | rule 92104 (level 15, suspicious binary created network connection), rule 92103 (level 6, LDAP activity from PowerShell) | | `sysmon_eid7_detections` | Image loaded | rule 92151 (level 12, binary loaded PowerShell automation library — unmanaged PowerShell) | | `sysmon_eid8_detections` | CreateRemoteThread | rule 92400 (level 12, possible code injection on explorer.exe) | | `sysmon_eid10_detections` | Process access | rule 92900 (level 12, LSASS accessed with read permissions — credential dumping) | | `sysmon_eid11_detections` | File created | rule 92213 (level 15, executable dropped in folder commonly used by malware) | | `sysmon_eid13_detections` | Registry value set | rule 92301 (level 12, suspicious file extension in registry ASEP), rule 92307 (level 3, new service creation found in registry) | Sysmon Event ID 22 (DNS query) is decoded (group `sysmon_event_22`) but the stock ruleset has few detections on it — DNS hunting needs custom rules (example to create: custom rule 100400 for queries to newly registered domains). ## Procedure 1. Read `data.win.system.eventID`, channel and the key eventdata fields before the rule description. 2. For authentication: build the sequence per account and source — failures (rule 60122) → lockout (rule 60115) or success (rule 60106) → privileges (rule 67028) → group change (rule 60154). Success after a failure burst from the same source is the escalation point. 3. For process detections: parent → child → command line → network → file drops, all on the same agent within minutes (`get_wazuh_alerts agent_id="<id>" rule_groups=["sysmon"]`). 4. Check prevalence with `get_alerts_aggregated` before calling a rule "suspicious" — some Sysmon rules fire constantly for admin tooling. 5. Map to ATT&CK from the behaviour (see mitre-attack-mapping); `rule.mitre` is a hint. ## Noise Service accounts with type 5 logons, backup/monitoring accounts, SCCM/Intune, Windows Update spawning scripting hosts, IT admin PowerShell. Record the benign pattern so detection-engineer can scope a level-0 child rule. ## Output `add_finding` with the Event ID sequence (account, source IP/workstation, logon type, timestamps), Sysmon process chain and verdict; `link_mitre` for supported techniques (e.g. T1110, T1078, T1021.001, T1543.003, T1070.001, T1003.001, T1055).