SlideShare a Scribd company logo
Jubatusでマルウェア分類
2012年5月11日@機械学習 プログラミング勉強会
    株式会社Preferred Infrastructure
         柏原秀蔵(@suma90h)
Agenda

• Jubatusとは
• Jubatusでマルウェア分類してみる
• Jubatusを使う時に気を付けること
• まとめ
Jubatusとは
Jubatusとは
• 機械学習フレームワーク
 • 分散・並列実行できるオンライン機械学習
 • サーバ/クライアント
• 無料です!
 • OSS(LGPL)
話さないこと
• Jubatusの詳細
 • 分散処理の仕組み
 • オンライン学習
 • 内部のモジュール構成
• 機械学習のアルゴリズム
Jubatusでマルウェア分類
Jubatusの提供する機能

•   機械学習(オンライン学習)のフレームワーク

    •   classifier      多クラス分類器(Perceptron, AROW, NHERD, etc)

    •   recommender    レコメンド(Inverted Index, LSH)

    •   regression     回帰

    •   fv_converter   特徴抽出、フィルタ、プラグイン機能
詳しくは

• search Jubatus
• http://www.slideshare.net/JubatusOfficial
• http://www.slideshare.net/pfi
Jubatus利用法

• 依存ライブラリの解決、ビルド、インストール
• サーバを起動する
• クライアントを書き、サーバのRPCを叩く
Jubatusを使おう
悩んだ

• Jubatusで何ができるの?
• 機械学習の理論がよくわからない
• どんなアプリが作れるだろうか?
機械学習を使う前に
•   機械学習で分類させるには、ラベル付きデータが必要

    •   卵が先か、鶏が先か...

•   学習させるデータを特徴ベクトルに落とし込む必要がある

•   fv_converterが何とかしてくれる?

    •   Jubatusは基本的には以下のデータ型を入力する

        •   ペア<string, string>

        •   ペア<string, double>
そうだ、マルウェア
 を解析しよう
ひらめきよりむしろ、
ラベル付きデータを発見!
マルウェア分類を始めよう
•   なぜ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
Malheurの手法

•   マルウェアの動的解析結果(CWSandbox)を用意

•   結果をMIST(数値)形式へ変換

    •   数値の列を得る

•   MISTの結果をn-gramして特徴ベクトルとする
MISTの中身




Figure.3 (p5) "Automatic Analysis of Malware Behavior
using Machine Learning" [09 Konrad Rieck et al]
CWSandboxの
XMLとMISTを見よう
Jubatusで分類してみる

•   Jubatusの分類器

    •   多クラス分類 (スパム判定といった0/1も可能)

•   公開されているデータ(Reference Datasets)

    •   マルウェアの解析結果(XML, MIST)

    •   ラベル, ファイルサイズ, ハッシュ

•   論文はMISTのn-gramを特徴ベクトルとして分類していた
クライアントを書く
•   Rubyでclassifierクライアントを書く

    •   現状のクライアントはあまり使わないほうがいい, C++をオ
        ススメ

    •   型チェックがクライアント側にない

•   使うRPC, やること

    •   set_config:特徴ベクトルを設計して準備する

    •   train:学習させる

    •   classify:分類させる
設定を書く
•   アルゴリズムの選択(今回はAROW)

•   特徴ベクトルの抽出方法を記述



•   Jubatusで入力可能な特徴ベクトルはタプル

    •   海野さん(@unnonouno)さんに相談したらword単位で
        のn-gramするプラグインが社内にあった

    •   これでMISTをn-gramできる!
分類させてみる
•   公開されているReference Datasetsを試した

•   ラベル数 24(のみ)

•   ラベル付きデータ 3133件




•   学習:300件

•   分類を試した数:2833件

•   ラベルの一致:2719件
精度と再現率
•   精度:分類器がどれくらい正しいかを示す値

    •   予測(分類結果)して一致した数 / 全体の数

    •   2719/2833 = 0.95

•   再現率:実際にラベルをカバーできているか示す値

    •   予測して一致した数 /実際に存在する分類の数

    •   なるほどー(計測できていません)
精度は大丈夫か?
•   評価として大丈夫か?

    •   Jubatusとの格闘で力尽きました

    •   F値? 交差検定(Cross validation)?

    •   λ.. 出直してきます 論文ではF値は載ってました

•   論文ではReferenceDatasetで学習して、他に30,000件程度で実験していた

    •   Known malware/Unknown malware の件数を数えたり

    •   クラスタリングと分類
以上作ってみた
•   論文とラベル付きデータを利用しただけ

•   特徴ベクトル等々は論文を参照して頂きたい



•   recommenderも試したかった

    •   マルウェアのレコメンドとは...! 熱い!!

•   分散もさせたかった...
Jubatusハマりポイント
  (2012/05/11時点)
ビルドでハマるポイント
•   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をマージ予定)予定です
クライアント開発時のポイント

•   set_configすると謎のエラー

    •   設定情報が間違っていてもサーバ, クライアントはエ
        ラー箇所を指摘してくれない

    •   コピペ駆動、サンプル駆動が望ましい

•   Ruby, Pythonクライアントなどで型を間違えるとエラー

    •   C++を使う(それでもset_config問題は残る)

    •   ライブラリの成熟を待つ(開発中です...)
ライブラリはどこ?

•   C++クライアント

    •   include/jubatus/clientにヘッダ有り

•   Java, Ruby, Pythonなどが

    •   https://github.com/jubatus/jubatus/downloads

    •   自動生成されたコードで、エラー処理は不親切かも
Jubatusでマルウェア分類
Jubatusでマルウェア分類
まとめ
•   マルウェア分類がJubatus(classifier)で出来た

•   機械学習よくわからなくても、わかったこと

    •   特徴ベクトル抽出で第一歩

    •   ラベル付きデータ神 これがなければどうなっていたか

    •   実験・評価方法も勉強すべし(勉強会が終わってからが本番)

•   Jubatus

    •   ハマり所の発見。持ち帰ってフィードバックします

    •   クライアントライブラリは今後に期待

    •   分散処理も実験したい

More Related Content

PPTX
Jubatus使ってみた 作ってみたJubatus
PDF
Jubaanomalyについて
PDF
Jubatus分類器の活用テクニック
PDF
Jubakit の紹介
PPTX
Jubatus 1.0 の紹介
PPTX
SensorBeeでChainerをプラグインとして使う
PDF
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
PPTX
SensorBeeのご紹介
Jubatus使ってみた 作ってみたJubatus
Jubaanomalyについて
Jubatus分類器の活用テクニック
Jubakit の紹介
Jubatus 1.0 の紹介
SensorBeeでChainerをプラグインとして使う
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
SensorBeeのご紹介

What's hot (19)

PPTX
前回のCasual Talkでいただいたご要望に対する進捗状況
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PDF
SensorBeeの紹介
PDF
Rユーザのためのspark入門
PDF
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
PDF
データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定
PDF
Kerasで深層学習を実践する
PDF
「深層学習」の本に出てきたデータセット達
PPTX
ストリーム処理とSensorBee
PDF
2013.07.15 はじパタlt scikit-learnで始める機械学習
PDF
Lt ingaoho-jsonb+postgeres fdw
PDF
PostgreSQL:行数推定を読み解く
PDF
使ってみませんか?pg hint_plan
PPTX
SQLチューニング入門 入門編
PDF
Pgunconf 20121212-postgeres fdw
PDF
より深く知るオプティマイザとそのチューニング
PDF
Jubakitの解説
PDF
Introduction to Chainer and CuPy
PDF
mmapパッケージを使ってお手軽オブジェクト管理
前回のCasual Talkでいただいたご要望に対する進捗状況
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
SensorBeeの紹介
Rユーザのためのspark入門
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定
Kerasで深層学習を実践する
「深層学習」の本に出てきたデータセット達
ストリーム処理とSensorBee
2013.07.15 はじパタlt scikit-learnで始める機械学習
Lt ingaoho-jsonb+postgeres fdw
PostgreSQL:行数推定を読み解く
使ってみませんか?pg hint_plan
SQLチューニング入門 入門編
Pgunconf 20121212-postgeres fdw
より深く知るオプティマイザとそのチューニング
Jubakitの解説
Introduction to Chainer and CuPy
mmapパッケージを使ってお手軽オブジェクト管理
Ad

Viewers also liked (12)

PPTX
かまってちゃん小町
PDF
単語コレクター(文章自動校正器)
PPTX
発言小町からのプロファイリング
PPTX
新聞から今年の漢字を予測する
PPTX
銀座のママ
PPTX
新機能紹介 1.0.6
PPTX
JUBARHYME
PPTX
小町の溜息
PDF
Jubatus解説本の紹介
PDF
Python 特徴抽出プラグイン
ODP
小町のレス数が予測できるか試してみた
PDF
地域の魅力を伝えるツアーガイドAI
かまってちゃん小町
単語コレクター(文章自動校正器)
発言小町からのプロファイリング
新聞から今年の漢字を予測する
銀座のママ
新機能紹介 1.0.6
JUBARHYME
小町の溜息
Jubatus解説本の紹介
Python 特徴抽出プラグイン
小町のレス数が予測できるか試してみた
地域の魅力を伝えるツアーガイドAI
Ad

Similar to Jubatusでマルウェア分類 (20)

PDF
大規模なギョームシステムにHaxeを採用してみた話
PDF
地方企業がソーシャルゲーム開発を成功させるための10のポイント
PDF
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
PPTX
EmbulkとDigdagとデータ分析基盤と
PPTX
EmbulkとDigdagとデータ分析基盤と
PDF
ElasticSearch勉強会 第6回
PDF
JAWSDAYS 2014 ACEに聞け! EMR編
PDF
Software Development with Symfony
PDF
PHPフレームワーク入門
PDF
BPStudy20121221
PDF
A Tour of PostgreSQL
 
PDF
企業におけるSpring@日本springユーザー会20090624
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
PDF
CodeIgniter入門
PPTX
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
PPTX
Ossで作成するチーム開発環境
PDF
利用者主体で行う分析のための分析基盤
PDF
Jjug springセッション
PDF
フロント作業の効率化
PDF
ケーススタディ/実装 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第46回】
大規模なギョームシステムにHaxeを採用してみた話
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
ElasticSearch勉強会 第6回
JAWSDAYS 2014 ACEに聞け! EMR編
Software Development with Symfony
PHPフレームワーク入門
BPStudy20121221
A Tour of PostgreSQL
 
企業におけるSpring@日本springユーザー会20090624
ドメイン駆動で開発する ラフスケッチから実装まで
CodeIgniter入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
Ossで作成するチーム開発環境
利用者主体で行う分析のための分析基盤
Jjug springセッション
フロント作業の効率化
ケーススタディ/実装 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第46回】

More from Shuzo Kashihara (7)

PDF
gRPCをちょこっと調べた話
PDF
論文輪読会のススメ
PDF
Reading “Unikernels: Rise of the Virtual Library Operating System”
PDF
The Google File System
PDF
Jubatus Casual Talks #2 Jubatus開発者入門
PDF
PFIインターン最終発表
PDF
VC++プロジェクト向け難読化ツールの開発
gRPCをちょこっと調べた話
論文輪読会のススメ
Reading “Unikernels: Rise of the Virtual Library Operating System”
The Google File System
Jubatus Casual Talks #2 Jubatus開発者入門
PFIインターン最終発表
VC++プロジェクト向け難読化ツールの開発

Jubatusでマルウェア分類

  • 2. Agenda • Jubatusとは • Jubatusでマルウェア分類してみる • Jubatusを使う時に気を付けること • まとめ
  • 4. Jubatusとは • 機械学習フレームワーク • 分散・並列実行できるオンライン機械学習 • サーバ/クライアント • 無料です! • OSS(LGPL)
  • 5. 話さないこと • Jubatusの詳細 • 分散処理の仕組み • オンライン学習 • 内部のモジュール構成 • 機械学習のアルゴリズム
  • 7. Jubatusの提供する機能 • 機械学習(オンライン学習)のフレームワーク • classifier 多クラス分類器(Perceptron, AROW, NHERD, etc) • recommender レコメンド(Inverted Index, LSH) • regression 回帰 • fv_converter 特徴抽出、フィルタ、プラグイン機能
  • 8. 詳しくは • search Jubatus • http://www.slideshare.net/JubatusOfficial • http://www.slideshare.net/pfi
  • 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して特徴ベクトルとする
  • 17. MISTの中身 Figure.3 (p5) "Automatic Analysis of Malware Behavior using Machine Learning" [09 Konrad Rieck et al]
  • 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 • ハマり所の発見。持ち帰ってフィードバックします • クライアントライブラリは今後に期待 • 分散処理も実験したい