Where to look 🔎

Someone may have copied the AD database using Volume Shadow Copy (VSS). Four files to work with: SYSTEM.evtx, SECURITY.evtx, Microsoft-Windows-NTFS.evtx, and $MFT.

Here’s the lookup table I’d want beside me next time:

What am I looking for?Open thisCheck
When did VSS start?System log, Service Control Manager, 7036Volume Shadow Copy entering the running state
Which account and process enumerated groups?Security log, 4799VSSVC.exe, caller PID, machine account such as DC01$, Administrators / Backup Operators
Was a shadow volume mounted?Microsoft-Windows-NTFS logDevice name, volume correlation ID, mount/dismount messages
Where did the copied database land?$MFTNTDS.dit, destination directory, timestamps, nearby registry hive copies

Small gotcha: 4799 means local groups were enumerated. It doesn’t tell me someone escalated privileges or who was behind DC01$. Also, convert hex PIDs before matching them against decimal ones. Event docs.

Bits worth keeping 📌

  • VSS started: 2024-05-14T03:42:16.7831058Z.
  • Shadow-copy device: \Device\HarddiskVolumeShadowCopy1.
  • Usual database location: C:\Windows\NTDS\NTDS.dit.
  • Staging-path example I wrote down: C:\Users\Administrator\Documents\backup_sync_Dc\Ntds.dit. Still needs an MFT check before calling it the confirmed path.
  • Look for a SYSTEM hive copy nearby. VSS starting on its own could just be a normal backup.

The flow in my notes:

Staging directory → VSS starts → machine-account group enumeration
→ shadow copy mounted → NTDS.dit and SYSTEM copied → shadow copy dismounted

NTFS IDs I kept: 4 (mount), 9/10 (volume stats), 300/303 (dismount). Read the provider and message too; the number alone isn’t enough.

Note to self

Service → account/process → shadow volume → copied files. That’s the order to follow.

Use XML SystemTime for UTC and check the parser’s timezone before comparing MFT timestamps. I saved the exact VSS start, but not the times for the rest of the chain.