Sysmon Event ID 11: FileCreate — Dropped Files, Startup Folders, KQL
Published
A file was created or overwritten — Sysmon records the full path, the time the file was created and the process and account that wrote it.
Logged to: Microsoft-Windows-Sysmon/Operational, on the machine where it happened; filtered in a Sysmon configuration by the <FileCreate> element.
Microsoft's description
Event ID 11: FileCreate
File create operations are logged when a file is created or overwritten. This event is useful for monitoring autostart locations, like the Startup folder, as well as temporary and download directories, which are common places malware drops during initial infection.
Source: Microsoft's Sysmon documentation
Every field of event 11
| Field | What it tells you |
|---|---|
| TargetFilename | The full path of the file that was created or overwritten. The folder and the extension carry most of the signal — an executable or script in a Startup, temp or download folder. |
| Image | The process that wrote the file. A browser writing to Downloads is normal; Word or a script host writing an executable is not. |
| CreationUtcTime | The file's creation time as the file system records it. An attacker can change it (Sysmon event 2 logs that), so compare it with UtcTime, when Sysmon saw the write. |
| UtcTime | When the event happened, in UTC, like every Sysmon timestamp. |
| User | The account the writing process runs as. |
| ProcessGuid | Joins the file to the process creation (event 1) of the writer, for its command line and parent. |
| RuleName | — |
| ProcessId | — |
Field names and order from Sysmon's manifest (schema 4.90), checked on every build.
What it records
Microsoft’s description: “File create operations are logged when a file is created or overwritten. This event is useful for monitoring autostart locations, like the Startup folder, as well as temporary and download directories, which are common places malware drops during initial infection.”
The event is short: TargetFilename (the full path), CreationUtcTime (the file system’s creation timestamp), and the writer — Image, ProcessGuid, ProcessId and User — with UtcTime and RuleName. Its value comes from the writer: a file system snapshot can show that C:\Users\anna\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\update.lnk exists; event 11 shows that WINWORD.EXE, running as anna, created it ten seconds after she opened an attachment.
What is logged depends on the <FileCreate> rules. Configurations usually include the folders Microsoft names and executable or script extensions, for example:
<FileCreate onmatch="include">
<TargetFilename condition="contains">\Start Menu\Programs\Startup\</TargetFilename>
<TargetFilename condition="end with">.ps1</TargetFilename>
</FileCreate>
When it matters
| Pattern | Reading |
|---|---|
| Image is WINWORD.EXE, EXCEL.EXE, OUTLOOK.EXE or a script host, TargetFilename ends in .exe, .dll, .ps1, .vbs, .js or .hta | A document or script dropping a payload (T1204.002, T1105) |
| TargetFilename in a Startup folder | Persistence at the next logon (T1547.001) |
An executable written to \AppData\, \Temp\, \Users\Public\ or \ProgramData\ and then run (event 1 with the same path as Image) | A downloaded or dropped program executed |
powershell.exe, certutil.exe or bitsadmin.exe writing an executable | A Windows tool used to download a file |
| Many files rewritten with a new extension in a short time by one process | Ransomware encrypting files |
| CreationUtcTime years before UtcTime on a file just written | Time stomping — look for event 2 |
How to investigate
Executables and scripts written by Office, Outlook, script hosts or PowerShell:
Event
| where TimeGenerated > ago(7d)
| where Source == "Microsoft-Windows-Sysmon" and EventID == 11
| 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), TargetFilename = tostring(f.TargetFilename), Account = tostring(f.User)
| where Image has_any ("WINWORD.EXE", "EXCEL.EXE", "POWERPNT.EXE", "OUTLOOK.EXE", "wscript.exe", "cscript.exe", "mshta.exe", "powershell.exe")
| where TargetFilename matches regex @"(?i)\.(exe|dll|ps1|vbs|js|hta|bat|cmd|scr)$"
| project TimeGenerated, Computer, Account, Image, TargetFilename
New files in Startup folders, which run at the next logon:
Event
| where TimeGenerated > ago(30d)
| where Source == "Microsoft-Windows-Sysmon" and EventID == 11
| 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), TargetFilename = tostring(f.TargetFilename), Account = tostring(f.User)
| where TargetFilename has @"\Start Menu\Programs\Startup\"
| project TimeGenerated, Computer, Account, Image, TargetFilename
For each dropped file, check whether it ran: a process creation event whose Image is the same path. Follow the writer’s ProcessGuid back to its own creation event for the parent and command line. If the file was deleted afterwards, Sysmon events 23 and 26 record the deletion when the configuration asks for them. Without a SIEM, open the host’s Sysmon .evtx in the EVTX viewer and filter on event 11.
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 11 filterable, with the analyzer's checks for LSASS access, remote threads and suspicious command lines. Nothing is uploaded.
Related events
- Sysmon Event ID 1 Process creation
- Sysmon Event ID 2 A process changed a file creation time
- Sysmon Event ID 15 FileCreateStreamHash
- Sysmon Event ID 23 FileDelete (File Delete archived)
- Sysmon Event ID 26 FileDeleteDetected (File Delete logged)
- Security Event ID 4688 A new process has been created
Detect it
Frequently Asked Questions
- Does Sysmon Event ID 11 log every file written on the machine?
- Only what the configuration's <FileCreate> rules ask for. Microsoft describes the event as useful for monitoring autostart locations, the Startup folder, and temporary and download directories, and most configurations log only those folders or only certain extensions, because logging every file write is very noisy.
- Does event 11 fire when a file is modified?
- Microsoft's documentation says file create operations are logged "when a file is created or overwritten". Ordinary writes into an existing file that do not recreate it are not file creations; for those, the process and registry events around it are usually more useful.
- How do I find files dropped by a malicious document?
- Look for event 11 where Image is an Office application, Outlook or a script host and TargetFilename ends in an executable or script extension (.exe, .dll, .ps1, .vbs, .js, .hta, .bat). The first query on this page does this; then check whether the same file later appears as the Image of a process creation event.
- Why does the CreationUtcTime differ from the event time?
- CreationUtcTime is the file system's creation timestamp, which programs can set, while UtcTime is when Sysmon recorded the write. A creation time far in the past on a file just written suggests time stomping, which Sysmon logs separately as event 2.
Find every Sysmon 11 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.