<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title></title>
<!-- metadata -->
<meta name="generator" content="S5" />
<meta name="version" content="S5 1.1" />
<meta name="presdate" content="20060628" />
<meta name="author" content="島本 大輔（M2）" />
<meta name="company" content="" />
<!-- configuration parameters -->
<meta name="defaultView" content="slideshow" />
<meta name="controlVis" content="hidden" />
<!-- style sheet links -->
<link rel="stylesheet" href="ui/original/slides.css" type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="ui/original/outline.css" type="text/css" media="screen" id="outlineStyle" />
<link rel="stylesheet" href="ui/original/print.css" type="text/css" media="print" id="slidePrint" />
<link rel="stylesheet" href="ui/original/opera.css" type="text/css" media="projection" id="operaFix" />
<link rel="stylesheet" href="ui/original/pretty.css" type="text/css" media="projection" />
<!-- S5 JS -->
<script src="ui/original/slides.js" type="text/javascript"></script>

<link rel="stylesheet" href="./original.css" type="text/css" />
</head>

<body>

<div class="layout">
<div id="controls"><!-- DO NOT EDIT --></div>
<div id="currentSlide"><!-- DO NOT EDIT --></div>
<div id="header"></div>
<div id="footer">
<h1>全体ミーティング 06/10/24(Tue)</h1>
<h2>島本 大輔(M2)</h2>
</div>
</div>


<div class="presentation">

<div class="slide">
<h1>全体ミーティング</h1>
<h2>2006年10月24日（火）</h2>
<h3>島本 大輔</h3>
<h4>修士2年</h4>
</div>

<div class="slide">
<h1>今回の発表方法について</h1>
<ul>
  <li>プレゼンテーションに <span style="color: blue">S5</span> を使用</li>
  <ul>
    <li>XHTML, CSS, Javascriptで作られたスライドショー形式</li>
    <li>ブラウザによるプレゼンテーションを行うことができる<br />
        ＝そのままWebにアップロードして、ブラウザで見られる
    </li>
    <li>スライドの形をした印刷ができない</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>本日の発表の概要</h1>
<ul>
  <li><span style="color: red;">最近のセキュリティ事件</span></li>
  <li>論文サーベイ</li>
</ul>
</div>

<div class="slide">
<h1>最近のセキュリティ関連事件</h1>
<ul>
  <li>ウィルス付きiPod</li>
  <li>Bluetoothの脆弱性</li>
  <li>Firefox 脆弱性虚偽（？）事件</li>
  <li>脆弱性ランキング</li>
</ul>
</div>

<div class="slide">
<h1>ウィルス付きiPod</h1>
<ul>
  <li>ウィルスが混入したiPodが出荷されてしまった</li>
  <ul>
    <li>ウィルス名：W32/RJump.worm, RavMonE.exe, etc.</li>
    <li>特徴</li>
      <ul>
        <li>リムーバブルストレージに自身をコピー</li>
        <li>autorun.inf を作成することにより、PC への接続時に<br />
            自身が実行されるようにする
        </li>
        <li>バックドアを開く（Windows標準ファイアウォールの<br />
            ポートも開ける）
        </li>
      </ul>
  </ul>
  <li>原因：テストマシンのWindowsがウィルスに感染していたため</li>
  <li>感染したのは全台数の1%以下</li>
  <li>報告されたのは25件ほど</li>
</ul>
<ul class="handout">
  <li>似た案件</li>
  <ul>
    <li>日本マクドナルドの景品mp3プレーヤにウィルス混入</li>
    <li>Creative社のmp3プレーヤZen Neeon 4000台にウィルス混入</li>
  <ul>
</ul>
</div>

<div class="slide">
<h1>Bluetoothの脆弱性</h1>
<ul>
  <li>Bluetoothとは</li>
  <ul>
    <li>2.4GHzの周波数帯を用いた無線通信の規格および技術(IEEE802.15.1)</li>
    <li>主に短距離（10〜100m）向けなので、PC、PDA、携帯電話、<br />
        カーナビの間の通信などに使われる
    </li>
  </ul>
  <li>東芝製デバイスドライバにBuffer Overflowの脆弱性</li>
  <ul>
    <li>不正なBluetoothパケットを受け取ると、バッファーの境界を越えて、データを書き換えてしまう<br />
    ⇒ カーネル内の話のため、Windowsがクラッシュする
    </li>
    <li>ただし、Bluetoothの電波が届く範囲にいる必要がある</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>Firefox 脆弱性虚偽（？）事件</h1>
<ul>
  <li>2人組のハッカーが、Firefox の未公表の脆弱性を発見した、と発言</li>
  <ul>
    <li>Toorcon Security Conference</li>
    <li>スパイウェアをインストールさせることもでき、<br />
        その攻撃コードもあると証言</li>
  </ul>
  <div>⇒ 発表の仕方がうまかったのか、一時話題に</div>
  <li style="margin-top: 50px;">しかし、実際には部分的に嘘だと判明</li>
  <ul>
    <li>クラッシュさせることはできたが、乗っ取るところまでは<br />
        実証していないとのこと
    </li>
  </ul>
</ul>
<div class="handout">
詳しくは、<a href="http://blog.washingtonpost.com/securityfix/2006/10/zeroday_firefox_exploit_claime.html">Washington Postのブログ</a> を参照
</div>
</div>

<div class="slide">
<h1>2006年脆弱性ランキング(1/2)</h1>
<ul>
  <li>Mitre社のCVEより</li>
  <table>
    <tbody>
    <tr>
      <td style="width: 60px;">1位</td>
      <td style="width: 350px;">Cross Site Scripting(XSS)</td>
      <td style="width: 50px; text-align: right;">21.5%</td>
    </tr>
    <tr>
      <td>2位</td>
      <td>SQL Injection</td>
      <td style="text-align: right;">14.0%</td>
    </tr>
    <tr>
      <td>3位</td>
      <td>PHP "include" Vulnerability</td>
      <td style="text-align: right;">9.5%</td>
    </tr>
    <tr>
      <td>4位</td>
      <td>Buffer Overflow</td>
      <td style="text-align: right;">7.9%</td>
    </tr>
    </tbody>
  </table>
  <div style="margin-top: 20px; font-size: 80%;">
    <span style="font-weight: bold;">CVE</span>とは
    <ul>
      <li><b>C</b>ommon <b>V</b>ulnerabilities and <b>E</b>xposures</li>
      <li><span style="color: DodgerBlue;">脆弱性の辞書</span></li>
      <li>目標：次々と出てくる脆弱性に統一された名前を付けたい<br />
      <li><a href="http://cve.mitre.org/">http://cve.mitre.org/</a></li>
    </ul>
  </div>
  <li>Webアプリケーション対象の脆弱性が増加</li>
  <ul>
    <li>Webアプリケーション自体が大幅に増加</li>
    <li>脆弱性が比較的容易に作成できる</li>
  </ul>
</ul>
<div class="handout">
<a href="http://www.darkreading.com/document.asp?doc_id=103774">darkREADING の記事</a> を参照

</div>
</div>



<div class="slide">
<h1>2006年脆弱性ランキング(2/2)</h1>
<ul>
  <li>Cross Site Scripting(XSS)</li>
  <ul>
    <li>Webページに悪意あるスクリプト（特にJavascript）を埋め込み、<br />
        ユーザに実行させる
    </li>
  </ul>
  <li>SQL Injection</li>
  <ul>
    <li>攻撃対象のDBにSQLクエリーを実行させることにより、<br />
        データの搾取、改変などを行う
  </li>
  </ul>
  <li>PHP "include" Vulnerability</li>
  <ul>
    <li>PHPのinclude()（他のPHPスクリプトを読み込む関数）にユーザから引数が渡せるようになっていると、悪意あるPHPスクリプトをサーバで実行される可能性がある</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>Cross Site Scripting の例</h1>
<ul>
  <li>（とても）簡単な<a href="http://www.yl.is.s.u-tokyo.ac.jp/~disk-ec7/cgi-bin/xss.html">例</a>を作成</li>
  <ul>
    <li>CGIスクリプトはPythonで記述</li>
    <li>GETの際に受け取ったmsgという値をHTMLソースに表示しています</li>
  </ul>
  <li>実際には、より複雑なことをしなければいけない場合が多い</li>
</ul>
</div>

<div class="slide">
<h1>本日の発表の概要</h1>
<ul>
  <li>最近のセキュリティ事件</li>
  <li><span style="color: red;">論文サーベイ</span></li>
</ul>
</div>

<div class="slide">
<h1>論文サーベイ</h1>
<ul>
  <li>Learning Classifiers for Misuse and Anomaly Detection Using a Bag of System Calls</li>
  <ul>
    <li>Dae-Ki Kang, Doug Fuller, Vasant Honavar (Iowa State University)</li>
    <li>IEEE Workshop on Information Assurance and Security 2005</li>
  </ul>
  <li>要点</li>
  <ul>
    <li>システムコールの流れではなく、各システムコールの回数を<br />
        異常検知に利用</li>
    <li>いくつかの機械学習方法を用いて実験</li>
  </ul>
  <span>⇒</span><span style="background-color: yellow; color: blue;">高速かつ高い精度で異常検知を行うことができた</span>
</ul>
</div>

<div class="slide">
<h1>異常検知システムの分類</h1>
<ul>
  <li>正常・異常のどちらを学習させるかによる分類</li>
  <ul>
    <li><span style="color: blue; font-style: italic;">Mis-use</span> Detection<br />
        異常な動作を学習させ、一致するものを異常とみなす
    </li>
    <li><span style="color: blue; font-style: italic;">Anomaly</span> Detection<br />
        正常時の動作を学習させ、一致しないものを異常とみなす
    </li>
  </ul>
  <li>何を学習させるかによる分類</li>
  <ul>
    <li><span style="color: blue">ユーザの動作</span>を監視<br />
        
    </li>
    <li><span style="color: blue">システムの振る舞い</span>を監視<br />
        特にシステムコールを監視する研究が多い
    </li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>システムコールを監視する手法について</h1>
<ul>
  <li><span style="color: red;">システムコール列</span>を見るものが多い<br />
      [Forrest et. al. 1996, Hofmeyr et. al. 1998]<br />
      ⇒ 記録する部分列の長くなると、保存するべきデータ量が爆発する
  </li>
  <li>本研究では、異常検知をシステムコールの回数に関する<br />
      分類問題(classification problem)として扱う
  </li>
  <ul>
    <li>このシステムコールの回数を数える手法 <span style="color: blue;">Bag of System Calls</span> を<br />
        開発した
    </li>
</ul>
</div>

<div class="slide">
<h1>システムコールによる異常検知</h1>
<ul>
  <li>システムコールの集合 Σ = {s<sub>1</sub>, s<sub>2</sub>,...,s<sub>m</sub>}<br />
      システムコールの種類数 m = |Σ|<br />
      (e.g. s<sub>1</sub> = open, s<sub>2</sub> = read, ...)
  </li>
  <li>データ集合 D = {&lt;Z<sub>i</sub>, c<sub>i</sub>&gt; | Z<sub>i</sub>∈Σ<sup>*</sup>, c<sub>i</sub>∈{0,1}}<br />
      Z<sub>i</sub> : 入力されるシステムコール列<br />
      c<sub>i</sub> : 正常か異常かを示すフラグ（0 ならば正常、1 ならば異常）
  </li>
  <li>学習アルゴリズムの目標は
      <div style="margin: 10px 0px 10px 0px; border: 1px solid black; text-align: center; line-height: 1.5em;">
      データ集合 D を学習させて、D を最大限満足させるような<br />
      クラス分類器 h : Σ<sup>*</sup>→{0, 1} を見つけること
      </div>
      である
  </li>
</div>

<div class="slide">
<h1>システムコールの部分列による異常検知</h1>
<ul>
  <li>STIDE[Warrendar et. al. 1999]で採用されていた手法</li>
  <li>特徴 X<sub>j</sub> = x<sub>1</sub>x<sub>2</sub>...x<sub>k</sub> を Z<sub>j</sub> の部分列とする<br />
      （ただし、x<sub>1≦l≦k</sub>∈Σ で、k は定数）<br />
      それぞれの部分列に正常・異常を示すフラグ c を設定する
  </li>
  <li>部分列の長さ k は6以上というのが有効とされている<br />
      [Tan et. al. 2002]</li>
</ul>
</div>

<div class="slide">
<h1>Bag of System Calls</h1>
<ul>
  <li>本研究では Bag of System Calls という手法を開発した</li>
  <li>X<sub>i</sub>=&lt;c<sub>1</sub>, c<sub>2</sub>,...,c<sub>m</sub>&gt; : システムコール列 Z<sub>i</sub>の特徴 (m = |Σ|)<br />
      c<sub>j</sub> : Z<sub>i</sub> 内でシステムコール s<sub>j</sub> の出現回数
  </li>
  <li>システムコールの順番の情報は失われる</li>
</ul>
<div style="margin: 30px 0px 0px 30px;">
  <span style="color: blue; background-color: yellow;">本当にシステムコールの回数だけで精度が出せるのか？</span>
</div>
</div>

<div class="slide">
<h1>実験データ</h1>
<ul>
  <li>システムコールのデータは公開されているものを利用</li>
  <ul>
    <li>University of New Mexico(UNM) のデータ</li>
    <ul>
      <li>live lpr</li>
      <li>live lpr MIT</li>
      <li>synthetic sendmail</li>
      <li>synthetic sendmail CERT</li>
      <li>denail of service(DOS)</li>
    </ul>
    <li>Massachusetts Institute of Technology Lincoln Lab(MITLL) のデータ</li>
    <ul>
      <li>特定のプロセスではなく、システム全体のデータがある</li>
      <li>4週目(6/22/98〜)のものを使用</li>
    </ul>
  </ul>
</ul>
</div>

<div class="slide">
<h1>実験方法</h1>
<ul>
  <li>クラス分類器の評価方法：10-fold cross validation を利用</li>
  <ul>
    <li>'x'-fold cross validation: <br />
        x 個のデータのうち、x-1 個をクラス分類器の生成に利用し、<br />
        残りの1個をクラス分類器に通してみる評価方法。<br />
        これをすべての x 個の組み合わせに関して行う。
    </li>
    <li>精度、検知率、false positive率は10個の組み合わせの平均を取る</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>評価値について補足</h1>
<ul>
  <li>精度 = (true positive の数 + true negative の数) / (入力された列の総数)</li>
  <li>検知率 = (true positive の数) / (true positive の数 + false negative の数)</li>
  <li>false positive 率 = (false positive の数) / (true positive の数 + false positive の数)</li>
</ul>
</div>

<div class="slide">
<h1>Mis-use Detection の実験</h1>
<ul>
  <li>いくつかの機械学習アルゴリズムを利用</li>
  <ul>
    <li>Naive Bayes Learner of Multinomial Event Model</li>
    <li>C4.5 Decision Tree Learner</li>
    <li>RIPPER rule learner</li>
    <li>Support Vector Machine(SVM)<br />
        -<span style="margin-left: 10px;">Sequential Minimal Optimization(SMO) を利用</span>
    </li>
    <li>Logistic Regression Model<br />
        -<span style="margin-left: 10px;">Multinomial logistic regression with a ridge estimator を利用</span>
    </li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>Mis-use Detection の実験結果</h1>
<div style="text-align: center;">
  <img src="zentai_061024/zentai_061024_table1.png" />
</div>
</div>

<div class="slide">
<h1>Mis-use Detection の実験結果</h1>
<div style="text-align: center;">
  <img src="zentai_061024/zentai_061024_table2.png" />
</div>
<ul>
  <li>単純にシステムコールの回数のみを用いても精度が高いクラス分類器をを<br />
      生成することができる</li>
</ul>
</div>

<div class="slide">
<h1>データ量とクラス分類器の精度</h1>
<div style="text-align: center;">
  <img src="zentai_061024/zentai_061024_fig1.png" />
  <img src="zentai_061024/zentai_061024_fig2.png" />
</div>
<ul>
  <ul>
    <li>左図は正常な列が1232個、異常な列が1001個によるグラフ</li>
    <li>右図は正常な列が346個、異常な列が25個によるグラフ</li>
  </ul>
  <div style="line-height: 1.5em; margin-top: 10px;">
  ⇒正常なデータと異常なデータがアンバランスな場合、<br />
  データ不足により、精度が高いクラス分類器が生成できない
  </div>
</ul>
</div>

<div class="slide">
<h1>生成されたクラス分類器を利用した異常検知</h1>
<ul>
  <img src="zentai_061024/zentai_061024_fig3.png" />
  <img src="zentai_061024/zentai_061024_fig4.png" />
  <li>どちらも'&gt;'の下が異常だということが分かる</li>
  <ul>
    <li>異常なコードが実行されるとシステムコールも増えるから</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>Supervised Anomaly Detection の実験</h1>
<ul>
  <li>正常・異常を教えたデータで学習させた場合の実験</li>
  <ul>
    <li style="list-style-type: decimal;">One class Naive Bayesアルゴリズムを利用し、学習されたデータの<br />
      確率分布を求める
    </li>
    <li style="list-style-type: decimal;">入力された試験対象のデータも同様に確率分布を求め、上の<br />
      分布とのKullback-Leiblerの距離を求める
    </li>
    <li style="list-style-type: decimal;">距離が短いほど似ているとする</li>
  </ul>
</ul>
<div style="text-align: center;">
  <img src="zentai_061024/zentai_061024_fig5.png" />
</div>
</div>

<div class="slide">
<h1>Unsupervised Anomaly Detection の実験</h1>
<ul>
  <li>正常・異常を教えない状態で学習させる</li>
  <ul>
    <li>この際、k=2 の k-Means クラスタリングを利用</li>
  </ul>
  <div style="text-align: center;">
    <img src="zentai_061024/zentai_061024_table3.png" />
  </div>
  <li>この手法が UNM live lpr では有効だが、UNM synthetic sendmail <br />
      では、あまり有効でないことが分かる
  </li>
</ul>
</div>

<div class="slide">
<h1>まとめ</h1>
<ul>
  <li>本研究では、<span style="color: blue">Bag of System Calls</span> という簡単な方法を用いた
  </li>
  <ul>
    <li>同手法は、様々な機械学習アルゴリズムを用いることが可能な上、計算量を低く抑えることが可能である
    </li>
    <li>実際のデータを利用し、既存の研究に同等、もしくは、<br />
        より良い結果を示した
    </li>
    <li>このような単純な手法を利用した場合でも高い精度を出すことが<br />
        できる
    </li>
    <li>システムコール列の部分列を利用する手法<br />
        [Forrest et. al. 1996, Warrendar et. al. 1999] に比べ、速く、<br />
        メモリ使用量も小さくて済む</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>関連研究(1/2)</h1>
<ul>
  <li>[Warrendar et. al. 1999]</li>
  <ul>
    <li>正常なシステムコール列の部分列を検査対象の列と比較することにより異常検知<br />
        ⇒正常なシステムコールの部分列データが膨大になる可能性
    </li>
    <li>ルールを用いたクラス分類による異常検知<br />
        ⇒ルールを用いて毎回チェックするため、分類に時間がかかる
    </li>
    <li>隠れマルコフモデル(HMM)を用いて異常検知<br />
        ⇒精度の高い HMM を生成するのが大変
    </li>
  </ul>
  <li>NIDES[Anderson et. al. 1995]</li>
  <ul>
    <li>プロセスの振る舞い（ファイルアクセス、CPU、など）から確率分布を作成し、異常検知に用いている</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>関連研究(2/2)</h1>
<ul>
  <li>RIPPERを利用した異常検知[Lee et. al. 1998]</li>
  <ul>
    <li>RIPPER = Repeated Incremental Pruning to Produce Error Reduction</li>
    <li>RIPPER で生成されたルールに対して、ユーザが閾値を決める</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>Fin</h1>
<div style="text-align: center; font-size: 1.5em; margin-top: 100px;">
  以上です。<br />
  ご清聴ありがとうございました。
</div>
</div>

<!--
<div class="slide">
<h1></h1>
<ul>
  <li></li>
  <li></li>
</ul>
</div>
-->

</body>
</html>
