全体ミーティング 03/04 澤崎 純也
紹介する論文 Stealthy Malware Detection Through VMM- based "Out-of-the-Box" Semantic View Reconstruction[Xuxian Jiang et al., CCS'07] – 卒論で関連研究として取り上げた論文
卒論の内容 ( 概略 ) VMM 側で Linux2.6 の fork(),exec() を Kernel 修 正なしに検出する手法 具体的には Page Table の特徴を利用して検 出 fork の時の page directory exec の時の page directory Page Table
本論文の対象 ステルス性を持った malware, bot への対策 – Anti-malware software を無効化してしまうよう な malware, bot が多数存在する Anti-malware software を VM の外側に配置し て攻撃耐性を高めたい – ところがそううまくはいかない
In-the-box Approach 従来の Anti-malware software の手法 VM の内側 (OS 内 ) から検出、駆除 malware から攻撃された場合の耐性は低い 参照できる情報 – プロセス、ファイル、カーネルモジュール等
Out-of-the-box Approach VM の外側から検出、駆除などを行う malware からの攻撃耐性は高い 参照できる情報 – メモリ、レジスタ、ディスクブロックなど、 低レベルの情報のみ
Semantic Gap VM の内側と外側からでは取得できる情報 が異なる – VM の外側からは OS 内部の情報 ( プロセスなど ) は直接は参照できない 従って In-the-box から Out-of-the-box への Approach の移行がスムーズでない
Guest view casting VM の内側の情報を外側で再構築する これにより、前述の Semantic gap を埋める 具体的には、 Guest OS が利用するデータの 構造をテンプレートとして用い、 VM の外側で解釈してしまう
実装方針 VM 内のシステムに対して干渉しない – 低レベルの情報を用いることで malware に対し て Anti-malware software の活動を認知させない Semantic gap の縮小 – VM の外側からでも Anti-malware software が動 作できるようにしたい 様々な VMM に適用できること – 完全 / 準仮想化の両方式で動作すること – close-source の VMM でも動作すること
実装 Semantic gap を埋める VMwatcher というシステ ムを筆者らは提案、その prototype を以下の VM 上に実装した – VMware Server – QEMU – Xen – UML 対象 Guest – Windows 2000/XP – Red Hat Linux 7.2/8.0/9.0 – Fedora Core 1/2/3/4
Semantic View Reconstruction (1/5) Disk 情報を再構成する VM 内部の Disk のファイルシステムが分 かっていればそれを読み込むだけでよい Windows 上では ext2/ext3 filesystem を読み 込めないので筆者らは ext2/ext3 用 driver を 実装した
Semantic View Reconstruction (2/5) メモリ情報の再構成 ここでは 32bit Linux に限定する Windows の場合は後述
Semantic View Reconstruction (3/5) Linux では各プロセスの情報を task_struct 構造 体によって管理している 各構造体は連結リストで辿ることができる 構造体リストの先頭アドレス (init_task_union) はファイルとして保存されている (System.map) Kernel 空間 (0xC 以降 ) は物理メモリの 0 番地以降にストレートマッピングされている 以上からプロセスの情報が復元できる
Semantic View Reconstruction (4/5)
Semantic View Reconstruction(5/5) Windows の場合は Linux のように明示的なア ドレスが分からないので、メモリのフル スキャンを行うことによりプロセス情報 を取得する 特定の値を signature として用いる – GREPEXEC: Grepping Executive Objects from Pool Memory[bugcheck, 2006]
評価 1-1 : プロセス隠蔽型 rootkit Windows/Linux 用の rootkit 各 10 種を導入 rootkit によって隠蔽されたプロセス、ファ イルを VM の外側から検出できた 次ページの図は Windows 用 rootkit (kernel-level FU rootkit) の検出例 – タスクマネージャから任意のプロセスを参照 できないようにしてしまう
図 :FU rootkit VM の外側から見た プロセスリスト (PID=336 は見える ) VM の内側から見た プロセスリスト (PID=336 が隠蔽済 ) VM 内で PID=336 を隠蔽
評価 1-2 : ファイル隠蔽型 rootkit ファイルを隠してしまう rootkit(Hacker Defender, NTRootkit) を WindowsXP 上に導入 VM 内の Anti-malware software は隠蔽された rootkit を見逃してしまう VMwathcer を経由して VM の外側から Anti- malware software を走らせることで隠蔽さ れた rootkit を検出できた
ファイルが隠されているので VM の内側の Anti-Virus software では 検出できなかった VM の外側から Anti-Virus software を 実行すると検出できた
評価 1-3 : Linux kernel rootkit カーネル上の関数ポインタを書き換える ことでファイル、プロセスを隠蔽する rootkit (adore-ng) を導入 同様に隠蔽されたファイル、プロセスを 検出できた
VM の外側 VM の内側 "backdoor" のファイル、プロセスを隠 蔽
評価 2 : "Out-of-the-box" malware detection VM の外側から Anti-malware software を実行、 VM 内の rootkit の検出実験を行った Windows 版 Symantec AntiVirus が VM 内 (Linux) の rootkit を検出できた – Windows/Linux 版が存在するから MS Windows Defender では rootkit を検出で きなかった – Windows 向けに特化しているから
評価 3-1 : 検出 Performance(1) 7 種の anti-virtus software を VM の内側と外側 から実行した場合の時間を比較 外側から実行した方が速かった
評価 3-1 : 補足 Anti-virus softwareVMHost Symantec AntiVirus, MS Windows Defender, MS Malicious Software Removal Tool WindowsXP Mem:256MB Disk:6GB WindowsXP Mem:2GB Disk:120GB Kaspersky AntiVirusRed Hat 8.0 Mem:1GB Disk:4GB Scientific Linux 4.4 Mem:2GB Disk:180GB F-PROT AntiVirusDebian 3.1 Linux (Xen) Scientific Linux 4.4 Mem:4GB Disk:330GB McAfee AntiVirus Scan, Sophos Anti-Virus Red Hat 7.0 Mem:128MB Disk:512MB (UML) Red Hat Enterprise 4 Mem:2GB Disk:135GB
評価 3-2 : 検出 Performance(2) メモリイメージに対してウィルスチェッ クを実行 Linux に対してはメモリサイズに関わらず 0.5 秒程度で終了した – メモリの意味的構造を復元できているため Windows に対してはメモリサイズに対して 線形に処理時間が増加 – Close-source なので現状メモリ構造を 復元できていないため
課題 rootkit が独自の Scheduler, 独自の Process list を 管理するようになった場合は対処できない – OS の Scheduler, Process list を仮定しているため – Scheduler の変更自体は Hash 等を利用することで検 出はできる – より広範な監視が必要 ( システムコールテーブ ル,IDT など ) rootkit が VM 上で実行されていることを検出、 挙動を変えるような可能性 – VM の挙動をより実機に近いものに似せるなどの 対策が必要
関連研究 侵入検知 – Livewire system [T. Garfinkel et al, USENIX'02] – IntroVirt [A. Joshi et al, SOSP 2005] 仮想化を悪用した malware – SubVirt [King et al, IEEE Symposium on Security and Privacy, 2006] – Blue Pill [Rutkowska et al, Blackhat 2006] – Vitriol [D. D. Zovi, Blackhat 2006]
まとめ VM の外側から malware を検出するため、 VMWatcher を複数の VMM 上に実装し Semantic gap を解決した VM の外側に Anti-malware software を 配置することで、 Anti-malware software に 対する攻撃耐性を高めることができた