Removing a payload after it has run.
What gives it awayAn executable or script deleted from a temp or user directory shortly after being created and executed.
ATT&CK T1070.004Nothing matches that yet. Tell us what you were looking for and it goes on the list.
Sysmon · Event 23
A file was deleted, and Sysmon kept a copy. That archiving is what makes it unusual — it can preserve the payload an attacker removed after use, which is often the one artefact that would otherwise be gone for good.
Also written as Sysmon 23Sysmon Event ID 23FileDeletesysmon file delete archived
Only present if you installed Sysmon. It records files being deleted.
Added in Sysmon 13. The archive directory grows without limit and Sysmon does not manage it for you — filter tightly and rotate it, or you will fill the disk. Scope archiving to executables and scripts in user-writable paths rather than everything. Event 26 records a deletion without archiving, which is the cheaper option when you only need the record.
Sanitised. Addresses come from the RFC 5737 documentation ranges.
File Delete archived:
RuleName: -
UtcTime: 2026-08-28 09:22:41.803
ProcessGuid: {a1b2c3d4-0000-0000-0000-00000000abcd}
ProcessId: 7412
User: CORP\jbrooks
Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
TargetFilename: C:\Users\jbrooks\AppData\Local\Temp\wh.exe
Hashes: SHA256=0000000000000000000000000000000000000000000000000000000000000000
IsExecutable: true
Archived: true Everything else in the log line is context.
Most of the time it is one of these.
What gives it awayAn executable or script deleted from a temp or user directory shortly after being created and executed.
ATT&CK T1070.004What gives it awayA burst of deletions of tools and logs from one process, often near the end of a session.
ATT&CK T1070What gives it awayVery high deletion volume from one process, alongside heavy file creation with a consistent new extension.
ATT&CK T1485What gives it awayArchives deleted from a temp directory shortly after a large outbound transfer.
ATT&CK T1070.004Event | where Source == 'Microsoft-Windows-Sysmon' and EventID == 23 | where TargetFilename matches regex @'\.(exe|dll|ps1|vbs|js|bat|scr)$' | project TimeGenerated, Computer, Image, TargetFilename, User let created = Event | where Source == 'Microsoft-Windows-Sysmon' and EventID == 11 | project CreateTime = TimeGenerated, Computer, TargetFilename;
let deleted = Event | where Source == 'Microsoft-Windows-Sysmon' and EventID == 23 | project DelTime = TimeGenerated, Computer, TargetFilename, Image;
created | join kind=inner deleted on Computer, TargetFilename | where DelTime - CreateTime < 10m Event | where Source == 'Microsoft-Windows-Sysmon' and EventID == 23 | summarize deletions = count() by Image, Computer, bin(TimeGenerated, 1m) | where deletions > 200 In the directory set by the ArchiveDirectory option in your configuration, C:\Sysmon by default. The folder is protected by a System ACL. It grows without limit and Sysmon does not clean it up, so filter what gets archived and rotate the directory yourself — filling the system drive is a real and common outcome.
Event 23 is a deletion where Sysmon archived a copy of the file. Event 26 is a deletion it detected but did not archive. Use 26 when you only need to know something was deleted, and 23 for the paths where you would actually want the file back.
If archiving was enabled for that path, yes — the copy in the archive directory is the file as it existed. That is genuinely valuable, because deleting the payload after use is standard practice and it is often the only sample that would have existed. It only works if you configured archiving before the incident.
Last reviewed 28 August 2026