What is SRUM and why forensic analysts care
5/16/2026
SRUM is one of those Windows subsystems that nobody at Microsoft talks about loudly but that quietly logs months of per-process resource use into an ESE database. For DFIR it is the closest thing Windows ships to a built-in EDR audit log: which process ran when, under which user, on which network, how many bytes it pushed and pulled, and whether the machine was on battery while doing it. None of that is in Prefetch, Amcache, or any single EVTX channel.
What SRUM actually is
SRUM — System Resource Usage Monitor — is a Windows feature introduced
in Windows 8 and present on every consumer and server SKU since. It
runs as part of the Diagnostic Policy Service (DPS) and persists its
samples into an Extensible Storage Engine (ESE) database at
C:\Windows\System32\sru\SRUDB.dat.
The cadence is roughly:
- Per-application activity sampled every 60 minutes.
- Energy events (AC plug/unplug, sleep transitions) sampled on every state change.
- Network connectivity sampled on every network attach/detach.
Retention runs ~30 days for short-term tables and up to about a year for the long-term (LT) siblings, depending on activity volume. See SRUM data retention.
What you get out of it
The database holds several tables identified by GUID. The ones that matter:
| GUID | Purpose |
|---|---|
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA89} | Application Resource Use |
{973F5D5C-1D90-4944-BE8E-24B94231A174} | Network Data Usage |
{DD6636C4-8929-4683-974E-22C046A43763} | Network Connectivity |
{FEE4E14F-02A9-4550-B5CE-5FA2DA202E37} | Energy Usage |
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA8F} | Push Notifications |
Plus SruDbIdMapTable, which translates the integer AppId/UserId
foreign keys on every data table back to a real application path or a
Windows SID. Without it, every row says AppId = 47. With it, 47
becomes C:\Users\<suspect>\AppData\Local\Temp\loader.exe, and your
investigation has a name.
The dedicated tables post walks the columns.
Why analysts reach for it
Specific questions SRUM answers that nothing else on disk answers as cleanly:
- Which process exfiltrated data, and how much?
BytesSentperAppIdperUserIdper network. EDR often does not retain this long; SRUM does. - Was this program running on a specific date? Application Resource Use rows survive months after Prefetch has rolled.
- Which user account was logged in when it ran? The
UserIdresolves to a SID, which the registryProfileListmaps to a user name. - Was the device on AC or battery during the event? Energy Usage pins this to the second.
The overlap with modern EDR is real — and that is precisely why it matters. On hosts where EDR is missing or where the suspicious window predates EDR coverage, SRUM is often the most defensible per-process activity record available.
Where it lives, what you collect
C:\Windows\System32\sru\SRUDB.dat plus the entire sru\ directory
(transaction logs SRU*.log, checkpoint SRU.chk). The
acquisition guide covers the lock and
the recovery story.
You also want the SOFTWARE registry hive — without it, network
profile GUIDs do not resolve to friendly SSID names.
Common pitfalls before you trust the data
- Dirty database. If you copy
SRUDB.datfrom a live host you almost always catch it mid-flush. The header is marked dirty and a reader will skip recent pages. Replay logs first; see how to fix a dirty SRUDB.dat. - Hourly bucketing. A five-minute browser session shows up as one 60-minute row. Do not claim minute-level precision from short-term tables.
- Tampering with SYSTEM. A privileged adversary can stop DPS and overwrite the file. Check the file's MFT entry on MFT for unexpected modification timestamps.
Further reading
- Where is SRUDB.dat located on Windows?
- SRUM tables explained
- How to parse SRUDB.dat without installing anything
- Using SRUM in a forensic investigation
- The ESE database format that powers SRUDB.dat
- SRUM vs Prefetch vs Amcache
- How to fix a dirty SRUDB.dat
- How long does SRUM keep data?
- Detecting data exfiltration with SRUM
Frequently asked questions
What does SRUM stand for?
System Resource Usage Monitor. It's a Windows subsystem introduced in Windows 8 that records per-application CPU, network, and energy usage.
How far back does SRUM data go?
30 to 60 days for the short-term tables, up to a year for the long-term (LT) variants. Retention is governed by the Diagnostic Policy Service registry settings.
Does SRUM track URL or file paths?
No. SRUM tracks per-process byte counts and CPU cycles, not URLs, file paths, or screen content. Combined with browser history or filesystem timelines, however, it becomes very precise.
Can I disable SRUM?
Yes, by stopping the Diagnostic Policy Service (DPS). New rows stop being written but the existing SRUDB.dat is preserved until manually deleted. Most enterprise environments leave SRUM enabled.
What tools parse SRUDB.dat?
SrumECmd (.NET), srum-dump (Python), libesedb (C), and this browser-based tool (Rust → WebAssembly). See the dedicated parser comparison for details.