SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
マルウェア検出/分類に用いられる特徴量
自己紹介
@sonicair
高専4年
github.com/IshitaTakeshi
ウサギィで機械学習バイト
CTFちょっとやってたけど
マルウェア関連は初心者
内容
・そもそも特徴抽出とは
・マルウェアからの特徴抽出方法
  n-gram
  フーリエ変換
  Binary Texutre Analysis
・まとめ
精度比較はちょっとむずかしい (論文によって評価方法が違う )
特徴抽出とは
マルウェアを学習器に入れても学習できない
1
最も単純な検出方法
Icons are designed by freepik
最も単純な検出方法
Icons are designed by freepik
最も単純な検出方法
マルウェアだ!!
Icons are designed by freepik
最も単純な検出方法
Icons are designed by freepik
最も単純な検出方法
Icons are designed by freepik
最も単純な検出方法
??
Icons are designed by freepik
未知のマルウェアを検出できない
機械学習を使う
マルウェアだ!!
Icons are designed by freepik
しくみ
特徴抽出
アルゴリズム 学習器
特徴量
Icons are designed by freepik
しくみ
特徴抽出
アルゴリズム
マルウェアだな!
学習器
特徴量
Icons are designed by freepik
学習器だけでは・・・
学習器
Icons are designed by freepik
学習器だけでは・・・
学習器
マルウェアじゃないぞ!!
Icons are designed by freepik
学習器は万能じゃない
学習器
データのどこにどの程度重要な情報があるかを
学習器は知ることができない
マルウェアの
どこを見ればいいの?
入力データをそのまま学習器に入力しても学習できない
特徴抽出する理由
マルウェアのどこを見ればいいのかを学習器に教えてあげる
▪ 挙動 (動的解析)
▪ 中身や構造 (静的̅解析)
特徴抽出する理由
マルウェアのどこを見ればいいのかを学習器に教えてあげる
▪ 挙動 (動的解析) (詳しくない)
▪ 中身や構造 (静的̅解析)
静的解析の手法
パッカーとは向き合いたくない
2
結局マルウェアの
どこを見ればいいの?
実行される命令列を見れば
動作もだいたいわかるよね?
 
結局マルウェアの
どこを見ればいいの?
実行される命令列を見れば
動作もだいたいわかるよね?
 
パッカー「させねぇよ」
パッカーをどうするか
あきらめる
じゃあどうするの?
unpackしなくても
そこそこうまくいく特徴量を使う
今回紹介する手法
▪ n-gram
▪ フーリエ変換
▪ Binary Texture Analysis
※精度については論文によって評価方法が違うので述べません
n-gram
単純だけどバリエーション豊富
2.1
n-gram
自然言語処理に用いられる特徴量
文章に含まれる部分文字列の出現回数をカウントする
n-gramの例 (n=3)
The cow jumps over the moon
The cow jumps
cow jumps over
jumps over the
over the moon
何を単語と定義するか
▪ バイナリの1バイトを1単語とする
▪ 逆アセンブルしたときのオペコードを単語とする
何を単語と定義するか
バイナリの1バイトを1単語とする
55 48 89 e5 b8 00 00 00
有用な情報はあまり得られないけどそこそこの精度は出るらしい
55 48 89
48 89 e5
89 e5 b8
b8 00 00
00 00 00
Abdurrahman Pektaş, Mehmet Eriş, Tankut Acarman, Proposal of n-gram Based Algorithm for Malware
Classification, SECURWARE 2011
何を単語と定義するか
逆アセンブルしたときのオペコードを
単語とする
識別にあまり関係ないものを取り除ける
逆アセンブル難しいんじゃない?
→IDA Pro使えばわりといけるっぽい
 (approximately 74% of the malware files)
A.Shabtai, R. Moskovitch, C. Feher, S. Dolev, and Y. Elovici, Detecting
unknown malicious code by applying classification techniques on opcode
patterns, 2012.
識別方法 (KNNの場合)
1. n-gram同士の類似度を測定する
2. 未知ファイルと似ているファイルをいくつか(k個)取ってくる
3. マルウェアがいっぱい取れたら未知ファイルをマルウェアとみなす
何を類似度(距離)とするか
X: 入力されたファイルの部分文字列集合
Y: クラスが既知のファイルの部分文字列集合
f(x) : XとY両方に含まれる部分文字列xのXにおける出現回数
距離定義の例
Igor Santos, Yoseba K. Penya, Jaime Devesa, Pablo Garcia Bringas, N-Grams-based file signatures for malware
detection, International Conference on Enterprise Information Systems - ICEIS , pp. 317-320, 2009
n-gramの欠点
n-gramは大量のメモリを必要とする
「15000個のファイルを解析したらメモリが250GB必要になった」
 S. Ponomarev et al. (2013)
→データ構造を使う DTrie
→フーリエ変換を使う
n-gramの欠点
n-gramは大量のメモリを必要とする
「15000個のファイルを解析したらメモリが250GB必要になった」
 S. Ponomarev et al. (2013)
→データ構造を使う DTrie
→フーリエ変換を使う
n-gramの欠点
n-gramは大量のメモリを必要とする
バイト列の出現パターンがわかればいいんでしょ?
→フーリエ変換使えばいけるんじゃね?
 命令の出現頻度を周波数情報として保存できる
 メモリ食わないし最強じゃん?
フーリエ変換
メモリ消費量を抑えられる
2.2
Stanislav Ponomarev, Nathan Wallace, and Travis Atkison, Fourier Transform
as a Feature Extraction Method for Malware Classification, 2014.
バイナリを信号とみなす
55 48 89 e5 b8 00 00 00 00 e8 dd ff ff ff
→[85, 72, 137, 229, 184, 0, 0, 0, 0, 232, 221, 255, 255, 255]
フーリエ変換する
N/2 < 最大ファイルサイズ < N となるようにする
バイナリ:55 48 89 e5 b8 00 00 00 00 e8 dd ff ff ff
十進表現:[85, 72, 137, 229, 184, 0, 0, 0, 0, 232, 221, 255, 255, 255]
フーリエ変換する
ファイルの10進表現 (サイズ 14)
フーリエ変換の入力 (サイズ 16 = 24
)
N=2p
となるようにする
ファイルサイズがNになるように空き部分を0で埋める
周波数特性Xk
を特徴量とする
[85, 72, 137, 229, 184, 0, 0, 0, 0, 232, 221, 255, 255, 255]
[85, 72, 137, 229, 184, 0, 0, 0, 0, 232, 221, 255, 255, 255, 0, 0]
n-gramと比較すると?
論文では他の手法とは精度の比較をしていませんでした...
フーリエ変換すると命令1つずつの情報って失われるのでは...
Binary Texture Analysis
画像にしたらうまくいった・・・
2.3
Lakshmanan Nataraj, Vinod Yegneswaran, Phillip Porras, Jian Zhang,
A Comparative Assessment of Malware Classification using Binary Texture Analysis
and Dynamic Analysis, 2011
バイナリを画像にしてみた
バイナリを画像表現→特徴抽出→分類
packされたままでもうまく分類できるっぽい
速い (検体1つあたり数十msで識別可能)
画像表現の方法
バイナリを8ビット符号なし整数の列とみなす
→任意のバイナリを1次元配列として表現可能
→1次元配列を一定幅で折りたためば2次元配列(画像)になる
画像から情報を得る
画像からGIST特徴量を抽出する
GIST特徴量とは
画像を分割したときの各部分のgradient情報
シーン認識とかに使われる
局所的な情報よりも全体を見ている
正直よくわかんないけどライブラリはあるみたい(pyleargist)
University of Southern California, iLab and Prof. Laurent Itti,
http://ilab.usc.edu/siagian/Research/Gist/Gist.html, 2000
まとめ
特徴抽出方法の比較
3
n-gram フーリエ変換 Binary Texture Analysis
最も単純な手法
単語の定義方法など工夫できる
メモリ消費量が大きい
省メモリ
精度...
高速
unpackしなくてもうまくいく

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報
 
論文紹介 No-Reward Meta Learning (RL architecture勉強会)
論文紹介 No-Reward Meta Learning (RL architecture勉強会)論文紹介 No-Reward Meta Learning (RL architecture勉強会)
論文紹介 No-Reward Meta Learning (RL architecture勉強会)
 
第8回 配信講義 計算科学技術特論A(2021)
第8回 配信講義 計算科学技術特論A(2021)第8回 配信講義 計算科学技術特論A(2021)
第8回 配信講義 計算科学技術特論A(2021)
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
【DL輪読会】Trajectory Prediction with Latent Belief Energy-Based Model
【DL輪読会】Trajectory Prediction with Latent Belief Energy-Based Model【DL輪読会】Trajectory Prediction with Latent Belief Energy-Based Model
【DL輪読会】Trajectory Prediction with Latent Belief Energy-Based Model
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 
第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習
 
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
 
GANの概要とDCGANのアーキテクチャ/アルゴリズム
GANの概要とDCGANのアーキテクチャ/アルゴリズムGANの概要とDCGANのアーキテクチャ/アルゴリズム
GANの概要とDCGANのアーキテクチャ/アルゴリズム
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
 
[DL輪読会]It's not just size that maters small language models are also few sho...
[DL輪読会]It's not just size that maters  small language models are also few sho...[DL輪読会]It's not just size that maters  small language models are also few sho...
[DL輪読会]It's not just size that maters small language models are also few sho...
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明
 
敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度
 
ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法
 
Stochastic Variational Inference
Stochastic Variational InferenceStochastic Variational Inference
Stochastic Variational Inference
 
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
 
点群深層学習 Meta-study
点群深層学習 Meta-study点群深層学習 Meta-study
点群深層学習 Meta-study
 
CVPR2019読み会@関東CV
CVPR2019読み会@関東CVCVPR2019読み会@関東CV
CVPR2019読み会@関東CV
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
 
[DL輪読会]EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
[DL輪読会]EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks[DL輪読会]EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
[DL輪読会]EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
 

Semelhante a マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会

Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニング
Yuya Unno
 
pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記
Takahiro Matsumiya
 
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
Takafumi Inamori
 
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
Tsukasa Oi
 

Semelhante a マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会 (20)

Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
 
Nips20180127
Nips20180127Nips20180127
Nips20180127
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニング
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行う
 
pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記
 
オープンソース・ソフトウェアで始めるバイナリ解析
オープンソース・ソフトウェアで始めるバイナリ解析オープンソース・ソフトウェアで始めるバイナリ解析
オープンソース・ソフトウェアで始めるバイナリ解析
 
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
 
tokyo_webmining_no51
tokyo_webmining_no51tokyo_webmining_no51
tokyo_webmining_no51
 
Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
Lpicel paper lt_5
Lpicel paper lt_5Lpicel paper lt_5
Lpicel paper lt_5
 
FabricとRailsと私
FabricとRailsと私FabricとRailsと私
FabricとRailsと私
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践する
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
 
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラインフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
 
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
 
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
 

マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会