Bulk collection of documents before exfiltration.
What gives it awayOne account reading a very large number of distinct files in a short window, from a process that is not the user's normal application.
ATT&CK T1005Nothing matches that yet. Tell us what you were looking for and it goes on the list.
Windows Security Log · Event 4663
This is the event people reach for when they need to know who deleted a file. It records an access that was actually exercised — but only on objects you marked for auditing beforehand, and the word 'attempt' in Microsoft's title is misleading: a success here means the access happened.
Also written as Event ID 46634663 file access auditing
Not enabled by default and not something a personal machine needs. If you are trying to find out what happened to a file on your own PC, File History or Previous Versions will get you further than this will.
The distinction that trips people up is 4656 versus 4663. 4656 is the handle request — it records what a process asked permission for, which is frequently everything the API bothered to request rather than what it intended to do. 4663 is the access being used, which is much closer to reality. Chase 4663 for what happened and 4656 only when you need the requested-versus-granted difference. Also note that DELETE on a file often shows as a rename to a Recycle Bin path rather than a delete, so a deletion hunt that filters on the delete access mask alone misses the ordinary case.
Sanitised. Addresses come from the RFC 5737 documentation ranges.
An attempt was made to access an object.
Subject:
Security ID: CORP\jbrooks
Account Name: jbrooks
Account Domain: CORP
Logon ID: 0x4A21C9
Object:
Object Server: Security
Object Type: File
Object Name: D:\Finance\Payroll\2026-Q3.xlsx
Handle ID: 0x8f4
Process Information:
Process ID: 0x1cf4
Process Name: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Access Request Information:
Accesses: DELETE
Access Mask: 0x10000 Everything else in the log line is context.
ReadData (or ListDirectory)The contents were read, or a folder listed. Enormous volume; usually the part to filter out. WriteData (or AddFile)The file was written to. Genuinely interesting on a path that should be static. DELETEThe object was deleted. Note that moving to the Recycle Bin is a rename, not this. WriteDAC or WRITE_OWNERPermissions or ownership were changed, which is how access is quietly widened. AppendDataData was appended, common for logs and for anything writing incrementally. Most of the time it is one of these.
What gives it awayOne account reading a very large number of distinct files in a short window, from a process that is not the user's normal application.
ATT&CK T1005What gives it awaySustained WriteData across many files by a single process, frequently paired with deletes and renames.
ATT&CK T1486What gives it awayWriteDAC or WRITE_OWNER accesses on a folder, which almost no legitimate workflow performs.
ATT&CK T1222.001What gives it awayDELETE accesses on log or backup paths, particularly by an account with no reason to touch them.
ATT&CK T1070.004SecurityEvent | where EventID == 4663 | where AccessList has_any ('%%1537','%%1539','%%1540') | project TimeGenerated, Computer, SubjectAccountName = Account, ObjectName, ProcessName, AccessList SecurityEvent | where EventID == 4663 and ObjectType == 'File' | summarize files = dcount(ObjectName) by Account, ProcessName, bin(TimeGenerated, 1h) | where files > 500 | order by files desc Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4663; StartTime=(Get-Date).AddHours(-1)} | Select-Object TimeCreated, @{n='Object';e={$_.Properties[6].Value}}, @{n='Access';e={$_.Properties[9].Value}} | Format-Table -AutoSize detection:
selection:
EventID: 4663
ObjectType: 'File'
AccessMask: '0x10000'
condition: selection You need auditing to have been configured before the deletion — this cannot be answered retrospectively. With a SACL in place, filter the Security log for 4663 on that path and read the Accesses field. Do not filter on DELETE alone: deleting a file in Explorer moves it to the Recycle Bin, which Windows records as a rename, so the event you want may name a path under $Recycle.Bin instead.
4656 records a handle being requested — what a process asked for, which is often much broader than what it intended to do, because APIs commonly request every access they might need. 4663 records an access actually being used. For working out what happened, 4663 is far closer to the truth; 4656 matters mainly when you need to see a request that was refused.
Because the audit policy is only half the configuration. Each file, folder or registry key you want audited also needs a system access control list — set through the object's Properties, Security, Advanced, Auditing tab. The policy says the system may audit; the SACL says what to audit. Neither works alone.
Yes. Despite Microsoft's title using the word 'attempt', a 4663 records an access that was actually performed — Microsoft's own documentation notes that this event has no Failure variant at all. That is the difference from Event 4656, which does record failures: a refused access shows up as a failed 4656 and never as a 4663.
Unscoped, yes — auditing a whole file server for all access will bury you, largely thanks to backup and antivirus reading everything. Scoped, it is one of the more precise events available. Audit a small number of genuinely sensitive folders, for write and delete rather than read, and the volume becomes manageable and nearly every event means something.
Last reviewed 6 September 2026