DECAF meets The Sleuth Kit(TSK)
by
Ren Kimura
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
DECAF meets The Sleuth Kit (TSK) OSC2016 Tokyo/Spring @RKX1209
Slide 2
Slide 2 text
whoami ● るくす と申します ● twitter: @RKX1209 ● 神戸大学 工学部 B3 ● sandbox開発,マルウェア解析など ● セキュリティキャンプ'15 チューター
Slide 3
Slide 3 text
はじめに ● 今回やったこと ● DECAFというsandboxに、フォレンジックツール TSKを載せました ● パッチ +436 -14 ● 本家マージ済み(?)
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
Agenda ● DECAFの紹介 - DECAFとは - QEMUのしくみ ● The Sleuth Kitの紹介 - The Sleuth Kit(TSK)とは - マルウェアフォレンジック ● TSK on DECAF
Slide 6
Slide 6 text
Agenda ● DECAFの紹介 - DECAFとは - QEMUのしくみ ● The Sleuth Kitの紹介 - The Sleuth Kit(TSK)とは - マルウェアフォレンジック ● TSK on DECAF
Slide 7
Slide 7 text
DECAFとは ● QEMUをベースにしたsandbox ● sandboxはマルウェアを仮想環境などに閉じ込め 隔離するプログラム ● 主にマルウェア解析,感染防止などに使用
Slide 8
Slide 8 text
DECAFとは ● ゲストOS上で実行されるファイル(.exeなど)をホス ト側から解析可能 ● ホスト側で拡張プラグインを開発し、ゲストOS上の API呼び出しなどをフックできる ● Out-of-VM方式を採用したsandbox
Slide 9
Slide 9 text
DECAFとは ● In-VM: ゲストOS内にエージェントを配置 - マルウェアに検出される(アンチ解析) ● Out-of-VM: ホスト側(ハイパーバイザ)にエージェ ントを追加
Slide 10
Slide 10 text
DECAFとは ● DECAFを用いたマルウェア解析 - マルウェアをゲストOS内に閉じ込める - マルウェアが用いそうなAPIにフックをセット - APIを呼ぶとDECAF側に通知&プラグイン内の関 数を呼び出す ● もう少し進んだ解析(今回は説明しません) - DECAFのデータ伝搬機構によるテイント解析 - マルウェアによる仮想マシン検出対策など
Slide 11
Slide 11 text
DECAFとは ● セマンティックギャップ問題 - OSはメモリ上のどこにどのような情報を配置して いるか把握している(ex. WinAPI) - メモリのデータに意味(セマンティクス)を持ってい る
Slide 12
Slide 12 text
DECAFとは ● セマンティックギャップ問題
Slide 13
Slide 13 text
DECAFとは ● DECAFによるギャップ解消(VMI) ● QEMUからメモリデータ,レジスタ値を読む ● 読んだデータからゲストOSのセマンティクスを復元 する - どうやって? - ゲストOSがLinuxの場合を例に見てみる
Slide 14
Slide 14 text
DECAFとは ● ゲストOSセマンティクス復元 ● QEMUからESPレジスタの値を取得 ● $ESP & 0xfffff000(下位12bitをmask) ● これでLinuxのthread_info構造体のアドレスが得 られる ● thread_infoからtask_struct構造体のアドレスを 得る ● task_structのアドレス ↔ バージョンの対応DBを検 索し、バージョンを特定する
Slide 15
Slide 15 text
DECAFとは ● 仮想マシンを通しレジスタ,メモリの値を読みだして いる Q. QEMUが持っている情報(ゲストのレジスタ値,メ モリ)をDECAFはどうやって横取りしている? Q. どのタイミングで横取りしている? A. QEMUの動的バイナリ変換機能を利用して フックコードを途中で挿入している
Slide 16
Slide 16 text
Agenda ● DECAFの紹介 - DECAFとは - QEMUのしくみ ● The Sleuth Kitの紹介 - The Sleuth Kit(TSK)とは - マルウェアフォレンジック ● TSK on DECAF
Slide 17
Slide 17 text
QEMUのしくみ ● 動的バイナリ変換(DynamicBinaryTranslation) ● ゲストはホストと異なるアーキテクチャの物を動か せる
Slide 18
Slide 18 text
QEMUのしくみ ● DECAFはフックコードを中間表現TCGに挿入 ● 解析コードをターゲットに挿入する手法を DBI(Dynamic Binary Instrumentation)という ● 中間表現レベルで挿入しているためアーキテクチャ 非依存 ● APIがcallされるTCG命令の前後に、DECAFの関 数呼び出し命令を挿入する - APIフックの実現
Slide 19
Slide 19 text
QEMUのしくみ
Slide 20
Slide 20 text
Agenda ● DECAFの紹介 - DECAFとは - QEMUのしくみ ● The Sleuth Kitの紹介 - The Sleuth Kit(TSK)とは - マルウェアフォレンジック ● TSK on DECAF
Slide 21
Slide 21 text
The Sleuth Kit(TSK)とは ● ファイルシステムフォレンジックツール ● ファイルシステムの詳細な構造にアクセス可能 ● TSKはコマンドラインツールだがAPIも持っている -(C,pythonなど様々なバインドがある) ● ディスクイメージの解析などに用いる
Slide 22
Slide 22 text
The Sleuth Kit(TSK)とは ● フォレンジック? ● 正確にはディジタルフォレンジックを指す ● コンピュータやネットワークのログやディスクから証 拠を探す ● 警察が犯罪者のディジタルデータ(PC,スマホなど) から、証拠立件を行う際にもフォレンジックが行われ る - 某遠隔操作事件でもスラックスペースが話題に ● フォレンジックはマルウェア解析者も行う
Slide 23
Slide 23 text
Agenda ● DECAFの紹介 - DECAFとは - QEMUのしくみ ● The Sleuth Kitの紹介 - The Sleuth Kit(TSK)とは - マルウェアフォレンジック ● TSK on DECAF
Slide 24
Slide 24 text
マルウェアフォレンジック ● マルウェアをディスクイメージから探し出す ● 多くのマルウェアは自身を隠蔽する手法を持ってい る ● 有名な手法はNTFSのADS(Alternate Data Stream)を用いた物 - 最近流行りのPoison Ivyの亜種などもこの手法 を利用している ● echo 'I am malware' > test.txt:stream ● cmd.exeやファイルエクスプローラーでは見つけら れない
Slide 25
Slide 25 text
マルウェアフォレンジック ● マルウェアによる検索妨害 ● ADSを検出できるツールは多くある - しかし多くのツールはFindNextFileなどのWin APIを利用している ● マルウェアはAPI呼び出しをフックし改竄できるた め、この手法では限界がある ● TSKはAPIではなくディスクイメージを直接パースす るためこの手の妨害は受けない
Slide 26
Slide 26 text
Agenda ● DECAFの紹介 - DECAFとは - QEMUのしくみ ● The Sleuth Kitの紹介 - The Sleuth Kit(TSK)とは - マルウェアフォレンジック ● TSK on DECAF
Slide 27
Slide 27 text
TSK on DECAF ● TSK APIをDECAFから使えるようにする ● 実はTSK自体は既にDECAFに載っている - ただしqcowのサポートが少し不完全 - まれにDECAFプラグインからうまく扱えない事が ● DECAFはTSKに独自のqcowサポートコードを追 加している tsk_img_open_sing(snapshot, QEMU_IMG, 0);
Slide 28
Slide 28 text
TSK on DECAF ● TSKに新しくqcowサポートコードを加えた ● 以前のQEMU_IMGに加 え、TSK_IMG_TYPE_QCOW_QCOWという定数 を追加 ● TSK内のqcow(open/read/write)コードをlibqcow ライブラリを利用した物に変更 → うまく動いた! tsk_img_open_sing(snapshot, TSK_IMG_TYPE_QCOW_QCOW, 0);
Slide 29
Slide 29 text
TSK on DECAF TSKを用いてゲストOSのファイル走査している図
Slide 30
Slide 30 text
おわりに ● DECAFという既存のOSS sandboxから、TSKを使 えるようにしました ● マルウェア解析者もこれからはsandboxを実装して いく時代 ● DECAF以外にも様々なフレームワークがある - ex. Panda, PEMU, PinOS, Unicorn... ● 解析専門でも実装力は必要 ● セキュリティ技術者もどんどんOSSへ貢献していき ましょう