Forensic ArtifactWindows: Execution

SRUM.db — System Resource Usage Monitor

SRUM tracks per-application CPU, memory, and network usage in hourly buckets. Records persist after application uninstall, proving network activity for deleted tools.

Every hour, Windows silently records exactly how many bytes each application sends and receives over the network — and it does not stop recording when the application is uninstalled. For investigators facing a wiped machine, SRUM.db is frequently the last artifact standing between a defensible finding and an inconclusive report.

What Is SRUM.db?

The System Resource Usage Monitor (SRUM) is a Windows diagnostic subsystem introduced in Windows 8 (October 2012) that tracks per-application resource consumption. It records CPU cycles, memory usage, network bytes transferred, and energy consumption for every application that executes on the system — regardless of whether that application is a signed OS component, a third-party installer, or a renamed command-line tool dropped into %TEMP%. The data is persisted in an Extensible Storage Engine (ESE) database at a fixed system path, and it is updated approximately every 60 minutes by the Diagnostic Policy Service (DiagTrack).

SRUM was designed to power the Windows Resource Monitor and App History tabs in Task Manager. Microsoft uses it for telemetry, energy profiling, and bandwidth metering on metered connections. From a forensic perspective, however, its value is far greater: SRUM provides hourly-resolution network transfer data per application per user per network interface. This granularity means an investigator can determine not just that an application ran, but when it ran, how much data it moved, and which network adapter it used — information that no other single artifact provides.

The ESE database contains multiple tables, each identified by a GUID. The three tables of primary forensic interest are: {973F5D5C} (Network Data Usage), which records bytes sent and received per application per hour; {D10CA2FE} (Application Resource Usage), which tracks CPU cycle time and context switches; and {FEE4E14F} (Network Connectivity), which logs connection durations and interface associations. Critically, SRUM data persists after an application is uninstalled. The database records what happened, not what currently exists on disk.

Key Insight

SRUM records network bytes sent and received per application per hour. When an application is uninstalled, its historical entries remain. This makes SRUM the artifact of last resort for proving data exfiltration after anti-forensics cleanup.

Location & Format

File Paths

FilePathNotes
SRUM.dbC:\Windows\System32\sru\SRUM.dbPrimary database (Windows 8 through Windows 11 23H2)
SRUDB.datC:\Windows\System32\sru\SRUDB.datNew format in Windows 11 24H2+; coexists with SRUM.db during transition
Transaction logsC:\Windows\System32\sru\SRU*.logESE transaction logs; may contain uncommitted data
SOFTWARE hiveC:\Windows\System32\config\SOFTWARERequired to resolve AppID integers to executable paths

Database Format

SRUM.db uses the Extensible Storage Engine (ESE), also known as JET Blue. This is the same database engine that underpins Active Directory (ntds.dit), Exchange Server mailbox stores, and Windows Search (Windows.edb). ESE databases use a write-ahead logging model: changes are first written to transaction log files (.log), then committed to the main .db file during checkpoint operations. Forensically, this means uncommitted entries may exist only in the log files. A “dirty shutdown” recovery (using esentutl /r) can replay these logs into the database before parsing.

Each application is identified internally by an integer AppId. This integer is mapped to the full executable path via the SRU\{D73F1D5C}\IdMap table, but meaningful resolution requires cross-referencing the SOFTWARE registry hive. Without the SOFTWARE hive, parsed output will show integer identifiers instead of paths like C:\Users\jdoe\AppData\Local\Temp\rc.exe. Always collect both files.

Internal Table Structure

Table GUIDNameKey ColumnsForensic Value
{973F5D5C}Network Data UsageAutoIncId, TimeStamp, AppId, UserId, BytesSent, BytesRecvd, InterfaceLuidPer-app network transfer volumes, hourly resolution
{D10CA2FE}Application Resource UsageAutoIncId, TimeStamp, AppId, UserId, ForegroundCycleTime, BackgroundCycleTime, FaceTime, ForegroundContextSwitchesCPU time, foreground vs background activity
{FEE4E14F}Network ConnectivityAutoIncId, TimeStamp, ConnectedTime, ConnectStartTime, InterfaceLuid, L2ProfileIdConnection durations, interface and network profile identification
{DD6636C4}Energy UsageAutoIncId, TimeStamp, AppId, ChargeLevel, DesignedCapacityBattery and energy profiling (laptops); confirms app was running
Format Note

The TimeStamp column stores Windows FILETIME values (100-nanosecond intervals since January 1, 1601 UTC). Most parsing tools convert these automatically. If parsing manually, use w32tm.exe /ntte <value> or Python’s datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=filetime//10).

What It Reveals

SRUM answers a specific class of investigative questions that other artifacts either cannot answer at all or can only answer partially. The following questions are directly answerable from SRUM data:

Investigative Benchmark

A 260:1 BytesSent:BytesRecvd ratio for an unknown executable in AppData\Temp is not a sync. It is an exfiltration. Normal web browsing produces a ratio between 1:5 and 1:15 (more received than sent). Cloud sync tools produce ratios near 1:1. One-directional outbound transfer at scale is the signature of data theft.

Forensic Use Cases

1. Data Exfiltration Detection

The most common forensic use of SRUM is proving data exfiltration. A departing employee renames rclone.exe to rc.exe, syncs corporate file shares to a personal MEGA account, then uninstalls the tool and clears Prefetch. The renamed executable no longer exists on disk, but SRUM retains hourly records showing C:\Users\jdoe\AppData\Local\Temp\rc.exe transferred 8.5 GB outbound over four hours with a 260:1 send-to-receive ratio. The InterfaceLuid confirms the transfer occurred over the corporate Ethernet adapter, not a personal hotspot.

2. Malware C2 Communication

An unknown executable in C:\ProgramData shows periodic network activity at 60-minute intervals — consistent with beacon-based command-and-control. Each hourly entry shows approximately 2–4 KB sent and 1–2 KB received, a pattern characteristic of heartbeat check-ins. SRUM provides the timeline even after the malware is removed by endpoint detection, allowing the investigator to determine the total duration of the compromise.

3. Unauthorized Application Usage

An organization prohibits Tor Browser and personal VPN clients. A user installs Tor Browser, uses it, then deletes the entire Tor directory. Prefetch entries age out or are cleared. However, SRUM retains entries for firefox.exe (Tor’s browser component) showing network activity through an interface that resolves to a SOCKS proxy — and the AppId resolution via the SOFTWARE hive reveals the full path was C:\Users\[user]\Desktop\Tor Browser\Browser\firefox.exe, not the standard Firefox installation path.

4. Timeline Reconstruction After Anti-Forensics

When a subject has cleared Prefetch, wiped browser history, run CCleaner, and deleted files from the Recycle Bin, SRUM provides an independent hourly timeline of application network activity. Because SRUM is not targeted by any widely distributed cleanup tool, the timeline survives cleanup operations that destroy every other artifact. Investigators can reconstruct which applications were active during the incident window and correlate SRUM timestamps with event log entries that also survived the cleanup.

5. Insider Threat Volume Correlation

In insider threat cases, investigators often need to correlate document access with upload volume. SRUM’s hourly BytesSent totals can be aligned with $UsnJrnl entries showing file reads or Security.evtx 4663 events showing object access. If 4,200 files totaling 6.2 GB were accessed between 22:00 and 02:00, and SRUM shows 6.1 GB outbound from a cloud sync tool during the same window, the correlation is dispositive.

Acquisition Methods

Collection Warning

SRUM.db is locked by the Diagnostic Tracking Service (DiagTrack) on a live system. Direct copy will fail with an access-denied or sharing-violation error. Use Volume Shadow Copy (VSS), a forensic imaging tool, or a raw-disk copy utility. Always collect the SOFTWARE registry hive alongside SRUM.db — without it, AppID integers cannot be resolved to executable paths.

Live System — Volume Shadow Copy

CMD / ADMIN
:: Create a new Volume Shadow Copy to access the locked SRUM.db
vssadmin create shadow /for=C:

:: Note the Shadow Copy Volume Name from the output, e.g.:
:: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3

:: Copy SRUM.db from the shadow copy (bypasses file lock)
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\System32\sru\SRUM.db C:\Evidence\SRUM.db

:: Copy the SOFTWARE hive (required for AppID resolution)
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\System32\config\SOFTWARE C:\Evidence\SOFTWARE

:: Also collect the transaction logs for dirty-shutdown recovery
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\System32\sru\SRU*.log C:\Evidence\

:: Delete the shadow copy when done
vssadmin delete shadows /shadow={shadow-id} /quiet

Live System — Raw Copy Utilities

CMD / ADMIN
:: Using KAPE (Kroll Artifact Parser and Extractor)
kape.exe --tsource C: --tdest C:\Evidence\KAPE_Output --target SRU

:: Using RawCopy (can bypass NTFS locks)
RawCopy.exe /FileNamePath:C:\Windows\System32\sru\SRUM.db /OutputPath:C:\Evidence\

:: Using Velociraptor (remote collection via VQL)
:: Artifact: Windows.KapeFiles.Targets with target "SRU"
:: Or directly: SELECT * FROM glob(globs="C:/Windows/System32/sru/*")

Forensic Image — Direct Extraction

BASH / FORENSICS
# Mount the forensic image (read-only)
mount -o ro,noexec,nodev /dev/sdb1 /mnt/evidence

# Copy SRUM.db and SOFTWARE hive
cp /mnt/evidence/Windows/System32/sru/SRUM.db /analysis/srum/
cp /mnt/evidence/Windows/System32/config/SOFTWARE /analysis/srum/
cp /mnt/evidence/Windows/System32/sru/SRU*.log /analysis/srum/

# If the database was not cleanly shut down, recover with esentutl
esentutl /r SRU /d /l /s /mnt/evidence/Windows/System32/sru/

Parsing Tools & Analysis

ToolAuthorLicenseOutputNotes
srum-dumpMark BaggettOpen source (Python)XLSXIndustry standard; requires SOFTWARE hive for AppID resolution
SrumECmdEric ZimmermanFreeCSVPart of the EZ Tools suite; fast CLI parsing
SRUM ExpertArsenal ReconCommercialGUI + exportAdvanced filtering, timeline visualization, dirty-shutdown recovery
ESEDatabaseViewNirSoftFreewareGUI + CSV/HTMLGeneric ESE viewer; useful for raw table inspection
libesedbJoachim MetzOpen source (C)CSVLinux-native ESE parser; esedbexport extracts all tables
SRUM-DUMPMark BaggettFree (Excel)XLSXExcel-based version; runs natively on Windows without Python

Parsing with srum-dump

BASH / FORENSICS
# Install srum-dump
pip install srum-dump

# Parse SRUM.db with SOFTWARE hive for AppID resolution
srum_dump.py --SRUM_INFILE /analysis/srum/SRUM.db \
             --REG_HIVE    /analysis/srum/SOFTWARE \
             --XLSX_OUTFILE /analysis/srum/srum_output.xlsx

# Output: Excel workbook with one sheet per SRUM table
# Sheet "Network Data Usage" = {973F5D5C} table
# Sheet "Application Resource Usage" = {D10CA2FE} table
# Sheet "Network Connectivity" = {FEE4E14F} table

Parsing with SrumECmd (Eric Zimmerman)

CMD / FORENSICS
:: Parse to CSV with full AppID resolution
SrumECmd.exe -f C:\Evidence\SRUM.db -r C:\Evidence\SOFTWARE --csv C:\Analysis\SRUM_Output

:: Output files:
::   SrumECmd_NetworkUsages_Output.csv
::   SrumECmd_AppResourceUsage_Output.csv
::   SrumECmd_NetworkConnections_Output.csv
::   SrumECmd_EnergyUsage_Output.csv

Analysis Script — Top Data Senders

PYTHON / SRUM ANALYSIS
# Identify applications with the highest outbound network transfers

import pandas as pd

df = pd.read_csv('/analysis/srum/SrumECmd_NetworkUsages_Output.csv')

# Filter for entries with more than 1 MB outbound in a single hour
suspicious = df[df['BytesSent'] > 1_000_000].copy()

# Group by executable path, sum total bytes sent
summary = suspicious.groupby('ExeInfo').agg(
    TotalBytesSent=('BytesSent', 'sum'),
    TotalBytesRecvd=('BytesRecvd', 'sum'),
    HourCount=('BytesSent', 'count'),
    FirstSeen=('Timestamp', 'min'),
    LastSeen=('Timestamp', 'max')
).sort_values('TotalBytesSent', ascending=False)

# Calculate send:receive ratio
summary['Ratio'] = (summary['TotalBytesSent'] / summary['TotalBytesRecvd'].replace(0, 1)).round(1)

print(summary.head(10).to_string())

Sample Output

OUTPUT
ExeInfo                                           TotalBytesSent  TotalBytesRecvd  HourCount  FirstSeen            LastSeen             Ratio
C:\Users\jdoe\AppData\Local\Temp\rc.exe           9,126,805,504   35,103,232       4          2026-02-14 22:00     2026-02-15 02:00     260.0
C:\Program Files\Google\Chrome\Application\chr..  1,847,229,440   24,891,043,840   720        2025-12-01 08:00     2026-02-28 17:00     0.1
C:\Program Files\Microsoft OneDrive\OneDrive.exe  982,614,016     1,024,458,752    360        2025-12-15 09:00     2026-02-28 16:00     1.0
C:\Windows\System32\svchost.exe                   412,385,280     1,847,627,776    720        2025-12-01 00:00     2026-02-28 23:00     0.2
C:\Program Files\Zoom\bin\Zoom.exe                224,198,656     687,412,224      48         2026-01-06 10:00     2026-02-27 15:00     0.3
Reading the Output

Chrome shows a 0.1 ratio (10x more received than sent) — normal browsing. OneDrive shows 1.0 — bidirectional sync. rc.exe in AppData\Local\Temp shows a 260:1 ratio with 8.5 GB outbound in only 4 hours. That executable no longer exists on disk. SRUM is the only artifact that recorded its network activity.

Retention & Persistence

PropertyWindows 8 / 8.1Windows 10Windows 11
Retention period~30 days~30–60 days~30–60 days (SRUDB.dat in 24H2+ may differ)
Survives rebootYesYesYes
Survives application uninstallYes — entries remainYes — entries remainYes — entries remain
Survives user profile deletionYes — system-level artifactYes — system-level artifactYes — system-level artifact
Update frequency~60 minutes~60 minutes~60 minutes
Purge mechanismRolling window; oldest entries pruned automaticallyRolling window; oldest entries pruned automaticallyRolling window; oldest entries pruned automatically
Retention Note

The ~60 day retention window is approximate and depends on system activity volume. High-activity systems with many applications may have shorter effective retention as the database rolls over faster. Low-activity systems may retain data beyond 60 days. The database has a maximum size, and when it is reached, the oldest entries are purged first.

Anti-Forensics Resilience

SRUM.db is one of the most resilient forensic artifacts on a Windows system. It is protected by the operating system’s file locking mechanism, stored in a privileged system directory, and not included in the target lists of any widely distributed cleanup tool.

ToolClears SRUM.db?Explanation
CCleanerNoNo SRUM module; does not target System32\sru\
EraserNoTargets user-specified files/folders; does not include SRUM by default
SDeleteNoRequires explicit path; does not affect locked files
BleachBitNoNo SRUM module exists; no cleaner targets this path
cipher /wNoWipes free space only; SRUM.db is an active, locked file
Browser cleanupNoBrowser history cleanup has no effect on SRUM; network transfer records persist independently
Prefetch cleanupNoPrefetch and SRUM are independent subsystems
Manual deletionPossibleRequires stopping DiagTrack + DPS services, then elevated delete from System32\sru\. Detectable via Event Log service stop entries (Event ID 7036).
Why SRUM Survives

SRUM.db is not in any widely distributed anti-forensics checklist. It does not appear in CCleaner, Eraser, or BleachBit interfaces. It is a system file locked by the OS. The tooling to parse it barely exists outside specialist forensic communities. Most adversaries — including technically sophisticated insiders — do not know this artifact exists.

MITRE ATT&CK Detection Mapping

SRUM data provides evidentiary support for detecting the following MITRE ATT&CK techniques:

TechniqueNameSRUM Evidence
T1041 T1041Exfiltration Over C2 ChannelHigh BytesSent from unknown executable; disproportionate send:receive ratio
T1048 T1048Exfiltration Over Alternative ProtocolNetwork transfer via non-standard InterfaceLuid (USB tethering, personal hotspot); unexpected interface for outbound data
T1071 T1071Application Layer ProtocolApplication-level network usage patterns; known cloud sync tools (rclone, MEGA, Dropbox) with abnormal transfer volumes
T1059 T1059Command and Scripting Interpreterpowershell.exe or cmd.exe with significant network activity suggests script-based exfiltration or download
T1105 T1105Ingress Tool TransferHigh BytesRecvd for an executable in a staging directory (e.g., %TEMP%, ProgramData) indicates tool download
T1070 T1070Indicator RemovalPresence of SRUM entries for a deleted executable is itself evidence of cleanup activity (T1070.004: File Deletion)

Related Artifacts & Case Studies

Corroborating Artifacts

ArtifactRelationship to SRUMCross-Correlation Value
PrefetchConfirms execution; provides first/last run timestamps and run countPrefetch proves the executable ran; SRUM proves what it did on the network
$MFTFile creation/modification timestamps for the executable$MFT shows when the tool was placed on disk; SRUM shows when it was active
$UsnJrnlFile system change journal; records file access and rename operations$UsnJrnl can show file access patterns that align with SRUM transfer volumes
Windows.edbWindows Search index; may contain indexed content metadataIf the exfiltrated files were indexed, Windows.edb metadata survives deletion
LNK FilesShortcut files created by recent file accessLNK files can prove a user accessed specific documents before exfiltration
Security.evtxEvent ID 4663 (object access), 4688 (process creation)Process creation events corroborate SRUM execution data with command-line arguments

Case Study

DFIR Case Study — CASE #156

The Database That Windows Built — A departing employee uninstalled the exfiltration tool, deleted its files, and cleared browser history. SRUM.db proved 8.5 GB of corporate data was transferred to MEGA via renamed rclone over four hours. The suspect’s anti-forensics efforts destroyed Prefetch, browser history, and Recycle Bin entries — but SRUM recorded every byte.

References

  1. Mark Baggett, “srum-dump — SRUM Database Parser” — https://github.com/MarkBaggett/srum-dump
  2. Arsenal Recon, “SRUM Expert” — https://arsenalrecon.com
  3. Eric Zimmerman, “SrumECmd — SRUM Parser” — https://ericzimmerman.github.io/
  4. SANS Institute, “SRUM Forensics — The Artifact Windows Doesn’t Want You to Know About” — https://www.sans.org/blog/
  5. 13Cubed, “SRUM Analysis for DFIR” — https://www.13cubed.com/blog
  6. Microsoft, “System Resource Usage Monitor” — https://learn.microsoft.com
  7. ForensicArtifacts.com, “Windows SRUM Artifact Definition” — https://github.com/ForensicArtifacts/artifacts
  8. NirSoft, “ESEDatabaseView” — https://www.nirsoft.net/utils/ese_database_view.html

Mjolnir Security — Digital Forensics & Incident Response

Mjolnir Security provides 24/7 incident response, digital forensics, and expert witness testimony. Our DFIR team specializes in SRUM analysis, insider threat investigations, and data exfiltration cases where standard artifacts have been destroyed.

Digital ForensicsIncident ResponseExpert WitnessArtifact AnalysisInsider ThreatData Exfiltration

mjolnirsecurity.com — 24/7: +1 833 403 5875