IE のキャッシュのオフライン調査について
(改訂版)
村地 彰 aka hebikuzure
この発表について
• この発表は 2012 年 7 月 21 日開催の「まっちゃ 445 勉強会 目覚ましの会」で発表した内容に、 Windows 8 および Internet Explorer 10 における調査結果を追加したものです
• 内容については発表者が個人として調査して者であり、特定の会社・団体の見解ではありません
Internet Explorer のキャッシュ
ここ
ファイルを表示させると
実体は…
Windows Vista 以降の場合• 保護モード無効のキャッシュ
%userprofile%\AppData\Local \Microsoft\Windows \Temporary Internet Files\Content.IE5
• 保護モード有効のキャッシュ%userprofile%\AppData\Local \Microsoft\Windows \Temporary Internet Files\Low \Content.IE5
なぜ Content.IE5 ??
• Internet Explorer のキャッシュ データ構造は IE5 から変わっていなかった
•IE5 ???•13 年間不変のテクノロジー (^_^.)
実は… ..
• Internet Explorer 10 ではキャッシュのシステムが変更されています
• 14 年間ご苦労様でした• とはいえ、 IE9 以前のシステムも多いの
で、まず古いシステムの話から…
Content.IE5 の中身
• index.dat–インデックスファイル
• キャッシュ フォルダ–ランダムな英数 8 文字の名前のフォルダ–フォルダ内の一時ファイルの実データ ファ
イルを格納
旧
こんな感じ 旧
さらにフォルダ内を見る 旧
キャッシュの情報はどこ ?
• 実データ ファイル–ダウンロードされたコンテンツ そのも
のがファイルとして保存されている• Temporary Internet Files には「イン
ターネット アドレス」「有効期限日時」「最終変更日時」「最終アクセス日時」「最終チェック日時」などが表示される–これらの情報はどこに ??
旧
情報は index.dat にある
• index.dat–バイナリ ファイル–データ構造は非公開–データにアクセスする API (WinInet
API) が公開されている
中身が見たい
旧
注意事項
• ログオンしているユーザーの index.dat はシステム プロセスがロックしているので普通には開けない
• 不用意に書き換えるとキャッシュが壊れて不具合が生じる
• 別のユーザーでログオンするか、別のシステムでブートして、 index.dat をコピーしてから開く
旧
バイナリ エディタで開く
何か見える
旧
中身を確認
シグネチャ
フォルダ名
旧
さらに確認
何か出た
アドレス ?
ヘッダー ?
旧
分かる事
• index.dat はバイナリ情報が含まれているが、テキストがそのまま記録されている部分もある
• 基本的な情報はテキストを抽出するだけでも取得できる (strings とか )
旧
詳しい人いた~\ (◎o◎) /!
• この人
• The INDEX.DAT File Formathttp://www.geoffchappell.com/studies/windows/ie/wininet/api/urlcache/indexdat.htm
旧
The INDEX.DAT File Format
• index.dat のファイル構造を解析して公開しています
• 某中の人によれば、ここに書いてある内容は「正しいと考えられる」だそうです
• 実際に採取した index.dat は、この解析結果の通りの構造でした
• と言う事で、キャッシュの静的解析をするなら必読
旧
同じような解析情報
• Internet Explorer History File Formathttp://www.forensicswiki.org/wiki/Internet_Explorer_History_File_Format
• MSIE Cache File (index.dat) format.pdfhttp://sourceforge.net/projects/libmsiecf/files/Documentation/MSIE%20Cache%20File%20format/
旧
その他の参考情報
• A bit about WinInet's Index.dathttp://blogs.msdn.com/b/wndp/archive/2006/08/04/wininet-index-dat.aspx
• A bit about WinInet's Index.dat – Q&Ahttp://blogs.msdn.com/b/wndp/archive/2006/08/07/wininet-index-dat-q-and-a.aspx
旧
つづき
• Internet Explorer 一時ファイルが肥大化するhttp://blogs.technet.com/b/jpieblog/archive/2011/09/09/3452071.aspx
旧
さらにこんなツールも…
• Index Dat Spyhttp://www.stevengould.org/index.php?option=com_content&task=view&id=47&Itemid=88
• Index.dat Viewerhttp://www.acesoft.net/index.dat%20viewer/index.dat_viewer.htm
• libmsiecfhttp://sourceforge.net/projects/libmsiecf/
旧
では IE10 では……
IE9 以前との比較
• index.dat がない
• container.dat という怪しげなファイルがあるが、サイズが 0 バイト
• ランダムな英数 8 文字の名前のフォルダは健在
フォルダ内を見る
フォルダ内のファイル
• キャッシュ(一時ファイル)の実体• IE9 以前と同様、ダウンロードされたコ
ンテンツがそのままファイルとして保存されている
• では「インターネット アドレス」「有効期限日時」「最終変更日時」「最終アクセス日時」「最終チェック日時」などの情報はどこに ??
procmon で調べる
• procmon.exe (Process Monitor)–http://technet.microsoft.com/ja-jp/
sysinternals/bb896645.aspx• プロセスが行った処理 ( ファイル システ
ム、レジストリ、プロセスおよびスレッドの活動 ) をリアルタイムで表示し、ログを採取できるツール
こんなログがある
ログの詳細
• 17:12:28.8842513• taskhostex.exe• 1156• QueryBasicInformationFile• C:\Users\hebik_000\AppData\Local\
Microsoft\Windows\Temporary Internet Files\Low\Content.IE5\container.dat
• SUCCESS
taskhostex.exe のスタック
ログとスタックからわかること
• taskhostex.exe は wininet.dll の SetUrlCacheEntryInfoA を呼び出している
• そのアクセス対象は%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Content.IE5\container.dat
• taskhostex.exe がキャッシュ管理に関係しているらしい
taskhostex.exe をさらに調べる
• 17:12:28.8848751• taskhostex.exe• 1156• QueryDirectory• C:\Users\hebik_000\AppData\Local\
Microsoft\Windows\WebCache\WebCacheV01.dat
• SUCCESS
この時のスタック
ログとスタックから
• taskhostex.exe は wininet.dll の SetUrlCacheEntryInfoA を呼び出している
• さらに ESENT.dll JetCloseDatabase が呼び出されている
• そのアクセス対象は%userprofile%\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat
これって何 ?
Extensible Storage Engine
• JET Blue とも呼ばれる Windows 内蔵の ISAM データベース エンジン
• Exchange, Active Directory, Desktop Search などで利用されている–http://msdn.microsoft.com/en-us/
library/windows/desktop/gg269259.aspx–http://en.wikipedia.org/wiki/
Extensible_Storage_Engine
さらに調べると
• taskhostex.exe (ESENT.dll ) は WebCacheV01.dat に READ / WRITE を繰り返している
• いずれも wininet.dll のキャッシュ関連 API を経由している
WebCache フォルダを見る
ファイルを見てみる
• WebCacheV01.dat と V01.log はロックされていてログイン中は開けない
• 別ユーザーでログオンすれば取り扱える
V01.log
WebCacheV01.dat
ここまででわかった事
• Internet Explorer 10 ではキャッシュの管理に Extensible Storage Engine が利用されている
• キャッシュに関するデータベースは%userprofile%\AppData\Local\Microsoft\Windows\WebCacheに保存されている
追加情報
• ネット上のレポートなどを見ると、 WebCacheV01.datの代わりに WebCacheV24.datが利用されている環境もあるようです。
詳しい人いた~\ (◎o◎) /!
• いつもおなじみ NirSoft• http://blog.nirsoft.net/2012/12/08/a-
few-words-about-the-cache-history-on-internet-explorer-10/–WebCacheV01.dat は VSS(Volume
Shadow Copy) でログオン中でもコピーできたとの事です
NirSoft のツール
• BrowsingHistoryView– http://www.nirsoft.net/utils/
browsing_history_view.html
• WebCacheV01.dat (WebCacheV24.dat) からも一時ファイル情報を取得できます…と言う事なのですが、手元環境では IE の情報は表示されませんでした
まとめ
• Internet Explorer 10 では一時ファイルの管理方法が変更されている
• キャッシュの実体の保存方法は変更なし• インデックス管理は index.dat のバイ
ナリ ファイルから Extensible Storage Engine の ISAM データベースに変更
• インデックスが堅牢になったと考えられます
ありがとうございました
• ネットワーク パケットを読む会 (仮 )–次回 5/24 開催予定–パケット持ち寄りの会(予定)– http://pa.hebikuzure.com/
Top Related