全体ミーティング
2006年10月24日(火)
島本 大輔
修士2年
今回の発表方法について
- プレゼンテーションに S5 を使用
- XHTML, CSS, Javascriptで作られたスライドショー形式
- ブラウザによるプレゼンテーションを行うことができる
=そのままWebにアップロードして、ブラウザで見られる
- スライドの形をした印刷ができない
最近のセキュリティ関連事件
- ウィルス付きiPod
- Bluetoothの脆弱性
- Firefox 脆弱性虚偽(?)事件
- 脆弱性ランキング
ウィルス付きiPod
- ウィルスが混入したiPodが出荷されてしまった
- ウィルス名:W32/RJump.worm, RavMonE.exe, etc.
- 特徴
- リムーバブルストレージに自身をコピー
- autorun.inf を作成することにより、PC への接続時に
自身が実行されるようにする
- バックドアを開く(Windows標準ファイアウォールの
ポートも開ける)
- 原因:テストマシンのWindowsがウィルスに感染していたため
- 感染したのは全台数の1%以下
- 報告されたのは25件ほど
- 似た案件
- 日本マクドナルドの景品mp3プレーヤにウィルス混入
- Creative社のmp3プレーヤZen Neeon 4000台にウィルス混入
Bluetoothの脆弱性
- Bluetoothとは
- 2.4GHzの周波数帯を用いた無線通信の規格および技術(IEEE802.15.1)
- 主に短距離(10〜100m)向けなので、PC、PDA、携帯電話、
カーナビの間の通信などに使われる
- 東芝製デバイスドライバにBuffer Overflowの脆弱性
- 不正なBluetoothパケットを受け取ると、バッファーの境界を越えて、データを書き換えてしまう
⇒ カーネル内の話のため、Windowsがクラッシュする
- ただし、Bluetoothの電波が届く範囲にいる必要がある
Firefox 脆弱性虚偽(?)事件
- 2人組のハッカーが、Firefox の未公表の脆弱性を発見した、と発言
- Toorcon Security Conference
- スパイウェアをインストールさせることもでき、
その攻撃コードもあると証言
⇒ 発表の仕方がうまかったのか、一時話題に
- しかし、実際には部分的に嘘だと判明
- クラッシュさせることはできたが、乗っ取るところまでは
実証していないとのこと
2006年脆弱性ランキング(1/2)
- Mitre社のCVEより
| 1位 |
Cross Site Scripting(XSS) |
21.5% |
| 2位 |
SQL Injection |
14.0% |
| 3位 |
PHP "include" Vulnerability |
9.5% |
| 4位 |
Buffer Overflow |
7.9% |
- Webアプリケーション対象の脆弱性が増加
- Webアプリケーション自体が大幅に増加
- 脆弱性が比較的容易に作成できる
2006年脆弱性ランキング(2/2)
- Cross Site Scripting(XSS)
- Webページに悪意あるスクリプト(特にJavascript)を埋め込み、
ユーザに実行させる
- SQL Injection
- 攻撃対象のDBにSQLクエリーを実行させることにより、
データの搾取、改変などを行う
- PHP "include" Vulnerability
- PHPのinclude()(他のPHPスクリプトを読み込む関数)にユーザから引数が渡せるようになっていると、悪意あるPHPスクリプトをサーバで実行される可能性がある
Cross Site Scripting の例
- (とても)簡単な例を作成
- CGIスクリプトはPythonで記述
- GETの際に受け取ったmsgという値をHTMLソースに表示しています
- 実際には、より複雑なことをしなければいけない場合が多い
論文サーベイ
- Learning Classifiers for Misuse and Anomaly Detection Using a Bag of System Calls
- Dae-Ki Kang, Doug Fuller, Vasant Honavar (Iowa State University)
- IEEE Workshop on Information Assurance and Security 2005
- 要点
- システムコールの流れではなく、各システムコールの回数を
異常検知に利用
- いくつかの機械学習方法を用いて実験
⇒高速かつ高い精度で異常検知を行うことができた
異常検知システムの分類
- 正常・異常のどちらを学習させるかによる分類
- Mis-use Detection
異常な動作を学習させ、一致するものを異常とみなす
- Anomaly Detection
正常時の動作を学習させ、一致しないものを異常とみなす
- 何を学習させるかによる分類
- ユーザの動作を監視
- システムの振る舞いを監視
特にシステムコールを監視する研究が多い
システムコールを監視する手法について
- システムコール列を見るものが多い
[Forrest et. al. 1996, Hofmeyr et. al. 1998]
⇒ 記録する部分列の長くなると、保存するべきデータ量が爆発する
- 本研究では、異常検知をシステムコールの回数に関する
分類問題(classification problem)として扱う
- このシステムコールの回数を数える手法 Bag of System Calls を
開発した
システムコールの部分列による異常検知
- STIDE[Warrendar et. al. 1999]で採用されていた手法
- 特徴 Xj = x1x2...xk を Zj の部分列とする
(ただし、x1≦l≦k∈Σ で、k は定数)
それぞれの部分列に正常・異常を示すフラグ c を設定する
- 部分列の長さ k は6以上というのが有効とされている
[Tan et. al. 2002]
Bag of System Calls
- 本研究では Bag of System Calls という手法を開発した
- Xi=<c1, c2,...,cm> : システムコール列 Ziの特徴 (m = |Σ|)
cj : Zi 内でシステムコール sj の出現回数
- システムコールの順番の情報は失われる
本当にシステムコールの回数だけで精度が出せるのか?
実験データ
- システムコールのデータは公開されているものを利用
- University of New Mexico(UNM) のデータ
- live lpr
- live lpr MIT
- synthetic sendmail
- synthetic sendmail CERT
- denail of service(DOS)
- Massachusetts Institute of Technology Lincoln Lab(MITLL) のデータ
- 特定のプロセスではなく、システム全体のデータがある
- 4週目(6/22/98〜)のものを使用
実験方法
- クラス分類器の評価方法:10-fold cross validation を利用
- 'x'-fold cross validation:
x 個のデータのうち、x-1 個をクラス分類器の生成に利用し、
残りの1個をクラス分類器に通してみる評価方法。
これをすべての x 個の組み合わせに関して行う。
- 精度、検知率、false positive率は10個の組み合わせの平均を取る
評価値について補足
- 精度 = (true positive の数 + true negative の数) / (入力された列の総数)
- 検知率 = (true positive の数) / (true positive の数 + false negative の数)
- false positive 率 = (false positive の数) / (true positive の数 + false positive の数)
Mis-use Detection の実験
- いくつかの機械学習アルゴリズムを利用
- Naive Bayes Learner of Multinomial Event Model
- C4.5 Decision Tree Learner
- RIPPER rule learner
- Support Vector Machine(SVM)
-Sequential Minimal Optimization(SMO) を利用
- Logistic Regression Model
-Multinomial logistic regression with a ridge estimator を利用
Mis-use Detection の実験結果
- 単純にシステムコールの回数のみを用いても精度が高いクラス分類器をを
生成することができる
生成されたクラス分類器を利用した異常検知
- どちらも'>'の下が異常だということが分かる
- 異常なコードが実行されるとシステムコールも増えるから
Supervised Anomaly Detection の実験
- 正常・異常を教えたデータで学習させた場合の実験
- One class Naive Bayesアルゴリズムを利用し、学習されたデータの
確率分布を求める
- 入力された試験対象のデータも同様に確率分布を求め、上の
分布とのKullback-Leiblerの距離を求める
- 距離が短いほど似ているとする
Unsupervised Anomaly Detection の実験
- 正常・異常を教えない状態で学習させる
- この際、k=2 の k-Means クラスタリングを利用
- この手法が UNM live lpr では有効だが、UNM synthetic sendmail
では、あまり有効でないことが分かる
まとめ
- 本研究では、Bag of System Calls という簡単な方法を用いた
- 同手法は、様々な機械学習アルゴリズムを用いることが可能な上、計算量を低く抑えることが可能である
- 実際のデータを利用し、既存の研究に同等、もしくは、
より良い結果を示した
- このような単純な手法を利用した場合でも高い精度を出すことが
できる
- システムコール列の部分列を利用する手法
[Forrest et. al. 1996, Warrendar et. al. 1999] に比べ、速く、
メモリ使用量も小さくて済む
関連研究(1/2)
- [Warrendar et. al. 1999]
- 正常なシステムコール列の部分列を検査対象の列と比較することにより異常検知
⇒正常なシステムコールの部分列データが膨大になる可能性
- ルールを用いたクラス分類による異常検知
⇒ルールを用いて毎回チェックするため、分類に時間がかかる
- 隠れマルコフモデル(HMM)を用いて異常検知
⇒精度の高い HMM を生成するのが大変
- NIDES[Anderson et. al. 1995]
- プロセスの振る舞い(ファイルアクセス、CPU、など)から確率分布を作成し、異常検知に用いている
関連研究(2/2)
- RIPPERを利用した異常検知[Lee et. al. 1998]
- RIPPER = Repeated Incremental Pruning to Produce Error Reduction
- RIPPER で生成されたルールに対して、ユーザが閾値を決める
Fin
以上です。
ご清聴ありがとうございました。