@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

ブラウザ キャッシュ痕跡を上書きする仕組みが使われたケース

いわゆる、PC遠隔操作事件の中で誤認させる為に?使われた手法には、デジタル・フォレンジック調査で対象になってくる「ブラウザの履歴やキャッシュ情報」について考慮されている部分があります。

【PC遠隔操作事件】ラストメッセージ全文(下)(江川紹子) - 個人 - Yahoo!ニュース より引用

2)キャッシュで罠スクリプトを発見されない工夫

A「直接踏ませるスクリプト。BをJSONPでクロスドメイン読み込みして実行する」

B「CSRFを行う有害スクリプト。Aとは別サイトに設置。」

の2部構成。

Bの側に、1)で書いた制御を入れました。

そして、Aでは、

「Bを読み込んで変数に格納(B1)→Bを再度読み込む(B2)→B1を実行」

というフローで動作します。Bを2回読み込むというのが肝心です。1)の制御により、B1はCSRF、B2は無害スクリプトになります。

永続性記憶装置に保存されるブラウザのキャッシュには、B1はB2に上書きされ、B2だけが残ります。

変数に格納されただけのB1は実行後、DRAMから揮発してしまいます。

ただし再読み込み時、キャッシュ再利用の挙動はブラウザごとに異なります。

IE等では、2回目の読み込みは発生せず、キャッシュから拾ってきてしまいます。(2回目もB1になる。)

 

 上記では、B2の無害スクリプトとされているデータがディスクに残るように意図されていますので、単純にディスクにある該当時間帯の履歴とキャッシュを確認しても、スクリプトの存在は確認できない事になります。

普通にデータ見ただけでは、履歴とキャッシュされている内容から判断していくでしょうから、この段階で何かしらの特異点が他になければ見落としそうな仕組みですね。この点については、松本さんが下記記事の中で指摘されています。

第276号コラム「フォレンジック調査員から見た遠隔操作事件「ラストメッセージ」」 | コラム | デジタル・フォレンジック研究会

 

犯人からのメール内では、IEは再読み込みしてもキャッシュから読み込んでしまうという記述がありますが、IE はキャッシュデータなりの何を基準に更新されていないと判断して再読み込みを行わないのか?という辺り。

IEではキャッシュに関連する設定は「Webサイトデータの設定」にある「インターネット一時ファイル」で制御できますが、デフォルトの設定では「自動的に確認する」という値になっています。この「自動的に確認する」の動作についてはマイクロソフト社の下記記事が参考になります。

Caching Improvements in Internet Explorer 9

http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx

"セッションごとに 1 回" のキャッシュ検証を理解する
http://blogs.msdn.com/b/ie_jp/archive/2011/10/03/10219064.aspx

 IEについてはこの仕組みによる判断で、Bのスクリプトを再度読み込んでも更新されなかったものと推測されますが、サーバB側の設定なりでキャッシュを制御するというのはうまく動作しなかったのかな?という素朴な疑問を持っていたりします。

他のChromeなどのブラウザでは(ローカルにある)キャッシュのリロードをどの様に判断しているのか?という点もありますが、詳細な情報どこかに無いのでしょうか?

 

 いずれにしても、ブラウザのキャッシュファイルは常に更新される可能があるデータです。ここも可能な範囲で分解し、どの様な視点を持つ事ができるのかを整理した方がよいのかもしれません。

  1. キャッシュファイルの作成日時
  2. キャッシュファイルの更新日時
  3. キャッシュファイルのファイルスラック領域
  4. キャッシュファイルを管理しているレコード構造
  5. キャッシュファイルを管理しているレコードが持つ日付情報(Expireなど)
  6. キャッシュファイルの内部構造(Chromeのキャッシュファイル等)
  7. キャッシュファイル内部構造で管理されている日付情報(作成日時など)
    ⇒これパースするフォレンジック系のツールあるんですかね?
  8. サーバ側から与えられるキャッシュデータの生存期間情報
  9. サーバ側から与えられるコンテンツの更新日時
  10. HTTPレスポンスヘッダ
  11. URLフィンガープリント
  12. Webブラウザのリロード処理
  13. Webブラウザのスーパーリロード処理
  14. Webブラウザのキャッシュに関する設定(期間・サイズ)
  15. Webブラウザのシークレットモード(キャッシュを残さない閲覧モード)

 ■ブラウザがキャッシュデータを保持する部分についての参考情報

ブラウザキャッシュのまとめ
http://please-sleep.cou929.nu/browser-caching-tutorial-memo.html

ブラウザのキャッシュを活用する
https://developers.google.com/speed/docs/insights/LeverageBrowserCaching