公開日
2018-03-30
1. 概要
androidマルウェアの検知をFactorization machineを使って行うと、高い精度を達成できた。特徴として、API呼び出しや許可などをマニフェストファイルやソースコードから抽出した。
2. 新規性・差分
マルウェア検知は、動的解析、静的解析の2パターンある。
動的解析は、高い精度が出るが、実際に動かさないといけないのと、関係ないパスが含まれていて時間がかかる可能性があるなどの問題点がある。
静的解析は、特徴抽出、分類の2段階があり、分類で機械学習を使う先行研究がある。(k-meansやSVM)
また、近年では、動的解析と静的解析を両方使う研究がされている。
この論文では、特徴間の関係をモデル化可能なFactorization Machine(FM)を用いることで、高い精度を達成した。
3. 手法
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を使ってみた。
4. 結果
| Algorithm |
FM |
SVM |
NB-Gaussian |
NB-Bernoulli |
NB-Multinomial |
MLP |
| Precision% |
99.91 |
95.62 |
90.86 |
90.53 |
96.25 |
99.91 |
| Recall% |
99.01 |
92.35 |
99.37 |
99.82 |
99.28 |
99.64 |
| F1% |
99.46 |
93.96 |
94.93 |
94.95 |
97.74 |
99.77 |
| FPR% |
0.09 |
4.19 |
9.90 |
10.35 |
3.84 |
0.09 |
普通のAnti-Virusのプロダクト10個と比較した結果:
| Scanner |
FM |
AV1 |
AV2 |
AV3 |
AV4 |
AV5 |
AV6 |
AV7 |
AV8 |
AV9 |
AV10 |
| Precision% |
99.91 |
99.91 |
99.64 |
62.84 |
99.91 |
59.03 |
99.63 |
50.09 |
99.84 |
97.78 |
61.42 |
| Recall% |
99.01 |
98.74 |
99.46 |
99.10 |
99.28 |
100.0 |
97.21 |
99.91 |
54.64 |
94.96 |
100.0 |
| F1% |
99.46 |
99.32 |
99.55 |
76.91 |
99.59 |
74.24 |
98.41 |
66.73 |
70.62 |
96.35 |
76.10 |
| FPR% |
0.09 |
0.089 |
0.357 |
58.073 |
0.089 |
68.778 |
0.357 |
98.66 |
0.089 |
2.141 |
62.27 |
速度も申し分無いやで。
5. 議論
FPGAとか使うともっと早くなりそうだから誰かやってね。
6. コメント
FMはnetflixのレコメンドとかで使われてた気がする。気になる方はこちらどうぞ
論文情報・リンク
https://arxiv.org/pdf/1805.11843.pdf