Successfully reported this slideshow.

Jubatusでマルウェア分類

18

Share

Loading in …3
×
1 of 32
1 of 32

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

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 Behavior using 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 • ハマり所の発見。持ち帰ってフィードバックします • クライアントライブラリは今後に期待 • 分散処理も実験したい

×