Detecting data exfiltration with SRUM network usage
5/19/2026
Network Data Usage is one of the few places on a Windows host that records per-process bytes against per-user attribution against a specific network. It does not record destinations, URLs, or content. Treat it as a triage and corroboration source, not a packet capture. Used with proxy logs and filesystem timelines, it closes exfiltration cases that EDR alone could not.
What the table actually carries
{973F5D5C-1D90-4944-BE8E-24B94231A174} — Network Data Usage. Each
hourly row holds:
TimeStamp— bucket boundary (OLE date).AppId— resolves to a process viaSruDbIdMapTable.UserId— resolves to a SID.InterfaceLuid— Windows LUID for the network interface.L2ProfileId— opaque GUID; resolve throughNetworkList\Profilesin the registry.L2ProfileFlags— bitmask:0x100wired,0x200wireless,0x400WWAN.BytesSent,BytesRecvd— counters per sample, per process.
What it does not carry: URLs, file names, packet payloads, destinations.
The workflow
- Acquire and recover. Pull the entire
sru\directory and theSOFTWAREhive. Replay logs if dirty — see how to fix a dirty SRUDB.dat. - Open Network Data Usage. In the in-browser parser or
SrumECmd. The parser tab already resolvesAppIdandUserId. - Sort by
BytesSentdesc. Export to CSV if you want to work the numbers in a spreadsheet. - Baseline, do not threshold blindly. Cloud-sync clients,
browsers and update agents legitimately move gigabytes. The signal
is a process that normally talks little suddenly sending a lot:
powershell.exe,pwsh.exe,cmd.exe,curl.exe, archivers, anything from%TEMP%or%AppData%, anything unsigned. - Attribute. The resolved
UserId(SID) tells you whose session. The resolvedAppIdnames the binary. A departing employee's SID against a7z.exeorcurl.exerow is a lead. - Check the network.
L2ProfileFlagsdecodes to wired / Wi-Fi / mobile broadband. Outbound traffic over a personal hotspot to bypass corporate egress filtering is the textbook exfiltration tell. - Time-box. Use
TimeStampto align against the suspect's resignation, a known compromise window, or after-hours activity.
A textbook signal
A pwsh.exe row, UserId resolved to the suspect's SID, BytesSent
≈ 1.4 GB across three consecutive evening buckets, L2ProfileFlags
indicating mobile broadband. That combination — unusual process +
unusual volume + named user + after hours + bypass network — is the
exfiltration fingerprint. It does not tell you the files.
For the what, pivot:
- USN journal — file deletes, renames, archive creates in the same window.
- MFT — staging directories, archive files, file sizes that match transfer volumes.
- Prefetch — execution of archivers,
curl,rclone,aws.exe. - AmCache — SHA-1 of any custom binary referenced in the suspect rows.
- EVTX — PowerShell
4104script-block logs, Sysmon3network connections (if the host had Sysmon).
Real EDR overlap
Modern EDR records process-level network traffic too. SRUM still wins when:
- EDR was not deployed during the suspicious window.
- EDR was disabled by the adversary; DPS rarely is.
- EDR retention does not cover the timeframe.
- The transfer happened on a personal hotspot the EDR's cloud was not reachable through.
The strongest exfiltration cases stack EDR, proxy/firewall, SRUM, and filesystem evidence. If any one of those is missing, the others usually fill the gap.
Limits to state honestly
- Hourly bucketing: cannot claim a precise transfer minute from short- term rows. You can claim "between 22:00 and 23:00 UTC".
- No destination: SRUM cannot prove where the data went. Proxy logs or NetFlow do that.
- Cumulative counters per sample include retransmits. Headline numbers are correct; per-packet claims are not.
- The LT siblings aggregate weekly. Use them for "did anything happen in the past year"; do not pin a specific hour from an LT row.
Further reading
Frequently asked questions
Can SRUM show what data was stolen?
No — SRUM records byte counts per process, not file names or content. It tells you which process sent how much, over which network, and under which user. You corroborate the 'what' with USN journal, MFT, or DLP.
What byte threshold indicates exfiltration?
There is no universal number. Baseline the process: a backup agent sending 2 GB is normal; powershell.exe or a custom binary sending 200 MB outbound is not. The parser's Anomalies tab flags >50 MB in a single sample as a starting point.
Which SRUM table do I use?
Network Data Usage ({973F5D5C-1D90-4944-BE8E-24B94231A174}). BytesSent is the outbound counter; AppId and UserId resolve to the process and user; L2ProfileId maps to the network.
Can it detect exfiltration over a VPN or hotspot?
It detects the bytes regardless of destination. L2ProfileFlags distinguishes wired / Wi-Fi / mobile broadband, which often reveals an unexpected network (personal hotspot) used to bypass corporate egress controls.
Is SRUM enough on its own for an exfiltration case?
It is strong circumstantial evidence (process + volume + user + network + time). Pair it with proxy/firewall logs, DLP, and filesystem timelines for a complete, defensible case.