概要

androidマルウェアの検知をFactorization machineを使って行うと、高い精度を達成できた。特徴として、API呼び出しや許可などをマニフェストファイルやソースコードから抽出した。

論文情報

公開日

2019-8-13

著者

Chenglin Li, Keith Mills, et al.

University of Alberta Edmonton, Alberta, Canada.

論文情報・リンク

arxiv pdf

新規性・差分

マルウェア検知は、動的解析、静的解析の2パターンある。

動的解析は、高い精度が出るが、実際に動かさないといけないのと、関係ないパスが含まれていて時間がかかる可能性があるなどの問題点がある。 静的解析は、特徴抽出、分類の2段階があり、分類で機械学習を使う先行研究がある。(k-meansやSVM) また、近年では、動的解析と静的解析を両方使う研究がされている。

この論文では、特徴間の関係をモデル化可能なFactorization Machine(FM)を用いることで、高い精度を達成した。

手法

4つのパートに分けられる。

Unpacking and Decompile

apkを解凍して、dexをデコンパイルする。

Feature Extraction

まずマニフェストファイルから以下の4つの機能を抽出する。

  • App components
  • Hardware features
  • Permissions
  • Intent filter

次に、デコンパイルしたコードから、以下の3つの機能を抽出する。

  • Restricted APIs
  • Suspicious APIs
  • Used permissions

Encoding

計7つの特徴をエンコードする際、死ぬほど大きいスパース行列とかになるので、t-SNEで次元圧縮する。 (エンコードはone-hot)

Prediction

相互作用する特徴があったりするので、SVMよりもFMの方がいい気がするのでFMを使ってみた。

結果

AlgorithmFMSVMNB-GaussianNB-BernoulliNB-MultinomialMLP
Precision%99.9195.6290.8690.5396.2599.91
Recall%99.0192.3599.3799.8299.2899.64
F1%99.4693.9694.9394.9597.7499.77
FPR%0.094.199.9010.353.840.09

普通のAnti-Virusのプロダクト10個と比較した結果:

ScannerFMAV1AV2AV3AV4AV5AV6AV7AV8AV9AV10
Precision%99.9199.9199.6462.8499.9159.0399.6350.0999.8497.7861.42
Recall%99.0198.7499.4699.1099.28100.097.2199.9154.6494.96100.0
F1%99.4699.3299.5576.9199.5974.2498.4166.7370.6296.3576.10
FPR%0.090.0890.35758.0730.08968.7780.35798.660.0892.14162.27

速度も申し分無い。

議論

FPGAとか使うともっと早くなる。