SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
©Internet Initiative Japan Inc.
フォレンジックツールの開発と実装
株式会社インターネットイニシアティブ
セキュリティ部 セキュリティ情報統括室
小林 稔
©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年セキュリティキャンプ全国大会講師
自己紹介
©Internet Initiative Japan Inc. 3
1. VSSの概要
2. ツール作成の方針
3. vss_carverの処理
4. libvshadowの改修
5. vss_catalog_manipulator
6. デモンストレーション
7. 今後の開発
8. まとめ
アジェンダ
©Internet Initiative Japan Inc.
1. VSSの概要
©Internet Initiative Japan Inc. 5
• Windowsに標準搭載されているバックアップ関連機能で、NTFSボリュームのVSSス
ナップショット(以下、スナップショット)を作成することができる。
• スナップショットを参照すると、スナップショット作成時のストレージのデータにア
クセスできる。削除された攻撃の痕跡を発見できる場合があるため、調査を行うとき
に非常に有用なデータとなる。
• スナップショットは差分バックアップであるため、スナップショット内のデータにア
クセスするには、現在のボリュームのデータとマージする必要がある(スナップ
ショットだけではデータにアクセスできない)。
• 容量の上限によって古いスナップショットが削除されたり、攻撃者やマルウェアに
よって削除されてしまう場合がある。また、削除されたスナップショットを復元する
方法は存在しない。
⇒スナップショットが復元できれば非常に有用
Volume Shadow Copy Service (VSS)とは
©Internet Initiative Japan Inc. 6
VSSデータファイル構成
Catalog:メタ情報
(スナップショット生成日時など)
Store:バックアップデータ
©Internet Initiative Japan Inc. 7
VSSデータ構造
0x0 0x1e00
VSS Volume
Header
Catalog Store 1 Store 2
バックアップ
データ
ボリュームを16KBごとに分割した
データブロックと呼ばれる単位で管理する
©Internet Initiative Japan Inc.
2. ツール作成の方針
©Internet Initiative Japan Inc. 9
スナップショットを削除した際の挙動の検証が行われている。
Deleted Shadow Copies
https://www.kazamiya.net/DeletedSC
以下の点に言及している。
1. カタログとストアのファイルは削除される。
2. カタログのデータがほとんど0x00で上書きされる。
3. ストア内のGUIDが書き換えられる。
4. ある商用ツールで削除されたスナップショットにアクセスで
きた。
事前調査 1
©Internet Initiative Japan Inc. 10
データを復元できたとして、どのようにスナップショットにア
クセスするか。
⇒復元したカタログとストアを外部ファイルとして読み込ませ
る。
スナップショットのアクセスによく使われるオープンソースの
ツールを改修すればできそう。
• vshadowmount (libvshadow)
• https://github.com/libyal/libvshadow
• 削除時にストア内の変化したGUIDについてもスナップ
ショットのアクセスには使用していない。
事前調査 2
©Internet Initiative Japan Inc. 11
カタログの復元
• カタログの情報が失われているため、何らかの手段で再生成
する必要がある。
• NTFSを含む多くのファイルシステムでは、ファイルを削除
してもファイルエントリの削除フラグを変更するだけである
ため、ストアファイルのファイルエントリからメタ情報
(ファイル作成日時、オフセット等)を参照すればカタログ
を再生成できそう。
ストアの復元
• ストアファイルを復元すればよさそう。
この時点で検討したスナップショット復元手法
©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
©Internet Initiative Japan Inc. 13
VSSスナップショット削除直後のMFTエントリの状態
VSS削除検証 2
スナップショット削除直後は
カタログとストアの
MFTエントリが
まだ残っている
“*” は削除ファイルを
意味する
©Internet Initiative Japan Inc. 14
VSSスナップショット削除後数分経過したMFTエントリの状態
VSS削除検証 3
カタログとストアの
MFTエントリが削除
されてしまう
ストアファイル名が見えるが、
これは$I30に残っている情報で
ファイルではない
©Internet Initiative Japan Inc. 15
ストアのMFTエントリが削除されてしまうため、ストアファイ
ルのメタ情報を使う手法は使えない。つまり、ストアファイル
の復元も簡単にはできない。
しかし、多くのファイルシステムでは、ファイルを削除しても
データのクリアは行わない。そのため、ディスクの未使用領域
に削除前のデータが残っている可能性がある。
ディスクの未使用領域にあるデータを復元する手法として、
カービング(Carving)が存在する。
データ復元手法の再検討
©Internet Initiative Japan Inc. 16
フォレンジックやインシデントレスポンスにおけるカービング
とは、データフォーマットの特徴的なデータ列(ファイルヘッ
ダ等)をキーにして、ディスクイメージファイルを検索する手
法である。キーが現れたら、そこから連続するバイト列をファ
イルやデータレコードとして保存する。
例)
EXE : MZx90
ZIP : PKx03x04
JPEG : xffxd8xffxe0x00x10
カービングとは
©Internet Initiative Japan Inc. 17
復元するデータは未使用領域にあるため、他のファイルに上書
きされる可能性がある。また、ディスクの使用状況によりファ
イルがフラグメント化される。このような場合、壊れたファイ
ルが復元されることになる。
また、復元されたデータのメタデータ(ファイル名、ファイル
サイズ、作成日時等)も知ることができない。
カービングの制限
カービングで復元されるデータ
sample.jpg
example.txt に上書き
された箇所
JPEGヘッダ
©Internet Initiative Japan Inc. 18
Foremost
• http://foremost.sourceforge.net/
Scalpel
• https://github.com/sleuthkit/scalpel
PhotoRec
• https://www.cgsecurity.org/wiki/PhotoRec
代表的なカービングツール
©Internet Initiative Japan Inc. 19
カービングを行うには、復元したいデータのフォーマットを知
る必要がある。
データに生成日時等のメタデータが含まれていれば、それらも
解析対象とすることで単なるカービングよりも多くの情報を復
元できる可能性がある。
しかし、マイクロソフトはカタログとストアのファイルフォー
マットの詳細を公開していない。
カービングに必要なこと
©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データフォーマット
©Internet Initiative Japan Inc. 21
VSSボリュームヘッダ
©Internet Initiative Japan Inc. 22
カタログブロックヘッダ
このヘッダの後にカタログエントリが
記録される。
カタログエントリタイプ
0x01 : 未使用
0x02 : 生成日時など
0x03 : ストアブロックのオフセット
0x02 と 0x03 で1セットのエントリ
となる。
©Internet Initiative Japan Inc. 23
カタログエントリ(0x02)
©Internet Initiative Japan Inc. 24
カタログエントリ(0x03)
©Internet Initiative Japan Inc. 25
ストアブロックヘッダ
©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固定
©Internet Initiative Japan Inc. 27
VSS identifierをキーにして、カービングツールを使用すれば
ストアを復元することはできる。しかし、以下の問題点が残る。
1. ストアは4種類5つのストアブロックから構成されるため、
これらのグルーピングが必要となる。
2. カタログを再生成する必要がある(スナップショット削除時
に0で上書きされているため)。
⇒カービングを行うだけでは不十分であるため、
専用のツールが必要になる。
ストアカービング後の問題点
©Internet Initiative Japan Inc. 28
VSS identifierとレコードタイプを基に、VSSデータブロック
がどのように配置されているか確認するツールを作成した。
• スナップショットの順番とストアブロックの情報に何らかの
相関関係などが見られないか確認する。
• ストアブロックがどのように配置されているのか確認する。
スナップショット毎にストアブロックがある程度グループ分
けできるのであれば、比較的簡単にストアを復元できると考
えられる。
カービングツールのプロトタイプを作成
©Internet Initiative Japan Inc. 29
3つのスナップショットが
保存されたディスクイ
メージを解析した結果。
©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
©Internet Initiative Japan Inc. 31
カタログエントリ 2
2017/07/20 15:01:10
©Internet Initiative Japan Inc. 32
カタログエントリ 3
2017/07/13 4:52:14
©Internet Initiative Japan Inc. 33
エントリ1
エントリ2
エントリ3
カタログにない
エントリ
©Internet Initiative Japan Inc. 34
ストアの容量のほとんどはストアデータブロック(バックアッ
プデータ)が占めている。
ストアデータブロック自身は、ストアブロックリスト(レコー
ドタイプ:3)によって、そのデータブロックが記録されていた
オリジナルのオフセットとバックアップ先のオフセットがテー
ブルで管理されている。
ストアカービングの検討 1
©Internet Initiative Japan Inc. 35
ストアカービングの検討 2
オリジナルの
オフセット
バックアップ先の
オフセット
©Internet Initiative Japan Inc. 36
ストアデータブロックをすべてカービングすると非常に大きな
ファイルとなってしまい扱いづらい。また、ストアデータブ
ロックを別ファイルにする場合、ストアブロックリスト内のオ
フセットをすべて書き換えなければならないため、煩雑な処理
が必要となる。
実用上、ディスクイメージ内のストアデータブロックを参照し
てもスナップショットのデータを読み込むことが可能であるた
め、ストアデータブロックを除いたストアブロックのみを別
ファイルとして保存する。
ストアカービングの検討 3
©Internet Initiative Japan Inc. 37
ストアカービングの検討 4
ディスクイメージ
ストア
データブロック
ストア
ブロック
リスト
ストア
ヘッダ
ストア
ビット
マップ
ストア
ブロック
レンジ
カービングしたストア
ストア
データブロック
ストア
ブロック
リスト
ストア
ヘッダ
ストア
ビット
マップ
ストア
ブロック
レンジ
ディスク
イメージ
Carving
オフセット オフセット
©Internet Initiative Japan Inc. 38
カービングでカタログも復元することができるが、データ
は”0”で上書きされているため、カービングによる復元ではな
く再生成する必要がある。
カタログ内のストアブロックのオフセットを見ると、スナップ
ショットの生成日時とストアブロックのオフセットには相関関
係は見られない。
カタログ再生成方法の検討 1
©Internet Initiative Japan Inc. 39
そのため、大きなオフセットのスナップショットほど新しいと
仮定して、カタログを生成する。
ただし、ディスクイメージ上にカタログがある場合は、そちら
の情報を優先的に使用する。
また、カービングで発見したスナップショットのうち、カタロ
グに無いものは、カタログ内の一番古いエントリよりも古いも
のとして扱う。
※ディスクイメージ上にカタログが存在するということは、カービングした
スナップショットは自動的に削除された古いものである可能性が高い。
カタログ再生成方法の検討 2
©Internet Initiative Japan Inc. 40
ここまでの結果から、削除済みスナップショットのデータを復
元するツールと、それにアクセスするためのツールを作成でき
る見通しが立った。
検討結果
©Internet Initiative Japan Inc.
3. vss_carverの処理
©Internet Initiative Japan Inc. 42
1. VSS設定チェック
2. ディスク上のカタログ読み込み
3. ストアブロックカービング
4. カービングしたストアブロックをグルーピング
5. ストアブロックリストの精査
6. スナップショットエントリの重複チェック
7. ストア書き出し
8. カタログ書き出し
vss_carverの処理
©Internet Initiative Japan Inc. 43
ボリュームの先頭からのオフセット0x1e00にVSS identifierの
バイト列が存在するか否かで、VSSが有効か無効か確認する。
VSSボリュームヘッダのカタログオフセットが”0”の場合、VSS
は有効であるがスナップショットはすべて削除されている(ま
たは1つも作成されていない)状態である。
VSSが無効である場合はプログラムを終了する。
1. VSS設定チェック
©Internet Initiative Japan Inc. 44
カービングによって得られたスナップショットの情報よりも
Windowsに作成されたカタログの方が信頼性が高いため、ディ
スク上にカタログがあれば読み込む。
2. ディスク上のカタログ読み込み
©Internet Initiative Japan Inc. 45
ボリュームの先頭から16KBごとに、VSS identifierとレコード
タイプをキーにしてストアブロックをカービングする。
カービングで取得したストアブロックのオフセットをキーにし
て、ディクショナリにストアヘッダのデータを保存する(スト
アブロックディクショナリ)。
また、同じレコードタイプが連続するストアブロックの先頭の
オフセットをリストに保存する(ストアブロックリスト)。
3. ストアブロックカービング
©Internet Initiative Japan Inc. 46
カービングしたストアブ
ロックのオフセットをディ
クショナリに保存する。
同じレコードタイプが連続する
データブロックの先頭のオフ
セットをリストに保存する。
©Internet Initiative Japan Inc. 47
カタログに記録されたストアブロックのオフセットおよびプロ
トタイプの実行結果より、ストアブロックのレコードタイプの
並び順は、4, 3, 5, 6, 6であることが分かっている。
ストアブロックリストの中で、この順番で並んでいるストアブ
ロック群を1つのスナップショットとしてグルーピングし、ス
ナップショットリストに保存する。
4. カービングしたストアブロックをグルーピング
©Internet Initiative Japan Inc. 48
ストアブロックには、Next block offsetというフィールドが存在す
る。VSSによるバックアップ容量が確保しているバックアップ領域よ
り大きくなる場合、新たにストアブロックを確保し、そのオフセット
をNext block offsetに記録する。
ここでは、スナップショットリスト内のストアブロックのNext
block offsetのリストを辿っていき、全てのNext block offsetがスト
アブロックディクショナリのキーとして存在するか確認する。
ストアブロックが他のデータで上書きされ、該当のオフセットがスト
アブロックとしてカービングできなかった場合、そこまでのリストと
みなす。
5. ストアブロックリストの精査 1
©Internet Initiative Japan Inc. 49
Next block offsetによるストアブロックのリスト
5. ストアブロックリストの精査 2
Catalog Store 1 Store 2
上書きされた
データブロック
(カービングできなかっ
たデータブロック)
Store2の最後のデー
タブロックとみなす
©Internet Initiative Japan Inc. 50
2. で読み込んだカタログのスナップショットエントリと、5.
までに復元したスナップショットエントリが重複していないか
確認する。
重複のチェックはストアヘッダのオフセットを比較することで
行う。
重複している復元エントリがある場合、スナップショットリス
トから該当するエントリを削除する。
6. スナップショットエントリの重複チェック
©Internet Initiative Japan Inc. 51
ストアとカタログをファイルに保存する。
復元したスナップショットの生成日時の決め方
・ディスク上にカタログがある場合
カタログ上の一番古いスナップショット生成日時よりも1時
間前の日時を設定する。
・ディスク上にカタログがない場合
vss_carverを実行した時間を基準に設定する。
7. & 8. ファイル書き出し
©Internet Initiative Japan Inc.
4. libvshadowの改修
©Internet Initiative Japan Inc. 53
1. 復元したカタログとストアを読み込むオプションの追加
2. カタログとストアをファイルから読み込む処理の追加
改修した点は非常に単純だが、libvshadowの作者は自作のライ
ブラリを多用しており、ソースコードを読み解くのに時間がか
かった。
libvshadowの改修
©Internet Initiative Japan Inc.
5. vss_catalog_manipulator
©Internet Initiative Japan Inc. 55
カタログエントリを操作するためのツール。
vss_carverはストアブロックのオフセットを基準にエントリの
順番を決めているため、実際は正しくない場合がある。このよ
うな場合にエントリの入れ替えや削除等を行う。
独自の機能として、エントリを無効化/有効化する機能がある。
これはカタログエントリタイプが0x01が未使用を表すタイプと
して定義されていることを利用している(libvshadowと組み合
わせることが前提)。
vss_catalog_manipulator
©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) ディスクイメージ、カタログ、ストアを
読み込んで、削除されたスナップショットに
アクセスする。
ストアデータブロックを参照する
©Internet Initiative Japan Inc.
6. デモンストレーション
©Internet Initiative Japan Inc. 58
1. 自動的に削除されたスナップショットの復元
2. ランサムウェアに削除されたスナップショットの復元
デモンストレーション
©Internet Initiative Japan Inc.
7. 今後の開発
©Internet Initiative Japan Inc. 60
• libvshadowのパッチを本家にマージ
• Pull Requestはsubmit済み
• 復元したスナップショットの生成日時の推定
• (上記を利用した)カタログエントリソートツールの作成
今後の開発予定
©Internet Initiative Japan Inc.
8. まとめ
©Internet Initiative Japan Inc. 62
• 調査
先人の知見を借りる。
スナップショット削除時のVSSの挙動
VSSデータフォーマット、ツールのソースコード
• 検証
様々な環境から検証用データを取得する。
仕様の確認、検証用ツールの作成
• 実装
頑張る。
まとめ 1
©Internet Initiative Japan Inc. 63
• 作成したツールは以下のURLで公開しています。
https://github.com/mnrkbys/vss_carver
libvshadowのWindows版とLinux (SIFT)版のバイナリ
を配布
• ツール公開してからフィードバックをくれた人
5人くらい
まとめ 2
©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
関連発表資料
©Internet Initiative Japan Inc.
ご清聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
Tokoroten Nakayama
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
 

Mais procurados (20)

レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
 
IoTデバイスセキュリティ
IoTデバイスセキュリティIoTデバイスセキュリティ
IoTデバイスセキュリティ
 
P4によるデータプレーンプログラミングとユースケースのご紹介
P4によるデータプレーンプログラミングとユースケースのご紹介P4によるデータプレーンプログラミングとユースケースのご紹介
P4によるデータプレーンプログラミングとユースケースのご紹介
 
ランサムウェアのおはなし
ランサムウェアのおはなしランサムウェアのおはなし
ランサムウェアのおはなし
 
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAオーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
 
オントロジー工学に基づくセマンティック技術(1)オントロジー工学入門
オントロジー工学に基づくセマンティック技術(1)オントロジー工学入門オントロジー工学に基づくセマンティック技術(1)オントロジー工学入門
オントロジー工学に基づくセマンティック技術(1)オントロジー工学入門
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
 
Ingest node scripting_deep_dive
Ingest node scripting_deep_diveIngest node scripting_deep_dive
Ingest node scripting_deep_dive
 
JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
JJUG CCC 2018 Spring - I-7 (俺が)はじめての NettyJJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
 
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
 
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...
サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...
サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
【NGINXセミナー】API ゲートウェイとしてのNGINX Plus活用方法
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
 
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理
 
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
 
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
 

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

Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用
マジセミ by (株)オープンソース活用研究所
 
[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔
[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔
[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔
Insight Technology, Inc.
 
CSCJ_Webcast_20180626_ACI.pdf
CSCJ_Webcast_20180626_ACI.pdfCSCJ_Webcast_20180626_ACI.pdf
CSCJ_Webcast_20180626_ACI.pdf
yojitanaka2
 

Semelhante a フォレンジックツールの開発と実装 (20)

OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
 
【Interop Tokyo 2016】 Cisco Jasper Control Center
【Interop Tokyo 2016】 Cisco Jasper Control Center【Interop Tokyo 2016】 Cisco Jasper Control Center
【Interop Tokyo 2016】 Cisco Jasper Control Center
 
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjugJavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
 
CMDBuild overview (Japanese) V2.4 update
CMDBuild overview (Japanese) V2.4 updateCMDBuild overview (Japanese) V2.4 update
CMDBuild overview (Japanese) V2.4 update
 
Nginx meetup 1_20181114_omo
Nginx meetup 1_20181114_omoNginx meetup 1_20181114_omo
Nginx meetup 1_20181114_omo
 
Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
 
Owasp top10 HandsOn
Owasp top10 HandsOnOwasp top10 HandsOn
Owasp top10 HandsOn
 
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
 
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fallビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
 
Ceph ベンチマーク
Ceph ベンチマークCeph ベンチマーク
Ceph ベンチマーク
 
Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介
 
[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔
[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔
[db tech showcase Tokyo 2016] A35: NVMe徹底検証 by 株式会社インサイトテクノロジー 平間 大輔
 
Rancherを活用した開発・運用効率の改善への取り組み
Rancherを活用した開発・運用効率の改善への取り組みRancherを活用した開発・運用効率の改善への取り組み
Rancherを活用した開発・運用効率の改善への取り組み
 
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
 
20180601 OWASP Top 10 2017の読み方
20180601 OWASP Top 10 2017の読み方20180601 OWASP Top 10 2017の読み方
20180601 OWASP Top 10 2017の読み方
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
CSCJ_Webcast_20180626_ACI.pdf
CSCJ_Webcast_20180626_ACI.pdfCSCJ_Webcast_20180626_ACI.pdf
CSCJ_Webcast_20180626_ACI.pdf
 
Openstack ceph 20171115 vtj
Openstack ceph 20171115 vtjOpenstack ceph 20171115 vtj
Openstack ceph 20171115 vtj
 

Mais de IIJ

Mais de IIJ (20)

プロダクトオーナーと開発者が別会社・別組織でも前のめりなチームを生み出す取り組み事例
プロダクトオーナーと開発者が別会社・別組織でも前のめりなチームを生み出す取り組み事例プロダクトオーナーと開発者が別会社・別組織でも前のめりなチームを生み出す取り組み事例
プロダクトオーナーと開発者が別会社・別組織でも前のめりなチームを生み出す取り組み事例
 
IIJ_デジタルワークプレース事業紹介資料
IIJ_デジタルワークプレース事業紹介資料IIJ_デジタルワークプレース事業紹介資料
IIJ_デジタルワークプレース事業紹介資料
 
監視 Overview
監視 Overview監視 Overview
監視 Overview
 
HTTPを理解する
HTTPを理解するHTTPを理解する
HTTPを理解する
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
ただいま三河。あれから1年、チームNOCKncokが開発しないスクラムで成果を出した経験から得た学び
ただいま三河。あれから1年、チームNOCKncokが開発しないスクラムで成果を出した経験から得た学びただいま三河。あれから1年、チームNOCKncokが開発しないスクラムで成果を出した経験から得た学び
ただいま三河。あれから1年、チームNOCKncokが開発しないスクラムで成果を出した経験から得た学び
 
上っ面スクラムチームにならないために気を付けたいこと
上っ面スクラムチームにならないために気を付けたいこと上っ面スクラムチームにならないために気を付けたいこと
上っ面スクラムチームにならないために気を付けたいこと
 
Super Easy Memory Forensics
Super Easy Memory ForensicsSuper Easy Memory Forensics
Super Easy Memory Forensics
 
チームみを大切にした 私たちの“受託アジャイル・スクラム”体験談
チームみを大切にした 私たちの“受託アジャイル・スクラム”体験談チームみを大切にした 私たちの“受託アジャイル・スクラム”体験談
チームみを大切にした 私たちの“受託アジャイル・スクラム”体験談
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
 
コロナ禍での白井データセンターキャンパスの運用施策
コロナ禍での白井データセンターキャンパスの運用施策コロナ禍での白井データセンターキャンパスの運用施策
コロナ禍での白井データセンターキャンパスの運用施策
 
コロナ禍の開発勉強会~社内教育ツールの開発と実装
コロナ禍の開発勉強会~社内教育ツールの開発と実装コロナ禍の開発勉強会~社内教育ツールの開発と実装
コロナ禍の開発勉強会~社内教育ツールの開発と実装
 
セキュリティ動向2020
セキュリティ動向2020セキュリティ動向2020
セキュリティ動向2020
 
バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情
 
データセンターのエネルギーコントロールの仕組み
データセンターのエネルギーコントロールの仕組みデータセンターのエネルギーコントロールの仕組み
データセンターのエネルギーコントロールの仕組み
 
世界のインターネット事情
世界のインターネット事情世界のインターネット事情
世界のインターネット事情
 
フロントからバックエンドまで - WebAssemblyで広がる可能性
フロントからバックエンドまで - WebAssemblyで広がる可能性フロントからバックエンドまで - WebAssemblyで広がる可能性
フロントからバックエンドまで - WebAssemblyで広がる可能性
 
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
あ! やせいのEmotetがあらわれた! ~ IIJ C-SOCサービスの分析ルールについて~
 
インシデント調査システムが内製すぎる件~CHAGEのご紹介~
インシデント調査システムが内製すぎる件~CHAGEのご紹介~インシデント調査システムが内製すぎる件~CHAGEのご紹介~
インシデント調査システムが内製すぎる件~CHAGEのご紹介~
 
IIJ Technical DAY 2019 ~ IIJのサーバインフラはここまでやっています
IIJ Technical DAY 2019 ~ IIJのサーバインフラはここまでやっていますIIJ Technical DAY 2019 ~ IIJのサーバインフラはここまでやっています
IIJ Technical DAY 2019 ~ IIJのサーバインフラはここまでやっています
 

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

  • 1. ©Internet Initiative Japan Inc. フォレンジックツールの開発と実装 株式会社インターネットイニシアティブ セキュリティ部 セキュリティ情報統括室 小林 稔
  • 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. ©Internet Initiative Japan Inc. 3 1. VSSの概要 2. ツール作成の方針 3. vss_carverの処理 4. libvshadowの改修 5. vss_catalog_manipulator 6. デモンストレーション 7. 今後の開発 8. まとめ アジェンダ
  • 4. ©Internet Initiative Japan Inc. 1. VSSの概要
  • 5. ©Internet Initiative Japan Inc. 5 • Windowsに標準搭載されているバックアップ関連機能で、NTFSボリュームのVSSス ナップショット(以下、スナップショット)を作成することができる。 • スナップショットを参照すると、スナップショット作成時のストレージのデータにア クセスできる。削除された攻撃の痕跡を発見できる場合があるため、調査を行うとき に非常に有用なデータとなる。 • スナップショットは差分バックアップであるため、スナップショット内のデータにア クセスするには、現在のボリュームのデータとマージする必要がある(スナップ ショットだけではデータにアクセスできない)。 • 容量の上限によって古いスナップショットが削除されたり、攻撃者やマルウェアに よって削除されてしまう場合がある。また、削除されたスナップショットを復元する 方法は存在しない。 ⇒スナップショットが復元できれば非常に有用 Volume Shadow Copy Service (VSS)とは
  • 6. ©Internet Initiative Japan Inc. 6 VSSデータファイル構成 Catalog:メタ情報 (スナップショット生成日時など) Store:バックアップデータ
  • 7. ©Internet Initiative Japan Inc. 7 VSSデータ構造 0x0 0x1e00 VSS Volume Header Catalog Store 1 Store 2 バックアップ データ ボリュームを16KBごとに分割した データブロックと呼ばれる単位で管理する
  • 8. ©Internet Initiative Japan Inc. 2. ツール作成の方針
  • 9. ©Internet Initiative Japan Inc. 9 スナップショットを削除した際の挙動の検証が行われている。 Deleted Shadow Copies https://www.kazamiya.net/DeletedSC 以下の点に言及している。 1. カタログとストアのファイルは削除される。 2. カタログのデータがほとんど0x00で上書きされる。 3. ストア内のGUIDが書き換えられる。 4. ある商用ツールで削除されたスナップショットにアクセスで きた。 事前調査 1
  • 10. ©Internet Initiative Japan Inc. 10 データを復元できたとして、どのようにスナップショットにア クセスするか。 ⇒復元したカタログとストアを外部ファイルとして読み込ませ る。 スナップショットのアクセスによく使われるオープンソースの ツールを改修すればできそう。 • vshadowmount (libvshadow) • https://github.com/libyal/libvshadow • 削除時にストア内の変化したGUIDについてもスナップ ショットのアクセスには使用していない。 事前調査 2
  • 11. ©Internet Initiative Japan Inc. 11 カタログの復元 • カタログの情報が失われているため、何らかの手段で再生成 する必要がある。 • NTFSを含む多くのファイルシステムでは、ファイルを削除 してもファイルエントリの削除フラグを変更するだけである ため、ストアファイルのファイルエントリからメタ情報 (ファイル作成日時、オフセット等)を参照すればカタログ を再生成できそう。 ストアの復元 • ストアファイルを復元すればよさそう。 この時点で検討したスナップショット復元手法
  • 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. ©Internet Initiative Japan Inc. 13 VSSスナップショット削除直後のMFTエントリの状態 VSS削除検証 2 スナップショット削除直後は カタログとストアの MFTエントリが まだ残っている “*” は削除ファイルを 意味する
  • 14. ©Internet Initiative Japan Inc. 14 VSSスナップショット削除後数分経過したMFTエントリの状態 VSS削除検証 3 カタログとストアの MFTエントリが削除 されてしまう ストアファイル名が見えるが、 これは$I30に残っている情報で ファイルではない
  • 15. ©Internet Initiative Japan Inc. 15 ストアのMFTエントリが削除されてしまうため、ストアファイ ルのメタ情報を使う手法は使えない。つまり、ストアファイル の復元も簡単にはできない。 しかし、多くのファイルシステムでは、ファイルを削除しても データのクリアは行わない。そのため、ディスクの未使用領域 に削除前のデータが残っている可能性がある。 ディスクの未使用領域にあるデータを復元する手法として、 カービング(Carving)が存在する。 データ復元手法の再検討
  • 16. ©Internet Initiative Japan Inc. 16 フォレンジックやインシデントレスポンスにおけるカービング とは、データフォーマットの特徴的なデータ列(ファイルヘッ ダ等)をキーにして、ディスクイメージファイルを検索する手 法である。キーが現れたら、そこから連続するバイト列をファ イルやデータレコードとして保存する。 例) EXE : MZx90 ZIP : PKx03x04 JPEG : xffxd8xffxe0x00x10 カービングとは
  • 17. ©Internet Initiative Japan Inc. 17 復元するデータは未使用領域にあるため、他のファイルに上書 きされる可能性がある。また、ディスクの使用状況によりファ イルがフラグメント化される。このような場合、壊れたファイ ルが復元されることになる。 また、復元されたデータのメタデータ(ファイル名、ファイル サイズ、作成日時等)も知ることができない。 カービングの制限 カービングで復元されるデータ sample.jpg example.txt に上書き された箇所 JPEGヘッダ
  • 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. ©Internet Initiative Japan Inc. 19 カービングを行うには、復元したいデータのフォーマットを知 る必要がある。 データに生成日時等のメタデータが含まれていれば、それらも 解析対象とすることで単なるカービングよりも多くの情報を復 元できる可能性がある。 しかし、マイクロソフトはカタログとストアのファイルフォー マットの詳細を公開していない。 カービングに必要なこと
  • 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. ©Internet Initiative Japan Inc. 21 VSSボリュームヘッダ
  • 22. ©Internet Initiative Japan Inc. 22 カタログブロックヘッダ このヘッダの後にカタログエントリが 記録される。 カタログエントリタイプ 0x01 : 未使用 0x02 : 生成日時など 0x03 : ストアブロックのオフセット 0x02 と 0x03 で1セットのエントリ となる。
  • 23. ©Internet Initiative Japan Inc. 23 カタログエントリ(0x02)
  • 24. ©Internet Initiative Japan Inc. 24 カタログエントリ(0x03)
  • 25. ©Internet Initiative Japan Inc. 25 ストアブロックヘッダ
  • 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. ©Internet Initiative Japan Inc. 27 VSS identifierをキーにして、カービングツールを使用すれば ストアを復元することはできる。しかし、以下の問題点が残る。 1. ストアは4種類5つのストアブロックから構成されるため、 これらのグルーピングが必要となる。 2. カタログを再生成する必要がある(スナップショット削除時 に0で上書きされているため)。 ⇒カービングを行うだけでは不十分であるため、 専用のツールが必要になる。 ストアカービング後の問題点
  • 28. ©Internet Initiative Japan Inc. 28 VSS identifierとレコードタイプを基に、VSSデータブロック がどのように配置されているか確認するツールを作成した。 • スナップショットの順番とストアブロックの情報に何らかの 相関関係などが見られないか確認する。 • ストアブロックがどのように配置されているのか確認する。 スナップショット毎にストアブロックがある程度グループ分 けできるのであれば、比較的簡単にストアを復元できると考 えられる。 カービングツールのプロトタイプを作成
  • 29. ©Internet Initiative Japan Inc. 29 3つのスナップショットが 保存されたディスクイ メージを解析した結果。
  • 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. ©Internet Initiative Japan Inc. 31 カタログエントリ 2 2017/07/20 15:01:10
  • 32. ©Internet Initiative Japan Inc. 32 カタログエントリ 3 2017/07/13 4:52:14
  • 33. ©Internet Initiative Japan Inc. 33 エントリ1 エントリ2 エントリ3 カタログにない エントリ
  • 34. ©Internet Initiative Japan Inc. 34 ストアの容量のほとんどはストアデータブロック(バックアッ プデータ)が占めている。 ストアデータブロック自身は、ストアブロックリスト(レコー ドタイプ:3)によって、そのデータブロックが記録されていた オリジナルのオフセットとバックアップ先のオフセットがテー ブルで管理されている。 ストアカービングの検討 1
  • 35. ©Internet Initiative Japan Inc. 35 ストアカービングの検討 2 オリジナルの オフセット バックアップ先の オフセット
  • 36. ©Internet Initiative Japan Inc. 36 ストアデータブロックをすべてカービングすると非常に大きな ファイルとなってしまい扱いづらい。また、ストアデータブ ロックを別ファイルにする場合、ストアブロックリスト内のオ フセットをすべて書き換えなければならないため、煩雑な処理 が必要となる。 実用上、ディスクイメージ内のストアデータブロックを参照し てもスナップショットのデータを読み込むことが可能であるた め、ストアデータブロックを除いたストアブロックのみを別 ファイルとして保存する。 ストアカービングの検討 3
  • 37. ©Internet Initiative Japan Inc. 37 ストアカービングの検討 4 ディスクイメージ ストア データブロック ストア ブロック リスト ストア ヘッダ ストア ビット マップ ストア ブロック レンジ カービングしたストア ストア データブロック ストア ブロック リスト ストア ヘッダ ストア ビット マップ ストア ブロック レンジ ディスク イメージ Carving オフセット オフセット
  • 38. ©Internet Initiative Japan Inc. 38 カービングでカタログも復元することができるが、データ は”0”で上書きされているため、カービングによる復元ではな く再生成する必要がある。 カタログ内のストアブロックのオフセットを見ると、スナップ ショットの生成日時とストアブロックのオフセットには相関関 係は見られない。 カタログ再生成方法の検討 1
  • 39. ©Internet Initiative Japan Inc. 39 そのため、大きなオフセットのスナップショットほど新しいと 仮定して、カタログを生成する。 ただし、ディスクイメージ上にカタログがある場合は、そちら の情報を優先的に使用する。 また、カービングで発見したスナップショットのうち、カタロ グに無いものは、カタログ内の一番古いエントリよりも古いも のとして扱う。 ※ディスクイメージ上にカタログが存在するということは、カービングした スナップショットは自動的に削除された古いものである可能性が高い。 カタログ再生成方法の検討 2
  • 40. ©Internet Initiative Japan Inc. 40 ここまでの結果から、削除済みスナップショットのデータを復 元するツールと、それにアクセスするためのツールを作成でき る見通しが立った。 検討結果
  • 41. ©Internet Initiative Japan Inc. 3. vss_carverの処理
  • 42. ©Internet Initiative Japan Inc. 42 1. VSS設定チェック 2. ディスク上のカタログ読み込み 3. ストアブロックカービング 4. カービングしたストアブロックをグルーピング 5. ストアブロックリストの精査 6. スナップショットエントリの重複チェック 7. ストア書き出し 8. カタログ書き出し vss_carverの処理
  • 43. ©Internet Initiative Japan Inc. 43 ボリュームの先頭からのオフセット0x1e00にVSS identifierの バイト列が存在するか否かで、VSSが有効か無効か確認する。 VSSボリュームヘッダのカタログオフセットが”0”の場合、VSS は有効であるがスナップショットはすべて削除されている(ま たは1つも作成されていない)状態である。 VSSが無効である場合はプログラムを終了する。 1. VSS設定チェック
  • 44. ©Internet Initiative Japan Inc. 44 カービングによって得られたスナップショットの情報よりも Windowsに作成されたカタログの方が信頼性が高いため、ディ スク上にカタログがあれば読み込む。 2. ディスク上のカタログ読み込み
  • 45. ©Internet Initiative Japan Inc. 45 ボリュームの先頭から16KBごとに、VSS identifierとレコード タイプをキーにしてストアブロックをカービングする。 カービングで取得したストアブロックのオフセットをキーにし て、ディクショナリにストアヘッダのデータを保存する(スト アブロックディクショナリ)。 また、同じレコードタイプが連続するストアブロックの先頭の オフセットをリストに保存する(ストアブロックリスト)。 3. ストアブロックカービング
  • 46. ©Internet Initiative Japan Inc. 46 カービングしたストアブ ロックのオフセットをディ クショナリに保存する。 同じレコードタイプが連続する データブロックの先頭のオフ セットをリストに保存する。
  • 47. ©Internet Initiative Japan Inc. 47 カタログに記録されたストアブロックのオフセットおよびプロ トタイプの実行結果より、ストアブロックのレコードタイプの 並び順は、4, 3, 5, 6, 6であることが分かっている。 ストアブロックリストの中で、この順番で並んでいるストアブ ロック群を1つのスナップショットとしてグルーピングし、ス ナップショットリストに保存する。 4. カービングしたストアブロックをグルーピング
  • 48. ©Internet Initiative Japan Inc. 48 ストアブロックには、Next block offsetというフィールドが存在す る。VSSによるバックアップ容量が確保しているバックアップ領域よ り大きくなる場合、新たにストアブロックを確保し、そのオフセット をNext block offsetに記録する。 ここでは、スナップショットリスト内のストアブロックのNext block offsetのリストを辿っていき、全てのNext block offsetがスト アブロックディクショナリのキーとして存在するか確認する。 ストアブロックが他のデータで上書きされ、該当のオフセットがスト アブロックとしてカービングできなかった場合、そこまでのリストと みなす。 5. ストアブロックリストの精査 1
  • 49. ©Internet Initiative Japan Inc. 49 Next block offsetによるストアブロックのリスト 5. ストアブロックリストの精査 2 Catalog Store 1 Store 2 上書きされた データブロック (カービングできなかっ たデータブロック) Store2の最後のデー タブロックとみなす
  • 50. ©Internet Initiative Japan Inc. 50 2. で読み込んだカタログのスナップショットエントリと、5. までに復元したスナップショットエントリが重複していないか 確認する。 重複のチェックはストアヘッダのオフセットを比較することで 行う。 重複している復元エントリがある場合、スナップショットリス トから該当するエントリを削除する。 6. スナップショットエントリの重複チェック
  • 51. ©Internet Initiative Japan Inc. 51 ストアとカタログをファイルに保存する。 復元したスナップショットの生成日時の決め方 ・ディスク上にカタログがある場合 カタログ上の一番古いスナップショット生成日時よりも1時 間前の日時を設定する。 ・ディスク上にカタログがない場合 vss_carverを実行した時間を基準に設定する。 7. & 8. ファイル書き出し
  • 52. ©Internet Initiative Japan Inc. 4. libvshadowの改修
  • 53. ©Internet Initiative Japan Inc. 53 1. 復元したカタログとストアを読み込むオプションの追加 2. カタログとストアをファイルから読み込む処理の追加 改修した点は非常に単純だが、libvshadowの作者は自作のライ ブラリを多用しており、ソースコードを読み解くのに時間がか かった。 libvshadowの改修
  • 54. ©Internet Initiative Japan Inc. 5. vss_catalog_manipulator
  • 55. ©Internet Initiative Japan Inc. 55 カタログエントリを操作するためのツール。 vss_carverはストアブロックのオフセットを基準にエントリの 順番を決めているため、実際は正しくない場合がある。このよ うな場合にエントリの入れ替えや削除等を行う。 独自の機能として、エントリを無効化/有効化する機能がある。 これはカタログエントリタイプが0x01が未使用を表すタイプと して定義されていることを利用している(libvshadowと組み合 わせることが前提)。 vss_catalog_manipulator
  • 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. ©Internet Initiative Japan Inc. 6. デモンストレーション
  • 58. ©Internet Initiative Japan Inc. 58 1. 自動的に削除されたスナップショットの復元 2. ランサムウェアに削除されたスナップショットの復元 デモンストレーション
  • 59. ©Internet Initiative Japan Inc. 7. 今後の開発
  • 60. ©Internet Initiative Japan Inc. 60 • libvshadowのパッチを本家にマージ • Pull Requestはsubmit済み • 復元したスナップショットの生成日時の推定 • (上記を利用した)カタログエントリソートツールの作成 今後の開発予定
  • 61. ©Internet Initiative Japan Inc. 8. まとめ
  • 62. ©Internet Initiative Japan Inc. 62 • 調査 先人の知見を借りる。 スナップショット削除時のVSSの挙動 VSSデータフォーマット、ツールのソースコード • 検証 様々な環境から検証用データを取得する。 仕様の確認、検証用ツールの作成 • 実装 頑張る。 まとめ 1
  • 63. ©Internet Initiative Japan Inc. 63 • 作成したツールは以下のURLで公開しています。 https://github.com/mnrkbys/vss_carver libvshadowのWindows版とLinux (SIFT)版のバイナリ を配布 • ツール公開してからフィードバックをくれた人 5人くらい まとめ 2
  • 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. ©Internet Initiative Japan Inc. ご清聴ありがとうございました