Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

フォレンジックツールの開発と実装

3.030 visualizaciones

Publicado el

[2018/11/22開催「IIJ Technical DAY 2018」の講演資料です]

Japan Security Analyst Conference 2018 および Black Hat USA 2018 のカンファレンスにて、フォレンジック調査時にVolume Shadow Copy Service のデータを復元するツールvss_carver.pyを発表しました。
しかし、これらのカンファレンスの発表資料では、ツールの開発過程や実装についてほとんど触れていません。そこで、本セッションでは、どのように試行錯誤してツールを開発したのか、またツールや復元されたデータの仕様について説明します。

▼講演者
セキュリティ本部 セキュリティ情報統括室 小林 稔

Publicado en: Internet
  • Sé el primero en comentar

フォレンジックツールの開発と実装

  1. 1. ©Internet Initiative Japan Inc. フォレンジックツールの開発と実装 株式会社インターネットイニシアティブ セキュリティ部 セキュリティ情報統括室 小林 稔
  2. 2. ©Internet Initiative Japan Inc. 2 名前:小林 稔 所属:セキュリティ本部 セキュリティ情報統括室 • 2014年5月IIJ入社 • フォレンジック、インシデントレスポンス、IIJ-SECTメンバー • 外部 • Mauritius 2016 FIRST Technical Colloquium スピーカー/トレーナー • 2017年セキュリティキャンプ全国大会講師 • Osaka 2018 FIRST Technical Colloquium トレーナー • Japan Security Analyst Conference 2018 スピーカー • Black Hat USA 2018 Briefings スピーカー • 2018年セキュリティキャンプ全国大会講師 自己紹介
  3. 3. ©Internet Initiative Japan Inc. 3 1. VSSの概要 2. ツール作成の方針 3. vss_carverの処理 4. libvshadowの改修 5. vss_catalog_manipulator 6. デモンストレーション 7. 今後の開発 8. まとめ アジェンダ
  4. 4. ©Internet Initiative Japan Inc. 1. VSSの概要
  5. 5. ©Internet Initiative Japan Inc. 5 • Windowsに標準搭載されているバックアップ関連機能で、NTFSボリュームのVSSス ナップショット(以下、スナップショット)を作成することができる。 • スナップショットを参照すると、スナップショット作成時のストレージのデータにア クセスできる。削除された攻撃の痕跡を発見できる場合があるため、調査を行うとき に非常に有用なデータとなる。 • スナップショットは差分バックアップであるため、スナップショット内のデータにア クセスするには、現在のボリュームのデータとマージする必要がある(スナップ ショットだけではデータにアクセスできない)。 • 容量の上限によって古いスナップショットが削除されたり、攻撃者やマルウェアに よって削除されてしまう場合がある。また、削除されたスナップショットを復元する 方法は存在しない。 ⇒スナップショットが復元できれば非常に有用 Volume Shadow Copy Service (VSS)とは
  6. 6. ©Internet Initiative Japan Inc. 6 VSSデータファイル構成 Catalog:メタ情報 (スナップショット生成日時など) Store:バックアップデータ
  7. 7. ©Internet Initiative Japan Inc. 7 VSSデータ構造 0x0 0x1e00 VSS Volume Header Catalog Store 1 Store 2 バックアップ データ ボリュームを16KBごとに分割した データブロックと呼ばれる単位で管理する
  8. 8. ©Internet Initiative Japan Inc. 2. ツール作成の方針
  9. 9. ©Internet Initiative Japan Inc. 9 スナップショットを削除した際の挙動の検証が行われている。 Deleted Shadow Copies https://www.kazamiya.net/DeletedSC 以下の点に言及している。 1. カタログとストアのファイルは削除される。 2. カタログのデータがほとんど0x00で上書きされる。 3. ストア内のGUIDが書き換えられる。 4. ある商用ツールで削除されたスナップショットにアクセスで きた。 事前調査 1
  10. 10. ©Internet Initiative Japan Inc. 10 データを復元できたとして、どのようにスナップショットにア クセスするか。 ⇒復元したカタログとストアを外部ファイルとして読み込ませ る。 スナップショットのアクセスによく使われるオープンソースの ツールを改修すればできそう。 • vshadowmount (libvshadow) • https://github.com/libyal/libvshadow • 削除時にストア内の変化したGUIDについてもスナップ ショットのアクセスには使用していない。 事前調査 2
  11. 11. ©Internet Initiative Japan Inc. 11 カタログの復元 • カタログの情報が失われているため、何らかの手段で再生成 する必要がある。 • NTFSを含む多くのファイルシステムでは、ファイルを削除 してもファイルエントリの削除フラグを変更するだけである ため、ストアファイルのファイルエントリからメタ情報 (ファイル作成日時、オフセット等)を参照すればカタログ を再生成できそう。 ストアの復元 • ストアファイルを復元すればよさそう。 この時点で検討したスナップショット復元手法
  12. 12. ©Internet Initiative Japan Inc. 12 VSSバックアップ領域設定 vssadmin.exe Resize ShadowStorage /For=C: /On=C: /MaxSize=10% CドライブのVSSスナップショットの作成 wmic.exe shadowcopy call create Volume='C:' VSSスナップショットの全削除 vssadmin.exe delete shadows /all VSS削除検証 1
  13. 13. ©Internet Initiative Japan Inc. 13 VSSスナップショット削除直後のMFTエントリの状態 VSS削除検証 2 スナップショット削除直後は カタログとストアの MFTエントリが まだ残っている “*” は削除ファイルを 意味する
  14. 14. ©Internet Initiative Japan Inc. 14 VSSスナップショット削除後数分経過したMFTエントリの状態 VSS削除検証 3 カタログとストアの MFTエントリが削除 されてしまう ストアファイル名が見えるが、 これは$I30に残っている情報で ファイルではない
  15. 15. ©Internet Initiative Japan Inc. 15 ストアのMFTエントリが削除されてしまうため、ストアファイ ルのメタ情報を使う手法は使えない。つまり、ストアファイル の復元も簡単にはできない。 しかし、多くのファイルシステムでは、ファイルを削除しても データのクリアは行わない。そのため、ディスクの未使用領域 に削除前のデータが残っている可能性がある。 ディスクの未使用領域にあるデータを復元する手法として、 カービング(Carving)が存在する。 データ復元手法の再検討
  16. 16. ©Internet Initiative Japan Inc. 16 フォレンジックやインシデントレスポンスにおけるカービング とは、データフォーマットの特徴的なデータ列(ファイルヘッ ダ等)をキーにして、ディスクイメージファイルを検索する手 法である。キーが現れたら、そこから連続するバイト列をファ イルやデータレコードとして保存する。 例) EXE : MZx90 ZIP : PKx03x04 JPEG : xffxd8xffxe0x00x10 カービングとは
  17. 17. ©Internet Initiative Japan Inc. 17 復元するデータは未使用領域にあるため、他のファイルに上書 きされる可能性がある。また、ディスクの使用状況によりファ イルがフラグメント化される。このような場合、壊れたファイ ルが復元されることになる。 また、復元されたデータのメタデータ(ファイル名、ファイル サイズ、作成日時等)も知ることができない。 カービングの制限 カービングで復元されるデータ sample.jpg example.txt に上書き された箇所 JPEGヘッダ
  18. 18. ©Internet Initiative Japan Inc. 18 Foremost • http://foremost.sourceforge.net/ Scalpel • https://github.com/sleuthkit/scalpel PhotoRec • https://www.cgsecurity.org/wiki/PhotoRec 代表的なカービングツール
  19. 19. ©Internet Initiative Japan Inc. 19 カービングを行うには、復元したいデータのフォーマットを知 る必要がある。 データに生成日時等のメタデータが含まれていれば、それらも 解析対象とすることで単なるカービングよりも多くの情報を復 元できる可能性がある。 しかし、マイクロソフトはカタログとストアのファイルフォー マットの詳細を公開していない。 カービングに必要なこと
  20. 20. ©Internet Initiative Japan Inc. 20 Volume Shadow Snapshot (VSS) • https://github.com/libyal/libvshadow/blob/master/documentation /Volume%20Shadow%20Snapshot%20(VSS)%20format.asciidoc VSSデータフォーマット
  21. 21. ©Internet Initiative Japan Inc. 21 VSSボリュームヘッダ
  22. 22. ©Internet Initiative Japan Inc. 22 カタログブロックヘッダ このヘッダの後にカタログエントリが 記録される。 カタログエントリタイプ 0x01 : 未使用 0x02 : 生成日時など 0x03 : ストアブロックのオフセット 0x02 と 0x03 で1セットのエントリ となる。
  23. 23. ©Internet Initiative Japan Inc. 23 カタログエントリ(0x02)
  24. 24. ©Internet Initiative Japan Inc. 24 カタログエントリ(0x03)
  25. 25. ©Internet Initiative Japan Inc. 25 ストアブロックヘッダ
  26. 26. ©Internet Initiative Japan Inc. 26 • VSSのデータフォーマットは必ず先頭に“VSS identifier”, “Version”, “Record type”というフィールドが含まれている。 • VSSは16KBごとのデータブロックで管理される。 ⇒これらは必ずデータブロックの先頭に記録される。 VSSデータカービングの条件 ストアブロック(Store descriptor list)の例 VSS identifier 固定のバイト列Record type 0x01 – 0x06 Version 0x01固定
  27. 27. ©Internet Initiative Japan Inc. 27 VSS identifierをキーにして、カービングツールを使用すれば ストアを復元することはできる。しかし、以下の問題点が残る。 1. ストアは4種類5つのストアブロックから構成されるため、 これらのグルーピングが必要となる。 2. カタログを再生成する必要がある(スナップショット削除時 に0で上書きされているため)。 ⇒カービングを行うだけでは不十分であるため、 専用のツールが必要になる。 ストアカービング後の問題点
  28. 28. ©Internet Initiative Japan Inc. 28 VSS identifierとレコードタイプを基に、VSSデータブロック がどのように配置されているか確認するツールを作成した。 • スナップショットの順番とストアブロックの情報に何らかの 相関関係などが見られないか確認する。 • ストアブロックがどのように配置されているのか確認する。 スナップショット毎にストアブロックがある程度グループ分 けできるのであれば、比較的簡単にストアを復元できると考 えられる。 カービングツールのプロトタイプを作成
  29. 29. ©Internet Initiative Japan Inc. 29 3つのスナップショットが 保存されたディスクイ メージを解析した結果。
  30. 30. ©Internet Initiative Japan Inc. 30 このディスクイメージのカタログを確認する。 カタログエントリ 1 Snapshot creation date and time 2017/07/28 4:03:18 Block List Offset Block Range Offset Previous Bitmap Offset Current Bitmap Offset Store Header Offset
  31. 31. ©Internet Initiative Japan Inc. 31 カタログエントリ 2 2017/07/20 15:01:10
  32. 32. ©Internet Initiative Japan Inc. 32 カタログエントリ 3 2017/07/13 4:52:14
  33. 33. ©Internet Initiative Japan Inc. 33 エントリ1 エントリ2 エントリ3 カタログにない エントリ
  34. 34. ©Internet Initiative Japan Inc. 34 ストアの容量のほとんどはストアデータブロック(バックアッ プデータ)が占めている。 ストアデータブロック自身は、ストアブロックリスト(レコー ドタイプ:3)によって、そのデータブロックが記録されていた オリジナルのオフセットとバックアップ先のオフセットがテー ブルで管理されている。 ストアカービングの検討 1
  35. 35. ©Internet Initiative Japan Inc. 35 ストアカービングの検討 2 オリジナルの オフセット バックアップ先の オフセット
  36. 36. ©Internet Initiative Japan Inc. 36 ストアデータブロックをすべてカービングすると非常に大きな ファイルとなってしまい扱いづらい。また、ストアデータブ ロックを別ファイルにする場合、ストアブロックリスト内のオ フセットをすべて書き換えなければならないため、煩雑な処理 が必要となる。 実用上、ディスクイメージ内のストアデータブロックを参照し てもスナップショットのデータを読み込むことが可能であるた め、ストアデータブロックを除いたストアブロックのみを別 ファイルとして保存する。 ストアカービングの検討 3
  37. 37. ©Internet Initiative Japan Inc. 37 ストアカービングの検討 4 ディスクイメージ ストア データブロック ストア ブロック リスト ストア ヘッダ ストア ビット マップ ストア ブロック レンジ カービングしたストア ストア データブロック ストア ブロック リスト ストア ヘッダ ストア ビット マップ ストア ブロック レンジ ディスク イメージ Carving オフセット オフセット
  38. 38. ©Internet Initiative Japan Inc. 38 カービングでカタログも復元することができるが、データ は”0”で上書きされているため、カービングによる復元ではな く再生成する必要がある。 カタログ内のストアブロックのオフセットを見ると、スナップ ショットの生成日時とストアブロックのオフセットには相関関 係は見られない。 カタログ再生成方法の検討 1
  39. 39. ©Internet Initiative Japan Inc. 39 そのため、大きなオフセットのスナップショットほど新しいと 仮定して、カタログを生成する。 ただし、ディスクイメージ上にカタログがある場合は、そちら の情報を優先的に使用する。 また、カービングで発見したスナップショットのうち、カタロ グに無いものは、カタログ内の一番古いエントリよりも古いも のとして扱う。 ※ディスクイメージ上にカタログが存在するということは、カービングした スナップショットは自動的に削除された古いものである可能性が高い。 カタログ再生成方法の検討 2
  40. 40. ©Internet Initiative Japan Inc. 40 ここまでの結果から、削除済みスナップショットのデータを復 元するツールと、それにアクセスするためのツールを作成でき る見通しが立った。 検討結果
  41. 41. ©Internet Initiative Japan Inc. 3. vss_carverの処理
  42. 42. ©Internet Initiative Japan Inc. 42 1. VSS設定チェック 2. ディスク上のカタログ読み込み 3. ストアブロックカービング 4. カービングしたストアブロックをグルーピング 5. ストアブロックリストの精査 6. スナップショットエントリの重複チェック 7. ストア書き出し 8. カタログ書き出し vss_carverの処理
  43. 43. ©Internet Initiative Japan Inc. 43 ボリュームの先頭からのオフセット0x1e00にVSS identifierの バイト列が存在するか否かで、VSSが有効か無効か確認する。 VSSボリュームヘッダのカタログオフセットが”0”の場合、VSS は有効であるがスナップショットはすべて削除されている(ま たは1つも作成されていない)状態である。 VSSが無効である場合はプログラムを終了する。 1. VSS設定チェック
  44. 44. ©Internet Initiative Japan Inc. 44 カービングによって得られたスナップショットの情報よりも Windowsに作成されたカタログの方が信頼性が高いため、ディ スク上にカタログがあれば読み込む。 2. ディスク上のカタログ読み込み
  45. 45. ©Internet Initiative Japan Inc. 45 ボリュームの先頭から16KBごとに、VSS identifierとレコード タイプをキーにしてストアブロックをカービングする。 カービングで取得したストアブロックのオフセットをキーにし て、ディクショナリにストアヘッダのデータを保存する(スト アブロックディクショナリ)。 また、同じレコードタイプが連続するストアブロックの先頭の オフセットをリストに保存する(ストアブロックリスト)。 3. ストアブロックカービング
  46. 46. ©Internet Initiative Japan Inc. 46 カービングしたストアブ ロックのオフセットをディ クショナリに保存する。 同じレコードタイプが連続する データブロックの先頭のオフ セットをリストに保存する。
  47. 47. ©Internet Initiative Japan Inc. 47 カタログに記録されたストアブロックのオフセットおよびプロ トタイプの実行結果より、ストアブロックのレコードタイプの 並び順は、4, 3, 5, 6, 6であることが分かっている。 ストアブロックリストの中で、この順番で並んでいるストアブ ロック群を1つのスナップショットとしてグルーピングし、ス ナップショットリストに保存する。 4. カービングしたストアブロックをグルーピング
  48. 48. ©Internet Initiative Japan Inc. 48 ストアブロックには、Next block offsetというフィールドが存在す る。VSSによるバックアップ容量が確保しているバックアップ領域よ り大きくなる場合、新たにストアブロックを確保し、そのオフセット をNext block offsetに記録する。 ここでは、スナップショットリスト内のストアブロックのNext block offsetのリストを辿っていき、全てのNext block offsetがスト アブロックディクショナリのキーとして存在するか確認する。 ストアブロックが他のデータで上書きされ、該当のオフセットがスト アブロックとしてカービングできなかった場合、そこまでのリストと みなす。 5. ストアブロックリストの精査 1
  49. 49. ©Internet Initiative Japan Inc. 49 Next block offsetによるストアブロックのリスト 5. ストアブロックリストの精査 2 Catalog Store 1 Store 2 上書きされた データブロック (カービングできなかっ たデータブロック) Store2の最後のデー タブロックとみなす
  50. 50. ©Internet Initiative Japan Inc. 50 2. で読み込んだカタログのスナップショットエントリと、5. までに復元したスナップショットエントリが重複していないか 確認する。 重複のチェックはストアヘッダのオフセットを比較することで 行う。 重複している復元エントリがある場合、スナップショットリス トから該当するエントリを削除する。 6. スナップショットエントリの重複チェック
  51. 51. ©Internet Initiative Japan Inc. 51 ストアとカタログをファイルに保存する。 復元したスナップショットの生成日時の決め方 ・ディスク上にカタログがある場合 カタログ上の一番古いスナップショット生成日時よりも1時 間前の日時を設定する。 ・ディスク上にカタログがない場合 vss_carverを実行した時間を基準に設定する。 7. & 8. ファイル書き出し
  52. 52. ©Internet Initiative Japan Inc. 4. libvshadowの改修
  53. 53. ©Internet Initiative Japan Inc. 53 1. 復元したカタログとストアを読み込むオプションの追加 2. カタログとストアをファイルから読み込む処理の追加 改修した点は非常に単純だが、libvshadowの作者は自作のライ ブラリを多用しており、ソースコードを読み解くのに時間がか かった。 libvshadowの改修
  54. 54. ©Internet Initiative Japan Inc. 5. vss_catalog_manipulator
  55. 55. ©Internet Initiative Japan Inc. 55 カタログエントリを操作するためのツール。 vss_carverはストアブロックのオフセットを基準にエントリの 順番を決めているため、実際は正しくない場合がある。このよ うな場合にエントリの入れ替えや削除等を行う。 独自の機能として、エントリを無効化/有効化する機能がある。 これはカタログエントリタイプが0x01が未使用を表すタイプと して定義されていることを利用している(libvshadowと組み合 わせることが前提)。 vss_catalog_manipulator
  56. 56. ©Internet Initiative Japan Inc. 56 Tools overview Catalog Store 1 Store 2 Store 1 (Store Data Block) Store 2 (Store Data Block) extended- vshadowmount vss_carver.py (2) カービングしたストアデータから カタログを再生成する。 Store データまたはファイルを読み込む (1) ディスクイメージから ストアデータをカービングする。 (3) ディスクイメージ、カタログ、ストアを 読み込んで、削除されたスナップショットに アクセスする。 ストアデータブロックを参照する
  57. 57. ©Internet Initiative Japan Inc. 6. デモンストレーション
  58. 58. ©Internet Initiative Japan Inc. 58 1. 自動的に削除されたスナップショットの復元 2. ランサムウェアに削除されたスナップショットの復元 デモンストレーション
  59. 59. ©Internet Initiative Japan Inc. 7. 今後の開発
  60. 60. ©Internet Initiative Japan Inc. 60 • libvshadowのパッチを本家にマージ • Pull Requestはsubmit済み • 復元したスナップショットの生成日時の推定 • (上記を利用した)カタログエントリソートツールの作成 今後の開発予定
  61. 61. ©Internet Initiative Japan Inc. 8. まとめ
  62. 62. ©Internet Initiative Japan Inc. 62 • 調査 先人の知見を借りる。 スナップショット削除時のVSSの挙動 VSSデータフォーマット、ツールのソースコード • 検証 様々な環境から検証用データを取得する。 仕様の確認、検証用ツールの作成 • 実装 頑張る。 まとめ 1
  63. 63. ©Internet Initiative Japan Inc. 63 • 作成したツールは以下のURLで公開しています。 https://github.com/mnrkbys/vss_carver libvshadowのWindows版とLinux (SIFT)版のバイナリ を配布 • ツール公開してからフィードバックをくれた人 5人くらい まとめ 2
  64. 64. ©Internet Initiative Japan Inc. 64 • Internet Infrastructure Review(IIR)Vol.37 VSSはユーザデータを守らない • https://www.iij.ad.jp/dev/report/iir/037.html • Japan Security Analyst Conference 2018 削除済みVSSスナップショットの復元 • https://www.jpcert.or.jp/present/2018/JSAC2018_02_kobayas hi.pdf • Black Hat USA 2018 Briefings Reconstruct the World from Vanished Shadow: Recovering Deleted VSS Snapshots • https://www.blackhat.com/us- 18/briefings/schedule/#reconstruct-the-world-from-vanished- shadow-recovering-deleted-vss-snapshots-9931 関連発表資料
  65. 65. ©Internet Initiative Japan Inc. ご清聴ありがとうございました

×