Más contenido relacionado
La actualidad más candente (20)
Similar a Jubatusでマルウェア分類 (20)
Más de Shuzo Kashihara (7)
Jubatusでマルウェア分類
- 7. Jubatusの提供する機能
• 機械学習(オンライン学習)のフレームワーク
• classifier 多クラス分類器(Perceptron, AROW, NHERD, etc)
• recommender レコメンド(Inverted Index, LSH)
• regression 回帰
• fv_converter 特徴抽出、フィルタ、プラグイン機能
- 12. 機械学習を使う前に
• 機械学習で分類させるには、ラベル付きデータが必要
• 卵が先か、鶏が先か...
• 学習させるデータを特徴ベクトルに落とし込む必要がある
• fv_converterが何とかしてくれる?
• Jubatusは基本的には以下のデータ型を入力する
• ペア<string, string>
• ペア<string, double>
- 15. マルウェア分類を始めよう
• なぜ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
- 16. Malheurの手法
• マルウェアの動的解析結果(CWSandbox)を用意
• 結果をMIST(数値)形式へ変換
• 数値の列を得る
• MISTの結果をn-gramして特徴ベクトルとする
- 19. Jubatusで分類してみる
• Jubatusの分類器
• 多クラス分類 (スパム判定といった0/1も可能)
• 公開されているデータ(Reference Datasets)
• マルウェアの解析結果(XML, MIST)
• ラベル, ファイルサイズ, ハッシュ
• 論文はMISTのn-gramを特徴ベクトルとして分類していた
- 20. クライアントを書く
• Rubyでclassifierクライアントを書く
• 現状のクライアントはあまり使わないほうがいい, C++をオ
ススメ
• 型チェックがクライアント側にない
• 使うRPC, やること
• set_config:特徴ベクトルを設計して準備する
• train:学習させる
• classify:分類させる
- 21. 設定を書く
• アルゴリズムの選択(今回はAROW)
• 特徴ベクトルの抽出方法を記述
• Jubatusで入力可能な特徴ベクトルはタプル
• 海野さん(@unnonouno)さんに相談したらword単位で
のn-gramするプラグインが社内にあった
• これでMISTをn-gramできる!
- 22. 分類させてみる
• 公開されているReference Datasetsを試した
• ラベル数 24(のみ)
• ラベル付きデータ 3133件
• 学習:300件
• 分類を試した数:2833件
• ラベルの一致:2719件
- 23. 精度と再現率
• 精度:分類器がどれくらい正しいかを示す値
• 予測(分類結果)して一致した数 / 全体の数
• 2719/2833 = 0.95
• 再現率:実際にラベルをカバーできているか示す値
• 予測して一致した数 /実際に存在する分類の数
• なるほどー(計測できていません)
- 24. 精度は大丈夫か?
• 評価として大丈夫か?
• Jubatusとの格闘で力尽きました
• F値? 交差検定(Cross validation)?
• λ.. 出直してきます 論文ではF値は載ってました
• 論文ではReferenceDatasetで学習して、他に30,000件程度で実験していた
• Known malware/Unknown malware の件数を数えたり
• クラスタリングと分類
- 25. 以上作ってみた
• 論文とラベル付きデータを利用しただけ
• 特徴ベクトル等々は論文を参照して頂きたい
• recommenderも試したかった
• マルウェアのレコメンドとは...! 熱い!!
• 分散もさせたかった...
- 27. ビルドでハマるポイント
• 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をマージ予定)予定です
- 28. クライアント開発時のポイント
• set_configすると謎のエラー
• 設定情報が間違っていてもサーバ, クライアントはエ
ラー箇所を指摘してくれない
• コピペ駆動、サンプル駆動が望ましい
• Ruby, Pythonクライアントなどで型を間違えるとエラー
• C++を使う(それでもset_config問題は残る)
• ライブラリの成熟を待つ(開発中です...)
- 29. ライブラリはどこ?
• C++クライアント
• include/jubatus/clientにヘッダ有り
• Java, Ruby, Pythonなどが
• https://github.com/jubatus/jubatus/downloads
• 自動生成されたコードで、エラー処理は不親切かも
- 32. まとめ
• マルウェア分類がJubatus(classifier)で出来た
• 機械学習よくわからなくても、わかったこと
• 特徴ベクトル抽出で第一歩
• ラベル付きデータ神 これがなければどうなっていたか
• 実験・評価方法も勉強すべし(勉強会が終わってからが本番)
• Jubatus
• ハマり所の発見。持ち帰ってフィードバックします
• クライアントライブラリは今後に期待
• 分散処理も実験したい