機械学習入門以前
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

機械学習入門以前

on

  • 65 views

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

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

Statistics

Views

Total Views
65
Views on SlideShare
58
Embed Views
7

Actions

Likes
2
Downloads
0
Comments
0

2 Embeds 7

http://mrt-k.github.io 4
http://localhost 3

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

機械学習入門以前 Presentation Transcript

  • 1. 機械学習入門以前 もりたこ @mrtc0
  • 2. About me ● Twitter : もりたこ @mrtc0 ● Blog : http://mrt-k.github.io/ ● Seccamp Kyusyu'14 ● SECCON CTF 全国'14 ●ハニーポット観察
  • 3. 注意! ● ゆとりが1,2週間程度調べた内容です ● たぶん勘違いしている部分があると思います – ゆるして… ● ガチ勢の方にとってはつまらないです – 間違っている箇所があったら指摘してもらえると うれしいです...
  • 4. きっかけ ● 研究のお手伝いをすることになった – 機械学習を用いたIDSの作成 – その他自然言語処理関係 ● 機械学習についてはまったく分からない…
  • 5. 機械学習とは ● 人間の認識能力をモデル化 → コンピュータで再現 ● 学習データ(入力と正解データ)を用意して 人間の学習能力を再現しよう
  • 6. ぼく 「機械学習の入門におすすめな本って     ありますか?」 ??? 「PRML」 ぼく 「え?」 ??? 「PRML」 ぼく 「....」
  • 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. ● めっちゃ難しい ● 「入門 機械学習」→ 入門じゃない(入門詐欺) ● 「学生だったらPRMLぐらい読めるよね〜」→ ア ● 数学もアルゴリズムもできないマンには ハードルが高い ● 「ワタシ,キカイガクシュウ チョット デキル」と言いた い!
  • 9. そんなひとのために ● 機械学習チュートリアル – http://www.slideshare.net/unnonouno/jubatus-casual-talks ● 機械学習のセキュリティ技術応用 – http://www.slideshare.net/ffri/mr201306-machine-learningforcomputersecurityjpn –
  • 10. そんなひとのために
  • 11. 機械学習を体験してみる ● Weka (http://www.cs.waikato.ac.nz/ml/weka) – Java製の機械学習ソフト ● 正確にはデータマイニング – GUIで直感的に操作できる – 視覚化も可能 – APIが使える – 日本語の情報が多い
  • 12. 機械学習の種類 ● 大きく分けて2種類 – 教師あり学習 – 教師なし学習 ● 他には深層学習とか強化学習とかある
  • 13. 教師あり学習 ●正解のついたデータを使う ●ex) 男女の推定 –(男, 180.4, 78.3), (女, 146.4, 42.1) ●ラベル - 男, 女 ●特徴 – 身長,体重の数値 ●F(178.3, 75.4) → 男のように写像するF(x)を求める ●未知データを正しく識別するために一般化 ●いかに学習データの特徴から法則を獲得できるか
  • 14. 決定木 ● ラベルをノード,結果をリーフとした木構造 ● 例: ごちうさのキャラを当てよう! – 入力値 : {髪の長さ,髪色,瞳の色,名前} ● ラベルを名前とする ● ex) リゼの場合 – { long, purple,purple,Rize }
  • 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. 決定木にすると
  • 17. 機械学習で攻撃検知(!) ● 従来のIDS – シグネチャ型 ● あらかじめ攻撃パターンを指定しておく ● パケット内に指定したパターンがあればアラート!
  • 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. シグネチャ型の問題点 ● Alert tcp any any -> any 80 (“msg:WEB-IIS ISAPI .ida attempt”; uricontent:”.idq?”;...) – 正規のリクエストにも.ida?を含んでいたら? ● シグネチャにない未知の攻撃に対応できない
  • 20. そこで機械学習 ● 攻撃らしいパケットを検知 ● 誤検知は多い... – でも過去に同一IPから攻撃が来ていたら? → 攻撃の可能性は高い ● シグネチャ型 + 機械学習型を 組み合わせた形が望ましい
  • 21. 機械学習で攻撃を検知してみる ● HTTP / HTTPSでの攻撃を検知 ● Anum(攻撃)かNormal(通常)かで分類 ● 学習は決定木を使う – J48, RandomTree
  • 22. 抽出する特徴 – パケット長 – 送信元ポート番号 – 送信先ポート番号 – User Agent – Content Length – Content Type – Method – URI – Payload ● ローカル内での実験なのでIPアドレスはなし
  • 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. 検証方法 ● 交差検証法 – 学習データをm個の集合に分割 – m-1個で学習 – 除外した残り1個で検証を行う – 除外するデータを順に交換することで 合計m回の学習と検証ができる
  • 25. 使用するアルゴリズム ● C4.5 – ID3アルゴリズムの拡張版 ● 特徴集合Xの中で,最も乱雑さが少なくなるように分類 できる特徴を決定する ● 乱雑さの尺度にはエントロピーを使う
  • 26. weka でC4.5
  • 27. 評価指標とは? ● 機械学習は正解率を算出することが重要ではない ● 正例に比べて負例が多い場合 – 正例がでたらめでも負例が正確に分類されれば 正解率は高くなる ● 精度や再現率を算出するのに評価指標が使われる True False Positive TP(True Positive) 正を正と判別でき た FP(False Positive) 正を負と判別した Negative TN(True Negative) 負を正と判別した FN(False Negative) 負を負と判別した
  • 28. 検知率と誤検知率 検知率= TP TP+FP 誤検知率= FP TN+FP
  • 29. で?ちゃんと分類できるの? ● 学習データにない攻撃を分類できなきゃ意味な い! ● UAに” () {:;}; /bin/cat /etc/passwd”なパケット ● ラベルを” ?”にして検証
  • 30. 結果
  • 31. 分類できた!
  • 32. でもこれは
  • 33. 決定木
  • 34. やり直し ● UAを消して再度学習させる
  • 35. 再度学習& 検証
  • 36. 結果 ● 3 / 478の見逃しと1 / 478 の誤検知 ● 結構検知率高い!
  • 37. 決定木
  • 38. んー… ソースポートで 判断するのおかしくね?
  • 39. ランダムフォレスト ● 複数の決定木を作成して高い予測性能を得る (アンサンブル学習) ● 通常の決定木は過学習を避けるために 枝刈りを行う ● が、ランダムフォレストは行わない
  • 40. イメージ的にはこれ?
  • 41. 再再度学習& 検証
  • 42. 決定木
  • 43. 結果 ● C4.5に比べると検知率は落ちた ● けど,個人的に理想的な決定木になった
  • 44. 感想 ● 質のいい学習データと筋のいい特徴を抽出し, 最適なアルゴリズムを使うことが大事 ● シグネチャ+ 機械学習使えばかなり良さそう ● スライド作ってる最中で泣きそうになった ● すごく説明の雑なスライドで申し訳ないです…
  • 45. 今後の課題 ● 質のいい学習データの用意 ● アルゴリズムなどの理解 ● HTTP以外の攻撃の対応 ● より詳細な攻撃の分類 – などなど…(精進します…)
  • 46. ご清聴ありがとうございました。