Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

機械学習入門以前

409,432 views

Published on

#すごい合同勉強会(11/01/2014)の発表資料

Published in: Technology
  • Be the first to comment

機械学習入門以前

  1. 1. 機械学習入門以前 # すごい合同勉強会(11/01/2014) もりたこ @mrtc0
  2. 2. About me ● Twitter : もりたこ @mrtc0 ● Blog : http://mrt-k.github.io/ ● Seccamp Kyusyu'14 ●ハニーポット観察
  3. 3. 注意! ● ゆとりが1,2週間程度調べた内容です ● たぶん勘違いしている部分があると思います – ゆるして… ● ガチ勢の方にとってはつまらないです – 間違っている箇所があったら指摘してもらえると うれしいです...
  4. 4. きっかけ ● 研究のお手伝いをすることになった – 機械学習を用いたIDSの作成 – その他自然言語処理関係 ● 機械学習についてはまったく分からない…
  5. 5. 機械学習とは ● 人間の認識能力をモデル化 → コンピュータで再現 ● 学習データ(入力と正解データ)を用意して 人間の学習能力を再現しよう
  6. 6. ぼく 「機械学習の入門におすすめな本って     ありますか?」 ??? 「PRML」 ぼく 「え?」 ??? 「PRML」 ぼく 「....」
  7. 7. C4.5 Neural Network Support Vector Machine Ada Boost Core Vector Machine K-Means Naive Bayes ROC Curve Index Gini EM Random Forest Apriori Auto Encorder RBM
  8. 8. ● めっちゃ難しい ● 「入門 機械学習」→ 入門じゃない(入門詐欺) ● 「学生だったらPRMLぐらい読めるよね〜」→ ア ● 数学もアルゴリズムもできないマンには ハードルが高い ● 「ワタシ,キカイガクシュウ チョット デキル」と言いた い!
  9. 9. そんなひとのために ● 機械学習チュートリアル – http://www.slideshare.net/unnonouno/jubatus-casual-talks ● 機械学習のセキュリティ技術応用 – http://www.slideshare.net/ffri/mr201306-machine-learningforcomputersecurityjpn –
  10. 10. そんなひとのために
  11. 11. 機械学習を体験してみる ● Weka (http://www.cs.waikato.ac.nz/ml/weka) – Java製の機械学習ソフト ● 正確にはデータマイニング – GUIで直感的に操作できる – 視覚化も可能 – APIが使える – 日本語の情報が多い
  12. 12. 機械学習の種類 ● 大きく分けて2種類 – 教師あり学習 – 教師なし学習 ● 他には深層学習とか強化学習とかある
  13. 13. 教師あり学習 ●正解のついたデータを使う ●ex) 男女の推定 –(男, 180.4, 78.3), (女, 146.4, 42.1) ●ラベル - 男, 女 ●特徴 – 身長,体重の数値 ●F(178.3, 75.4) → 男のように写像するF(x)を求める ●未知データを正しく識別するために一般化 ●いかに学習データの特徴から法則を獲得できるか
  14. 14. 決定木 ● ラベルをノード,結果をリーフとした木構造 ● 例: ごちうさのキャラを当てよう! – 入力値 : {髪の長さ,髪色,瞳の色,名前} ● ラベルを名前とする ● ex) リゼの場合 – { long, purple,purple,Rize }
  15. 15. 全員分のデータ クラス : hair_style,hair_color,eye,name long,blue,blue,Tino short,brown,purple,Cocoa long,black,green,Tiya long,black,purple,Rize short,brown,green,Syaro
  16. 16. 決定木にすると
  17. 17. 機械学習で攻撃検知(!) ● 従来のIDS – シグネチャ型 ● あらかじめ攻撃パターンを指定しておく ● パケット内に指定したパターンがあればアラート!
  18. 18. shellshock ● alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"OS-OTHER Bash CGI environment variable injection attempt"; flow:to_server,established; content:"%3D%28%29+%7B"; fast_pattern:only; metadata:policy balanced-ips drop, policy security-ips drop, ruleset community, service http; reference:cve,2014-6271; reference:cve,2014-7169; classtype:web-application-activity; sid:31975; rev:3;) ● ● alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"OS-OTHER Bash CGI environment variable injection attempt"; flow:to_server,established; content:"() {"; fast_pattern:only; http_client_body; metadata:policy balanced-ips drop, policy security-ips drop, ruleset community, service http; reference:cve,2014-6271; reference:cve,2014-7169; classtype:web-application-activity; sid:31976; rev:3;) ● ● alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"OS-OTHER Bash CGI environment variable injection attempt"; flow:to_server,established; content:"() {"; fast_pattern:only; http_uri; metadata:policy balanced-ips drop, policy security-ips drop, ruleset community, service http; reference:cve,2014-6271; reference:cve,2014-7169; classtype:web-application-activity; sid:31977; rev:3;) ● ● alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"OS-OTHER Bash CGI environment variable injection attempt"; flow:to_server,established; content:"() {"; fast_pattern:only; http_header; metadata:policy balanced-ips drop, policy security-ips drop, ruleset community, service http; reference:cve,2014-6271; reference:cve,2014-7169; classtype:web-application-activity; sid:31978; rev:3;) ● ● alert udp $HOME_NET 67 -> $HOME_NET 68 (msg:"OS-OTHER Malicious DHCP server bash environment variable injection attempt"; flow:stateless; content:"() {"; fast_pattern:only; content:"|02 01 06 00|"; depth:4; metadata:policy balanced-ips drop, policy security-ips drop, ruleset community, service dhcp; reference:cve,2014-6271; reference:cve,2014-7169; classtype:attempted-admin; sid:31985; rev:3;)
  19. 19. シグネチャ型の問題点 ● Alert tcp any any -> any 80 (“msg:WEB-IIS ISAPI .ida attempt”; uricontent:”.idq?”;...) – 正規のリクエストにも.ida?を含んでいたら? ● シグネチャにない未知の攻撃に対応できない
  20. 20. そこで機械学習 ● 攻撃らしいパケットを検知 ● 誤検知は多い... – でも過去に同一IPから攻撃が来ていたら? → 攻撃の可能性は高い ● シグネチャ型 + 機械学習型を 組み合わせた形が望ましい
  21. 21. 機械学習で攻撃を検知してみる ● HTTP / HTTPSでの攻撃を検知 ● Anum(攻撃)かNormal(通常)かで分類 ● 学習は決定木を使う – J48, RandomTree
  22. 22. 抽出する特徴 – パケット長 – 送信元ポート番号 – 送信先ポート番号 – User Agent – Content Length – Content Type – Method – URI – Payload ● ローカル内での実験なのでIPアドレスはなし
  23. 23. 学習データ ● ArmitageによるHailMaryのパケット – 376件 ● ブラウジングしたパケット – 102件 ● tsharkにて特徴抽出し,CSVに変換 len,srcport,dstport,user_agent,content_length,content _type,method,uri,data,label 613,45485,80,0,440,0,POST,42,880,anum
  24. 24. 検証方法 ● 交差検証法 – 学習データをm個の集合に分割 – m-1個で学習 – 除外した残り1個で検証を行う – 除外するデータを順に交換することで 合計m回の学習と検証ができる
  25. 25. 使用するアルゴリズム ● C4.5 – ID3アルゴリズムの拡張版 ● 特徴集合Xの中で,最も乱雑さが少なくなるように分類 できる特徴を決定する ● 乱雑さの尺度にはエントロピーを使う
  26. 26. weka でC4.5
  27. 27. 評価指標とは? ● 機械学習は正解率を算出することが重要ではない ● 正例に比べて負例が多い場合 – 正例がでたらめでも負例が正確に分類されれば 正解率は高くなる ● 精度や再現率を算出するのに評価指標が使われる True False Positive TP(True Positive) 正を正と判別でき た FP(False Positive) 正を負と判別した Negative TN(True Negative) 負を正と判別した FN(False Negative) 負を負と判別した
  28. 28. 検知率と誤検知率 検知率= TP TP+FP 誤検知率= FP TN+FP
  29. 29. で?ちゃんと分類できるの? ● 学習データにない攻撃を分類できなきゃ意味な い! ● UAに” () {:;}; /bin/cat /etc/passwd”なパケット ● ラベルを” ?”にして検証
  30. 30. 結果
  31. 31. 分類できた!
  32. 32. でもこれは
  33. 33. 決定木
  34. 34. やり直し ● UAを消して再度学習させる
  35. 35. 再度学習& 検証
  36. 36. 結果 ● 3 / 478の見逃しと1 / 478 の誤検知 ● 結構検知率高い!
  37. 37. 決定木
  38. 38. んー… ソースポートで 判断するのおかしくね?
  39. 39. ランダムフォレスト ● 複数の決定木を作成して高い予測性能を得る (アンサンブル学習) ● 通常の決定木は過学習を避けるために 枝刈りを行う ● が、ランダムフォレストは行わない
  40. 40. イメージ的にはこれ?
  41. 41. 再再度学習& 検証
  42. 42. 決定木
  43. 43. 結果 ● C4.5に比べると検知率は落ちた ● けど,個人的に理想的な決定木になった
  44. 44. 感想 ● 質のいい学習データと筋のいい特徴を抽出し, 最適なアルゴリズムを使うことが大事 ● シグネチャ+ 機械学習使えばかなり良さそう
  45. 45. 今後の課題 ● 質のいい学習データの用意 ● アルゴリズムなどの理解 ● HTTP以外の攻撃の対応 ● より詳細な攻撃の分類 – などなど…(精進します…)
  46. 46. ご清聴ありがとうございました。

×