H 3UDP: 1
5.3 挙動のモデルを用いた挙動追跡型ネットワークセキュリティ監視 システムの構想
第5.2節で示した,複雑なソフトウェアの挙動を追跡するために,本論文では挙動のモデ ルを示すテンプレートのルールと変数を用いたネットワークセキュリティ監視手法を提案す る.従来,複数のセッションの相関関係を検知に利用するシステムが提案,実装されてきた が,それらの多くはオートマトンなどの状態遷移を利用している.しかし,複雑なマルウェ アの挙動を追跡する際,発生規則が和条件や積条件など,複雑な規則になると状態数が指数 関数的に増加してしまうため,記憶領域の圧迫が懸念される.また,異なるセッション間で の通信内容比較を実現するためには,単純な状態遷移は機能が不十分である.そのため,状 態遷移とは異なる方式でセッション間の通信内容比較を実現し,柔軟なセッションの相関関 係を表せるシステムが必要になる.
本論文ではホストの挙動を監視するにあたり,挙動のテンプレートを用いたネットワーク セキュリティ監視手法を提案する.本手法ではあらかじめマルウェアに感染したホストがと りうる挙動の雛形をモデルとして作成する.このテンプレートには様々なイベントが複数含
h2
h3
h1
v3
v1
v2
v4
s1
s2
図5.9: 挙動のテンプレート例
まれ,各イベントの相関関係が示されている.このイベントの相関関係に基づき,マルウェ アの活動を検知する.
本手法では挙動のテンプレートにおけるイベントの相関関係を示すために,テンプレート に変数を用いている.まず,本論文ではセッションの相関関係をイベントの相関関係として 解釈する.イベントは各セッションに対応付けられるため,イベントの相関関係とセッショ ンの相関関係は同様のものとして扱える.変数は,イベントの定義と相関関係を示すテンプ レートにおいて,任意の指定されたデータやセッション上に出現したデータをを保持する記 憶領域となり,真偽値,数値,文字列,IPアドレス,バイナリデータなどを必要に応じて記 憶する.そして,変数はルールで指定された手順に従って生成され,ホスト(IPアドレス)や セッションと結びつく.ルールR,イベントをe,変数をv,それぞれRに含まれる個数をNe, Nv,セッションをs,ホストをhとすると,式5.1,5.2,5.3,5.4のように表現される.
R = {∀ens,∀vnv|0≤nv<Nv,0≤ne<Ne} (5.1)
∃ex ∈ sn:{0≤x<Ne} (5.2)
∃vx ∈ sn:{0≤x<Nv} (5.3)
∃vx ∈ hn:{0≤x<Nv} (5.4)
図5.9に変数vnとセッションsn,ホストhnからなるテンプレートの構成例を示す,図はホ ストh1,2とs2にそれぞれ変数が割り当てられている様を表している.ホストやセッションは それぞれ変数として割り当てられており,v1,2,3,4でそれぞれ異なる値を保持している.そし て,ホストやセッションの変数は特定のイベントが発生した際,ルールに従って割り当てが 実施される.そのため,図中のh3, s1のように,変数を持たないホストやセッションも存在
h2
h3
h1
v1
v2
s1
s2
e1
e2
e3
Session Read Write
true
true
(c1) (c
2&v
1=true)
(c3&v2=true)
図5.10: 挙動のテンプレートにおける変数操作の例
する.ただし,変数そのものはネットワークセキュリティ監視システム上で管理されている ため,実際のホストやセッションに対して影響をおよぼすものではない.
変数には任意の数値や文字列を記録できるため,これを利用することによってイベントの 発生規則やセッション間の通信内容比較が実現できる.まず,イベント発生の有無を変数に よって管理すれば,イベントの発生規則を柔軟に捉えることができる.図5.10では変数を用 いたイベント発生規則管理の例を示している.図中ではイベント発生規則(e1e2e3)の検知を 試みている.e1,e2は同一セッション上でのイベントであり,e3は別セッションでのイベン トである.e1,2,3の通信内容に関する条件をc1,2,3とすると,まずc1を満たす通信がs1上で発 見され,e1が検知される.その際,s1に関連付けられたv1を生成し,あらかじめルールで決 められた手順に従ってv1にtrueを代入する.そして,e2が発生したかを検査する際には,通 信内容がc2と合致するかを調べるのと同時に,v1がtrueであることを確認する.この2つが 同時に成立すれば,同一セッション内のイベント発生規則e1e2が成立する.同様にe2が検知 された際には,h1に関連付けられたv2を生成し,そこにtrueを代入する.e3はc3の検査と v2がtrueであるという両者が成り立てば,セッション間のイベント相関関係(e2e3)が成り立 ち,(e1e2e3)の規則が満たされたことが分かる.このようにセッションとホストに関連付けら れた変数を中継させることで,どのセッションで発生したかに依存せずにイベントの逐次発 生規則を処理できる.
さらに繰り返し,和条件,積条件も同様に変数を用いて処理できる.特に第5.2.3節で示 した状態数の爆発を避けて複雑な条件を表現できるようになる.図5.11に例を示す.図中 の(1)の繰り返しでは,e1が検知されたときv1に1を加算している.よって,e2発生条件は (c2&v1≥5)なので,e1が5回発生すれば条件が満たされる.(2)の和条件では2つのイベン
v2
e2
e3
e4
Read Write true
true
(1) 繰り返し条件
v1
e1 e2
+1
(c1) (c
2&v
1≥5)
e1{5}e2 (2) 和条件
v1
e1 (c1)
true
(c2&v1=true)
(c3&v1=true)
(c4&v2=true)
e1(e2∨e3)e4
(3) 積条件 e1(e2 ∧e3)e4
v3
e2
e3
e4 true
true
v1
e1 (c1)
true
(c2&v1=true)
(c3&v1=true)
v2
(c4&v2=true&v3=true)
図5.11: 変数を用いたイベント発生規則の処理例2
トe2,3のいずれかが変数v2に書き込みをする.e2,3のどちらでも書き込みができれば,どち らか一方,もしくは両方が発生した後にc4が満たされたことを検査でき,e1(e2∨e3)e4の成 立を確認できる.そして,(3)でもe4が検査する変数を2つに増やすことで積条件の表現を 実現している.v2,3の2つを検査することで,e2,3の両者が任意の順序で発生したことを確認 できる.これらの例から分かるように,それぞれ変数をn個増やした場合でも空間計算量は O(n)にとどまり,現実的な処理が実現される.
また,任意の情報を保持できるため,第5.2.3節で挙げたURL(文字列形式)や,部分的な データ(文字列,もしくはバイナリデータ形式)の比較,あるいはDNSのAレコードと宛先 IPアドレス(IPアドレス形式)の比較は構造上容易である.他のセッションで発生したデータ をホストの変数に保持しておき,新しいセッションが発生した際にその変数を参照して比較 すればよい.
このように挙動のテンプレートをイベントと変数によって表すことで,イベントの発生規則 の処理や異なるセッションでの通信内容比較に基づいた相関関係を表現できるようになった.
update foo.exe
h
2h
3GET foo.exe
h
1(事例1) マルウェアによる通信
update baa.exe
h
2h
3GET baa.exe
h
1(事例2) マルウェアによる通信
h
2GET xxx_install.exe
h
1(事例3) 通常の通信
図5.12:本手法が有効なシナリオの例