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

• Jubatusとは
• Jubatusでマルウェア分類してみる
• Jubatusを使う時に気を付けること
• まとめ
Jubatusとは
Jubatusとは
• 機械学習フレームワーク
 • 分散・並列実行できるオンライン機械学習
 • サーバ/クライアント
• 無料です!
 • OSS(LGPL)
話さないこと
• 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(classifier)で出来た

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

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

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

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

•   Jubatus

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

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

    •   分散処理も実験したい

Mais conteúdo relacionado

Mais procurados

前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況JubatusOfficial
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Kotaro Nakayama
 
データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定
データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定
データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定JubatusOfficial
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践するKazuaki Tanida
 
「深層学習」の本に出てきたデータセット達
「深層学習」の本に出てきたデータセット達「深層学習」の本に出てきたデータセット達
「深層学習」の本に出てきたデータセット達Hiromasa Ohashi
 
ストリーム処理とSensorBee
ストリーム処理とSensorBeeストリーム処理とSensorBee
ストリーム処理とSensorBeeDaisuke Tanaka
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習Motoya Wakiyama
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwToshi Harada
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くHiroya Kabata
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_planMasao Fujii
 
問合せ最適化インサイド
問合せ最適化インサイド問合せ最適化インサイド
問合せ最適化インサイドTakahiro Itagaki
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwToshi Harada
 
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングより深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングYuto Hayamizu
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPyKenta Oono
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理Shintaro Fukushima
 

Mais procurados (20)

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

Destaque

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

Destaque (12)

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

Semelhante a Jubatusでマルウェア分類

大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイントKentaro Matsui
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回Naoyuki Yamada
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
A Tour of PostgreSQL
A Tour of PostgreSQLA Tour of PostgreSQL
A Tour of PostgreSQLEDB
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤Sotaro Kimura
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
フロント作業の効率化
フロント作業の効率化フロント作業の効率化
フロント作業の効率化Yuto Yoshinari
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 

Semelhante a Jubatusでマルウェア分類 (20)

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

Mais de Shuzo Kashihara

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

Mais de Shuzo Kashihara (7)

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

Último

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Último (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Jubatusでマルウェア分類

  • 2. Agenda • Jubatusとは • Jubatusでマルウェア分類してみる • Jubatusを使う時に気を付けること • まとめ
  • 4. Jubatusとは • 機械学習フレームワーク • 分散・並列実行できるオンライン機械学習 • サーバ/クライアント • 無料です! • OSS(LGPL)
  • 5. 話さないこと • Jubatusの詳細 • 分散処理の仕組み • オンライン学習 • 内部のモジュール構成 • 機械学習のアルゴリズム
  • 6.
  • 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 • 自動生成されたコードで、エラー処理は不親切かも
  • 30.
  • 31.
  • 32. まとめ • マルウェア分類がJubatus(classifier)で出来た • 機械学習よくわからなくても、わかったこと • 特徴ベクトル抽出で第一歩 • ラベル付きデータ神 これがなければどうなっていたか • 実験・評価方法も勉強すべし(勉強会が終わってからが本番) • Jubatus • ハマり所の発見。持ち帰ってフィードバックします • クライアントライブラリは今後に期待 • 分散処理も実験したい