SlideShare ist ein Scribd-Unternehmen logo
1 von 33
自己組織化マップを用いた
Windows OS malware 挙動
の可視化
3

2
1

安藤類央
情報通信研究機構
情報通信セキュリティ研究セン
ター
あらまし
• 本論文では仮想環境でのマルウェア挙動のデー
タを取得し、自己組織化マップはマルウェアの
分類可視化を試みる。
• 自己組織化マップは、教師なし学習アルゴリズ
ムの中でも処理時にクラスタ数を与件とせず、
学習時にトポロジーが変化しないことから解析
の初期段階で適用しやすい。
• 学習分類の結果、動的ログと静的ログに関して
、静的ログの可視化は難しく、動的ログの分類
可視化は 比較的良好な結果になることが明らか
になった。
背景:情報セキュリティとデータマイ
ニング
• マルウェア( 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 StructureIndependent 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
仮想マシンモニタ観測例
Logger/detector

DATA

Windows OS
(virtualized)
DATA

Virtual machine monitor
(hypervisor)

# ./vkimono xp3 0x8055a220 save
Domains xp3: ID: 1, CPUs: 1
このようなスパイクを検出するために
Trying to read in SDT from 8055a220
クラスタリング(異常検知)
SSDT.ServiceTableBase = 804e26a8
アルゴリズムを用いる。
SSDT.NumberOfServices = 11c
Reading 0x11c syscalls from SSDT at 804e26a8
Writing SDT data to sddt.dat
処理対象のログ種別
■ 静的ログ
Windows OS の1時点でのスナップショット
リソースアクセスの状況
メモリダンプ
■ 動的ログ
Windows OS のリソースアクセス
ソケット
ファイル
レジストリ
受動的観測による静的ログの取得
プロセスID
  開いているファイル
  開いているソケット
  ロードしているライブ
ラリ
メモリスナップ
ショット

プロセス

仮想 Windows OS
仮想メモリ

各種リソース

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

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

仮想 Windows OS
ログファイル

各種リソース

仮想メモリ

モニタソフトウェア

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

仮想 Windows OS 内でイベントが発生した時点で仮想化ソフトウェアに情報を
送信し、ホストOS内でログ文字列に変換する。
静的ログ:トラフィックログ
■ トラフィックログ
静的ログは、動的ログが時系列に発生するログのシーケンスに対し、
ある時点のシステムのメモリスナップショットなどの状態を記録した
ものであ
る。
静的ログには、基本的には Windows OS 内部のプロセスの状態を、メ
モリダ
ンプなどから
取得したものになる。
プロセスの状態の静的ログには、 
1 ロードしているライブラリ
2 読み込んだファイル
3 開いているソケット
などによって構成される。
トラフィックログの処理結果

同一視されて
いる。

正常時のトラフィックとマルウェア感染時のトラフィックはほぼ同じものとして認識される
これは、マルウェアは通常通信を装う通例から、予想とおりの結果であると言える。
静的ログ:メモリダンプ
メモリダンプ
4 種類のメモリダンプから、
頻出文字列( nGram) を抽出。
頻度分析、単語カウント

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

頻出文字列の各メモリダンプごとの
頻度をカウントし、行列を作成。
メモリダンプの前処理には
代替案、改良の余地がある。

ダンプ1   X1    X2     X3
ダンプ2   Y1    Y2     Y3
ダンプ3   Z1    Z2     Z3
メモリダンプ処理結果

前処理の方針が定まっていないので、分類可視化もうまくいかなかった。
解析その2 動的ログ

通常状態 normal state

Klez (worm)

Zeus-wsnpoem (BotNet)

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
ハイパーバイザーがホスト OS
Linux の下で稼動

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

手順②
XEN 内の HYPECALL
ハンドラで仮想 CPU の
コンテキストから通知を捕捉・
ログ情報を取得。
動的ログ:レジストリアクセスログ
Windows OS as huge state machine

Registry access table

SDT
・・・
・・・
ZwCreateKey
ZwDeleteKey
ZwDeleteValueKe
y
ZwEnumerateKey
ZwEnumerateVal
ueKey
ZwQueryKey
ZwQueryValueKe

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 Behavior
Data for (before) SOM processing

Running P2P application

Running WEB(FireFox) application
Visualizing Windows behavior
using SOM
INSTALLING
APPLICATION
(text editor)

MALWARE
INFECTION

INSTALLING
Device driver
(video card)
Visualizing Windows behavior
using SOM
Installing
Application
(text editor)

Malware
infection

Running P2P
application
Visualizing Windows behavior
using SOM
Running Internet
Explorer

Malware infection

Running P2P
application
まとめ
• 本論文では仮想環境でのマルウェア挙動のデー
タを取得し、自己組織化マップはマルウェアの
分類可視化を試みた。
• 自己組織化マップは、教師なし学習アルゴリズ
ムの中でも処理時にクラスタ数を与件とせず、
学習時にトポロジーが変化しないことから、解
析初期段階での巨視的な分類や観測粒度、解析
の方向性の
  検討に使いやすい。
• 実際に、SOM結果から、学習分類の結果、動
的ログと静的ログに関して、静的ログの可視化
は難しく、動的ログの分類可視化は 比較的良好
な結果になることが明らかになった。
今後の課題 メモリダンプ
• 本論文の結果は良好ではなかったが、メ
モリダンプに関しては、分類可視化が成
功する可能性がある。
• メモリダンプは他のログにくらべて規模
が大きく、構造も複雑である。
 → 適切な前処理を考案する
 → 取得するダンプ数を増やす。
今後の課題 メモリスナップショット
クラスタ技術による大規模メモリダンプの解析
特徴抽出が容易にな
る適切な前処理を考
案する必要がある。
Hadoop:
Google のGFSの
クローン。大規模データ処
理用のファイルシステム
機械学習アルゴリズム、
LSH などによるデータの
圧縮と格納

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

Weitere ähnliche Inhalte

Mehr von Ruo Ando

解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピーRuo Ando
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学Ruo Ando
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰Ruo Ando
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リストRuo Ando
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信Ruo Ando
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限Ruo Ando
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレスRuo Ando
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播Ruo Ando
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号Ruo Ando
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法Ruo Ando
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-freeRuo Ando
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 Ruo Ando
 
ファジングの解説
ファジングの解説ファジングの解説
ファジングの解説Ruo Ando
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月Ruo Ando
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰Ruo Ando
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopRuo Ando
 
情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回Ruo Ando
 
情報セキュリティと標準化I 第14回
情報セキュリティと標準化I 第14回情報セキュリティと標準化I 第14回
情報セキュリティと標準化I 第14回Ruo Ando
 
情報セキュリティと標準化I 第13回
情報セキュリティと標準化I第13回情報セキュリティと標準化I第13回
情報セキュリティと標準化I 第13回Ruo Ando
 
情報セキュリティと標準化I 第11回
情報セキュリティと標準化I 第11回情報セキュリティと標準化I 第11回
情報セキュリティと標準化I 第11回Ruo Ando
 

Mehr von Ruo Ando (20)

解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピー
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リスト
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料
 
ファジングの解説
ファジングの解説ファジングの解説
ファジングの解説
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st Workshop
 
情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回
 
情報セキュリティと標準化I 第14回
情報セキュリティと標準化I 第14回情報セキュリティと標準化I 第14回
情報セキュリティと標準化I 第14回
 
情報セキュリティと標準化I 第13回
情報セキュリティと標準化I第13回情報セキュリティと標準化I第13回
情報セキュリティと標準化I 第13回
 
情報セキュリティと標準化I 第11回
情報セキュリティと標準化I 第11回情報セキュリティと標準化I 第11回
情報セキュリティと標準化I 第11回
 

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