Upload
ruo-ando
View
353
Download
3
Embed Size (px)
Citation preview
自己組織化マップを用いたWindows OS malware 挙動
の可視化
安藤類央情報通信研究機構
情報通信セキュリティ研究センター
1
2 3
あらまし
• 本論文では仮想環境でのマルウェア挙動のデータを取得し、自己組織化マップはマルウェアの分類可視化を試みる。
• 自己組織化マップは、教師なし学習アルゴリズムの中でも処理時にクラスタ数を与件とせず、学習時にトポロジーが変化しないことから解析の初期段階で適用しやすい。
• 学習分類の結果、動的ログと静的ログに関して、静的ログの可視化は難しく、動的ログの分類可視化は 比較的良好な結果になることが明らかになった。
背景:情報セキュリティとデータマイニング
• マルウェア( malicious software: 悪意のあるソフトウェア)の挙動が複雑になっており、検出対象処理データも複雑になっている。
• クラウドコンピューティング、高速ネットワークの普及、汎用OSの複雑化に伴い、ログ情報が爆発、複雑化している。
• 大規模化するログデータを処理してセキュリティインシデントを検出しなければならない。
背景:情報セキュリティとデータマイニング
トラフィックログ、アクセスログの爆発
様々なアプリケーションにマルウェアが混入
関連研究
• アンドロイドのアプリケーションのセキュリティ属性(パーミッションの可視化)
David Barrera, Hilmi Günes Kayacik, Paul C. van Oorschot, Anil Somayaji: A methodology for empirical analysis of permission-based security models and its application to android. AC M Conference on Computer and Communications Security 2010: 73-84
関連研究
• スパムメールのデータマイニング
Guofei Gu, Roberto Perdisci, Junjie Zhang,
Wenke Lee: BotMiner: Clustering Analysis of
Network Traffic for Protocol- and Structure-
Independent Botnet Detection. USENIX
Security Symposium 2008: 139-154
処理対象のログ種別■ 静的ログWindows OS の1時点でのスナップ
ショットリソース所有、トラフィックログの状況メモリダンプ
■ 動的ログWindows OS のリソースアクセス
ソケット・ファイル・レジストリ
前処理困難度 情報量 分類処理結
果
静的ログ プロセスのリソースログ 易 少 ×
静的ログ メモリダンプ 難 多 ?
動的ログ レジストリアクセス 中 中 〇
仮想化技術とマルウェア観測
• マルウェアの観測解析には仮想化技術を用いる。理由1:観測系と実験系の乖離観測対象のOSを錯乱しない。
理由2:再現性スナップショット、ロールバックの機能によりマルウェア挙動が再現できる。
理由3:不可視性マルウェアから観測器が検出できない。
仮想マシンソフトウェアと Windows OS
仮想化ソフトウェア
クローズドソースVMWare, XP mode
オープンソースXen / Qemu
マルウェアの観測解析などの特殊用途には、高粒度のロギングなどの改造が可能なオープンソースのソフトウェアを用いる。
Memory behavior clustering and anomaly detection
正常時の状態のクラスタリングによるグループ(プロファイル)の作成→プロファイル群から感染状態からの距離を算出し、異常を検出する。
10
仮想マシンモニタ観測例
# ./vkimono xp3 0x8055a220 saveDomains xp3: ID: 1, CPUs: 1Trying to read in SDT from 8055a220SSDT.ServiceTableBase = 804e26a8SSDT.NumberOfServices = 11cReading 0x11c syscalls from SSDT at 804e26a8Writing SDT data to sddt.dat
Windows OS (virtualized)
Virtual machine monitor(hypervisor)
Logger/detector
DATA DATA
このようなスパイクを検出するためにクラスタリング(異常検知)アルゴリズムを用いる。
処理対象のログ種別
■ 静的ログWindows OS の1時点でのスナップショット
リソースアクセスの状況メモリダンプ
■ 動的ログWindows OS のリソースアクセス
ソケットファイルレジストリ
受動的観測による静的ログの取得
仮想 Windows OS
仮想化ソフトウェア( Xen, Qemu)
仮想メモリ 各種リソースメモリスナップショット
プロセスID 開いているファイル 開いているソケット ロードしているライブラリ
任意の時点で仮想 Windows OS のメモリのスナップショットを取得し、ダンプデータを解析することでプロセスなどの情報を取得する
プロセス
受動的観測による動的ログの取得
仮想 Windows OS
仮想化ソフトウェア( Xen, Qemu)
仮想メモリ各種リソース
ログファイル
仮想 Windows OS 内でイベントが発生した時点で仮想化ソフトウェアに情報を送信し、ホストOS内でログ文字列に変換する。
モニタソフトウェア
プロセス
静的ログ:トラフィックログ■ トラフィックログ静的ログは、動的ログが時系列に発生するログのシーケンスに対し、ある時点のシステムのメモリスナップショットなどの状態を記録した
ものである。静的ログには、基本的には Windows OS 内部のプロセスの状態を、メ
モリダンプなどから取得したものになる。プロセスの状態の静的ログには、 \\
1 ロードしているライブラリ2 読み込んだファイル3 開いているソケット
などによって構成される。
トラフィックログの処理結果
正常時のトラフィックとマルウェア感染時のトラフィックはほぼ同じものとして認識される。これは、マルウェアは通常通信を装う通例から、予想とおりの結果であると言える。
同一視されている。
静的ログ:メモリダンプ
メモリダンプ
頻度分析、単語カウント
文字列 1 文字列2 文字列N
ダンプ1 X1 X2 X3
ダンプ2 Y1 Y2 Y3
ダンプ3 Z1 Z2 Z3
4 種類のメモリダンプから、頻出文字列( nGram) を抽出。
頻出文字列の各メモリダンプごとの頻度をカウントし、行列を作成。
メモリダンプの前処理には代替案、改良の余地がある。
メモリダンプ処理結果
前処理の方針が定まっていないので、分類可視化もうまくいかなかった。
解析その2 動的ログ
通常状態 normal state Zeus-wsnpoem (BotNet)
Klez (worm) Sassar (worm)
解析その2:動的ログ
We monitor and visualize Windows OS behavior using virtual machine montitor.
提案手法(詳細)
ログ文字列を1文字ずつ送信1文字を ASCII コードとしてレジスタに格納EMIT命令で HYPERCALL を仮想 Windows 側から生成XEN側の do_hypercall (hvm.c) で仮想レジスタから ASCII コード取り出し
提案手法(シーケンス図 :XEN Hypervisor )
XENハイパーバイザーがホスト OSLinux の下で稼動
手順①仮想 Windows OS 内の DLL ・フィルタドライバ内で構築したログ情報・ハッシュ値を仮想 CPU のコンテキストに格納。その後、Hypercall を発行
手順②XEN 内の HYPECALLハンドラで仮想 CPU のコンテキストから通知を捕捉・ログ情報を取得。
動的ログ:レジストリアクセスログWindows OS as huge state machine
SDT
・ ・ ・
・ ・ ・
ZwCreateKey
ZwDeleteKey
ZwDeleteValueKey
ZwEnumerateKey
ZwEnumerateValueKey
ZwQueryKey
ZwQueryValueKey
ZwSetValueKey
・ ・ ・
・ ・ ・
Registry access table
Registry value Represents state of Windows OS
Windows レジストリアクセスフック
■windows/system32/ntoskrnl.exe にある SDT (service descriptor table) のレジストリ部分を修正する。
■#define SYSCALL_INDEX(f)*(PULONG)((PUCHAR)(f)+1)SDT でのシステムコールテーブルインデックスを求めるためのマクロを用いる
■#define SYSTEMSERVICE(f)KeServiceDescriptorTable->ServiceTable[SYSCALL_INDEX(f)]システムコールコードへのアドレスを返すマクロ。この値をフック関数のアドレスへ置き換える。
自己組織化マップ
■ クラスタリング・次元削減のための教師なし学習アルゴリズムのひとつ
Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t))
D(t): 入力 Wt:重み係数Θ(t):BMU からの近傍半径 α(t): 学習係数
■k-mean等に比べ、クラスタ数を与件としない、データ間のトポロジーが変わらない等の特徴がある。
レジストリアクセス取得データと前処理
単位時間( SEC) あたりの上記10フィルタの頻度カウントを入力 :D(t) とする。Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t))
Visualizing Windows BehaviorData for (before) SOM processing
Running P2P application Running WEB(FireFox) application
Visualizing Windows behaviorusing SOM
INSTALLING APPLICATION(text editor)
INSTALLING Device driver(video card)
MALWAREINFECTION
Visualizing Windows behaviorusing SOM
Running P2P application
Installing Application(text editor)
Malware infection
Visualizing Windows behaviorusing SOM
Running P2P application
Running InternetExplorer
Malware infection
まとめ
• 本論文では仮想環境でのマルウェア挙動のデータを取得し、自己組織化マップはマルウェアの分類可視化を試みた。
• 自己組織化マップは、教師なし学習アルゴリズムの中でも処理時にクラスタ数を与件とせず、学習時にトポロジーが変化しないことから、解析初期段階での巨視的な分類や観測粒度、解析の方向性の
検討に使いやすい。
• 実際に、SOM結果から、学習分類の結果、動的ログと静的ログに関して、静的ログの可視化は難しく、動的ログの分類可視化は 比較的良好な結果になることが明らかになった。
今後の課題 メモリダンプ
• 本論文の結果は良好ではなかったが、メモリダンプに関しては、分類可視化が成功する可能性がある。
• メモリダンプは他のログにくらべて規模が大きく、構造も複雑である。
→ 適切な前処理を考案する → 取得するダンプ数を増やす。
今後の課題 メモリスナップショットクラスタ技術による大規模メモリダンプの解析
メモリダンプの複数時点での取得
機械学習アルゴリズム、LSH などによるデータの圧縮と格納
特徴抽出が容易になる適切な前処理を考案する必要がある。
Hadoop:Google のGFSのクローン。大規模データ処理用のファイルシステム