
SRUM is maybe one of the best Windows digital forensic artefacts, if youâre willing to roll your sleeves up. You can get proof of execution and execution runtime, as well as proof of network communication and the bytes sent and received Let's take a look in this #DFIR thread?
Since Win8, System Resource Usage Monitor (SRUM) monitors a bunch! What weâre most interested in is its detailed record of programs and network activity. SRUM has a LONG memory compared to some of the other more ephemeral artefacts?
To put SRUM to forensic work, grab its .DAT file C:\Windows\System32\sru\SRUDB.dat To gain extra contextual data, we're advised to also collect the SOFTWARE hive. I didn't do that however, because I am a bad person ?
We'll leverage one of @EricRZimmerman's brilliant tools to parse out the .DAT And we can simply execute with : `.\SrumECmd.exe -f .\SRUDB.dat --csv .`
You should get a bunch of CSV files I tend to prioritise the following ones: - SrumECmd_NetworkUsages_Output.csv - SrumECmd_AppResourceUseInfo_Output.csv - SrumECmd_Unknown*_Output.csv (occasionally) But maybe you'll find use from the others?
Let's take a look at the results. I'll be using Excel because (again) I am a bad person. SRUM seems to write once an hour and at shutdown, so donât trust the timestamps as complete gospel.
SÍrÍuÍmÍEÍCÍmÍdÍ_NÍeÍtÍwÍoÍrÍkÍUÍsÍaÍgÍeÍsÍ_OÍuÍtÍpÍuÍtÍ.cÍsÍvÍ When tidied up has some cool fields. Most noteworthy in the orange box are the network bytes IN/OUT
If youâre looking for possible indicator of C2 or data exfil, try this: Convert these columns into a graph. I'd separate graphs for bytes in/out, initially. You can then click on these points in the graph, and it will highlight the EXE back in your table.
SÍrÍuÍmÍEÍCÍmÍdÍ_AÍpÍpÍRÍeÍsÍoÍuÍrÍcÍeÍUÍsÍeÍIÍnÍfÍoÍ_OÍuÍtÍpÍuÍtÍ.cÍsÍvÍ We can use it to see programmes more / less resource intensive. Maybe it will snitch on coin miners using a lot of resource, or quiet backdoors using fewer.
SÍrÍuÍmÍEÍCÍmÍdÍ_UÍnÍkÍnÍoÍwÍnÍ3Í1Í2Í_OÍuÍtÍpÍuÍtÍ.cÍsÍvÍ This one is a real mixed bag. Sometimes itâs gold, other times trash. It will show runtime with okayish accuracy I tend to sort by shortest runtime when looking here.
UÍsÍiÍnÍgÍ IÍRÍLÍ I had a case where an alert claimed some kind of process injection. But I couldnât find any other evidence to triangulate that finding. Maybe SRUM can help? From SRUM's CSV formatted data, let's zero in on that window of time from the alert (23:52)
ScreenConnect - a remote management tool - appeared during our window of time. I graphed out all of the ScreenConnect data SRUM held, with a focused on bytes in and out. And look at the that wild spike in network communication?!
Drilling into the specific ScreenConnect spike, we can see itâs recorded ?? ???? ????? than our initial alert time I considered this suspicious nonetheless for three reasons: 1. When baselined, that colossal byte in/out was anomalous compared to previous activity 2.
We already contextualised this window of time as suspicious, from the initial alert. 3. We know that SRUM timestamps are not always accurate. Neither are alerts sometimes! An hour's flexibility is more than satisfactory to connect the potential sus activity.
I then initiated a ScreenConnect investigation, to see if anything here would contextualise the initial process inject alert But that's for another day! I hope this thread has brought SRUM to your attention, and equipped you with a foundation to explore SRUM's data yourself ?
Here are some much better resources on SRUM by @velocidex and @13CubedDFIR Thanks for your time ?
Follow us on Twitter
to be informed of the latest developments and updates!
Follow @tivitikothreadYou can easily use to @tivitikothread bot for create more readable thread!