SRUM.DB
8.5 GB
RCLONE
ANTI-FORENSICS
Incident Response DFIR Engagement Insider Threat TLP:WHITE March 2024

The Database That Windows Built

The suspect had uninstalled the tool, deleted its files, and cleared his browser history. Windows had been silently recording every byte it ever transferred since the day he installed it. He had never heard of SRUM.db.

Scroll

The following is a lightly anonymised account of a real digital forensics engagement conducted under legal privilege. All individual identifiers have been altered. Technical findings and artifact details are presented as they occurred. We are publishing this case because SRUM.db remains among the most powerful and least known forensic artifacts in Windows environments — a record of application-level network activity that persists long after the applications themselves are gone.

ParameterDetail
Case TypeDigital Forensics — Corporate Data Exfiltration, Civil Litigation Support
IndustryPharmaceutical (Mid-size specialty pharma company, ~320 employees)
ArtifactSRUM.db — System Resource Usage Monitor database (Windows 8+)
Duration8 days forensic analysis, testimony in subsequent civil proceedings
YearYear 6 of operations
NotorietyThe one where a database most forensicators had never heard of broke the entire case

Background — What SRUM Is and Why Nobody Knows About It

The System Resource Usage Monitor (SRUM) is a Windows diagnostic subsystem introduced in Windows 8 and present in every version since. It was designed to support Windows’ battery and power usage diagnostics — the kind of detail that lets your laptop tell you ‘Google Chrome is using 23% of your battery.’ To do this, Windows tracks how much CPU time, memory, and network bandwidth each application consumes, in hourly buckets, continuously, in the background.

The data is stored in an Extensible Storage Engine (ESE) database at C:\Windows\System32\sru\SRUM.db. This file exists on every Windows 8, 10, and 11 machine. It retains data for approximately 30 to 60 days, rolling. It records network bytes sent and received per application, per hour. It includes the application’s full executable path. And — this is the part that matters forensically — it continues to retain historical entries for an application even after that application has been completely uninstalled. The database tracks what happened; it does not audit whether the application currently exists.

Most Windows users have never heard of SRUM. Most IT professionals have never heard of SRUM. In our experience, a significant fraction of practising digital forensic examiners had not added SRUM to their standard collection workflow at the time of this engagement. The suspect in this case had certainly never heard of SRUM. This was his significant misfortune.

Key Observation

He had uninstalled the tool. He had deleted the files. He had cleared his browser history. He had done everything a person does when they want to make something disappear. Windows had been taking notes the entire time.

The Engagement

How We Were Called In

The company’s legal counsel engaged us after the departure of their VP of Sales, Marcus, to a direct competitor. The circumstances were suspicious: Marcus had given two weeks’ notice, been placed on garden leave immediately as per company policy, and the competitor had launched a remarkably targeted sales campaign against the company’s top forty accounts within six weeks of Marcus’s start date. Those forty accounts corresponded almost exactly to the company’s internal ‘Priority Tier 1’ customer list — a document that was not publicly available and existed only in the company’s CRM and a handful of internal reports.

Marcus, when contacted by legal counsel, had denied taking any company data. He had returned his company laptop voluntarily before being placed on garden leave. The laptop had since been wiped and re-imaged for a new employee. What remained was a forensic image of the drive taken before the wipe — a standard IT practice at this company for all departing executives — and a BitLocker recovery key in the company’s Active Directory.

The image was 512GB. We had it on a drive in our lab by end of that week.

Finding 1: The Absence of Expected Evidence

Artifact: Windows Prefetch + Browser History + Registry (MRU Lists)

Path: C:\Windows\Prefetch\ | AppData\...\Chrome\User Data\Default\History | NTUSER.DAT

  • Prefetch retains last 8 execution timestamps and file references per binary
  • Browser History: SQLite DB — downloads table, urls table, visits table
  • Registry MRU (Most Recently Used): HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
  • Their absence or sanitisation is itself evidence — but not enough for litigation without positive proof

Standard forensic triage of the image produced results that were notable for what was absent. The Prefetch directory had been cleared — a telling indicator, as Prefetch does not clear itself and Windows does not offer a user-facing option to do so. Browser download history had been cleared. The most recently used file lists in the registry showed only files accessed in the first two weeks of employment and a gap of almost nothing for the final three weeks.

Marcus had been careful. Not careful enough, as it happened, but careful. He had cleared the artifacts most people know about. What he had not done — what almost no one thinks to do — was clear SRUM.db.

SRUM.db is not in any widely distributed ‘anti-forensics’ checklist. It does not appear in the CCleaner interface. It is a system file, locked by the operating system while Windows is running, located in a directory that requires elevated privileges to access. The tooling to parse it barely existed outside specialist forensic communities at the time of this engagement.

Finding 01

Standard Artifacts Sanitised — Prefetch Cleared, Browser History Wiped, MRU Lists Sparse

Forensic triage identified deliberate anti-forensics activity: Prefetch directory contained zero entries for the 18 days preceding laptop return (Prefetch does not self-clear). Browser download history was empty. Registry MRU lists showed a 22-day gap covering the period of suspected exfiltration. No Prefetch entries for known file-transfer tools (rclone, WinSCP, FileZilla, Cyberduck) were present. The absence of Prefetch across 18 days is not consistent with normal use — it is consistent with deliberate clearance. This established motive to conceal but provided no positive evidence of what was concealed. SRUM.db had not been touched.

Finding 2: SRUM.db — What the Database Contained

Artifact: SRUM.db — System Resource Usage Monitor ESE Database

Path: C:\Windows\System32\sru\SRUM.db (live system: locked — acquire via VSS shadow copy or offline mount)

  • Format: Extensible Storage Engine (ESE / JET Blue) database — same format as Exchange and Active Directory
  • Key table: {973F5D5C-1D90-11D3-AEC2-00805FC297D7} = Network Data Usage (bytes sent/received per app per hour)
  • Also contains: {D10CA2FE-6FCF-4F6D-848E-B2E99266FA89} = Application Resource Usage (CPU, memory, runtime)
  • Retention: ~30–60 days rolling window — entries older than the window are purged automatically
  • ExeInfo field: full path of the executable at time of execution (persists after uninstall)
  • Parse with: srum-dump (Python), SRUM-DUMP (Excel plugin), or Arsenal Recon’s SRUM Expert
BASH / FORENSICS
# SRUM.db acquisition and parsing from forensic image — offline mount, srum-dump + SOFTWARE hive

cp /mnt/evidence/Windows/System32/sru/SRUM.db /analysis/srum/SRUM.db
cp /mnt/evidence/Windows/System32/config/SOFTWARE /analysis/srum/SOFTWARE
# SOFTWARE hive maps AppID integers to executable paths — required for meaningful output

# Parse with srum-dump (Python)
pip install srum-dump --break-system-packages -q
srum_dump.py --SRUM_INFILE /analysis/srum/SRUM.db \
             --REG_HIVE    /analysis/srum/SOFTWARE \
             --XLSX_OUTFILE /analysis/srum/srum_output.xlsx

# Table of interest: {973F5D5C-1D90-11D3-AEC2-00805FC297D7} (Network Data Usage)
# Columns: AutoIncId, TimeStamp, AppId, UserId, BytesSent, BytesRecvd, ConnectCount
PYTHON / SRUM ANALYSIS
# Filter SRUM Network Data Usage for significant outbound transfers

import pandas as pd

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

# Filter: outbound bytes > 1MB in any single hour, sorted by date
significant = df[df['BytesSent'] > 1_000_000].copy()
significant['Timestamp'] = pd.to_datetime(significant['Timestamp'])
significant = significant.sort_values('Timestamp')

print(significant[['Timestamp','ExeInfo','UserId','BytesSent','BytesRecvd']].to_string())

# OUTPUT (condensed — rows above 1MB outbound threshold):
# Timestamp              ExeInfo                                         BytesSent    BytesRecvd
# 2024-██-██ 09:00 UTC   C:\Chrome\Application\chrome.exe               1,247,344    28,441,203  ← normal
# ...
# 2024-██-██ 19:00 UTC   C:\Users\marcus\AppData\Local\Temp\rc.exe      841,209,344  12,441      ← !!
# 2024-██-██ 20:00 UTC   C:\Users\marcus\AppData\Local\Temp\rc.exe    2,947,301,112   8,204      ← !!
# 2024-██-██ 21:00 UTC   C:\Users\marcus\AppData\Local\Temp\rc.exe    1,984,441,203   4,122      ← !!
# 2024-██-██ 22:00 UTC   C:\Users\marcus\AppData\Local\Temp\rc.exe    1,187,203,441   3,841      ← !!
# 2024-██-██ 09:00 UTC   C:\Users\marcus\AppData\Local\Temp\rc.exe      441,203,847   2,104      ← day 2
# 2024-██-██ 10:00 UTC   C:\Users\marcus\AppData\Local\Temp\rc.exe    1,102,847,203   1,844      ← day 2

# rc.exe: total BytesSent = 8,503,406,250 bytes = ~8.5 GB outbound
# BytesRecvd: negligible (32,556 bytes total) — one-way upload, not a sync
# Executable path: AppData\Local\Temp\rc.exe — non-standard location, disguised name

The name rc.exe told us immediately what we were looking at. Rclone — the open-source cloud synchronisation tool used in data exfiltration operations — is commonly renamed and placed in temporary directories specifically to avoid detection by name-based EDR rules. The binary had been named rc.exe and placed in Marcus’s AppData\Local\Temp directory. It had transmitted 8.5 gigabytes of data outbound across two evenings. It had received 32,556 bytes in return — consistent with rclone’s acknowledgement traffic when uploading to a remote destination.

The binary was gone. The Prefetch entry was gone. The registry keys were gone. Every trace Marcus had been able to reach had been erased. SRUM had recorded each hour of operation regardless, because SRUM does not care whether an application exists. It cares whether it ran. rc.exe had run. SRUM had written it down.

Finding 02

rc.exe (Rclone Renamed) Recorded in SRUM — 8.5 GB Outbound Across Two Evenings, Binary Subsequently Deleted

SRUM Network Data Usage table contained 6 hourly entries for C:\Users\marcus\AppData\Local\Temp\rc.exe across two consecutive evenings, recording a combined 8,503,406,250 bytes outbound (BytesSent) and 32,556 bytes inbound (BytesRecvd). The outbound/inbound ratio is consistent with rclone upload operations. The binary was not present on the filesystem at time of forensic acquisition — it had been deleted. No Prefetch, no MFT entry, no registry trace remained. SRUM retained the complete per-hour network usage record because it operates independently of the application lifecycle.

Finding 3: Identifying the Destination — VSS Shadow Copy Recovery

Artifact: VSS Shadow Copies + Rclone Configuration File

Path: VSS snapshots | %APPDATA%\rclone\rclone.conf (deleted from live filesystem, survived in shadow copy)

  • Volume Shadow Copies created automatically by System Restore and Windows Update
  • Rclone config file: specifies remote type, account email, and obfuscated password
  • Rclone ‘obscured’ passwords are trivially reversible: rclone reveal [obfuscated_string]
  • DNS cache: volatile, lost on reboot — not available in dead-disk images

Knowing that 8.5 GB had been transmitted was significant. Knowing where it had gone was essential for the civil case. The forensic image contained three VSS shadow copies created by Windows Update and System Restore operations. We mounted each one and searched for rclone configuration files.

BASH / VSS
# VSS shadow copy search — rclone.conf recovered from shadow 3 days before laptop return

# Search all shadow copies for rclone config:
for shadow in /mnt/shadow1 /mnt/shadow2 /mnt/shadow3; do
    find $shadow -name 'rclone.conf' -o -name '.rclone.conf' 2>/dev/null
    find $shadow -path '*/rclone/*' 2>/dev/null
done

# RESULT — shadow copy #2 (dated 3 days before laptop return):
# /mnt/shadow2/Users/marcus/AppData/Roaming/rclone/rclone.conf  ← FOUND

cat /mnt/shadow2/Users/marcus/AppData/Roaming/rclone/rclone.conf

# Content:
[remote]
type = mega
user = ████████████████@proton.me
pass = ████████████████████████████  # rclone-obscured password (not plaintext but reversible)

# Destination: MEGA cloud storage
# Account email: Proton Mail address (anonymous registration — no KYC)
# rclone obscured passwords are trivially reversible:
# rclone reveal ████████████████████████████
# Output: [plaintext password — not reproduced here]

The configuration file had survived in a shadow copy. The destination was MEGA — a cloud storage provider popular in exfiltration cases for its free 20 GB tier, end-to-end encryption, and permissive terms of service. The account was registered to a Proton Mail address that Marcus had not used for any other identifiable purpose. We did not attempt to access the MEGA account — that is a matter for law enforcement with appropriate process.

Finding 03

Rclone Configuration File Recovered from VSS Shadow Copy — MEGA Destination, Proton Mail Account

A VSS shadow copy created 3 days before laptop return contained rclone.conf in Marcus’s AppData\Roaming\rclone\ directory. The configuration specified MEGA cloud storage as the destination and a Proton Mail address as the account identifier. The rclone password field used rclone’s built-in obfuscation (XOR, not encryption) and was reversible. The primary rclone config and binary had been deleted from the live filesystem — the shadow copy was the sole surviving artifact. Without VSS enumeration, this destination would have remained unknown.

Finding 4: Correlating Upload Windows with Company Data Access

Artifact: SRUM Timestamps + CRM Access Logs + LNK Files (Windows Recent Items)

Path: SRUM: timestamp buckets (UTC) | CRM: web server access log | %APPDATA%\Microsoft\Windows\Recent\

  • SRUM timestamps are hour-bucket starts in UTC — convert to local time using SYSTEM hive timezone data
  • CRM access log: correlate Marcus’s authenticated sessions with SRUM upload window
  • LNK files: timestamped shortcuts created when files are opened, recording full UNC path for network shares
  • LNK files are frequently overlooked in anti-forensics cleaning — not cleared by most commercial tools
CRM LOG + LNK FILES
# CRM access log + LNK files — 40-account Priority Tier 1 browse, report export, then rclone upload 37 min later

# SRUM upload window 1: 2024-██-██ 19:00-22:00 UTC = 15:00-18:00 Eastern

# CRM access log (filtered for marcus@company.com, same date):
# Time (Eastern)  Action                    Record Accessed
# 13:44:02         VIEW  Contact              Priority Tier 1 — [Account A]
# 13:44:48         VIEW  Contact              Priority Tier 1 — [Account B]
# 13:45:19         VIEW  Contact              Priority Tier 1 — [Account C]
# ... (40 consecutive Contact views, all Priority Tier 1 accounts, 13:44-14:22)
# 14:22:41         RUN   Report               'My Accounts — Full Export with Contact Details'
# 14:23:04         DOWNLOAD  Report Result    my_accounts_export_20240██.csv  (2.3 MB)
# [15:00 Eastern = 19:00 UTC — rclone upload begins in SRUM]

# Time elapsed between CRM report download and rclone upload start: 37 minutes

# LNK file analysis (Windows Recent items — not all cleared):
# C:\Users\marcus\AppData\Roaming\Microsoft\Windows\Recent\
# Surviving LNK files:
# 2024-██-██ 14:01  → D:\Shared\Sales\████ Pharma\Customer_Analysis_FY2024.xlsx (14.2 MB)
# 2024-██-██ 14:08  → D:\Shared\Sales\Strategic\Pricing_Model_Confidential_v4.xlsm (8.8 MB)
# 2024-██-██ 14:15  → D:\Shared\Sales\████ Pharma\Pipeline_Q4_2024_Internal.pptx (44.1 MB)
# [14 additional LNK files, all network share paths, all within 90-minute window]

The LNK files were the unexpected bonus. Marcus had cleared the Prefetch and the browser history, but he had not cleared his Windows Recent items — the shortcut files that Windows creates automatically whenever a file is opened, and which record the full path of the target file including network share paths. Fourteen LNK files survived, all pointing to network share locations, all timestamped within a 90-minute window immediately preceding the rclone upload.

The picture the evidence painted was complete. CRM access for 40 Priority Tier 1 accounts, followed by a full export of contact details, followed by opening 14 large sales and pricing files from the network share, followed by 8.5 GB of outbound transfer via a renamed rclone binary to a MEGA account registered to a Proton Mail address. Then the cleanup. Then the laptop return two weeks later.

Finding 04

CRM Report Export + 14 LNK Files for Network Share Documents Immediately Preceded SRUM Upload Window

CRM vendor logs confirmed Marcus accessed all 40 Priority Tier 1 customer accounts sequentially and downloaded a full contact export at 14:23 on the day of the first rclone upload. LNK files in Windows Recent Items (not cleared during anti-forensics activity) recorded 14 additional file accesses on the same network share — pricing models, pipeline reports, and customer analysis files — between 14:01 and 15:00. SRUM upload began at 15:00 (19:00 UTC). The 37-minute gap between last LNK timestamp and first rclone byte is consistent with file collection and rclone configuration. LNK target metadata preserved file sizes confirming the accessed files as a credible subset of the uploaded volume.

Reconstructed Timeline

TimestampArtifact SourceEvent
Day -14, 13:44CRM access logMarcus begins sequential access of all 40 Priority Tier 1 customer accounts. 40 individual contact views over 38 minutes.
Day -14, 14:22CRM access logMarcus runs ‘My Accounts — Full Export with Contact Details’ report. Downloads CSV (2.3 MB) at 14:23.
Day -14, 14:01–15:00LNK files (Windows Recent)14 network share files opened: Customer_Analysis_FY2024.xlsx, Pricing_Model_Confidential_v4.xlsm, Pipeline_Q4_2024.pptx, and 11 additional sales documents.
Day -14, 19:00–22:00 UTCSRUM.db (Network Data Usage)rc.exe (rclone renamed) transmits 5,975,754,100 bytes (5.6 GB) outbound. 3 consecutive hourly SRUM entries.
Day -13, 09:00–10:00 UTCSRUM.db (Network Data Usage)rc.exe transmits remaining 2,527,652,150 bytes (2.4 GB) outbound. Upload complete. Total: 8,503,406,250 bytes (~8.5 GB) to MEGA.
Day -13 (estimated)Filesystem (absence)rc.exe deleted from AppData\Local\Temp\. Prefetch entries cleared. Browser history cleared. AppData\Roaming\rclone\ deleted from live filesystem.
Day -3 (VSS)VSS shadow copy #2Windows creates shadow copy for System Restore. rclone.conf preserved: MEGA destination, Proton Mail account, rclone-obscured password.
Day 0Chain of custodyMarcus returns company laptop. Standard IT forensic image taken before wipe (company policy for departing executives).
Week +6Company intelligenceCompetitor launches targeted campaign against all 40 Priority Tier 1 accounts using information consistent with CRM export content.
Week +8EngagementMjolnir Security retained by legal counsel. Forensic image provided. SRUM.db identified as key artifact on day 2 of analysis.
Week +10Forensic reportReport delivered to legal counsel: SRUM confirmed 8.5 GB exfiltration, VSS confirmed MEGA destination, CRM logs confirmed Priority Tier 1 data access, LNK files confirmed document collection.

What This Engagement Teaches Us

For Digital Forensic Examiners

  1. Add SRUM.db to your standard collection checklist for every Windows 8+ investigation. It is at C:\Windows\System32\sru\SRUM.db, it requires the SOFTWARE registry hive to decode AppIDs meaningfully, and it must be acquired offline (VSS or image mount) because the operating system locks it on a live system. It retains ~30–60 days of per-application network usage regardless of whether the application still exists.
  2. The SRUM retention window of 30–60 days means timing matters for collection. If you are engaged more than 60 days after the suspected exfiltration, SRUM may have already purged the relevant entries. Request device preservation immediately. Do not wait for the evidence to come to you.
  3. An application appearing in SRUM with very high BytesSent and negligible BytesRecvd is a strong indicator of a one-way upload. Legitimate sync applications (OneDrive, Dropbox in sync mode) show roughly proportional send and receive. A 260:1 BytesSent:BytesRecvd ratio for an unknown executable in AppData\Temp is not a sync. It is an exfiltration.
  4. Always enumerate VSS shadow copies when SRUM or other artifacts suggest deleted evidence. Configuration files, browser profiles, and recently deleted documents frequently survive in shadows even when the live filesystem has been cleaned.

For Security Engineers & Incident Responders

  1. SRUM is a detection source, not just a forensic artifact. On a live system, parsing SRUM.db via a scheduled task or endpoint agent can identify applications transferring anomalous outbound data volumes in near-real-time — particularly useful for detecting renamed rclone or similar tools that evade name-based EDR rules.
  2. Rclone exfiltration is ubiquitous in both insider threat and ransomware affiliate cases. Standard detection approaches (looking for ‘rclone.exe’ in process names or Prefetch) fail trivially against renamed binaries. Behavioral detection — looking for SRUM network usage anomalies, large outbound transfers to MEGA/Backblaze/Wasabi/S3-compatible endpoints — is more robust.
  3. Windows Recent Items (LNK files) are frequently overlooked in anti-forensics cleaning. They persist in %APPDATA%\Microsoft\Windows\Recent\ and are not cleared by most commercial cleaning tools unless specifically configured. They record the full UNC path of network share files when accessed.
  4. For HR and legal teams: a forensic image of the device before wipe is cheap insurance. The image in this case was taken as a standard procedure — not because the company suspected Marcus specifically. That image, and SRUM.db within it, was the difference between a civil case that settled within three months and one that could have dragged on for years without evidence.

Mjolnir Security — Digital Forensics & Litigation Support

Mjolnir Security provides digital forensic investigation, insider threat analysis, and expert witness testimony for civil and criminal proceedings. Our DFIR team has provided forensic evidence in over 80 corporate data theft, IP misappropriation, and employment dispute matters.

Digital Forensics Insider Threat Investigation Litigation Support Expert Witness Testimony Data Exfiltration Analysis Evidence Preservation

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

Written by Mjolnir Security DFIR team

Published March 2024 · DFIR Engagement Series · TLP:WHITE

Case #156 · Skuggaheimar · Mjolnir Security · All client details anonymized · TLP:WHITE