サイト内の現在位置

フォレンジックにおけるSRUMの活用

NECセキュリティブログ

2022年7月22日

NECサイバーセキュリティ戦略統括部セキュリティ技術センターの山﨑です。セキュリティインシデントの対応において、”情報漏洩の有無”は被害範囲の特定や復旧に向けた方針を決定する上で重要な事項の一つです。今回のブログでは、”情報漏洩の有無”という観点での調査に活用可能なSRUMについて書きます。

SRUMとは

SRUM(System Resource Usage Monitor)は、アプリケーションやサービス等の利用状況を監視するWindowsの機能です PDF[1]。この機能はWindows 8から導入されました。SRUMは、ある期間内で実行されたアプリケーションやそのアプリケーションを実行したユーザーアカウント、アプリケーション毎のネットワーク通信量といったデータを収集します。
SRUMが収集したデータは、はじめにSOFTWAREレジストリに保存されます。その後、(Windowsが起動している場合は)約一時間に一回、さらにシャットダウン時にSOFTWAREレジストリからSRUDB.dat(*1)に転送されます。

(*1) ESE(Extensible Storage Engine)のデータベースファイル。後述する専用のツールを用いることでデータベース内のデータを参照可能。C:\Windows\System32\sruフォルダ配下に存在する。

SRUDB.datのテーブル

ESEデータベース内のデータを参照するツールであるESEDatabaseView new window[2]を使ってSRUDB.datのテーブル一覧を見てみます。下図から分かるように、SRUDB.datのテーブル名はGUIDで表現されます。

各テーブルには、以下の表の「データの種類」に関連するデータが記録されています。

テーブル名(GUID) データの種類
{5C8CF1C7-7257-4F13-B223-970EF5939312} App Timeline Provider
{7ACBBAA3-D029-4BE4-9A7A-0885927F1D8F} vfuprov
{973F5D5C-1D90-4944-BE8E-24B94231A174} Windows Network Data Usage Monitor
{B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4} Tagged Energy Provider
{d10ca2fe-6fcf-4f6d-848e-b2e99266fa86} WPN SRUM Provider
{d10ca2fe-6fcf-4f6d-848e-b2e99266fa89} Application Resource Usage Provider
{DA73FB89-2BEA-4DDC-86B8-6E048C6DA477} Energy Estimation Provider
{DD6636C4-8929-4683-974E-22C046A43763} Windows Network Connectivity Usage Monitor
{fee4e14f-02a9-4550-b5ce-5fa2da202e37} Energy Usage Provider
{fee4e14f-02a9-4550-b5ce-5fa2da202e37}LT Energy Usage Provider LT

SRUMが収集したデータのフォレンジックでの活用シーン

SRUMが収集したデータをフォレンジックで活用することを考えた場合、筆者が特に有用と考えるデータの種類とそこに記録されているデータを表にまとめます。

データの種類 収集されるデータ(一部を抜粋)
Windows Network Data Usage Monitor ・アプリケーション名(フルパス)/サービス名
・実行ユーザーのSID
・インターフェースのタイプ(有線/無線)
・SSID
・ネットワーク通信量 など
Windows Network Connectivity Usage Monitor ・インターフェースのタイプ(有線/無線)
・SSID
・接続開始時刻
・接続時間 など

例えば、以下のような情報漏洩の可能性を示す事象の調査・発見を目的とする解析を行う場合に、これらのデータが活用できると考えます。

  • 社員が退職数日前に外部に大量のデータをアップロード
  • 業務用PCをカフェのフリーWi-Fiに接続し、データをアップロード
  • 悪意あるソフトウェアによるネットワーク通信の有無
  • 大量のデータを外部にアップロードしているアプリケーションの特定

SRUMが収集したデータを参照する方法

最も簡単な方法は、タスクマネージャーを使用することです。タスクマネージャーの[アプリの履歴]タブより、CPU時間やネットワーク通信量など、SRUMが収集したデータを参照可能です。

ただし、タスクマネージャーから参照できるデータはSRUMが収集したデータの一部です。更に多くのデータを参照するためには、専用のツールを使用する必要があります。前述のESEDatabaseViewもその一つですが、ESEDatabaseViewで参照している対象はデータベースの生データです。生データだと、各エントリーを生成したアプリケーションの特定が面倒であるため、フォレンジックには不向きと考えます(データベースの構造理解には役立つ)。フォレンジックに活用可能なツールとして、以下のようなものがあります。

  • SRUM-DUMP2 new window[3]
  • SrumECmd new window[4]
  • NetworkUsageView new window[5]

本ブログでは、SRUM-DUMP2を使ってSRUMが収集したデータを参照する方法を紹介します。手順は以下の通りです。

  1. SRUM-DUMP2が含まれたZIPファイルをダウンロード後、管理者権限で「srum_dump2.exe」を実行します。
    ⇒SRUM-DUMP2のウィンドウが起動します。
  2. SRUM-DUMP2のウィンドウの[Browse]よりC:\Windows\System32\sru\SRUDB.datを選択します(①)。
    ⇒警告が表示されます。これは、SRUDB.datがOSによってロックされており、直接アクセスできないためです。
  3. 警告画面で[Auto Extract]を選択します(②)。
    ⇒裏側でessentutl.exeコマンドが実行され、VSSスナップショットを利用したファイルコピーが行われます(SRUDB.datとSOFTWAREレジストリ)。ファイルコピー完了後、SRUM-DUMP2のウィンドウで、コピーされたSRUDB.datとSOFTWAREが選択された状態になります。
  4. SRUM-DUMP2のウィンドウで[OK]を押下します(③)。
    ⇒数分待つと、srum_dump2.exeがあるフォルダにSRUM_DUMP_OUTPUT.xlsxが生成されます。

生成されたSRUM_DUMP_OUTPUT.xlsxには複数のシートが存在します。上述のデータの種類に関連するデータが、シート毎に出力されます。

フォレンジックでは、自身のマシンではなく他のマシンを解析するケースもあります。この場合は、SRUM-DUMP2のウィンドウにて、解析対象マシンで収集したSRUDB.datとSOFTWAREを指定します。

痕跡の残り方

以下の表の想定シナリオに関連する操作を行った場合に、SRUMにどのような痕跡が残るかを確認しました。今回は痕跡を確認しやすくするために、サイズの大きいデータを使用しています。

# 想定シナリオ 操作
1 同一ネットワーク内でのマルウェアの横展開 PowerShellを使用して、同一ネットワーク上の共有フォルダにファイルをコピー
※有線LANを使用
※約6.1GBのファイルをコピー
2 退職予定の社員が機密情報をクラウド上にアップロード Google Chromeブラウザを使用して、インターネット上のOneDriveにファイルをアップロード
※無線LANを使用
※約9.2GBのファイル(6.3GBと2.9GBの2ファイル)をアップロード

表の操作を行った後にSRUM-DUMP2を実行し、出力されたExcelファイルの「Network Data Usage」シートを確認します。下図の一行目が#1の痕跡、二~三行目が#2の痕跡です。ネットワーク通信を行ったアプリケーションのフルパスや実行ユーザーのSID&ユーザー名、インターフェース(有線or無線)、無線の場合にはSSIDが正しく記録されていました。また、Bytes Sent列の値は操作に使用したファイルサイズと近い値であることが分かります(#2は二~三行目を合計)。

注意すべきことは、二列目の「SRUM ENTRY CREATION」の時間です。この時刻はアプリケーションを実行(操作を行った)した時間ではなく、SOFTWAREレジストリからSRUDB.datにデータが転送された時間を示します。つまり、アプリケーションを実行してファイルのアップロードを開始してから2022-06-14 9:21:00までのデータ送信量(約4.4GB)が二行目に、2022-06-14 9:21:00から2022-06-14 10:21:00の間のデータ送信量(約5.3GB)が三行目に記録されたということになります(下図を参照)。

攻撃者または不正行為を行ったユーザーは、このような情報漏洩の可能性を示す痕跡を残したくない(削除したい)と考えるでしょう。そこで今回は、タスクマネージャーの[アプリの履歴]画面内にある「使用履歴の削除」をクリックしたときの挙動を確認しました。

2022/5/18から現在までにSRUMが収集したデータがSRUDB.datから削除されることを期待しましたが、クリック後もSRUDB.datからデータは削除されずに残っていました(タスクマネージャー上では削除されているように見えました)。原因は分かりませんが、今回は「使用履歴の削除」をクリックしたときのSRUDB.datへの影響は確認できませんでした。

SRUMが収集したデータを解析する際の注意点

SRUMが収集したデータを解析する際には、以下を認識しておく必要があります。

  • 30~60日分しかデータは保存されない
    SRUMは過去30~60日分のデータしか保存しません。よって、それ以前の痕跡をSRUMから探すことはできません。
  • タイムスタンプはアプリケーションが実行された時間ではない
    想定シナリオ#2で例を示したように、SRUDB.datは1時間に1回とシャットダウン時にエントリーが更新されます。よって、SRUDB.datのタイムスタンプはアプリケーションが実行された時間ではなく、エントリーが更新された時間となります。つまり、前回の更新時から今回の更新の間に起きた事象は全て同じタイムスタンプになります。
  • ネットワーク通信先や漏洩可能性のあるデータの内容は不明
    ネットワーク通信量を見ることで当該アプリケーションがネットワーク通信をした痕跡を確認することができます。しかし、「どこ宛に」、「何のデータを」までは特定することはできません。これらは、他の痕跡や通信経路上のネットワーク機器のログなどから判断する必要があります。

まとめ

Windowsの機能であるSRUMについて、特にフォレンジックでの活用シーンや痕跡の残り方を中心に紹介しました。
SRUMはWindows 8で追加された機能ですが、”フォレンジックへの活用”という観点だと、Windows 10ではTimelineという機能が追加されています。2021年にリリースされたWindows 11でもフォレンジックに活用できる新たな機能が追加されている(or 今後される)かもしれません。私はまだWindows 10を使用していますが、この辺りも今後注目したいと思います。

参考

執筆者プロフィール

山﨑 泉樹(やまざき せんじゅ)
セキュリティ技術センター リスクハンティング・システムグループ

ペネトレーションテスト、脆弱性診断、インシデント対応およびセキュリティ提案・実装を行うための体制確立に関する業務に従事。
CISSP、RISS、GPEN、GCPNを保持。

執筆者の他の記事を読む

アクセスランキング