33
自自自自自自自自自自自自 Windows OS malware 自自自自自自 安安安安 安安安安安安安安 安安安安安安安安安安安安安安安安 1 2 3

自己組織化マップを用いたWindows OS malware挙動の可視化

Embed Size (px)

Citation preview

Page 1: 自己組織化マップを用いたWindows OS malware挙動の可視化

自己組織化マップを用いたWindows OS malware 挙動

の可視化

安藤類央情報通信研究機構

情報通信セキュリティ研究センター

1

2 3

Page 2: 自己組織化マップを用いたWindows OS malware挙動の可視化

あらまし

• 本論文では仮想環境でのマルウェア挙動のデータを取得し、自己組織化マップはマルウェアの分類可視化を試みる。

• 自己組織化マップは、教師なし学習アルゴリズムの中でも処理時にクラスタ数を与件とせず、学習時にトポロジーが変化しないことから解析の初期段階で適用しやすい。

• 学習分類の結果、動的ログと静的ログに関して、静的ログの可視化は難しく、動的ログの分類可視化は 比較的良好な結果になることが明らかになった。

Page 3: 自己組織化マップを用いたWindows OS malware挙動の可視化

背景:情報セキュリティとデータマイニング

• マルウェア( malicious software: 悪意のあるソフトウェア)の挙動が複雑になっており、検出対象処理データも複雑になっている。

• クラウドコンピューティング、高速ネットワークの普及、汎用OSの複雑化に伴い、ログ情報が爆発、複雑化している。

• 大規模化するログデータを処理してセキュリティインシデントを検出しなければならない。

Page 4: 自己組織化マップを用いたWindows OS malware挙動の可視化

背景:情報セキュリティとデータマイニング

トラフィックログ、アクセスログの爆発

様々なアプリケーションにマルウェアが混入

Page 5: 自己組織化マップを用いたWindows OS malware挙動の可視化

関連研究

• アンドロイドのアプリケーションのセキュリティ属性(パーミッションの可視化)

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

Page 6: 自己組織化マップを用いたWindows OS malware挙動の可視化

関連研究 

• スパムメールのデータマイニング

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

Page 7: 自己組織化マップを用いたWindows OS malware挙動の可視化

処理対象のログ種別■ 静的ログWindows OS の1時点でのスナップ

ショットリソース所有、トラフィックログの状況メモリダンプ

■ 動的ログWindows OS のリソースアクセス

ソケット・ファイル・レジストリ

    前処理困難度 情報量 分類処理結

静的ログ プロセスのリソースログ 易 少 ×

静的ログ メモリダンプ 難 多 ?

動的ログ レジストリアクセス 中 中 〇

Page 8: 自己組織化マップを用いたWindows OS malware挙動の可視化

仮想化技術とマルウェア観測

• マルウェアの観測解析には仮想化技術を用いる。理由1:観測系と実験系の乖離観測対象のOSを錯乱しない。

理由2:再現性スナップショット、ロールバックの機能によりマルウェア挙動が再現できる。

理由3:不可視性マルウェアから観測器が検出できない。

Page 9: 自己組織化マップを用いたWindows OS malware挙動の可視化

仮想マシンソフトウェアと Windows OS

仮想化ソフトウェア

クローズドソースVMWare, XP mode

オープンソースXen / Qemu

マルウェアの観測解析などの特殊用途には、高粒度のロギングなどの改造が可能なオープンソースのソフトウェアを用いる。

Page 10: 自己組織化マップを用いたWindows OS malware挙動の可視化

Memory behavior clustering and anomaly detection

正常時の状態のクラスタリングによるグループ(プロファイル)の作成→プロファイル群から感染状態からの距離を算出し、異常を検出する。

10

Page 11: 自己組織化マップを用いたWindows OS malware挙動の可視化

仮想マシンモニタ観測例

# ./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

このようなスパイクを検出するためにクラスタリング(異常検知)アルゴリズムを用いる。

Page 12: 自己組織化マップを用いたWindows OS malware挙動の可視化

処理対象のログ種別

■ 静的ログWindows OS の1時点でのスナップショット

リソースアクセスの状況メモリダンプ

■ 動的ログWindows OS のリソースアクセス

ソケットファイルレジストリ

Page 13: 自己組織化マップを用いたWindows OS malware挙動の可視化

受動的観測による静的ログの取得

仮想 Windows OS

仮想化ソフトウェア( Xen, Qemu)

仮想メモリ 各種リソースメモリスナップショット

プロセスID  開いているファイル  開いているソケット  ロードしているライブラリ

任意の時点で仮想 Windows OS のメモリのスナップショットを取得し、ダンプデータを解析することでプロセスなどの情報を取得する

プロセス

Page 14: 自己組織化マップを用いたWindows OS malware挙動の可視化

受動的観測による動的ログの取得

仮想 Windows OS

仮想化ソフトウェア( Xen, Qemu)

仮想メモリ各種リソース

ログファイル

仮想 Windows OS 内でイベントが発生した時点で仮想化ソフトウェアに情報を送信し、ホストOS内でログ文字列に変換する。

モニタソフトウェア

プロセス

Page 15: 自己組織化マップを用いたWindows OS malware挙動の可視化

静的ログ:トラフィックログ■ トラフィックログ静的ログは、動的ログが時系列に発生するログのシーケンスに対し、ある時点のシステムのメモリスナップショットなどの状態を記録した

ものである。静的ログには、基本的には Windows OS 内部のプロセスの状態を、メ

モリダンプなどから取得したものになる。プロセスの状態の静的ログには、 \\

1 ロードしているライブラリ2 読み込んだファイル3 開いているソケット

などによって構成される。

Page 16: 自己組織化マップを用いたWindows OS malware挙動の可視化

トラフィックログの処理結果

正常時のトラフィックとマルウェア感染時のトラフィックはほぼ同じものとして認識される。これは、マルウェアは通常通信を装う通例から、予想とおりの結果であると言える。

同一視されている。

Page 17: 自己組織化マップを用いたWindows OS malware挙動の可視化

静的ログ:メモリダンプ

メモリダンプ

頻度分析、単語カウント

      文字列 1  文字列2 文字列N

ダンプ1   X1    X2     X3

ダンプ2   Y1    Y2     Y3

ダンプ3   Z1    Z2     Z3

4 種類のメモリダンプから、頻出文字列( nGram) を抽出。

頻出文字列の各メモリダンプごとの頻度をカウントし、行列を作成。

メモリダンプの前処理には代替案、改良の余地がある。

Page 18: 自己組織化マップを用いたWindows OS malware挙動の可視化

メモリダンプ処理結果

前処理の方針が定まっていないので、分類可視化もうまくいかなかった。

Page 19: 自己組織化マップを用いたWindows OS malware挙動の可視化

解析その2 動的ログ

通常状態 normal state Zeus-wsnpoem (BotNet)

Klez (worm) Sassar (worm)

Page 20: 自己組織化マップを用いたWindows OS malware挙動の可視化

解析その2:動的ログ

We monitor and visualize Windows OS behavior using virtual machine montitor.

Page 21: 自己組織化マップを用いたWindows OS malware挙動の可視化

提案手法(詳細)

ログ文字列を1文字ずつ送信1文字を ASCII コードとしてレジスタに格納EMIT命令で HYPERCALL を仮想 Windows 側から生成XEN側の do_hypercall (hvm.c) で仮想レジスタから ASCII コード取り出し

Page 22: 自己組織化マップを用いたWindows OS malware挙動の可視化

提案手法(シーケンス図 :XEN Hypervisor )

XENハイパーバイザーがホスト OSLinux の下で稼動

手順①仮想 Windows OS 内の DLL ・フィルタドライバ内で構築したログ情報・ハッシュ値を仮想 CPU のコンテキストに格納。その後、Hypercall を発行

手順②XEN 内の HYPECALLハンドラで仮想 CPU のコンテキストから通知を捕捉・ログ情報を取得。

Page 23: 自己組織化マップを用いたWindows OS malware挙動の可視化

動的ログ:レジストリアクセスログ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

Page 24: 自己組織化マップを用いたWindows OS malware挙動の可視化

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)]システムコールコードへのアドレスを返すマクロ。この値をフック関数のアドレスへ置き換える。

Page 25: 自己組織化マップを用いたWindows OS malware挙動の可視化

自己組織化マップ

■ クラスタリング・次元削減のための教師なし学習アルゴリズムのひとつ

Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t))

D(t): 入力  Wt:重み係数Θ(t):BMU からの近傍半径  α(t): 学習係数 

■k-mean等に比べ、クラスタ数を与件としない、データ間のトポロジーが変わらない等の特徴がある。

Page 26: 自己組織化マップを用いたWindows OS malware挙動の可視化

レジストリアクセス取得データと前処理

単位時間( SEC) あたりの上記10フィルタの頻度カウントを入力 :D(t) とする。Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t))

Page 27: 自己組織化マップを用いたWindows OS malware挙動の可視化

Visualizing Windows BehaviorData for (before) SOM processing

Running P2P application Running WEB(FireFox) application

Page 28: 自己組織化マップを用いたWindows OS malware挙動の可視化

Visualizing Windows behaviorusing SOM

INSTALLING APPLICATION(text editor)

INSTALLING Device driver(video card)

MALWAREINFECTION

Page 29: 自己組織化マップを用いたWindows OS malware挙動の可視化

Visualizing Windows behaviorusing SOM

Running P2P application

Installing Application(text editor)

Malware infection

Page 30: 自己組織化マップを用いたWindows OS malware挙動の可視化

Visualizing Windows behaviorusing SOM

Running P2P application

Running InternetExplorer

Malware infection

Page 31: 自己組織化マップを用いたWindows OS malware挙動の可視化

まとめ

• 本論文では仮想環境でのマルウェア挙動のデータを取得し、自己組織化マップはマルウェアの分類可視化を試みた。

• 自己組織化マップは、教師なし学習アルゴリズムの中でも処理時にクラスタ数を与件とせず、学習時にトポロジーが変化しないことから、解析初期段階での巨視的な分類や観測粒度、解析の方向性の

  検討に使いやすい。

• 実際に、SOM結果から、学習分類の結果、動的ログと静的ログに関して、静的ログの可視化は難しく、動的ログの分類可視化は 比較的良好な結果になることが明らかになった。

Page 32: 自己組織化マップを用いたWindows OS malware挙動の可視化

今後の課題 メモリダンプ

• 本論文の結果は良好ではなかったが、メモリダンプに関しては、分類可視化が成功する可能性がある。

• メモリダンプは他のログにくらべて規模が大きく、構造も複雑である。

 → 適切な前処理を考案する → 取得するダンプ数を増やす。

Page 33: 自己組織化マップを用いたWindows OS malware挙動の可視化

今後の課題 メモリスナップショットクラスタ技術による大規模メモリダンプの解析

メモリダンプの複数時点での取得

機械学習アルゴリズム、LSH などによるデータの圧縮と格納

特徴抽出が容易になる適切な前処理を考案する必要がある。

Hadoop:Google のGFSのクローン。大規模データ処理用のファイルシステム