邱秀連,姜 南,陳 前,彭艷兵,程 光
(南京烽火星空通信發展有限公司,江蘇 南京 210019)
根據中國互聯網信息中心發布的第47次《中國互聯網發展狀況統計報告》顯示:截至2020年12月,我國網民規模已達9.89億,手機網民規模達9.86億,網民中使用手機上網的比例高達99.7%。移動互聯網使用需求的激增帶動了移動互聯網APP的蓬勃發展。僅Android官方的應用商店Google Play就在2017年中新上架了近一百萬個可供下載的應用程序。
APP在不斷發展的同時也帶來了新的安全隱患,依托APP進行網絡詐騙、賭博等違法案件數量不斷攀升,其中通過仿冒、重打包等技術手段產出的相似類APP由于其開發成本低、速度快等特點已經成為違法的“重災區”[1]。阿里首席風險官劉振飛指出95%的熱門APP有被仿冒應用的風險,360發布的《2018年雙十一購物安全生態報告》顯示,一個月時間內虛假仿冒主流購物APP的數量接近4 000個,覆蓋設備超過30萬個,高仿APP已形成危害用戶網絡安全的產業鏈。
Enck等人提出在應用安裝時檢測應用權限,從而攔截違規應用的安裝;Felt等人提出利用API調用分析和權限分析,尋找權限過大(Overprivileged)的應用;Risk Ranker則提出了一個兩階違規應用檢測手段,先篩選出具有root行為和可能導致隱私泄露的應用,再找出其中具有危險代碼加載行為的應用。
然而,受靜態分析方法本身的限制,此類研究在遇到代碼混淆時多被影響性能,而動態分析可以很好地規避代碼混淆問題[2]。因此,有研究者利用動態分析技術對違規應用進行檢測。Taint Droid和Droid Scope均在沙箱中對應用行為進行監視,Taint Droid利用污點分析技術尋找應用的信息泄露行為,Droid Scope則從Android系統的不同層面分析應用的可疑行為。Zhou等人利用應用行為比對與動態加載分析的方式,成功地從5個應用市場的204 040個應用中找出了211個違規應用。
無論是靜態分析方法或是動態分析方法,都需要人工對違規行為的模式進行驗證,因此分析的效率不高[3]。針對此問題,研究者開始利用機器學習技術檢測違規應用[4]。Chen等人從大規模數據集中總結出了違規應用的兩類特征,再將其用于分類器模型訓練。
有研究者基于應用指令序列使用模糊哈希的方法提取出應用的摘要信息,如Droid MOSS和Droid Analytics;Centroid為應用中的每個函數構建了三維控制流圖,將三維控制流圖聚合后,通過檢測不同應用在控制圖聚合后的質心位置判斷應用間的相似程度;還有算法通過比對抽象語義樹檢測相似應用,如Hanna等人利用K-gram模型對應用的二進制操作碼序列進行比對。
亦有研究使用信息可視化方法檢測相似應用[5]:View Droid通過重建和比對應用的視圖篩出相似應用,Droid Eagle則利用UI布局相似性檢測,Kywe等人比對應用中的文本與圖像相似性以尋找相似應用,Soh等人分析應用運行時收集的UI信息以檢測相似行為。
本文首先對APP截圖相似、圖標相似、作者簽名SHA1相同、同真實域名或服務器IP、APP名稱相同和靜態框架信息相似這六個維度的相似性分別進行分析;其次根據各組相似APP的維度占比情況采用熵值法計算權重并得出綜合得分;最后基于異常APP庫推薦出異常APP的相似APP,具體分析流程如圖1所示。

圖1 相似APP分析框架圖
2.2.1 APP截圖相似
本文根據APP動態運行截圖,比較APP的首頁截圖。基于yolov4深度學習算法將圖片向量化[6]。
yolov4深度學習模型框架如圖2所示。yolov4深度學習算法主要分為4個階段[7]:(1)輸入階段,輸入圖像大小為608×608,該階段通常包含一個圖像預處理階段,即將輸入圖像縮放到網絡的輸入大小,并進行歸一化等操作。在網絡訓練階段,yolov4使用Mosaic數據增強操作提升了模型的訓練速度和網絡的精度,利用cmBN及SAT自對抗訓練來提升網絡的泛化性能[8]。(2)Backbone階段,在不同圖像細粒度上聚合并形成圖像特征的卷積神經網絡。(3)Neck階段,這是一系列混合和組合圖像特征的網絡層,并將圖像特征傳遞到預測層。(4)預測階段,對圖像特征進行預測,生成邊界框和并預測類別。

圖2 yolov4深度學習模型框架
圖片經過yolov4提取特征并向量化后,可以基于歐式距離計算兩張圖片的相似度,數值越小,兩張圖片的相似度越高[9]。

2.2.2 圖標相似
有一種仿冒APP的行為,會將自己的APP的應用圖標制作得和真正APP圖標很相似或基本一致,只是分辨率會差一些,從而欺騙使用者[10]。本文利用和截圖相似的yolov4算法,將所有應用圖標訓練為向量,并計算相似度,選擇圖標相似的APP作為推薦。
2.2.3 作者簽名SHA1相同
APP在打包上架前需要生成開發者簽名證書信息,該簽名信息是開發者的唯一標識,在反編譯APP源文件過程中可以對簽名證書信息進行解析,獲取簽名信息使用SHA1加密后獲得md5標識,利用該唯一標識可以匹配同開發人員APP,從而發現違規APP開發人員開發的其他APP。
2.2.4 同域名且同服務器IP
在自動化安裝APP過程中會產生一些動態數據,即HTTP(S)的請求數據,本文根據這些APP的動態數據,利用模型研判推送出當前APP的真實Host(用戶使用當前APP,真正提供與用戶交互服務所對應的Host地址,非第三方接口,非SDK鏈接)。如果兩個APP真實Host中的二級域名Domain相同,則認為這兩個APP很可能是同一運營維護人員。
2.2.5 APP名稱相同
仿冒APP會使用與正版APP相同的名稱,從而欺騙用戶下載,但仿冒APP和正版APP之間的內容、圖標和包名不同。通過已有研究,本文將名稱相同但包名不同的APP定義為疑似仿冒APP,但是這樣可能會關聯到真正的被仿冒APP,因此根據包名去主流應用分發平臺網站查詢,如果能查詢到結果,可證實該APP是真實的APP,如果沒有查到結果則很有可能是仿冒APP。
2.2.6 靜態框架信息相似
靜態信息框架相似主要是由APP源文件解析后獲得的Manifest.xml文件進行判斷,xml文本具有上下文的語義信息,因此可以使用word2vec算法生成代碼詞向量,并基于歐式距離推薦相似代碼。
word2vec算法是一種基于預測的深度學習模型,用于計算和生成高質量的、連續的dense的單詞向量表示,并捕捉上下文和語義相似性[11]。word2vec是一種無監督的模型,可以接收大量的文本語料庫,創建可能的單詞的詞匯表,并為表示該詞匯表的向量空間中的每個單詞生成dense的單詞嵌入。基于word2vec算法進行相似代碼推薦主要分為以下三個步驟,具體如圖3所示。

圖3 XML文本相似分析步驟
(1)文本預處理,進行模型訓練前需要先對文本進行預處理:
①刪除代碼標簽,提取代碼中所有的文本內容,丟棄標簽;
②刪除特殊字符,使用正則表達式過濾非字母和中文的其他字符;
③文本切詞,將長文本切分為中英文片段,再對每個片段判斷中英文,對于純英文片段利用wordninja包切詞,對于含有中文的片段,利用jieba包進行切詞;
④過濾經常在APP中出現的白名單詞匯,例如更新、同意等。
(2)模型訓練并計算相似度,將預處理完后的文本輸入word2vec算法中進行訓練,輸出詞向量入庫,使用歐式距離衡量詞向量之間的相似度,掃描并計算數據庫中代碼詞向量距離,輸出相似代碼。
(3)驗證與優化,對輸出進行人工驗證/相同IP驗證(相似代碼如果IP相同,那么大概率是正確的),如果準確率不高,則使用負采樣、二次采樣和調優重點詞對word2vec模型進行優化。
分析完成以上6個維度后,需要對這些維度進行綜合評價,并計算綜合得分從而確定整體相似度。本文使用熵值法對該6個維度計算權重,本文數據計算得出的權重如表1所示。

表1 熵值法權重表
(1)數據
本文數據來自積累的異常APP庫和互聯網下載的APP文件:
①異常APP庫:6 211個,去重+刪去無效APP后5 287個。
②APP累積庫數據:30余萬個。
(2)實證結果
對APP累計庫中的數據進行驗證,各個維度相似的結果如表2所示。

表2 各維度相似APP統計表
(3)異常APP驗證情況
本文通過對異常APP的積累,構建了異常APP知識庫(含有異常APP共5 287個),通過模型對異常APP的相似APP進行關聯,發現了的8 233個異常APP。
以異常APP“淘金吧”和“愛聊”為例,相似關系圖如圖4所示,黑色代表的是異常類APP,灰色代表的是關聯出的相似APP。從圖中可以發現,異常APP通過多個相似維度關聯出了相似APP,同時不同的異常APP和相似APP有相互連接情況,說明這一批APP可能由同一開發者開發。

圖4 異常APP相似關系圖
本文基于圖像深度學習算法yolov4、文本分析算法和指標評價算法構建了一種異常APP相似推薦模型,從截圖、名稱等6個維度出發分別進行相似性分析,并使用熵值法進行綜合評價。最終從30余萬個APP中發現了5 197個APP存在相似,關聯出55 965個相似APP,并基于異常APP庫推薦出8 233個異常APP。