ブログの名前なんて適当で良いのでは

説明を求めるな、記事を読め

画像として捉えるマルウェア検知分類の研究など

はじめに

少し前に突如現れて,様々な人を賑わせたこの記事を覚えているだろうか.

itpro.nikkeibp.co.jp

Twitterなどでいろんな人の意見を見てると批判的な意見が多かった記憶がある.しかし私としてはあまりそういう気持ではなかった.というのも本来画像ではない対象を画像として捉えて処理をするという研究を頻繁に見ていたからである.今更だが,この記事は情報セキュリティ系論文紹介 Advent Calendar 2017の22日目の記事である.したがって,情報セキュリティに関係あるマルウェアを題材として,マルウェアを画像化して検知・分類する研究例を簡単に紹介していきたいと思う.

Malware Images: Visualization and Automatic Classification(2011)

Windowsマルウェアを画像化して分類する研究としては,かなり多くの論文に引用されている有名な研究である.手法としては至って簡単で,まず初めにPEバイナリ自体を8bitグレースケール画像として変換する.画像化する際には,ファイルサイズに応じて,画像の横幅を決めている.実際にマルウェアを画像化してみた結果が見たければ著者たちがサイトで公開している. 特徴量としては,画像のテクスチャ認識等で利用されているGIST特徴量を用いて,その特徴量をK最近傍法で分類するといったものだ.実験結果のConfusion matrixを以下に示す.これを見る限りかなり高いレベルで分類分けに成功していることがわかる.
f:id:encry1024:20171221092730p:plain
2011年以降にじわじわと画像化したWindowsマルウェアの論文がいくつかと見つかる.そして時代はAndroidに・・・

Detecting Android Malware by Applying Classification Techniques on Images Patterns(2017)

こちらは,Androidマルウェアを対象としたものである.PEバイナリは画像化してみると人間でもわかるような特徴が見て取れるのだが(さっきのリンクを見てみて),Androidアプリのファイル形式であるAPKだと以下の図のようで,普通の人間には何もわからないだろう. f:id:encry1024:20171221101026p:plain
APKを解析した事がある人なら知っているだろうが,APKファイル自体はunzipコマンド等で簡単に解凍して中身を取り出すことができる.中に格納されているいくつかのファイルを繋げて画像化してみると以下のようになる.これだと特徴が見て取れる. f:id:encry1024:20171221102543p:plain
本研究では,上記の得られた画像のGIST特徴量を用いて,Random Forestで分類する. データセットとしては,マルウェアAndroid Drebin Projectと,グッドウェアにダウンロードしてきたAPKをVirusTotalに通して安全だったものを採用し,合計1280体のうち70%を学習用に,30%をテストデータとして使って実験を行っている.結果は以下の図.こちらも高い精度がでていることがわかる.ただ,データセットがかなり小さいのでそこは微妙な気がする. f:id:encry1024:20171221104501p:plain

おわりに

WindowsAndroidマルウェアの2種類を画像化して分類する研究例を紹介した.両者とも高い精度を出しており画像化して識別する手法は良いように思えるが,単純に考えて画像化する際にどうサイズを決定するのかなどもどうするべきかという問題点があったり,理論的な面からもなぜ画像化するのが良いのか等についての根拠が曖昧だったりするので,様々な問題点があるのも事実である.こういったところが解明されていけば,画像化する手法も有用な手法になりうるかもしれないですね. 実はこの他にもAPKのDEXファイルをRGB画像にしてCNNする研究があったりするので,気になったらGoogle Scholarで"malware image" とか検索かけると面白いです.