Windows DFIR チートシート。
Windowsのフォレンジック調査に有用なアーティファクトを侵害のフェーズ毎に、なるべく簡潔にまとめてみた。
Where was it downloaded from?
この項ではファイルのダウンロード元を調べる際に有用なアーティファクトをまとめる。
Browser History
ファイルのダウンロード元を調べるのに最も有用なのはブラウザ履歴である。近年の主要なブラウザは履歴などのデータをSQLiteデータベースに保存していることが多い。
Chromium系またはFirefoxからブラウザ履歴を抽出するSQL文はこちら。
アーティファクト
以下は主要なブラウザ履歴の保管場所。
//Microsoft Edge
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\History
//Google Chrome
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\History
//Mozilla Firefox
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\places.sqlite
//Opera
C:\Users\<username>\AppData\Roaming\Opera Software\Opera GX Stable\History
C:\Users\<username>\AppData\Roaming\Opera Software\Opera Stable\History
Microsoft Edge
この項ではMicrosoft Edgeに関するアーティファクトをまとめる。Edgeに関するデータの多くはSQLiteのデータベースとJSONファイルに保持される。
History
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\History
Preferences (JSON)
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\Preferences
Cache
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\Cache\Cache_Data\
Bookmarks (JSON)
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\Bookmarks
Cookies
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\Network\Cookies
Authentication / Credentials
Login Dataはユーザー名やパスワードなどのログイン情報を保持する。故にInfostealerによく狙われる。
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\Login Data
Autofill
Web Dataはユーザーがテキストフォームに入力したデータを保持する。こちらもよくInfostealerに狙われる。
C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\Web Data
Google Chrome
この項ではChromeに関するアーティファクトをまとめる。Chromeに関するデータの多くはSQLiteのデータベースとJSONファイルに保持される。
History
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\History
Preferences (JSON)
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Preferences
Cache
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data\
Bookmarks (JSON)
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Bookmarks
Cookies
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies
Authentication / Credentials
Login Dataはユーザー名やパスワードなどのログイン情報を保持する。故にInfostealerによく狙われる。
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Login Data
Autofill
Web Dataはユーザーがテキストフォームに入力したデータを保持する。こちらもよくInfostealerに狙われる。
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Web Data
Mozilla Firefox
この項ではMozilla Firefoxに関するアーティファクトをまとめる。Firefoxに関するデータの多くはSQLiteのデータベースとJSON・JavaScriptファイルに保持される。
History
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\places.sqlite
Preferences (JavaScript)
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\pref.js
Cache
キャッシュは\AppData\Roaming\ではなく\AppData\Local\に保持される。
C:\Users\<username>\AppData\Local\Mozilla\Firefox\Profiles\<profile folder>\cache2\
Bookmarks
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\places.sqlite
Cookies
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\cookies.sqlite
Authentication / Credentials
logins.jsonは暗号化されたユーザー名とパスワードを保持し、key4.dbは復号鍵を保持する。故にInfostealerによく狙われる。
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\logins.json
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\key4.db
Autofill
formhistory.sqliteはユーザーがテキストフォームに入力したデータを保持する。こちらもよくInfostealerに狙われる。
C:\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile folder>\formhistory.sqlite
Internet Explorer
この項ではInternet Explorerに関するアーティファクトをまとめる。Internet Explorerに関するデータはファイルとレジストリに保持される。
History
Internet Explorerのバージョン10よりも前のバージョン (1~9) では、ブラウザの履歴はindex.datというデータベースに保持されている。
バージョン10以降ではブラウザ履歴は下記のESE (Extensible Storage Engine) データベースに保持される。
C:\Users\<username>\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat
C:\Users\<username>\AppData\Local\Microsoft\Windows\WebCache\WebCacheV16.dat
C:\Users\<username>\AppData\Local\Microsoft\Windows\WebCache\WebCacheV24.dat
Autocomplete
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage1
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
Typed URLs
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLsTime
Preferences
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer
Cache
C:\Users\<username>\AppData\Local\Microsoft\Windows\Temporary Internet Files\
//Windows XP and older
C:\Documents and Settings\<username>\Local Settings\Temporary Internet Files\
Bookmarks
C:\Users\<username>\Favorites\
//Windows XP and older
C:\Documents and Settings\<username>\Favorites\
Cookies
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Cookies
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Cookies\Low
//Windows XP and older
C:\Documents and Settings\<username>\Cookies
Mark of the Web
Mark of the Webとはインターネットからダウンロードされたファイルのダウンロード元を記録したADSのこと。Windowsはファイルがダウンロードされた場合、Mark of the Webの情報をもとにファイルに対してどのような措置を取るか判断する。
アーティファクト
file.zip:Zone.Identifier:$DATA
以下はMark of the Webの例。
C:\Users\Public\Downloads>more < PC-parts01-comp.png:Zone.Identifier:$DATA
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://mymanfile.com/wp-content/uploads/2023/04/PC-parts01-comp.png
HostUrl=https://mymanfile.com/wp-content/uploads/2023/04/PC-parts01-comp.png
PC-parts01-comp.pngのダウンロード元はhttps://mymanfile.com/wp-content/uploads/2023/04/PC-parts01-comp.pngであることが分かる。
ちなみに秘密モードのブラウザを使用した場合、ダウンロード元のURLは記録されない。以下は同じファイルを秘密モードのブラウザでダウンロードしたもの。
C:\Users\Public\Downloads>more < PC-parts01-comp_incognito.png:Zone.Identifier:$DATA
[ZoneTransfer]
ZoneId=3
HostUrl=about:internet
ダウンロード元のURLが記録されていないことが伺える。
Did it execute?
この項ではシステム上で実行されたプログラムやアプリケーションを調べる際に有用なアーティファクトをまとめる。
Application Compatibility Cache (ShimCache)
こちらとこちらも併せて参照。
Application Compatibility Cache (ShimCache)とはApplication Compatibility (Shim)に関連するキャッシュのこと。Windowsはこのキャッシュ情報を参照して、アプリケーションにShim処理が必要かどうかを判断する。
Application Compatibility Cacheを調査することによって、対象のWindowsホスト上で、どのようなプログラムが実行されたかを確認することができる。
Application Compatibility Cacheには以下のような情報が含まれている。
- ファイルのフルパス
- ファイルサイズ
- ファイルの最終更新日時($Standard Information timestampより)
- ファイルの実行フラグ(Execution Flag)
Application Compatibility Cacheに関するデータはレジストリに格納されている。
アーティファクト
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache
//Windows XP
HKLM\CurrentControlSet\Control\Session Manager\AppCompatibility\AppCompatCache
上記のレジストリをパースすることで、実行されたファイルやスクリプトを確認できる。
AmCache
AmCacheとはWindows上で最近実行されたファイルの情報を記録したレジストリハイブである。RecentFileCache.bcfに代わるものとしてWindows 8で実装された。Windows Server 2012にも実装されている。またWindows 7でもWindows Update KB2952664がインストールされている場合、サポートされる。
AmCacheにはWindows上で最近実行されたファイルに関する以下の情報が記録されている。
- ファイルのフルパス
- ファイルサイズ
- ファイルのタイムスタンプ
- ファイルのSHA-1ハッシュ値
ShimCacheとの一番の違いはファイルのSHA-1ハッシュ値を記録している点。
アーティファクト
%SYSTEMROOT%\AppCompat\Programs\Amcache.hve
上記のファイルをパースすることで、実行されたプログラムやアプリケーションを確認できる。
Prefetch
Prefetchとはアプリケーションの起動時間を短縮するための仕組みである。
アーティファクト
%SYSTEMROOT%\Prefetch\AppName-<hex>.pf
e.g.) C:\Windows\Prefetch\SVCHOST.EXE-C38EF8DD.pf
プログラムが実行されると上記のような.pfファイルが作成される。この.pfファイルを解析することで、以下のことが確認できる。
- 実行されたプログラムのフルパス
- プログラムによって読み込まれたファイルの一覧
- プログラムが実行された回数
- プログラムが最後に実行された日時
Windows serverではPrefetchはデフォルトで無効化されている。
Prefetchの有効化・無効化は以下のレジストリキーで設定できる。
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher
PowerShell History
この項ではPowerShellの実行履歴に関連するアーティファクトをまとめる。
ConsoleHost_history.txt
PowerShellの入力履歴はデフォルトで以下のファイルに保存される。
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
ConsoleHost_history.txtにはユーザーがPowerShellターミナルを起動して対話モードで入力したコマンドの履歴が保存される。PowerShellターミナルを介さずに実行されたコマンドは記録されない。
PowerShell Transcript
PowerShell Transcriptとは、PowerShellのセッション履歴をファイルに出力する機能のこと。入力されたコマンド及びその実行結果が記録される。Start-Transcript コマンドで実行・操作する。
Transcriptが有効化されている場合、デフォルトで以下のファイルに記録される。
C:\Users\<username>\Documents\PowerShell_transcript.<computername>.<random>.<timestamp>.txt
Windows Event ID 4688 (A new process has been created)
EID 4688は新しいプロセスが生成された時に記録される。以下は特に注視するべきフィールド。
- New Process ID: 新規に生成されたプロセスのID
- New Process Name: 新規に生成されたプロセスのフルパス
- Creator Process ID: 親プロセスのID
- Creator Process Name: 親プロセスのフルパス
- Process Command Line: 新規に生成されたプロセスのコマンドライン
Did it achieve persistence?
この項ではマルウェアが悪用する定番の永続化の手法をまとめる。こちらも併せて参照。
Run / RunOnce レジストリキー
Run / RunOnceレジストリキーを編集することによって任意のプログラムやコマンドをユーザーのログオン時に実行できる。
アーティファクト
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_USERS\<SID>\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_USERS\<SID>\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINEのRun/RunOnceキーに登録された処理は、そのコンピュータを利用する全てのユーザーのログオン時に実行される。HKEY_CURRENT_USERとHKEY_USERSのRun/RunOnceキーに登録された処理は、特定のユーザーのログオン時のみ実行される。
Runキーと異なりRunOnceキーに登録された処理は一度実行されると削除されるが、スクリプトなどによってRunOnceキーの削除後に、再度同様のRunOnceキーを作成することによって処理を永続化させることが出来る。
Winlogon Shell / Winlogon Userinit レジストリキー
Winlogon Shell / Winlogon Userinit レジストリキーを編集することによって任意のプログラムやコマンドをユーザーのログオン時に実行できる。
アーティファクト
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
Active Setup レジストリキー
Active Setup レジストリキーを編集することによって任意のプログラムやコマンドをユーザーのログオン時またはシステム起動時に実行できる。
アーティファクト
HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\<GUID>\StubPath
HKEY_CURRENT_USER\Software\Microsoft\Active Setup\Installed Components\<GUID>\StubPath
HKEY_USERS\<SID>\Software\Microsoft\Active Setup\Installed Components\<GUID>\StubPath
Scheduled Task
スケジュールタスクを作成して指定した日時や曜日に任意のプログラムやコマンドを実行できる。At.exeやSchtasks.exeによってスケジュールタスクを作成できる。こちらとこちらも併せて参照。
スケジュールタスク関連のアーティファクト
schtasksコマンドでタスクを作成すると、C:\Windows\System32\TasksにXMLファイルが作成される。atコマンドでタスクを作成すると、C:\Windows\Tasksに.jobファイルが作成される。 ただし、繰り返し実行が設定されていないタスクの場合、タスクが実行されると.jobファイルは消去される。(参考)- タスクスケジューラ (GUI)でタスクを作成すると、
C:\Windows\System32\TasksにXMLファイルが作成される。 - Windows 10よりも前のWindowsシステムではスケジュールされたタスクは
taskeng.exeによって実行される。 - Windows 10以降のWindowsシステムではスケジュールされたタスクは
Task Schedulerサービスをホストしているsvchost.exe(C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s Schedule) によって実行される。 - タスクの実行履歴は
%SYSTEMROOT%\SchedLgU.txtまたは%SYSTEMROOT%\Tasks\SchedLgU.txtに記録される。
Windows Event ID 4698 (A scheduled task was created)
EID 4698はスケジュールタスクが作成された際に記録される。以下は特に注視するべきフィールド。
- Account Name: タスクを作成したアカウント
- Account Domain: アカウントが所属しているドメイン
- Logon ID: ログオンセッションの識別子
- Task Name: 作成されたタスク名
- Task Content: 作成されたタスクの詳細がXMLで記述されている
Windows サービス
Windows サービスを作成し起動条件をAutomaticにすることによって、システムの起動時に任意のプログラムやDLLやコマンドを実行できる。Sc.exeによってWindows サービスを作成できる。
Windows サービス関連のレジストリ
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\<service name>\DisplayName
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\<service name>\Description
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\<service name>\ImagePath
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\<service name>\Start //0x02 for Automatic
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\<service name>\Type
Windows Event ID 7045 (A service was installed in the system)
EID 7045はWindows サービスがインストールされた時に記録される。以下は特に注視するべきフィールド。
- Service Name: Windows サービス名
- Service File Name: サービスバイナリのフルパス
- Service Type: サービスの種類
- Service Start Type: サービスの起動トリガー
Startup フォルダ
Startup フォルダにファイルを配置することによって、任意のファイルをユーザーのログオン時に実行できる。
アーティファクト
C:\Documents and Settings\All Users\Start Menu\Programs\Startup
C:\Documents and Settings\<username>\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
WMI イベント
WMI イベントを作成し、Event Filterにイベント発生の条件を、Event Consumerにイベント発生の条件が満たされたときに実行するアクションの内容を指定して、任意のファイルやペイロードを永続的に実行できる。詳しくはこちら。
アーティファクト
C:\Windows\System32\wbem\Repository\OBJECTS.DATA
//Windows XP
C:\WINDOWS\system32\wbem\Repository\FS\OBJECTS.DATA
上記のファイルをパースすることでWMI常駐オブジェクトを確認できる。
COMオブジェクト・ハイジャック
既存のCOMオブジェクトをハイジャックすることによって任意のファイルを永続的に実行できる。こちらも併せて参照。
アーティファクト
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\<CLSID>
HKEY_CURRENT_USER\Software\Classes\CLSID\<CLSID>
HKCUレジストリ・ハイブにCLSIDを追加して既存のHKLMレジストリ・ハイブ配下のCLSIDを乗っ取る
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID (HKLMレジストリ) と HKEY_CURRENT_USER\Software\Classes\CLSID (HKCUレジストリ)に同一のCLSIDが存在する場合、HKCUレジストリのCLSIDで参照されているCOMオブジェクトが優先的に実行される。
攻撃者はHKCU CLSIDエントリーに悪意のあるペイロードを仕込むことによって、本来実行されるはずだった正規のHKLM CLSIDエントリーをハイジャックできる。
※CLSIDはCOMオブジェクトを識別するためのレジストリキー。
InprocServer32 / LocalServer32 キーに悪意のあるファイルを配置する
CLSIDのInprocServer32またはLocalServer32キーが参照しているファイルがシステム上に存在しない場合、攻撃者はそのCLSIDを乗っ取ることが出来る。例えば、あるCLSIDのInprocServer32キーがC:\Windows\fuga.dllというファイルを参照しているものの、このファイルが存在しない場合、攻撃者は悪意のあるファイルをC:\Windows\fuga.dllとして配置することで、COMオブジェクトを乗っ取れる。
TreatAsキーを作成して正規のCLSIDを悪意のあるCLSIDにリダイレクトさせる
正規のCLSID配下に悪意のあるCLSIDを参照するTreatAsキーを作成することで、悪意のあるCLSIDにリダイレクトさせることが出来る。例えばHKLM\SOFTWARE\Classes\CLSID\{2DEA658F-54C1-4227-AF9B-260AB5FC3543}配下に{00000000-0000-0000-0000-DEADBEEF0000}を参照するTreatAsキーを作成すると、{00000000-0000-0000-0000-DEADBEEF0000}のオブジェクトにリダイレクトされる。
BITS ジョブ
Background Intelligent Transfer Service (BITS)のジョブを作成し、/SetNotifyCmdLine スイッチに任意のファイルやコマンドを指定することによってBITS ジョブの完了後にそれらのファイルやコマンドを実行できる。
具体的には
- BITSジョブを作成する。その際、必ずジョブが失敗するような処理を記述する。例えば存在しないURLへのファイル・ダウンロード要求など。
/SetNotifyCmdLineスイッチに任意のファイルやコマンドを指定する。
/SetNotifyCmdLineはジョブの完了後に任意のコマンドを実行するためのスイッチである。ジョブが何のエラーもなく完了すれば/SetNotifyCmdLineは一回実行されるだけだが、上記のジョブは存在しないURLへのファイル・ダウンロード要求を行うため、必ず失敗する。そのためシステムはファイルのダウンロードが成功するまで定期的にジョブを実行し、その都度/SetNotifyCmdLineで指定されたコマンドが実行される (ドキュメントによるとジョブが失敗した場合、BITSは失敗したジョブを定期的に再実行する)
BITSジョブに関するデータは以下のデータベースファイルに保持されている。
%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr0.dat
%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr1.dat
//Windows 10 and later
%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr.db
上記のデータベースファイルをパースすることでBITSジョブの情報を得ることができる。
What was opened or accessed?
この項ではユーザーもしくは攻撃者がアクセスしたリソースを調べる際に有用なアーティファクトをまとめる。
Shellbag
shellbagとはユーザーが Windows エクスプローラー (explorer.exe)を用いてフォルダを閲覧した際、開いていたウィンドウのサイズ、位置、フォルダなどの情報をトラックする仕組みのこと。(ZIPファイルの情報も含まれる)
shellbagに関する情報はレジストリに格納されており、ユーザーがエクスプローラーを用いて、ローカルフォルダ、ネットワーク共有フォルダ、外部デバイス上のフォルダをブラウズするたびにレジストリの情報が更新される。
shellbagの情報を調べることでユーザーあるいは攻撃者がエクスプローラーを用いて、どのフォルダにアクセスしていたかを確認することができる。詳しくはこちら。
アーティファクト
HKEY_USERS\<SID>_Classes\Local Settings\Software\Microsoft\Windows\Shell\
//Windows XP, Server 2003
HKEY_USERS\<SID>\Software\Microsoft\Windows\Shell\
HKEY_USERS\<SID>\Software\Microsoft\Windows\ShellNoRoam\
shellbagの情報をパースするツールは多数あるが多くの場合、ユーザーのレジストリ・ハイブファイル(NTUSER.DAT、USRCLASS.DAT)を必要とする。
Recent LNK
Windowsではファイルがアクセスされるとショートカットファイル (LNK) が作成される。このLNKファイルを調べることでシステム上で作成されたファイルやアクセスされたファイルを確認することができる。詳しくはこちら。
アーティファクト
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\<filename>.lnk
C:\Users\<username>\AppData\Roaming\Microsoft\Office\Recent\<filename>.lnk
C:\Documents and Settings\<username>\Recent\<filename>.lnk
C:\Documents and Settings\<username>\Application Data\Microsoft\Office\Recent
上記のLNKファイルが作成されるタイミングは以下の3通りである。
- ファイルが新規に作成・保存された時。
- ファイルがアクセスされた時。
- ユーザーがエクスプローラーでファイルを検索して、その検索結果からファイルを開いた時。 (検索に用いたキーワードのショートカットファイルが作成される。詳しくはこちらの記事を参照。)
UserAssist レジストリキー
UserAssist レジストリキーはエクスプローラーを介して実行されたアプリケーションの情報を保持する。これにはRunダイアログやスタートメニューのショートカットファイル (LNK) から実行されたアプリケーションも含まれる。このレジストリキーに保持されたデータは、スタートメニューの「よく使われるアプリケーション」の一覧を生成するのに使われる。
アーティファクト
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
UserAssist レジストリキーは以下の情報を保持する。
- アプリケーションのフルパス
- アプリケーションの実行回数
- アプリケーションが最後に実行された日時
UserAssist レジストリキーの情報はROT13エンコードされているので、解析の際はデコードする必要がある。
MUICache レジストリキー
MUICache レジストリキーはエクスプローラーを介して実行されたアプリケーションの情報を保持する。
アーティファクト
HKEY_USERS\<SID>_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
//Windows XP, Server 2003
HKEY_USERS\<SID>\Software\Microsoft\Windows\ShellNoRoam\MUICache
MUICache レジストリキーの情報は平文で保持されるのでデコードの必要はない。UserAssist レジストリキーと異なり、アプリケーションの実行回数や実行日時は記録されない。
MRU レジストリキー
MRU (Most Recently Used) レジストリキーは「最も直近で使用された」ファイルの情報を保持する。MRUキーは多岐にわたるが、この項ではエクスプローラーを介してアクセスされたファイルの情報が保持されているレジストリキーについてまとめる。
アーティファクト
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\CIDSizeMRU
//Windows XP, Server 2003
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU
- OpenSavePidlMRU (OpenSaveMRU) : エクスプローラーの「Open」や「Save As」ダイアログより開かれた、あるいは保存されたファイルの名前やパスが保持される。
- LastVisitedPidlMRU (LastVisitedMRU) : 「Open」や「Save As」ダイアログを起動したプログラムと、そのプログラムが最も直近でアクセスしたディレクトリの情報が保持される。
- CIDSizeMRU : 実行されたアプリケーションのウィンドウサイズや位置情報が保持される。
RunMRU レジストリキー
RunMRU レジストリキーはRun ダイアログ (Win + Rキー) から実行されたアプリケーションの情報を保持する。近年だとClickFixの調査の際に重宝するアーティファクトである。
アーティファクト
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
RecentDocs レジストリキー
RecentDocs レジストリキーはユーザーが直近で開いた、あるいは保存したファイルの情報を保持する (名前にDocsと含まれているが.docや.docxに限定されない)。
アーティファクト
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
このレジストリキーに保持された情報は、スタートメニューなどで「最近使用されたファイル」の一覧を生成するのに使われる。
Jump Lists
Jump Listsとはスタートメニューやタスクバー上のアプリケーションのアイコンを右クリックした際に表示される、「最近使用されたファイル」や「ピンされたアイテム」の一覧のことである。
アーティファクト
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations
Jump Listsに関するデータは、.automaticDestinations-ms または .customDestinations-msという拡張子を付与されて、上記のディレクトリに保存される。
以下はJump Listsを活用した調査の一例。
- Microsoft OfficeやNotepadなどのJump Listsを調べてユーザーあるいは攻撃者がアクセスしたファイルを確認する。
- Remote DesktopのJump Listsから「最近のRDPコネクション」を調べて水平展開の有無を確認する。
WorldWheelQuery レジストリキー
WorldWheelQuery レジストリキーはユーザーがエクスプローラーの検索フォームから検索したキーワードを保持する。
アーティファクト
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WorldWheelQuery
What was mounted or inserted?
この項ではUSBなどのリムーバブルメディアが挿入された際に有用なアーティファクトをまとめる。
MountedDevices レジストリキー
MountedDevicesレジストリキーは、ディスクやメディアがどのドライブにマウントされているのか、という情報を保持する。
アーティファクト
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
USBSTOR・SCSI レジストリキー
USBSTORおよびSCSI レジストリキーは、挿入されたリムーバブルメディアに関する情報を保持する。こちらも併せて参照。
アーティファクト
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SCSI
Lateral movement?
この項では水平展開の調査に有用なアーティファクトをまとめる。
こちらも併せて参照。
Source of lateral movement
この項では水平展開の送信元ホストで生成されるアーティファクトをまとめる。
Windows Event ID 4648 (A logon was attempted using explicit credentials)
EID 4648はユーザーが他のユーザーのクレデンシャルを使用してホストへのログオンを試みた際に記録される。 以下は特に注視するべきフィールド。
- Account Whose Credentials Were Used: ログオンに使用されたクレデンシャル情報を示す
- Target Server: ログオン先のホストの情報を示す
Windows Event ID 1102 (The client has initiated a multi-transport connection to the server 192.168.xxx.xxx)
EID 1102はホストがRDP接続を要求した時に記録される。Descriptionの欄に接続先のIPアドレスが記録される。
Windows Event ID 1103 (The client has established a multi-transport connection to the server)
EID 1103はホストがRDP接続を要求した時に記録される。
Windows Event ID 1025 (RDP ClientActiveX has connected to the server)
EID 1025はホストがRDP接続を要求した時に記録される。
Terminal Server Client レジストリ
Terminal Server Client レジストリはRDPクライアントに関する設定を保持する。こちらも併せて参照。
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\MRU<NUM>
上記のレジストリキーはRDPクライアントが過去にRDP接続した宛先ホスト名やIPアドレスを保持する。最も直近で接続した宛先情報はMRU0に保持される。
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\<IP address or hostname>
上記のレジストリキーは先述したMRUエントリに対応した情報を保持する。
例えばHKCU\Software\Microsoft\Terminal Server Client\Default\MRU0に192.168.1.1というIPアドレスが記録されている場合、HKCU\Software\Microsoft\Terminal Server Client\Servers\192.168.1.1というサブキーが作成される。
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\<IP address or hostname>\UsernameHint
上記のレジストリキーはRDP接続に使用されたユーザー名を保持する。
RDPビットマップキャッシュ
RDPビットマップキャッシュとは、RDPセッションの画面情報をビットマップ形式で保存したキャッシュファイルのこと。こちらも併せて参照。
キャッシュファイルは以下に保存されている。
C:\Users\<username>\AppData\Local\Microsoft\Terminal Server Client\Cache\bcache<NUM>.bmc
C:\Users\<username>\AppData\Local\Microsoft\Terminal Server Client\Cache\Cache<NUM>.bin
上記のキャッシュファイルをツールでパースすることにより、ユーザーまたは攻撃者が遠隔のシステムにRDPで接続した際の画面をある程度復元することができる。
Destination of lateral movement
この項では水平展開の宛先ホストで生成されるアーティファクトをまとめる。
Windows Event ID 4624 (An account was successfully logged on)
EID 4624はユーザーがシステムへのログオンに成功したときに記録される。以下は特に注視するべきフィールド。
- Account Name: ログオンに使用されたアカウント
- Account Domain: アカウントが所属しているドメイン
- Logon ID: ログオンセッションの識別子。このIDでフィルターをかけることで、該当のログオン中に発生したイベントを検索できる。
- Logon Type: ログオンの種類を2~11の数値で表す。3と10に要注意。
- 2 (Interactive): コンソールからのログオン
- 3 (Network): ネットワークを介した遠隔からのログオン (e.g.
net use \\hostname\C$ /user:username password)。 - 4 (Batch): Scheduled Taskによるログオン
- 5 (Service): Windows サービスによるログオン
- 6 (Proxy): プロキシーログオン (?)
- 7 (Unlock): ロック画面の解除
- 8 (NetworkCleartext): 主にBasic認証でWebサーバーにログオンした際に記録される
- 9 (NewCredentials): 主にユーザーが
RunAsコマンド等で他のユーザーのクレデンシャルを使用してログオンした際に記録される - 10 (RemoteInteractive): リモートデスクトップ (RDP)を介したログオン
- 11 (CacheInteractive): キャッシュされたクレデンシャルを使用したログオン (ドメインコントローラーへの認証を省略)
- Process ID: ログオンを生成したプロセスのID
- Process Name: ログオンを生成したプロセス名
- Workstation Name: 送信元のホスト名。空欄の場合も。
- Source Network Address: 送信元のIPアドレス。空欄の場合も。
- Source Port: 送信元のポート番号。空欄の場合も。
- Authentication Package: 認証に使用されたプロトコル (NTLM, Kerberos, Negotiate)
Windows Event ID 5140 (A network share object was accessed)
EID 5140はネットワーク共有オブジェクトへのアクセスが発生した際に記録される。以下は特に注視するべきフィールド。
- Account Name: アクセスを行ったアカウント
- Account Domain: アカウントが所属しているドメイン
- Logon ID: ログオンセッションの識別子
- Source Address: 送信元のIPアドレス
- Source Port: 送信元のポート番号
- Share Name: アクセスされたネットワーク共有オブジェクトの名前
- Share Path: アクセスされたネットワーク共有オブジェクトのフルパス
Windows Event ID 5145 (A network share object was checked to see whether client can be granted desired access)
EID 5145はネットワーク共有オブジェクトへのアクセスが発生した際に記録される。以下は特に注視するべきフィールド。
- Account Name: アクセスを行ったアカウント
- Account Domain: アカウントが所属しているドメイン
- Logon ID: ログオンセッションの識別子
- Source Address: 送信元のIPアドレス
- Source Port: 送信元のポート番号
- Share Name: アクセスされたネットワーク共有オブジェクトの名前
- Share Path: アクセスされたネットワーク共有オブジェクトのフルパス
- Relative Target Name: アクセスされたファイルまたはフォルダへの相対パス
Windows Event ID 21 (Remote Desktop Services: Session logon succeeded)
EID 21はRDPによるログオンが成功したときに記録される。以下は特に注視するべきフィールド。
- User: RDPを介してログオンしたアカウント
- Session ID: RDPセッションの識別子
- Source Network Address: RDPの送信元アドレス
Windows Event ID 22 (Remote Desktop Services: Shell start notification received)
EID 22はRDPによるログオンが成功したときに記録される。以下は特に注視するべきフィールド。
- User: RDPを介してログオンしたアカウント
- Session ID: RDPセッションの識別子
- Source Network Address: RDPの送信元アドレス
Data exfiltration?
この項ではデータ漏洩の調査に有用なアーティファクトをまとめる。
SRUM
SRUMとはSystem Resource Usage Monitorの略で、アプリケーションやサービス等の利用状況を監視するWindowsの機能のこと。詳しくはこちら。
アーティファクト
C:\Windows\System32\SRU\SRUDB.dat
C:\Windows\System32\config\SOFTWARE
SRUMが収集したデータは、まずSOFTWAREレジストリ(C:\Windows\System32\config\SOFTWARE)に保存され、その後は約1時間に一回、さらにシャットダウン時にSOFTWAREレジストリからC:\Windows\System32\SRU\SRUDB.datに保存される。
SRUMをパースすることで、読み書きが異常に多いプロセスが無いかとか、外部と大量の通信を行っているプロセスが無いか(データ漏洩)などを確認することが出来る。通信先のIPアドレスやドメインは記録されない点に留意。