Jubatusでマルウェア分類2012年5月11日@機械学習 プログラミング勉強会    株式会社Preferred Infrastructure         柏原秀蔵(@suma90h)
Agenda• Jubatusとは• Jubatusでマルウェア分類してみる• Jubatusを使う時に気を付けること• まとめ
Jubatusとは
Jubatusとは• 機械学習フレームワーク • 分散・並列実行できるオンライン機械学習 • サーバ/クライアント• 無料です! • OSS(LGPL)
話さないこと• Jubatusの詳細 • 分散処理の仕組み • オンライン学習 • 内部のモジュール構成• 機械学習のアルゴリズム
Jubatusの提供する機能•   機械学習(オンライン学習)のフレームワーク    •   classifier      多クラス分類器(Perceptron, AROW, NHERD, etc)    •   recommender    ...
詳しくは• search Jubatus• http://www.slideshare.net/JubatusOfficial• http://www.slideshare.net/pfi
Jubatus利用法• 依存ライブラリの解決、ビルド、インストール• サーバを起動する• クライアントを書き、サーバのRPCを叩く
Jubatusを使おう
悩んだ• Jubatusで何ができるの?• 機械学習の理論がよくわからない• どんなアプリが作れるだろうか?
機械学習を使う前に•   機械学習で分類させるには、ラベル付きデータが必要    •   卵が先か、鶏が先か...•   学習させるデータを特徴ベクトルに落とし込む必要がある•   fv_converterが何とかしてくれる?    •   J...
そうだ、マルウェア を解析しよう
ひらめきよりむしろ、ラベル付きデータを発見!
マルウェア分類を始めよう•   なぜJubatus?    •   勉強会のネタ! 開発者としてJubatusに慣れるため...!•   実験に使ったデータを公開している論文を発見    •   "Automatic Analysis of M...
Malheurの手法•   マルウェアの動的解析結果(CWSandbox)を用意•   結果をMIST(数値)形式へ変換    •   数値の列を得る•   MISTの結果をn-gramして特徴ベクトルとする
MISTの中身Figure.3 (p5) "Automatic Analysis of Malware Behaviorusing Machine Learning" [09 Konrad Rieck et al]
CWSandboxのXMLとMISTを見よう
Jubatusで分類してみる•   Jubatusの分類器    •   多クラス分類 (スパム判定といった0/1も可能)•   公開されているデータ(Reference Datasets)    •   マルウェアの解析結果(XML, MIS...
クライアントを書く•   Rubyでclassifierクライアントを書く    •   現状のクライアントはあまり使わないほうがいい, C++をオ        ススメ    •   型チェックがクライアント側にない•   使うRPC, やるこ...
設定を書く•   アルゴリズムの選択(今回はAROW)•   特徴ベクトルの抽出方法を記述•   Jubatusで入力可能な特徴ベクトルはタプル    •   海野さん(@unnonouno)さんに相談したらword単位で        のn-...
分類させてみる•   公開されているReference Datasetsを試した•   ラベル数 24(のみ)•   ラベル付きデータ 3133件•   学習:300件•   分類を試した数:2833件•   ラベルの一致:2719件
精度と再現率•   精度:分類器がどれくらい正しいかを示す値    •   予測(分類結果)して一致した数 / 全体の数    •   2719/2833 = 0.95•   再現率:実際にラベルをカバーできているか示す値    •   予測し...
精度は大丈夫か?•   評価として大丈夫か?    •   Jubatusとの格闘で力尽きました    •   F値? 交差検定(Cross validation)?    •   λ.. 出直してきます 論文ではF値は載ってました•   論文...
以上作ってみた•   論文とラベル付きデータを利用しただけ•   特徴ベクトル等々は論文を参照して頂きたい•   recommenderも試したかった    •   マルウェアのレコメンドとは...! 熱い!!•   分散もさせたかった...
Jubatusハマりポイント  (2012/05/11時点)
ビルドでハマるポイント•   wafを使ったビルド時のリンクエラー    •   ./build/c4che/_cache.pyのLINKFLAGS = [ -lhogehoge ]とすれば直        る    •   CXXFLAGS=...
クライアント開発時のポイント•   set_configすると謎のエラー    •   設定情報が間違っていてもサーバ, クライアントはエ        ラー箇所を指摘してくれない    •   コピペ駆動、サンプル駆動が望ましい•   Ruby...
ライブラリはどこ?•   C++クライアント    •   include/jubatus/clientにヘッダ有り•   Java, Ruby, Pythonなどが    •   https://github.com/jubatus/juba...
まとめ•   マルウェア分類がJubatus(classifier)で出来た•   機械学習よくわからなくても、わかったこと    •   特徴ベクトル抽出で第一歩    •   ラベル付きデータ神 これがなければどうなっていたか    •   ...
Jubatusでマルウェア分類
Jubatusでマルウェア分類
Jubatusでマルウェア分類
Upcoming SlideShare
Loading in...5
×

Jubatusでマルウェア分類

11,508

Published on

機械学習×プログラミング勉強会
2012年5月11日

Published in: Technology
1 Comment
17 Likes
Statistics
Notes
No Downloads
Views
Total Views
11,508
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
58
Comments
1
Likes
17
Embeds 0
No embeds

No notes for slide

Jubatusでマルウェア分類

  1. 1. Jubatusでマルウェア分類2012年5月11日@機械学習 プログラミング勉強会 株式会社Preferred Infrastructure 柏原秀蔵(@suma90h)
  2. 2. Agenda• Jubatusとは• Jubatusでマルウェア分類してみる• Jubatusを使う時に気を付けること• まとめ
  3. 3. Jubatusとは
  4. 4. Jubatusとは• 機械学習フレームワーク • 分散・並列実行できるオンライン機械学習 • サーバ/クライアント• 無料です! • OSS(LGPL)
  5. 5. 話さないこと• Jubatusの詳細 • 分散処理の仕組み • オンライン学習 • 内部のモジュール構成• 機械学習のアルゴリズム
  6. 6. Jubatusの提供する機能• 機械学習(オンライン学習)のフレームワーク • classifier 多クラス分類器(Perceptron, AROW, NHERD, etc) • recommender レコメンド(Inverted Index, LSH) • regression 回帰 • fv_converter 特徴抽出、フィルタ、プラグイン機能
  7. 7. 詳しくは• search Jubatus• http://www.slideshare.net/JubatusOfficial• http://www.slideshare.net/pfi
  8. 8. Jubatus利用法• 依存ライブラリの解決、ビルド、インストール• サーバを起動する• クライアントを書き、サーバのRPCを叩く
  9. 9. Jubatusを使おう
  10. 10. 悩んだ• Jubatusで何ができるの?• 機械学習の理論がよくわからない• どんなアプリが作れるだろうか?
  11. 11. 機械学習を使う前に• 機械学習で分類させるには、ラベル付きデータが必要 • 卵が先か、鶏が先か...• 学習させるデータを特徴ベクトルに落とし込む必要がある• fv_converterが何とかしてくれる? • Jubatusは基本的には以下のデータ型を入力する • ペア<string, string> • ペア<string, double>
  12. 12. そうだ、マルウェア を解析しよう
  13. 13. ひらめきよりむしろ、ラベル付きデータを発見!
  14. 14. マルウェア分類を始めよう• なぜJubatus? • 勉強会のネタ! 開発者としてJubatusに慣れるため...!• 実験に使ったデータを公開している論文を発見 • "Automatic Analysis of Malware Behavior using Machine Learning" [09 Konrad Rieck et al] • http://www.mlsec.org/malheur/ • A novel tool for malware analysis
  15. 15. Malheurの手法• マルウェアの動的解析結果(CWSandbox)を用意• 結果をMIST(数値)形式へ変換 • 数値の列を得る• MISTの結果をn-gramして特徴ベクトルとする
  16. 16. MISTの中身Figure.3 (p5) "Automatic Analysis of Malware Behaviorusing Machine Learning" [09 Konrad Rieck et al]
  17. 17. CWSandboxのXMLとMISTを見よう
  18. 18. Jubatusで分類してみる• Jubatusの分類器 • 多クラス分類 (スパム判定といった0/1も可能)• 公開されているデータ(Reference Datasets) • マルウェアの解析結果(XML, MIST) • ラベル, ファイルサイズ, ハッシュ• 論文はMISTのn-gramを特徴ベクトルとして分類していた
  19. 19. クライアントを書く• Rubyでclassifierクライアントを書く • 現状のクライアントはあまり使わないほうがいい, C++をオ ススメ • 型チェックがクライアント側にない• 使うRPC, やること • set_config:特徴ベクトルを設計して準備する • train:学習させる • classify:分類させる
  20. 20. 設定を書く• アルゴリズムの選択(今回はAROW)• 特徴ベクトルの抽出方法を記述• Jubatusで入力可能な特徴ベクトルはタプル • 海野さん(@unnonouno)さんに相談したらword単位で のn-gramするプラグインが社内にあった • これでMISTをn-gramできる!
  21. 21. 分類させてみる• 公開されているReference Datasetsを試した• ラベル数 24(のみ)• ラベル付きデータ 3133件• 学習:300件• 分類を試した数:2833件• ラベルの一致:2719件
  22. 22. 精度と再現率• 精度:分類器がどれくらい正しいかを示す値 • 予測(分類結果)して一致した数 / 全体の数 • 2719/2833 = 0.95• 再現率:実際にラベルをカバーできているか示す値 • 予測して一致した数 /実際に存在する分類の数 • なるほどー(計測できていません)
  23. 23. 精度は大丈夫か?• 評価として大丈夫か? • Jubatusとの格闘で力尽きました • F値? 交差検定(Cross validation)? • λ.. 出直してきます 論文ではF値は載ってました• 論文ではReferenceDatasetで学習して、他に30,000件程度で実験していた • Known malware/Unknown malware の件数を数えたり • クラスタリングと分類
  24. 24. 以上作ってみた• 論文とラベル付きデータを利用しただけ• 特徴ベクトル等々は論文を参照して頂きたい• recommenderも試したかった • マルウェアのレコメンドとは...! 熱い!!• 分散もさせたかった...
  25. 25. Jubatusハマりポイント (2012/05/11時点)
  26. 26. ビルドでハマるポイント• wafを使ったビルド時のリンクエラー • ./build/c4che/_cache.pyのLINKFLAGS = [ -lhogehoge ]とすれば直 る • CXXFLAGS= -I LIBRARY_PATH= ./waf configure• pficommon on Mac OS X • pkg-configの設定情報がバグっていてリンクフラグに何も指定されない • Mac OS XでJubatusをビルドする際にリンクエラーが発生する • 修正(pull requestをマージ予定)予定です
  27. 27. クライアント開発時のポイント• set_configすると謎のエラー • 設定情報が間違っていてもサーバ, クライアントはエ ラー箇所を指摘してくれない • コピペ駆動、サンプル駆動が望ましい• Ruby, Pythonクライアントなどで型を間違えるとエラー • C++を使う(それでもset_config問題は残る) • ライブラリの成熟を待つ(開発中です...)
  28. 28. ライブラリはどこ?• C++クライアント • include/jubatus/clientにヘッダ有り• Java, Ruby, Pythonなどが • https://github.com/jubatus/jubatus/downloads • 自動生成されたコードで、エラー処理は不親切かも
  29. 29. まとめ• マルウェア分類がJubatus(classifier)で出来た• 機械学習よくわからなくても、わかったこと • 特徴ベクトル抽出で第一歩 • ラベル付きデータ神 これがなければどうなっていたか • 実験・評価方法も勉強すべし(勉強会が終わってからが本番)• Jubatus • ハマり所の発見。持ち帰ってフィードバックします • クライアントライブラリは今後に期待 • 分散処理も実験したい
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×