Sysmon Event ID 11 <FileCreate>

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

FieldWhat it tells you
TargetFilenameThe 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.
ImageThe process that wrote the file. A browser writing to Downloads is normal; Word or a script host writing an executable is not.
CreationUtcTimeThe 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.
UtcTimeWhen the event happened, in UTC, like every Sysmon timestamp.
UserThe account the writing process runs as.
ProcessGuidJoins 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

PatternReading
Image is WINWORD.EXE, EXCEL.EXE, OUTLOOK.EXE or a script host, TargetFilename ends in .exe, .dll, .ps1, .vbs, .js or .htaA document or script dropping a payload (T1204.002, T1105)
TargetFilename in a Startup folderPersistence 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 executableA Windows tool used to download a file
Many files rewritten with a new extension in a short time by one processRansomware encrypting files
CreationUtcTime years before UtcTime on a file just writtenTime 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

MITRE ATT&CK: T1105T1547.001T1204.002

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.

Monthly attack data from a real server, by email

Two short emails a month: what attacked an ordinary internet-facing server (SSH logins, web probes, scanners) and how well free IP blocklists caught the attackers. Totals only, never an IP address. You confirm by email, and every email unsubscribes in one click.

How the address is used: privacy policy.