◆翟福龍
一種涉詐APP分析方法
◆翟福龍
(奇安信科技集團股份有限公司 上海 201101)
隨著科技的發(fā)展和生活水平的提高,人們每天的生活與互聯(lián)網(wǎng)越來越息息相關(guān)。移動端互聯(lián)網(wǎng)應(yīng)用的多樣性,也吸引了一部分不法分子,利用仿冒APP、涉詐APP、涉賭APP等形式,獲取不義之財,使用者也因此承受了巨大的經(jīng)濟損失。為解決目前存在的問題,針對此類APP,如何快速提取APK以及通過相關(guān)工具對APK進行后續(xù)的相關(guān)分析,并判斷是否涉詐,顯得尤為重要,本文分享并總結(jié)了一種涉詐APK分析的方法。
APP;APK;靜態(tài)分析;動態(tài)分析
近年來,隨著移動通信技術(shù)的高速發(fā)展,我國已經(jīng)全面進入移動互聯(lián)網(wǎng)時代,手機得益于自身的便捷性,也成為更多人獲取新聞、完成工作、休閑娛樂中不可或缺的一樣日常用品。人們通過手機上安裝的各式各樣的應(yīng)用程序(APP)來享受互聯(lián)網(wǎng)所提供的各項服務(wù)。近9億網(wǎng)民中,使用手機上網(wǎng)的比例高達99.1%,移動互聯(lián)網(wǎng)服務(wù)便捷、即時、普惠的特點在移動互聯(lián)網(wǎng)應(yīng)用程序(APP)中得到充分體現(xiàn)。據(jù)不完全統(tǒng)計,移動互聯(lián)網(wǎng)應(yīng)用商店上架推廣的APP有近400萬款,總下載量超萬億次。
APP的廣泛應(yīng)用,在促進經(jīng)濟社會發(fā)展、服務(wù)民生等方面發(fā)揮著不可替代的作用。但與此同時,APP涉詐、涉賭、涉黃、強制授權(quán)、過度索權(quán)、超范圍收集個人信息的現(xiàn)象普遍存在,如何及時發(fā)現(xiàn)并遏制涉詐APP的傳播,提高APP應(yīng)用的合法合規(guī)使用,已成為移動互聯(lián)網(wǎng)行業(yè)面臨的重要問題。
特別是使用依托Android系統(tǒng)而開發(fā)的APP應(yīng)用程序,由于系統(tǒng)生態(tài)開放性,此類APP可以選擇在正規(guī)應(yīng)用市場進行上架,也可以通過分發(fā)平臺等渠道進行推廣、安裝和使用。正是基于這一特點,犯罪分子往往通過URL鏈接、二維碼以及直接發(fā)送APK安裝包等方式誘導(dǎo)受害人下載并使用涉詐APP。如何實現(xiàn)對APK文件進行方便快捷的分析,對后續(xù)的取證及偵查方向具有重要的意義。
由于iOS系統(tǒng)的封閉性,造成涉詐APP在其生態(tài)圈的傳播并不廣泛,本文暫不涉及iOS系統(tǒng)下APP安裝包IPA的分析工作
APK(全稱:Android APPlication Package,Android應(yīng)用程序包)是Android操作系統(tǒng)使用的一種應(yīng)用程序包文件格式,用于分發(fā)和安裝移動應(yīng)用及中間件。一個Android應(yīng)用程序的代碼想要在Android設(shè)備上運行,必須先進行編譯,然后被打包成為一個能被Android系統(tǒng)識別的文件才可以運行,而這種能被Android系統(tǒng)識別并運行的文件格式便是“APK”。
APK和APP的區(qū)別,APK是AndroidPackage的縮寫,即Android安裝包(APK)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執(zhí)行即可安裝。而APP是應(yīng)用程序(APPlication)的縮寫,包含APK文件。
一個APK文件內(nèi)包含被編譯的代碼文件(.dex文件),文件資源(Resources),原生資源文件(Assets),證書(Certificates),和清單文件(Manifest File)。
(1)APK Messenger
APK Messenger是一款非常實用的APK文件信息查看軟件,使用這款軟件可以輕松查看任何APK軟件信息,APK的所有信息都可以顯示出來,包括文件名稱、包名、版本名、版本號、文件MD5。支持獲取軟件的高清圖標,如果需要查找圖標,可以在軟件中直接查看并保存即可。還可以查看并提取APK文件的簽名信息,包括證書MD5,證書SHA信息等。APK Messenger支持對文件自定義名稱,讓用戶可以規(guī)范調(diào)整APK文件的名稱。還擁有APK全限查看和提取功能,可以輕松提取APK的應(yīng)用權(quán)限,同時會給出權(quán)限的注釋。支持在線搜索功能,可以搜索六大應(yīng)用市場的APK文件,生成APK信息文件報告,所有信息都顯示在報告上。還具有查殼功能。是一款體積小巧,功能豐富的APP文件信息查看工具。
(2)jadx-gui反編譯工具
jadx-gui是一款安卓反編譯工具,安裝后可以用來查看APK源碼,支持zip、dex、jar、APK、class文件,可以算得上一鍵反編譯,使用非常方便。通過加載APK文件可便于查看AndroidManifest.xml應(yīng)用清單文件,可以了解應(yīng)用程序的版本號、包名、權(quán)限、第三方公司的標識ID等內(nèi)容。
(3)Android逆向助手
Android逆向助手是一款針對安卓平臺的強大逆向輔助軟件,功能涵蓋APK反編譯打包簽名;dex/jar互轉(zhuǎn)替換提取修復(fù);so反編譯;xml、txt加密;字符串編碼等。
(4)Android killer
Android Killer是一款可視化的安卓應(yīng)用逆向工具,集APK反編譯、APK打包、APK簽名,編碼互轉(zhuǎn),ADB通信(應(yīng)用安裝-卸載-運行-設(shè)備文件管理)等特色功能于一身。
以上即為幾款常用的針對APK分析的開源小工具,通過掌握以上基礎(chǔ)工具及相關(guān)環(huán)境配置,相信對以后遇到的各類涉案APK自主手動分析會有所幫助。
上述所介紹的APK分析開源軟件,絕大多數(shù)都需要有一定的技術(shù)積累才能更好地使用,如很多軟件都需要事先配置相關(guān)系統(tǒng)環(huán)境,下載JDK(Java SE Development Kit)并進行安裝,還要對JAVA環(huán)境進行配置。
隨著APK分析的熱度不斷升溫,有一大部分技術(shù)積累較少的非專業(yè)人員也加入到了APK分析的浪潮之中,具有更好的人機交互、界面顯示更加簡潔、操作更加簡單的商業(yè)軟件,就成為這部分群體的選擇。
(1)星源APP溯源分析平臺
星源APP溯源分析平臺是奇安盤古(上海)信息技術(shù)有限公司開發(fā)的一套APP溯源分析平臺。通過匯聚APP樣本,自動逆向脫殼、特征提取、靜/動態(tài)分析,形成全面的APP元數(shù)據(jù)資源庫,以此提供APP溯源和分析兩大能力,溯源包括IP/域名、打包平臺、客服平臺、短信通道等落地信息,分析包括關(guān)聯(lián)分析、布控預(yù)警、串案分析等。它是涉網(wǎng)犯罪的專屬APP庫,提供開放式能力對接。
(2)MSIE-20移動互聯(lián)網(wǎng)APP檢測取證系統(tǒng)
MSIE-20移動互聯(lián)網(wǎng)APP檢測取證系統(tǒng),是捷興信源信息技術(shù)有限公司自主研發(fā)的“應(yīng)用動態(tài)行為監(jiān)控技術(shù)”,相關(guān)監(jiān)控模塊包括:應(yīng)用網(wǎng)絡(luò)報文監(jiān)測、應(yīng)用調(diào)用短信收發(fā)監(jiān)測模塊、應(yīng)用運行權(quán)限監(jiān)測模塊、用戶文件訪問監(jiān)控模塊等,這些模塊分別嵌入應(yīng)用程序?qū)雍筒僮飨到y(tǒng)層(包括應(yīng)用程序編程接口層和系統(tǒng)層)中的監(jiān)測模塊,以完成相應(yīng)的監(jiān)測任務(wù)。
(3)金斗云在線服務(wù)平臺
金斗云在線服務(wù)平臺,是白虹科技公司為執(zhí)法部門開發(fā)的一套服務(wù)平臺。提供APP溯源分析工具。系統(tǒng)采取“智能+人工”的方式進行全方位的溯源分析,審核后出具《溯源分析報告》。
(4)手機應(yīng)用分析系統(tǒng)
手機應(yīng)用分析系統(tǒng),是無糖信息技術(shù)有限公司為執(zhí)法部門開發(fā)的一套服務(wù)平臺,內(nèi)嵌于無糖瀏覽器中,提供APP溯源分析工具。在輸出的報告中,可以查詢到APK的基本信息、接入SDK信息、應(yīng)用權(quán)限、簽名證書信息、動態(tài)網(wǎng)絡(luò)抓包分析等內(nèi)容。
根據(jù)公安部發(fā)布的統(tǒng)計數(shù)據(jù),電信網(wǎng)絡(luò)詐騙案件共分為9大類,50余種小類,如圖1所示。
圖1 電信網(wǎng)絡(luò)詐騙案件分類
360借條、百度有錢花、小米金融、平安e貸等,均為合法公司的小微貸款產(chǎn)品,有正規(guī)的網(wǎng)站并上架于各大正規(guī)應(yīng)用市場。本文以其為例,探討一種判別涉詐APK的分析方法。
(1)包名特征
與正常APK相比,涉詐APK的包名不規(guī)則,具體體現(xiàn)在:數(shù)字較多、大小寫字母混雜、以“.”分割的分段較多。以下為百度有錢花、360借條、小米金融,正版APP的包名(圖2):
圖2 正版包名
以下為若干仿冒APP的包名(圖3):
因此可以采用信息熵(代表著一個字符串的混亂程度)、數(shù)字占比統(tǒng)計、字段統(tǒng)計等方式,提煉機器可識別的包名特征。
(2)包大小特征
詐騙類APP多為簡單的H5封裝,通過統(tǒng)計發(fā)現(xiàn),詐騙APP的大小與正常的APK包的大小有明顯的區(qū)別,詐騙類APP的APK多在10M以下。
如圖4所示為為樣例APP的包大小分布,包括314個涉詐APP,223個正常APP??梢钥闯觯蠖鄶?shù)涉詐APP的APK擁有安裝包較小的特征。
圖4 涉詐APP和正常APP包的大小特征
(3)簽名信息特征
如圖5所示為對一個詐騙類APP分析結(jié)果中的簽名信息,大部分信息和正常的APP沒有區(qū)分度,除了簽名的機構(gòu),可能體現(xiàn)出某些平臺的特性。
根據(jù)簽名信息,我們可以到對應(yīng)的簽名機構(gòu)查詢相關(guān)注冊賬號的信息,以及歷史創(chuàng)建的簽名,并據(jù)此和知識庫中積累的涉詐APP簽名信息進行比對,得出此項特征的比對結(jié)果。
(4)封包平臺特征
APP搭建人員,從域名“販子”手中買到大量(備案)域名或境外域名,使用公開的源碼或網(wǎng)站框架,接入第四方支付接口搭建網(wǎng)站。通過一些Web封裝平臺將網(wǎng)站封裝成APP,并將APP上傳至應(yīng)用分發(fā)平臺獲得應(yīng)用下載鏈接,在短鏈平臺將應(yīng)用下載鏈接轉(zhuǎn)換成短鏈接。虛假APP的搭建流程如圖6所示。
圖5 對一個詐騙類APP分析結(jié)果中的簽名信息
圖6 虛假APP的搭建流程
①安卓應(yīng)用的封裝
安卓應(yīng)用的簽名封裝較為簡單,有很多平臺、工具提供快速的一鍵封裝,也可以由開發(fā)人員自行封裝。主要流程如下:
生成證書的過程:
進入JAVA_HOMEin目錄
在此處打開cmd,并輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore example.keystore
按照界面上的提示信息進行填寫(圖7):
圖7 按照界面上的提示信息進行填寫
簽名的過程(圖8):
圖8 簽名過程
可以發(fā)現(xiàn),如果是批量的封裝應(yīng)用,可能使用同一個證書,那么證書的信息不會每次都反復(fù)輸入,因此可通過證書信息,捕獲同一平臺批量簽名的APK。
②iOS應(yīng)用的封裝
現(xiàn)在市面上的封裝方法主要有三種:
★普通封裝(無簽名)。這種蘋果APP的封裝,只能夠安裝到越獄手機,沒有越獄的手機是不能安裝使用的。所以這種封裝方式不被大家接受,使用的人很少。
★簽名封裝。顧名思義,就是用了企業(yè)簽名的封裝的APP,這種APP對于iOS蘋果手機沒有任何限制,都能下載使用。這種方式是之前很長一段時間被大家接受的方式,但是它也有不好的地方,就是容易掉簽名,因為市面上的簽名商,他們手里的簽名都是共享了多個APP,只要一個APP被查違規(guī),這個簽名下的APP都無法使用,這就是為什么簽名的APP經(jīng)常出現(xiàn)掉簽名的情況。
★描述文件封裝。這種封裝APP的方式是2019年才興起的,就是把個人網(wǎng)站的手機端封裝成描述文件,安裝到蘋果手機上使用,這個方法有一個好處就是不存在掉簽這一說,只需要安裝用戶在描述文件里面安裝好APP就可以正常使用了。
iOS封裝主要成本就是企業(yè)簽名,以現(xiàn)在的市場價格,企業(yè)簽名穩(wěn)定些的大概是500元左右一個月,一年下來就是6000元,而且還無法保障是否會掉簽。一旦掉簽,那之前安裝的會員都得重新裝一遍,給APP的推廣帶來了非常大的不便。因此目前使用描述文件APP比較流行,都是封裝APP,效果都是一樣的,但是描述文件封裝需要做技術(shù)處理,不然在APP里面打開任何鏈接,都會跳轉(zhuǎn)到蘋果默認瀏覽器里面打開。這也是涉詐類APP較少在iOS系統(tǒng)中傳播的原因。
③流行的封裝平臺
我們還以之前的314個涉詐APP為例,統(tǒng)計其簽名issuer,排在前10位的如圖9所示。
圖9 涉詐APP的簽名issuer
排在第一位的無法判斷其特征;
排在第二位的為“不凡APP制作平臺”;
排在第三位的為數(shù)字天堂公司;
排在第五位的推測是一個APKPacker工具
如圖10和圖11所示分別為對“不凡APP制作平臺”和APKPacker工具進行試用,操作簡單。
圖10 不凡APP制作平臺
對測試的封裝APK進行檢測,檢測結(jié)果顯示,簽名信息即為bufanapp,如下所示(圖11):
圖11 檢測結(jié)果
APKPACKER如圖12所示。
圖12 APKPACKER
生成證書的過程如下(圖13):
圖13 生成證書過程
綜上可以看出,如果某一APP被判定為涉詐APP,那么和它使用相同證書、簽名的APP有很大概率也是涉詐類APP。
(5)icon特征
詐騙類APP的應(yīng)用icon與正常icon有較強的相似性,有的就是直接拿過來復(fù)用;有的在截圖之后使用,與原圖有微小的差異。可以構(gòu)造一個涉詐APP的icon圖像庫,對于新抓取的APP,分析它的icon與圖像庫icon的相似度,當與圖像庫中的多個icon相似,則可在一個維度上認為該APP可能是詐騙應(yīng)用。如圖14所示為一個示例,可以看出,詐騙應(yīng)用的logo很類似,或僅存在微小的變化。
圖14 詐騙應(yīng)用的logo特征
通過采用圖片識別與對比的AI能力,可以將相近或相似的圖標找出來,給涉詐判別提供依據(jù)。
(6)版本號特征
正常的APP版本號一般不斷迭代,涉詐應(yīng)用的版本號較低,且不會持續(xù)更新,在目前的統(tǒng)計中,1.0.0出現(xiàn)的次數(shù)較多。如圖15舉例,為隨機抽取的舉報的APP和正常的版本號對比。
圖15 隨機抽取的舉報的APP和正常的版本號對比
涉詐APP的惡意行為包括植入木馬后門、竊取用戶數(shù)據(jù)、仿冒正版APP進行詐騙、推送虛假廣告等。涉詐APP的分類算法以大量的涉詐APP以及應(yīng)用商店內(nèi)爬取的合規(guī)APP作為正負訓(xùn)練樣本。算法流程如下。
(1)特征提取
通過利用常用的分析軟件,對疑似涉詐APP進行靜態(tài)特征和動態(tài)特征的分析和提取。提取特征的思路主要為發(fā)現(xiàn)某個或者某類開發(fā)者、發(fā)現(xiàn)應(yīng)用的異常行為等。常見的特征維度包括:應(yīng)用名、包名、包的大小、logo、簽名信息、代碼特征、權(quán)限調(diào)用、訪問文件記錄、后臺服務(wù)器特征、資源文件等,形成涉詐APP識別特征庫。
(2)數(shù)據(jù)預(yù)處理
針對算法的需求,對各個維度的特征進行數(shù)值化、異常值處理,以及按需進行標準化、歸一化等處理。對各個維度數(shù)值化的過程較為關(guān)鍵,例如利用涉詐APP的特征庫,判斷簽名信息是否異常、包名是否異常、logo是否異常等。
(3)模型訓(xùn)練
選擇機器學(xué)習(xí)中的分類算法,利用帶標簽數(shù)據(jù)進行模型訓(xùn)練。例如通過隨機森林算法構(gòu)造N棵決策樹,準確率較高,能較好地處理缺失值,模型泛化能力強,訓(xùn)練速度快,容易做成并行化方法。
(4)模型優(yōu)化
重要特征篩選:數(shù)據(jù)和特征決定了機器學(xué)習(xí)的上限,而模型和算法只是逼近這個上限而已。對每一棵決策樹,選擇相應(yīng)的袋外數(shù)據(jù)(OOB),計算袋外數(shù)據(jù)誤差,記為errOOB1。所謂袋外數(shù)據(jù)是指,每次建立決策樹時,通過重復(fù)抽樣得到一個數(shù)據(jù)用于訓(xùn)練決策樹,這時還有大約1/3的數(shù)據(jù)沒有被利用,沒有參與決策樹的建立。這部分數(shù)據(jù)可以用于對決策樹的性能進行評估,計算模型的預(yù)測錯誤率,稱為袋外數(shù)據(jù)誤差,袋外誤差經(jīng)過證明是無偏估計的,因此在隨機森林算法中不需要再進行交叉驗證或者單獨的測試集來獲取測試集誤差的無偏估計。隨機對袋外數(shù)據(jù)OOB所有樣本的特征X加入噪聲干擾,再次計算袋外數(shù)據(jù)誤差,記為errOOB2。假設(shè)森林中有N棵樹,則特征X的重要性=∑(errOOB2-errOOB1)/N。這個數(shù)值之所以能夠說明特征的重要性,是因為如果加入隨機噪聲后,袋外數(shù)據(jù)準確率大幅度下降(即errOOB2上升),說明這個特征對于樣本的預(yù)測結(jié)果有很大影響,進而說明重要程度比較高。計算每個特征的重要性,并按降序排序,確定要剔除的比例,依據(jù)特征重要性剔除相應(yīng)比例的特征,得到一個新的特征集,并重新訓(xùn)練。
(5)數(shù)據(jù)集更新
采用模型對未知的APP進行預(yù)測后,積累新的數(shù)據(jù),更新數(shù)據(jù)集定期重新訓(xùn)練,不斷優(yōu)化模型。
通過使用上述涉詐APP分析算法,可以形成各種不同涉詐類型的識別模板,能在分析研判后,直接輸出涉詐類型。針對自動化流程無法嚴格判別是否涉詐的,還可以借助人工分析的辦法,對識別準確度進行極大的補充。
以上內(nèi)容整理總結(jié)了常用的APK分析工具,包括開源軟件與面向特定用戶的專用商業(yè)軟件。并根據(jù)包名特征、包大小特征、簽名信息特征、封裝平臺特征等維度,總結(jié)了一套涉詐APP分類算法。后續(xù)我們會繼續(xù)沿著這個方向,探討如何結(jié)合APK分析工具,將判別方法自動化,更好地為凈化網(wǎng)絡(luò)環(huán)境,做出自己的貢獻。
[1]王慶飛,王長波,鮑娟.基于機器學(xué)習(xí)技術(shù)的Android惡意軟件檢測[J]. 科技資訊,2020(27).
[2]戴芬,劉洪偉,樊婕,等. Android手機APK程序逆向分析取證[J].刑事技術(shù),2021,46(04).
[3]石興華,曹金璇,蘆天亮.基于深度森林的安卓惡意軟件行為分析與檢測[J]. 軟件,2019(10).
[4]柯懂湘,潘麗敏,羅森林,等. 基于隨機森林算法的Android惡意行為識別與分類方法[J]. 浙江大學(xué)學(xué)報(工學(xué)版),2019(10).
[5]盧建赟. Android惡意應(yīng)用自動檢測方法的研究與實現(xiàn)[D].北京郵電大學(xué),2021.