◆肖?漢
(公安部第三研究所 上海 200000)
近年來,隨著通信技術(shù)和移動互聯(lián)網(wǎng)的高速發(fā)展,通過手機進行交友、獲取資訊、購物逐漸成為了人們生活中不可或缺的一部分[1]。但與此同時,移動互聯(lián)網(wǎng)也逐漸成為不法分子的活躍平臺,以APK為載體從事網(wǎng)絡色情、賭博、釣魚等違法活動日益猖獗,對人民的身心健康以及財產(chǎn)安全帶來了巨大的安全隱患。能夠高效準確完成違法APK 的自動識別,成為了保障網(wǎng)絡安全、維護社會和諧穩(wěn)定中的重要一環(huán)。
本文提出了一種基于函數(shù)指紋的違法APK 檢測模型,該模型引入了函數(shù)指紋的概念,在此基礎上利用TF-IDF 和隨機森林算法完成了分類模型的構(gòu)建。該模型具有構(gòu)建復雜度低、準確率高等特點,能夠有效完成違法APK 的自動識別分類。
在移動互聯(lián)網(wǎng)平臺上,針對在APK 分析領(lǐng)域中的分類研究已經(jīng)有一定的成果[2],例如,2013 年,B San 等人[2]提取APK 的權(quán)限列表,通過分析惡意APK和正常APK權(quán)限的統(tǒng)計特征進行惡意APK識別。2016 年SY Yerima 等人[3]根據(jù)APK 的API、OPCODE、權(quán)限三種類型特征構(gòu)造貝葉斯網(wǎng)絡對惡意APK 進行分類。2018 年,Q.Zhou 等人[4]利用APK 中的Syscall 構(gòu)造二分類模型。2019 年,Wang S 等人[5]監(jiān)控APK 運行過程中TCP 流量信息來進行惡意APK 識別。2021年褚堃等人[6]將APK 轉(zhuǎn)換為灰度圖,使用卷積神經(jīng)網(wǎng)絡進行惡意APK 識別。但這些APK 分類的研究主要集中對木馬、間諜、后門等惡意APK 的進行分類驗證,這些惡意APK 往往會有較為明顯的異常特征。而賭博、色情、詐騙這些違法APK 其隱蔽性更強,檢測更為困難。而對這些違法APK 分類識別的相關(guān)研究尚屬空白。
本文提出的違法APK 檢測模型的框架由以下三個主要部分組成:函數(shù)指紋抽取、TF-IDF 特征構(gòu)建、分類器構(gòu)建。檢測模型框架圖如圖1 所示。
圖1 檢測模型框架圖
函數(shù)是軟件程序的基本構(gòu)成元素,是程序?qū)崿F(xiàn)軟件功能的基礎核心。每一個函數(shù)都有其核心功能。由于核心函數(shù)往往是通過調(diào)用底層系統(tǒng)或第三方庫的API 函數(shù)實現(xiàn)的,故函數(shù)中的API 調(diào)用序列是函數(shù)功能的一項重要標識。本文正是基于此提出函數(shù)指紋這種新概念,將函數(shù)中的API 調(diào)用序列作為函數(shù)的標識特征,也就是函數(shù)的指紋。例如圖2 所示的sendinfo 函數(shù),其函數(shù)指紋S(sendinfo)可以表示為:
圖2 示例函數(shù)sendinfo
S(sendinfo)={…,getDeviceId,getSubScriberId,execute,…}(1)
特征抽取模塊主要工作就是利用Androguard 逆向工具[7]對APK文件進行反編譯,將APK 文件逆向成java 代碼,然后分析APK 中的所有函數(shù),計算所有函數(shù)的API 調(diào)用序列。抽取函數(shù)指紋具體步驟如下:
TF-IDF(Term Frequency-Inverse Document Frequency)是一種用于資訊檢索與資訊探勘的常用加權(quán)技術(shù)[8]。這種統(tǒng)計方法,用以評估字詞對于一個文件集或一個語料庫的重要程度,常用于文本分類。一般來說一個字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降。根據(jù)理論,TF-IDF 值越高的特征越具有區(qū)分性,故我們通過TF-IDF 完成發(fā)特征向量的構(gòu)建。令APK 樣本庫D={d1,d2,d3…dn},函數(shù)指紋庫S={s1,s2,s3…sm},di為樣本庫中第 i 個 APK 樣本,di=為函數(shù)指紋sk在di出現(xiàn)的頻次。
利用公式(4)計算每一個函數(shù)指紋的TF-IDF 值,選取TF-IDF 值較高的TOP(K)構(gòu)建樣本的特征向量。
在分類模型模塊中,我們選擇使用隨機森林算法[8]進行分類模型構(gòu)建。隨機森林就是構(gòu)造多棵決策樹,每棵決策樹都是一個分類器,那么對于一個輸入樣本,每一個決策樹都會產(chǎn)生一個結(jié)果。N 棵樹會有N 個分類結(jié)果。隨機森林集成了所有的分類投票結(jié)果,將投票次數(shù)最多的類別指定為最終的輸出。決策樹的構(gòu)成過程則是遍尋特征向量,不斷找出信息增益最大的特征,從而構(gòu)造一棵分類樹。隨機森林分類模型生成具體步驟如下:
1) 假設違法APK 總訓練集大小為N,隨機森林由M 棵樹組成。
2) 每棵樹隨機且又放回的從訓練集N 中抽取D 個樣本,作為該分類樹的訓練集。
3) 假設每個樣本的特征向量維度為n,從中隨機抽取m 個特征組成特征向量。
4) 對于特征向量中的每一個特征A,根據(jù)其是否存在將訓練集分割為D1 和D2,利用公式計算在A 的條件下樣本集合D 基尼系數(shù)Gini(D,A),其中k 為分類個數(shù)。Ck為D 中屬于第k 類的樣本子集。
5) 選擇基尼指數(shù)最小的特征及其對應的切分點作為最有特征和最優(yōu)切分點。從現(xiàn)節(jié)點生成兩個子節(jié)點,將訓練數(shù)據(jù)集依特征分配到兩個子節(jié)點中。
6) 重復3)、4)操作,最終生成分類決策樹。
7) 重復2)到5)直到完成M 棵決策樹的構(gòu)造。
為了驗證檢測框架效果,我們從某違法網(wǎng)站平臺上收集了違法APK 樣本1144 個,同時從華為應用市場下載了298 個正常APK 樣本,總計1442 個APK 作為本次實驗的數(shù)據(jù)集,70%用作訓練集,30%用作驗證集。其中違法APK 樣本又分為涉賭APK、詐騙投資APK、涉黃APK 三類。其具體類型與數(shù)量分布如表1 所示。
表1 實驗樣本數(shù)據(jù)
為了評價檢測模型的效果,我們引入準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1 值(F1)四種評估指標對實驗結(jié)果進行綜合評價。其中F1 是精準率和召回率的綜合衡量,其值越高,檢測分類結(jié)果越好。本次實驗分別測試檢測模型在k=10,k=50,k=100,k=200,k=500,k=1000,k=2000 七種情況下的檢測分類效果,其中k 為特征向量的維度,檢測值取10 次交叉驗證結(jié)果的平均值。具體檢測結(jié)果如圖3 和表2 所示。
圖3 不同特征向量維度下的檢測結(jié)果圖
表2 不同特征向量維度下的檢測結(jié)果表
從圖3 和表2 可以看出。準確率、精確率、召回率、F1 四種檢測指標的變化趨勢一致,準確率和召回率甚至完全相同。四種指標都隨著k 值的增大不斷升高,在到達200 后開始下降。說明在k=200時,該模型檢測效果最好,四種檢測指標均超過了0.92。
本文提出了一種基于函數(shù)指紋的違法APK 檢測模型。該模型抽取APK 的函數(shù)指紋特征,利用TF-IDF 篩選、構(gòu)建特征向量,并引入隨機森林分類模型完成檢測模型的構(gòu)建。該檢測模型實現(xiàn)復雜度低且具有較好的分類效果。實驗結(jié)果表明,該檢測模型對常見的幾種違法APK檢測準確率高達92%。下一步,我們將進一步收集違法APK,驗證該模型在大規(guī)模數(shù)據(jù)集下的檢測效果。同時嘗試引入其他維度特征,進一步提高該模型對違法APK 的檢測效果。