<!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>SIGSS ミーティング 2006/11/16</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" />
<!-- S5 JS -->
<script src="ui/original/slides.js" type="text/javascript"></script>
</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>SIGSS ミーティング 06/11/16(Thr)</h1>
<h2>島本 大輔（M2）</h2>
</div>
</div>


<div class="presentation">

<div class="slide">
<h1>SIGSS ミーティング</h1>
<h2>2006年11月16日（木）</h2>
<h3>島本 大輔</h3>
<h4>修士2年</h4>
</div>

<div class="slide">
<h1>概要</h1>
<ul>
  <li>最近のセキュリティ事情</li>
  <li>研究進捗</li>
  <li>論文サーベイ</li>
</ul>
</div>

<div class="slide">
<h1>概要</h1>
<ul>
  <li style="color: red;">最近のセキュリティ事情</li>
  <li>研究進捗</li>
  <li>論文サーベイ</li>
</ul>
</div>

<div class="slide">
<h1>最近のセキュリティ事情</h1>
<ul>
  <li>MoKB スタート</li>
  <li>デバイスドライバのセキュリティホール</li>
</ul>
</div>

<div class="slide">
<h1>MoKB スタート</h1>
<ul>
  <li><b>M</b>onth <b>o</b>f <b>K</b>ernel <b>B</b>ugs</li>
  <ul>
    <li>カーネルモジュールのバグを11月中、1日1個ずつ公開していくブログ</li>
    <li>対象は Windows、Linux、MacOS、FreeBSDなど</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>デバイスドライバのセキュリティホール</h1>
<ul>
  <li>特に無線デバイス＝Wifi、Bluetooth　のデバイスドライバ</li>
  <ul>
    <li>MacOS X の Atheros 製無線LAN</li>
    <li>Broadcom の無線LAN</li>
    <li>東芝製 Bluetooth デバイス</li>
  </ul>
  <li>デバイスドライバのアップデートを促す方法が必要</li>
  <ul>
    <li>普通のユーザはあまり気にしていない</li>
    <li>Windows Update (Microsoft Update) が有効？</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>概要</h1>
<ul>
  <li>最近のセキュリティ事情</li>
  <li style="color: red;">研究進捗</li>
  <li>論文サーベイ</li>
</ul>
</div>

<div class="slide">
<h1>研究の進捗</h1>
<ul>
  <li>開発</li>
  <ul>
    <li>カーネルモジュール内にて System Service を記録</li>
    <li>プロセスを止めて、ログをファイルへ出力後に再開させることに成功</li>
  </ul>
  <li>実験</li>
  <ul>
    <li>いろいろなプログラムのヒストグラムを作成中</li>
  </ul>
  <li>落とし所</li>
  <ul>
    <li>対象とするプログラムの種類を絞るのか？</li>
    <li>検証だけになるのか？異常検知するところまで持って行くのか？</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>概要</h1>
<ul>
  <li>最近のセキュリティ事情</li>
  <li>研究進捗</li>
  <li style="color: red;">論文サーベイ</li>
</ul>
</div>

<div class="slide">
<h1>論文サーベイ</h1>
<ul>
  <li>A Comparison of System Call Feature Representations for Insider Threat Detection</li>
  <ul>
    <li>Alexander Liu, Cheryl Martin, Tom Hetherington, and Sara Matzner (The University of Texas)</li>
    <li>IEEE Workshop on Information Assurance 2005</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>要約</h1>
<ul>
  <li>外部からの攻撃ではなく、内部からの攻撃を検知したい</li>
  <li>システムコールを利用した既存の手法を、内部からの攻撃に対して評価した</li>
  <ul>
    <li>n グラム</li>
    <li>ヒストグラム</li>
    <li>引数のチェック</li>
</ul>
</div>

<div class="slide">
<h1>イントロダクション（1/2）</h1>
<ul>
  <li>内部攻撃とは</li>
  <ul>
    <li>内部者が許されている以上のことを行い、悪事を働くこと</li>
    <li>システムダウン、データの破壊、情報漏洩につながる</li>
    <li>企業や政府において重要視され始めている</li>
  </ul>
  <li>内部攻撃対策は難しい</li>
  <ul>
    <li>物理的に既に内部にいて、攻撃対象に近い</li>
    <li>攻撃に障害が少ない＝外部攻撃に比べ容易</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>イントロダクション（2/2）</h1>
<ul>
  <li>システムコールを監視する手法を利用</li>
  <ul>
    <li>すべての行動を把握することが可能</li>
    <li>OS の内部に配置すれば、回避もしくは解除されにくくなる</li>
    <li>参考になるような外部攻撃に利用した研究が多数存在する</li>
  </ul>
  <li>しかし、実際に内部攻撃に有効かどうかは不明</li>
  <ul>
    <li>有効性を明らかにしたい</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>関連研究</h1>
<ul>
  <li>内部攻撃の研究は外部攻撃に比べ少数</li>
  <ul>
    <li>内部攻撃による buffer overflow の検出</li>
    <li>マスカレード（masquerade）の検知<br />
        いずれも外部攻撃の研究の一部、という形
    </li>
  </ul>
  <li>システムコールを利用した異常検知は多数</li>
  <ul>
    <li>正常な列の記録を保存し、それから外れたものを異常とする方法が主流</li>
    <li>回数を調べたものもある</li>
    <li><span style="color:blue;">システムコールの属性</span>を利用したもの<br />
        e.g. 引数や返り値など
    </li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>検知手法</h1>
<ul>
  <li>3つの段階</li>
  <ul>
    <li style="list-style-type: decimal;">データの取得</li>
    <li style="list-style-type: decimal;">特徴抽出</li>
    <li style="list-style-type: decimal;">異常な値の検出</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>データの作成</h1>
<ul>
  <li>内部攻撃を含むようなデータセットが存在しないため、独自で作成した</li>
  <ul>
    <li>SNARE を拡張し、コンソールを利用しているユーザのシステムコール列を
        記録するシステムを開発</li>
    <li>チームの1人にコンソールで、正常・異常な動作の両方を行い、その都度、
        正常か異常かを示す</li>
    <ul>
      <li>正常：データベースの管理、文章作成、ウェブ閲覧など</li>
      <li>異常：様々な攻撃（詳細は<span style="color: #C0C;">次のスライド
          </span>）</li>
    </ul>
    <li>「重要なファイルを扱う」という動作をまねするために、いくつかのファイルを「重要」と決めておく</li>
  </ul>
  <li>6種類のデータセットを作成した</li>
  <ul>
    <li>それぞれ特定の正常な動作とそれに似た異常な動作を含む</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>内部攻撃の種類</h1>
<center>
<table border="1" style="font-size: 12pt; text-align: left;">
  <tbody>
  <tr><th>名前</th><th>種類</th><th>説明</th></tr>
  <tr>
    <td>privilege-escalation</td>
    <td>Access/Exploitation</td>
    <td>ルート権限を奪う</td>
  </tr>
  <tr>
    <td>removable media</td>
    <td>Extraction</td>
    <td>重要なファイルをリムーバブルデバイスに保存したり、コピーしたりする</td>
  </tr>
  <tr>
    <td>export via email</td>
    <td>Extraction</td>
    <td>重要なファイルをメールで送信しようとする</td>
  </tr>
  <tr>
    <td>change file extension</td>
    <td>Manipulation</td>
    <td>監視を回避するために拡張子を変更する</td>
  </tr>
  <tr>
    <td>encipher/decipher</td>
    <td>Manipulation</td>
    <td>重要なファイルを暗号化・復号化する</td>
  </tr>
  <tr>
    <td>unusual search</td>
    <td>Reconnaissance</td>
    <td>重要なファイルやシステムファイルを検索する</td>
  </tr>
  <tr>
    <td>malware</td>
    <td>Entrenchment</td>
    <td>マルウェアをダウンロードしてインストールしようとする</td>
  </tr>
  </tbody>
</table>
</center>
</div>

<div class="slide">
<h1>データセット</h1>
<img src="sigss_061116/table1.png" style="margin-left: 100px;" />
</div>

<div class="slide">
<h1>システムコールの特徴抽出</h1>
<ul>
  <li>3種類の特徴を用いて実験した</li>
  <ul>
    <li>システムコール列の n グラム</li>
    <li>システムコールの発生回数</li>
    <li>個々のシステムコール引数や返り値</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>システムコール列の n グラム</h1>
<ul>
  <li>n グラムとは、あるリストの長さ n の部分列集合のこと
      <div style="font-size: 80%; margin-left: 1em;">
      例：<br />
      (open, close, open, read, read, write, read, close)<br />
      という列の n=5 グラムは<br />
      (open, close, open, read, read), (close, open, read, read, write),<br />
      (open, read, read, write, read), (read, read, write, read, close)<br />
      の4つである。
      </div>
  </li>
  <li>Forrest らによる研究が元</li>
  <ul>
    <li>元の研究は sendmail が対象<br />
        ⇒ 今回の実験はあらゆるプロセスのシステムコール列を取得
    </li>
  </ul>
  <li>予備実験の結果から n = 5 を採用</li>
</ul>
</div>

<div class="slide">
<h1>システムコールの発生回数（ヒストグラム）</h1>
<ul>
  <li>一定の範囲内 W でのシステムコールが呼ばれた数を利用</li>
  <li>本実験では予備実験の結果から W = 30 を利用</li>
  <ul>
    <li>1度の計算後に5個ずつずらす</li>
  </ul>
</ul>
<div style="text-align: center; margin-top: 20px;">
  <img src="sigss_061116/table4.png" />
</div>
</div>

<div class="slide">
<h1>システムコールの引数や返り値</h1>
<ul>
  <li>システムコールによって、引数の数などが異なるため、個別に管理</li>
  <li>今回は open と fork に関して検証</li>
</ul>
<div style="text-align: center; margin-top: 30px;">
  <img src="sigss_061116/table5.png" />
</div>
<div>
<span style="font-size: 70%; margin: 10em 0em 0em 2em;">
注： 以後、この手法を便宜上 "parameter-based" と呼ぶこととする
</span>
</div>
</div>

<div class="slide">
<h1>データセットのまとめ</h1>
<ul>
  <li>3つの手法からデータを解析</li>
</ul>
<div style="text-align: center; margin-top: 0px;">
  <img src="sigss_061116/table6.png" />
</div>
</div>

<div class="slide">
<h1>異常検知実験（1/2）</h1>
<ul>
  <li>Bay による k Nearest Neighbor (kNN) を用いた手法を利用
      [Bay et. al. '03]</li>
  <ul>
    <li>テストデータを中心に、すべての正常（と分かっている）データとの距離を
        計算し、近い方から k 番目までの距離の合計が最も大きいものを異常とする</li>
    <li>今回は k = 5 とする</li>
  </ul>
  <li>距離の決め方</li>
  <ul>
    <li>n グラムでは、個々の部分列間が同じ場合を0、異なる場合を 1 とする。</li>
    <li>ヒストグラムでは、個数の差を合計する</li>
    <li>Parameter-based では、同じシステムコールを比べ、引数や返り値のうち、異なるものの数を合計する</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>異常検知実験（2/2）</h1>
<ul>
  <li>異常なデータと正常なデータを分け、異常なデータと正常なデータを同じ数混ぜたものをテストに用い、残りの正常データを学習に利用する</li>
  <ul>
    <li>例：browse/5-gram<br />
        データ 6785 個（うち異常なものが 1082 個）<br />
        ⇒ 学習用データ 4621 個、テスト用のデータを 2164 個</li>
<!--
    <li>テスト用のデータの分散は、n グラムが 0.0008、ヒストグラムが 0.0038、
        parameter-based の open が 0.0007、fork が 0.0261</li>
-->
  </ul>

  <li>kNN の計算には Bay らのプログラム（Orca）を用いる</li>
  <li>結果は ROC (Receiver Operating Characteristic) 曲線で示す</li>
  <ul>
    <li>横軸に false positive（正常を異常と判定してしまったもの）の割合、
        縦軸に true positive（異常を異常と判定できたもの）の割合をとる</li>
    <li>左上（false positive=0%, true positive=100%）に近いほど良い</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>結果の ROC 曲線（1/2）</h1>
<div style="text-align: center;">
<img src="sigss_061116/fig1a.png" />
<img src="sigss_061116/fig1b.png" />
</div>
</div>

<div class="slide">
<h1>結果の ROC 曲線（2/2）</h1>
<div style="text-align: center;">
<img src="sigss_061116/fig1c.png" />
<img src="sigss_061116/fig1d.png" />
</div>
</div>

<div class="slide">
<h1>考察</h1>
<ul>
  <li>n グラムに関して</li>
  <ul>
    <li>ランダムなものとあまり変わらず、特に良くない</li>
    <li>しかし、既存研究では「外部攻撃には有効」と出ている</li>
    <ul style="font-size: 70%;">
      <li>外部攻撃の場合は、攻撃対象のプログラムの動作を大きく変更させ、異なった n グラムを発生させる</li>
      <li>本実験ではユーザが、正常時と攻撃時でプログラムを同じように使っている</li>
    </ul>
    </li>
  </ul>
  <li>ヒストグラムに関して</li>
  <ul>
    <li>ランダムよりは、まあまあ良い結果が出ている</li>
    <li>しかし、本当に良い結果は misc のみ</li>
  </ul>
  <li>以上の2つは misc のみで良い結果が出ている</li>
  <ul>
    <li>misc は、そもそも正常時と攻撃時の動きが大きく異なる</li>
    <li>外部攻撃の挙動に近い</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1>parameter-based について</h1>
<ul>
  <li>なかなか良い結果</li>
  <ul>
    <li>紹介したのは open と fork だけだが、access、connect、execve、unlink
        なども似た結果になった</li>
    <li>正常時と攻撃時では、parameter 的に大きく異なった傾向を示す</li>
  </ul>
  <li>しかし、ランダムよりも悪いものもある</li>
  <ul>
    <li>攻撃時のデータが正常時のデータに似ており、他の正常動作とは
        異なっているためである<br />
        <span style="font-size: 80%;">
        例： 機密情報入りのメールを送るのも、普通のメールを送るのも変わらない</span>
    </li>
  </ul>
  <li>いかに攻撃動作と正常動作を識別するかが、最も大きな課題</li>
</ul>
</div>

<div class="slide">
<h1>まとめと今後</h1>
<ul>
  <li>内部からの攻撃をシステムコールと kNN を利用して異常検知の有効性を検証した</li>
  <ul>
    <li>システムコールの特徴を3種類試した<br />
        特に parameter-based の手法に期待が持てる</li>
    <li>ユーザの内部での行動から内部攻撃を検知する研究としては初</li>
    <li>内部攻撃と外部攻撃とでは性質が異なる</li>
  </ul>
  <li>今後は、parameter-based を深く調査したい</li>
  <ul>
    <li>open や fork 以外のシステムコール</li>
    <li>Parameter の設定の仕方</li>
  </ul>
</ul>
</div>

<div class="slide">
<h1></h1>
<div style="text-align: center; margin-top: 100px;">
以上です。<br />
ご清聴ありがとうございました。<br />
質問、ツッコミ、お願いします。
</div>
</div>

<!--
<div class="slide">
<h1></h1>
<ul>
  <li></li>
  <ul>
    <li></li>
    <li></li>
  </ul>
  <li></li>
</ul>
</div>
-->

</body>
</html>
