SRUM on Windows 11: Reconstructing App, Network and Power Use
Lab details
- Type
- Forensic artifact
- Level
- Intermediate
- Time
- 35 min
- Verified on
- Windows 11 24H2 (build 26100.2894), Hyper-V VM on an internal-only virtual switch, SrumECmd 0.6
Before you start
- An administrator account on the machine you are examining
- SrumECmd from Eric Zimmerman's tools (free)
- A copy of the SOFTWARE registry hive from the same machine
Tools used
References
What SRUM Answers That Nothing Else Does
Every other execution artifact tells you a program ran. SRUM tells you how much data it moved.
The System Resource Usage Monitor was built so Windows could show you the Data Usage screen in Settings. As a side effect it maintains roughly 30 days of per-application, per-user, roughly-hourly records of CPU cycles consumed, bytes sent, bytes received, and which network interface was in use.
For two questions in particular there is no substitute:
- Was this thing exfiltrating data? A background process with gigabytes in the sent column is not ambiguous.
- What was hammering the CPU at 3am last Tuesday? SRUM has an hourly bucket for it.
The Database
C:\Windows\System32\SRU\SRUDB.dat is an ESE (Extensible Storage Engine) database — the same engine behind Exchange and the Windows Search index. Alongside it sit SRU*.log transaction logs.
The tables are named by GUID rather than anything readable, and the mapping from GUID to meaning lives in the SOFTWARE registry hive, not in the database. This is why every SRUM parser asks for SOFTWARE as a second input — without it, application IDs stay as numbers instead of resolving to executable paths.
The tables that matter:
| Table | Contents | |---|---| | Network Data Usage | Bytes sent/received per app, per interface, per hour | | Network Connectivity | Which network the machine was on, and when | | Application Resource Usage | CPU cycles, foreground/background time, disk I/O per app | | Energy Usage | Battery drain per app (laptops) |
Step 1: Collect the database, its logs, and the SOFTWARE hive
All three, or the parse will be incomplete or unreadable:
robocopy C:\Windows\System32\SRU C:\cases\srum /E
robocopy C:\Windows\System32\config C:\cases\srum SOFTWARE SOFTWARE.LOG1 SOFTWARE.LOG2
SRUDB.dat is locked on a running system. If robocopy fails, work from a disk image or use a raw-access copy tool — do not try to force it on a live machine that matters.
Step 2: Parse with the SOFTWARE hive supplied
SrumECmd.exe -f C:\cases\srum\SRUDB.dat -r C:\cases\srum\SOFTWARE --csv C:\cases\out
-r points at the registry hive. Skip it and the output is populated with unresolved IDs.
You get one CSV per table. Open *_NetworkUsages.csv first.
Step 3: Sort network usage by bytes sent
BytesSent descending, and read down the ExeInfo column.
The top of that list on a normal machine is a browser, a cloud sync client, Windows Update, and a mail client. What draws attention:
- An executable running from
AppData,Temp, orProgramDatawith meaningful volume - A system-sounding binary with a sent/received ratio the real component would never produce
- Sustained transfer during hours the machine's user was not present
- Any process you cannot account for at all
Note the ratio, not just the total. Normal browsing is heavily received-weighted. A process with far more sent than received is moving data off the machine, which is a different shape entirely.
Step 4: Pin down the timing
The Timestamp column buckets to roughly an hour. Filter to a single suspicious executable and sort chronologically. You are looking for:
- When transfer started — often the clearest available estimate of when a compromise became active
- Whether it is continuous or periodic — regular hourly or daily buckets suggest scheduled beaconing rather than a person
- When it stopped, if it did
Step 5: Establish which network it happened on
Cross-reference *_NetworkConnections.csv for the same time window. This resolves whether the transfer happened on the corporate LAN, home Wi-Fi, or a tethered phone — which materially changes what it means and who else needs to know.
Step 6: Corroborate
SRUM shows volume, not content. Before drawing conclusions, confirm the process itself:
- Prefetch for run count and history
- Amcache for the SHA-1, so you can identify the binary
- The firewall log for destination addresses, if it was enabled
Limits Worth Knowing
Roughly 30 days, and that is not guaranteed. Retention depends on activity and available space. Check the oldest timestamp in your parse before treating absence as meaningful.
Data is buffered in the registry before it is committed. Recent activity — up to about an hour — may sit in HKLM\SYSTEM\CurrentControlSet\Services\rdyboost\Parameters\Srum rather than in the .dat. On a live capture you can miss the most recent hour.
No destinations. SRUM records volume per application, not the IP addresses it talked to. For destinations you need firewall logging, Sysmon Event ID 3, or a network capture.
Hourly granularity. Fine for "when did this start", useless for correlating events seconds apart.
Related
- Windows 11 forensic artifacts overview
- Reading the Windows firewall log
- Consumer guide: removing cryptominer malware — SRUM's CPU history is how you confirm the timeline there
FAQ
Why does my SRUM parse show numbers instead of program names?
You did not supply the SOFTWARE registry hive. The mapping from SRUM's internal application IDs to executable paths lives in the registry, not in the database. Re-run with -r pointing at a copy of C:\Windows\System32\config\SOFTWARE.
Does SRUM record which IP addresses a program connected to?
No. It records bytes sent and received per application, per interface, per hour — volume only. For destination addresses you need the Windows firewall log with logging enabled, Sysmon Event ID 3, or packet capture. SRUM tells you something moved and roughly when; it cannot tell you where.
Can SRUM be cleared?
SRUDB.dat can be deleted with administrator rights, and Windows will recreate it empty. As with other artifacts, that is conspicuous: a machine with months of uptime and a SRUM database starting yesterday is anomalous on its face. There is no supported way to selectively remove individual entries.
Is SRUM present on desktops, or only laptops?
Present on both. The Energy Usage table is only meaningful on battery-powered devices, but Network Data Usage and Application Resource Usage populate on desktops exactly the same way.
Related labs
Amcache.hve on Windows 11: What It Records and How to Read It
Amcache stores the SHA-1 of executables Windows has encountered — including ones already deleted. Here is how to parse it on Windows 11 and what its entries do and do not prove.
Prefetch Files on Windows 11: Proving a Program Ran, and When
A .pf file records how many times a program ran and the last eight times it happened. Here is how to read Prefetch on Windows 11, and the three ways the evidence misleads you.
Windows 11 Forensic Artifacts: Where Evidence of Program Execution Lives
Windows records that a program ran in at least six separate places, and they do not agree with each other. Here is what each artifact actually proves on Windows 11, and which one to trust.
Reading the Windows Firewall Log (pfirewall.log) on Windows 11
Windows Firewall can log every allowed and dropped connection, but the logging is off by default. Here is how to turn it on, read the format, and find outbound traffic that should not be there.