Sysmon Event ID 1: Process Creation — Fields, Hunting and KQL
Published
A process started — Sysmon records what ran, its full command line, file hashes and version information, the parent process with its command line, the account and the logon session it ran in.
Logged to: Microsoft-Windows-Sysmon/Operational, on the machine where it happened; filtered in a Sysmon configuration by the <ProcessCreate> element.
Microsoft's description
Event ID 1: Process creation
The process creation event provides extended information about a newly created process. The full command line provides context on the process execution. The ProcessGUID field is a unique value for this process across a domain to make event correlation easier. The hash is a full hash of the file with the algorithms in the HashType field.
Source: Microsoft's Sysmon documentation
Every field of event 1
| Field | What it tells you |
|---|---|
| Image | Full path of the executable that started. Read the folder before the file name — a system binary name outside System32 is a classic disguise. |
| CommandLine | The full command line, which Microsoft calls the context on the process execution. Encoded PowerShell, download URLs and LOLBin arguments are all here. |
| ParentImage | The executable that started this process. A shell or script host whose parent is Word, Excel, Outlook or a browser is a document or page running code. |
| ParentCommandLine | The parent's own command line — which document Word opened, or which script wscript ran — something Windows' event 4688 does not record. |
| OriginalFileName | The name the file was compiled with, from its version information. When it differs from the Image name, the binary was renamed — a way to slip past rules that match on file names. |
| Hashes | Hashes of the executable, in the algorithms set by the configuration's HashAlgorithms (for example SHA256=…,MD5=…), ready to check against threat intelligence. |
| User | The account the process runs as, as DOMAIN\user — SYSTEM, a service account or a person. |
| LogonId | Hexadecimal logon session ID; the same value is the Target Logon ID of the 4624 that started the session, which gives the logon type and source address. |
| IntegrityLevel | The process's integrity level (Low, Medium, High, System). High for a process a normal user started means it was elevated. |
| ProcessGuid | Microsoft — "a unique value for this process across a domain to make event correlation easier". It reappears as ParentProcessGuid in the children and as ProcessGuid in the process's network, file and registry events. |
| RuleName | — |
| UtcTime | — |
| ProcessId | — |
| FileVersion | — |
| Description | — |
| Product | — |
| Company | — |
| CurrentDirectory | — |
| LogonGuid | — |
| TerminalSessionId | — |
| ParentProcessGuid | — |
| ParentProcessId | — |
| ParentUser | — |
Field names and order from Sysmon's manifest (schema 4.90), checked on every build.
What it records
Sysmon writes Event ID 1 to Microsoft-Windows-Sysmon/Operational each time a process starts on the machine, unless the configuration’s <ProcessCreate> rules filter it out. Microsoft’s description is that it “provides extended information about a newly created process”, and the extension is what makes it the backbone of endpoint investigation: the full CommandLine, Hashes of the executable, its version information (FileVersion, Description, Product, Company and OriginalFileName), and the parent — ParentImage, ParentCommandLine and, in recent schemas, ParentUser.
Three identifiers tie the event to everything else. ProcessGuid is unique to this process; Microsoft designed it for correlation, so the same value appears in the process’s network connections (event 3), file creations (event 11), registry changes (events 12–14) and DNS queries (event 22), and as ParentProcessGuid in its children. LogonId joins the process to the Windows logon session in the Security log. ProcessId is the familiar PID, but PIDs are reused, so use the GUID for joins.
When it matters
Almost every attack that runs code leaves an event 1, and most of the signal is in a few readings:
| Pattern | Reading |
|---|---|
| ParentImage is WINWORD.EXE, EXCEL.EXE, OUTLOOK.EXE or a browser, Image is a shell or script host | A document, attachment or page executing code |
CommandLine has -enc, -EncodedCommand, FromBase64String or IEX | Obfuscated PowerShell — decode before judging |
certutil -urlcache, bitsadmin /transfer, mshta http…, regsvr32 /i:http… | A Windows binary used to download or run remote code |
| OriginalFileName differs from the Image file name | A renamed binary (MITRE ATT&CK T1036.003) |
Image under \AppData\, \Temp\, \Users\Public\ or \ProgramData\ | Programs dropped by users or malware, not installed software |
| ParentImage is services.exe or wmiprvse.exe and Image is cmd.exe or powershell.exe | Remote execution through a service or WMI |
| IntegrityLevel High under a user account on a workstation | The user ran something elevated |
The parent-child pair carries more than either side alone: powershell.exe under explorer.exe is a user opening a console; the same binary under WINWORD.EXE is a macro.
How to investigate
In Microsoft Sentinel, Sysmon events are rows of the Event table with their fields in the EventData XML. This reads them and finds documents and browsers starting shells:
Event
| where TimeGenerated > ago(7d)
| where Source == "Microsoft-Windows-Sysmon" and EventID == 1
| extend D = parse_xml(EventData).DataItem.EventData.Data
| mv-apply d = D on (summarize f = make_bag(bag_pack(tostring(d["@Name"]), tostring(d["#text"]))))
| extend Image = tostring(f.Image), CommandLine = tostring(f.CommandLine), ParentImage = tostring(f.ParentImage),
ParentCommandLine = tostring(f.ParentCommandLine), Account = tostring(f.User)
| where ParentImage has_any ("WINWORD.EXE", "EXCEL.EXE", "POWERPNT.EXE", "OUTLOOK.EXE", "msedge.exe", "chrome.exe")
| where Image has_any ("cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe")
| project TimeGenerated, Computer, Account, ParentImage, ParentCommandLine, Image, CommandLine
Renamed binaries — the compiled name of a well-known tool under a different file name:
Event
| where TimeGenerated > ago(30d)
| where Source == "Microsoft-Windows-Sysmon" and EventID == 1
| extend D = parse_xml(EventData).DataItem.EventData.Data
| mv-apply d = D on (summarize f = make_bag(bag_pack(tostring(d["@Name"]), tostring(d["#text"]))))
| extend Image = tostring(f.Image), OriginalFileName = tostring(f.OriginalFileName), Hashes = tostring(f.Hashes)
| extend FileName = tostring(split(Image, "\\")[-1])
| where OriginalFileName in~ ("PowerShell.EXE", "Cmd.Exe", "rundll32.exe", "regsvr32.exe", "mshta.exe", "certutil.exe")
| where FileName !~ OriginalFileName
| project TimeGenerated, Computer, Image, OriginalFileName, Hashes
Each hit leads to a session and a tree. Join LogonId to the 4624 with the same Target Logon ID for the logon type and source address; follow ProcessGuid to the process’s network connections, files and DNS queries, and to its children through ParentProcessGuid. Paste encoded command lines into the PowerShell decoder to read them without running them.
If the events you expect are missing, the configuration is the first suspect. A <ProcessCreate onmatch="exclude"> rule that drops a whole folder or product also drops anything an attacker places there. The Windows event 4688 page covers Windows’ own process creation event, useful where Sysmon is not installed.
Read a Sysmon log without a SIEM
Copy Microsoft-Windows-Sysmon%4Operational.evtx from C:\Windows\System32\winevt\Logs (or wevtutil epl Microsoft-Windows-Sysmon/Operational sysmon.evtx) and open it in the EVTX viewer: every event in a table, event 1 filterable, with the analyzer's checks for LSASS access, remote threads and suspicious command lines. Nothing is uploaded.
Related events
- Sysmon Event ID 3 Network connection
- Sysmon Event ID 5 Process terminated
- Sysmon Event ID 7 Image loaded
- Sysmon Event ID 10 ProcessAccess
- Sysmon Event ID 11 FileCreate
- Sysmon Event ID 22 DNSEvent (DNS query)
- Security Event ID 4688 A new process has been created
- Security Event ID 4624 An account was successfully logged on
Detect it
Frequently Asked Questions
- What is the difference between Sysmon Event ID 1 and Windows event 4688?
- Both record a process starting. Sysmon event 1 adds file hashes, the version information (including OriginalFileName), the parent's command line and a ProcessGuid that ties the process to its network, file and registry events. Windows event 4688 needs no agent but records the command line only when a group policy is enabled and has no hashes. Many environments collect both.
- Why does Sysmon not log every process?
- Sysmon logs what its configuration asks for. A <ProcessCreate onmatch="exclude"> section drops matching processes, and an "include" section logs only matching ones, so a community configuration that excludes noisy software also hides anything that imitates it. Check the RuleName field and your configuration when an expected process is missing.
- How do I find renamed binaries with Sysmon?
- Compare OriginalFileName with the file name at the end of Image. A copy of powershell.exe saved as svchost.exe keeps OriginalFileName PowerShell.EXE, so a mismatch for well-known tools is a strong signal; the query on this page lists them.
- Which parent-child pairs should I look at first?
- Office applications, Outlook and browsers starting cmd.exe, powershell.exe, wscript.exe, cscript.exe, mshta.exe, rundll32.exe or regsvr32.exe; services.exe or wmiprvse.exe starting shells (remote execution); and any process started from a temp, download or public folder. These cover the most common ways an intrusion first runs code.
Find every Sysmon 1 that matters
Open a Sysmon .evtx or XML export in the free browser analyzer: LSASS access, remote thread injection, process tampering, suspicious command lines and reverse-shell ports are flagged, with the events behind each. Nothing is uploaded.
Investigating something right now? LogTriage checks every address in the file against threat intelligence and writes the incident report: 10 analyses a month free. The incident pack adds the in-depth AI analysis and files up to 100 MB: 25 analyses for $19, one payment, no subscription. Pricing
Every query on this site's reference pages, the Sigma rules and a cheat sheet in one download: the Incident Response Kit, $29 once.