全体ミーティング 03/04
DESCRIPTION
全体ミーティング 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 の特徴を利用して検出. exec の時の - PowerPoint PPT PresentationTRANSCRIPT
全体ミーティング 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 directoryPage Table 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 空間 (0xC0000000 以降 ) は物理メモリの
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 rootkitVM の外側から見たプロセスリスト(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 software VM Host
Symantec AntiVirus,MS Windows Defender,MS Malicious Software Removal Tool
WindowsXPMem:256MBDisk:6GB
WindowsXPMem:2GBDisk:120GB
Kaspersky AntiVirus Red Hat 8.0Mem:1GBDisk:4GB
Scientific Linux 4.4Mem:2GBDisk:180GB
F-PROT AntiVirus Debian 3.1 Linux(Xen)
Scientific Linux 4.4Mem:4GBDisk:330GB
McAfee AntiVirus Scan,Sophos Anti-Virus
Red Hat 7.0Mem:128MBDisk:512MB(UML)
Red Hat Enterprise 4Mem:2GBDisk: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 に対する攻撃耐性を高めることができた