[FAQトップ] [EnCase FAQ] [全般 FAQ] [その他] [Ji2 Home][Forensics]


文書番号:GA_W003 

最終更新日:2011/07/19


質問:

アプリケーション実行履歴の調査

回答:

Windows 環境下において、過去に実行されたアプリケーション(プログラム)の情報を調べる代表的な方法としては下記があります。

(1)エクスプローラー経由で起動したアプリケーションの調査
Windows 上のエクスプローラ(シェル)からアプリケーションを実行した場合、その履歴はユーザー毎にレジストリキー(UserAssist)に保存されています。

ユーザー毎のレジストリファイルは、ユーザーのプロファイルフォルダ直下に「NTUSER.DAT 」ファイルとして保存されています。
例えば、一般的には Windows XP の場合には C:\Documents and Settings\UserName\NTUSER.DAT 、Windows Vista/ 7 であれば C:\Users\UserName\NTUSER.DAT ファイルとなります。

EnCase からこれらのレジストリファイルを解析する場合には、調査する NTUSER.DAT をハイライト選択し、右クリックメニューからファイル構造の解析(View File Structure)を実行し EnCase 上にマウントします。次に、下記キーまで移動することで UserAssist キーの内容を参照することができます。

例)Windows 7 で NTUSER.DAT をマウントした場合
NTUSER.DAT\NTレジストリ\CMI-CreateHive{6A1C4018-979D-4291-A7DC-7AED1C75B67C}\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

UserAssit キー配下のデータは、ROT-13 でエンコードされているため、正確な内容を把握するにはデコードする必要があります。

未割り当て領域(Unallocated Clusters)やPagefile.sys、メモリダンプイメージにおいて、UserAssist の実行痕跡を調査する場合にも、ROT-13 エンコードしたパターンを検索する必要があります。例えば、電卓アプリケーション calc.exe は pnyp.rkr の文字列パターンとなるため、キーワード検索する場合には ROT-13 でエンコードされた UNICODE(UTF-16LE)を探す必要があります。

UserAssit キーをデコードして内容を確認する方法として最も簡単なのは、UserAssit ツールを利用する方法です。UserAssist ツールは下記 URL から参照することができます。

UserAssist
http://blog.didierstevens.com/programs/userassist/

[重要]Windows 7 からは UserAssit のバイナリデータ構造が変更になっており、対応するバージョンが必要となります。詳細については UserAssist ツールの Web と下記 FAQ を参照ください。
http://www.ji2.co.jp/forensics/ForensicsAQ/artifact/GA_R003.html

EnCase と組み合わせて UserAssist ツールを利用する場合には、次の手順を実行します。

1.調査したいユーザーの NTUSER.DAT ファイルを EnCase から Copy/Unerace コマンドを使いエクスポートします
2.UserAssitツールを起動し、Commands メニューから Load fom DAT file を選択します
3.解析したい NTUSER.DAT をファイルを指定します
4.解析結果が画面上に表示されます

[補足]UserAssist キーに保存(記録)されているのは、あくまでエクスプローラーのシェル上から実行されたアプリケーションのみとなっており、その他の方法で実行されたアプリケーションの情報は含まれていない点に注意してください。

(2)プリフェッチファイルの調査
Windows XP 以降の OS ではアプリケーションの起動速度を向上させるため、プリフェッチファイルがシステムにより自動的に作成されています。このプリフェッチファイルは通常 %SystemRoot%\Prefetch フォルダ配下に最大で 128件まで作成され、ファイルの拡張子は .pf となっています。
プリフェッチファイルはバイナリデータですが、データ内容を調べることで、実行ファイルのパス、最後に実行された日時や回数、関連するファイルパスなどを確認することが可能です。

プリフェッチファイルは、実行されたプログラムのファイルパス毎に作成され、ファイル名に付与されているハッシュ値により区別されています。プリフェッチファイルのファイル名に含まれるハッシュ値の命名規則については、関連URLを参照してください。

EnCase環境下でプリフェッチファイルを調査するには、別途専用の EnScript (PfDump )が必要となります。この EnScript はガイダンスソフトウェア社のサポートサイト(要ユーザー登録)から入手することが可能です。

PfDump (V2.3)
EnScript Resource Center > Guidance Software Employees > Simon Key
https://support.guidancesoftware.com/forum/downloads.php?do=file&id=946要ユーザー登録
使い方の説明動画:http://www.youtube.com/watch?v=2mEbhXH_284

PfDump を EnCase のインストールフォルダ配下にある、EnScript フォルダ配下に配置し、実行することでプリフェッチファイルを解析することができます。

PfDump01

PfDump の実行結果は、ブックマークタブから確認することができます。プリフェッチファイル内には、実行されたプロフラムのパスと共に、そのプログラムに関連してロードされたファイルについても確認ができます。ブックマークされたデータでファイルリストを確認することで、プログラムにより開かれた文書ファイルなどのファイル名を発見することができる場合があります。
下記は、PfDump によるメモ帳(Notepad.exe)のプリフェッチファイルの解析結果のサンプル出力になります。メモ帳(Notepad.exe)がファイル「サンプル文書.log」をロードしていたことが確認できます。(これは“サンプル文書.log”をダブルクリックし、メモ帳が起動してファイルをオープンした場合のキャッシュ例となります)

000000 - NOTEPAD.EXE-EB1B961A.pf
PfDump Results\000000 - NOTEPAD.EXE-EB1B961A.pf
1) Win\Windows 7 UltJP\C\Windows\Prefetch\NOTEPAD.EXE-EB1B961A.pf

--------------------Hash Verification Results--------------------
Hash matches.
-----------------------------------------------------------------

Type: Vista
Ihint: Yes
Device File Path: \DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\NOTEPAD.EXE
File Name: NOTEPAD.EXE
Stored Hash: EB1B961A
Hosting App: No
Kernel: No
Run Count: 3
Last Run: 11/07/10 09:52:24
Volume Time: 07/07/10 13:59:44
Volume Serial: 2438-D6E6

17 Folders
--------------------
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\IMEJP
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\SHARED
\DEVICE\HARDDISKVOLUME1\USERS
\DEVICE\HARDDISKVOLUME1\USERS\FORENSICS
\DEVICE\HARDDISKVOLUME1\USERS\FORENSICS\DESKTOP
\DEVICE\HARDDISKVOLUME1\WINDOWS
\DEVICE\HARDDISKVOLUME1\WINDOWS\FONTS
\DEVICE\HARDDISKVOLUME1\WINDOWS\GLOBALIZATION
\DEVICE\HARDDISKVOLUME1\WINDOWS\GLOBALIZATION\SORTING
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\JA-JP
\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\X86_MICROSOFT.VC80.CRT_1FC8B3B9A1E18E3B_8.0.50727.4927_NONE_D08A205E442DB5B5
\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\X86_MICROSOFT.WINDOWS.COMMON-CONTROLS_6595B64144CCF1DF_6.0.7600.16385_NONE_421189DA2B7FABFC

55 Files
--------------------
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\NTDLL.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\KERNEL32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\APISETSCHEMA.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\KERNELBASE.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\LOCALE.NLS
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\NOTEPAD.EXE
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\ADVAPI32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\MSVCRT.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\SECHOST.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\RPCRT4.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\GDI32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\USER32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\LPK.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\USP10.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\COMDLG32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\SHLWAPI.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\X86_MICROSOFT.WINDOWS.COMMON-CONTROLS_6595B64144CCF1DF_6.0.7600.16385_NONE_421189DA2B7FABFC\COMCTL32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\SHELL32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\WINSPOOL.DRV
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\OLE32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\OLEAUT32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\VERSION.DLL
\DEVICE\HARDDISKVOLUME1\$MFT
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\IMM32.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\MSCTF.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\WINDOWSSHELL.MANIFEST
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\RPCSS.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\CRYPTBASE.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\UXTHEME.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\APPHELP.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\IMJP12.IME
\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\X86_MICROSOFT.VC80.CRT_1FC8B3B9A1E18E3B_8.0.50727.4927_NONE_D08A205E442DB5B5\MSVCR80.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\X86_MICROSOFT.VC80.CRT_1FC8B3B9A1E18E3B_8.0.50727.4927_NONE_D08A205E442DB5B5\MSVCP80.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\IMJP12K.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\GLOBALIZATION\SORTING\SORTDEFAULT.NLS
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\DWMAPI.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\FONTS\STATICCACHE.DAT
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\C_1252.NLS
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\IMEJP\IMJPAPI.DLL
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\SHARED\IMJKAPI.DLL
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\IMEJP\IMJPPRED.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\CLBCATQ.DLL
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\IMEJP\IMJPTIP.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\OLEACC.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\OLEACCRC.DLL
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\SHARED\IMETIP.DLL
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\SHARED\IMECFM.DLL
\DEVICE\HARDDISKVOLUME1\USERS\FORENSICS\DESKTOP\
サンプル文書.LOG
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\CRYPTSP.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\RSAENH.DLL
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\RPCRTREMOTE.DLL
\DEVICE\HARDDISKVOLUME1\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\IME12\IMEJP\IMJPCMPS.DLL
\DEVICE\HARDDISKVOLUME1\USERS\FORENSICS\DESKTOP\EDH_WIN-7K243TK7ICT20100827101850.LOG
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\JA-JP\NOTEPAD.EXE.MUI
\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\JA-JP\MSCTF.DLL.MUI

[補足]プリフェッチファイルはあくまで起動を早くするためのキャッシュであり、その内容はプログラム実行により都度変化していくため、常に関連して開かれたファイルの内容が保存されているわけではない点に注意してくだい。

未割り当て領域(Unallocated Clusters)やPagefile.sys、メモリダンプイメージにおいて、プリフェッチファイルの痕跡を調査する場合にはキーワードとして実行ファイル名などの文字列パターンを UNICODE(UTF-16LE)を探す必要があります。(プリフェッチファイル内のパス文字列は通常 Unicode(UTF-16LE)で記録されています)
未割り当て領域上で、プリフェッチファイルのファイルパスの推測される文字列痕跡を発見した場合には、手動でデータ内容をパースする必要があります。プリフェッチファイル内部の構造については、下記 URL の記事が参考になります。

Prefetch Files Revisited
http://42llc.net/index.php?option=com_myblog&show=Prefetch-Files-Revisited.html&Itemid=39

PfDump以外にも、プリフェッチファイルを解析することができる EnScript やツールが多数公開されており、下記 URL から参照することが可能です。

PrefetchFolderAnalysis2.EnScript
http://www.cutawaysecurity.com/blog/scripts-and-tools

Prefetch Folder Analysis
http://eddandforensics.blogspot.com/

Windows Prefetch Parser
http://tzworks.net/prototype_page.php?proto_id=1

Prefetch Parser v1.4 released
http://computer-forensics.sans.org/blog/2010/02/12/prefetch-parser-v1-4/

WinPrefetchView v1.10
http://www.nirsoft.net/utils/win_prefetch_view.html

Windows Vista以降ではプリフェッチの仕組みとして、スーパーフェッチ(Superfetch)が追加されています。
参考:http://www.forensicswiki.org/wiki/SuperFetch

スーパーフェッチ(Superfetch)ファイルはプリフェッチファイルと同じフォルダ内に存在しますが、ファイル名が Ag から開始され、拡張子が .db となっています。一部のファイルは圧縮されていませんが、基本的にはファイル内容が圧縮?されており、可読可能な状態にはありません。(一部のファイルについては、可読可能なデータを確認できます)
Suprefetchファイルの内部構造をパースする事が可能なツールは、2010/11/06 時点では確認できておりません。

スーパーフェッチファイルの内部構造については下記URLに参考となる情報があります。
My You Look SuperFetching
http://jessekornblum.com/presentations/dodcc08-2.pdf

(3)イベントログの調査
Windows の監査設定において、プロセス実行に関するログが取得されている場合には、イベントログを調査することでアプリケーションの実行履歴をより詳細に調べることが可能になります。(アプリケーションの実行に関する監査はデフォルトでは設定されていません。監査が設定されて無い場合には、イベントログに関連する情報は記録されていません)

EnCase 環境下では、イベントログファイルをパースするための EnScript モジュールが標準で提供されています。

EnScript → Case Processor → File Parser → Windows Event Log Parser

Windows Event Log Paser はサブオプションを持っており、オプション指定することで、解析するイベントログの種類やエクスポート先などを指定することが可能です。
[補足]EnCase 6.18 時点において、Windows 7 の Evtx へのパースには対応しておりません。

イベントルを閲覧する方法としては、Windows のイベントログビューアを利用する方法もあります。EnCase 上からイベントログファイルを Copy/UnErase コマンドを利用して参照したいイベントログを証拠デバイスから取りだします。イベントログビューアからは、ログファイルを開く(Windows XPの場合)、のメニューから保存してあるイベントログファイルを開いて内容を参照することが可能です。
しかし、イベントログビューアーはダーティーな状態にあるイベントログを開くことができません。ダーティー状態にあるイベントログを開くには、下記にあるツールなどを利用して修復してからイベントビューで参照するか、別途専用のダーティ状態に対応したツールを利用する必要があります。

FixEvt repairs corrupted Windows event logs
http://www.murphey.org/fixevt.html

Repairing Corrupted Windows Event Log Files
http://www.stevebunting.org/udpd4n6/forensics/repaireventlogfile.htm

イベントログ(EVT、EVTX)に対応した外部パースツールとしては、下記ツールなどがあります。これらのツールでは、証拠デバイスから取りだしたイベントログファイルをパースし参照することが可能です。

Evtx Parser Version 1.0.8
http://computer.forensikblog.de/en/topics/windows/vista_event_log/

Analyze your event logs with Event Log Explorer
http://www.eventlogxp.com/

Evtx Paser の利用や未割り当て領域からのリカバリについては、下記資料などもご参照ください。

第二回コンピュータフォレンジクス技術解説 無料セミナー
Windowsログ解析
http://www.ji2.co.jp/forensics/seminer/20100723/20100723_02.pdf

(4)メモリイメージ(ダンプ)の調査
メモリイメージがダンプされている場合や、ハイバネーションファイル(hiberfil.sys)が存在する場合には、それらのメモリイメージ内から実行中のプロセス情報を取得することができます。EnCase 環境下でメモリイメージを解析する場合には、メモリ解析用の EnScript を下記 URL から入手することが可能です。

EnCase EnScript "Memory Forensic Toolkit"
http://cci.cocolog-nifty.com/blog/

メモリイメージの解析ツールとしては、この他に商用製品として HBgary 社の Responder なども有ります。

(5)その他
レジストリファイル内には、RunMRU などのキー情報も存在します。RegDog などのレジストリ解析ツールを使い、レジストリファイル内に残されている実行ファイルに関する痕跡についても調査する必要があります。

また、Windows Vista以降の OS では、デフォルトで VSS が有効になっている為、VSS 領域内(スナップショット)のデータを調べることで、過去に存在していた NTUSER.DAT 内の実行痕跡などを確認できる可能性があります。

関連URL:

■[Windows] Windowsのプリフェッチフォルダのハッシュ値を計算するツールを書いた
http://d.hatena.ne.jp/hasegawayosuke/20091217

Prefetch Hash Algorithm
https://42llc.net/index.php?option=com_myblog&show=Prefetch-Hash-Algorithm.html&Itemid=39

フォレンジック調査 サンプルマインドマップ
http://www.ji2.co.jp/forensics/map/index.html

 


本文書(Forensics FAQ)に含まれている情報は、いかなる保証もない現状ベースで提供されるものです。株式会社Ji2は、市場性および特定の目的への適合性を含めて明示的にも黙示的にも一切の保証をいたしません。株式会社Ji2は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。株式会社Ji2及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責 条項の範囲を狭めるものではありません。株式会社Ji2は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合があります。

Copyright (C) 2011 Ji2.Inc. All Rights Reserved.