Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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へ貢献していき ましょう