本發(fā)明涉及信息安全技術(shù),尤其涉及一種基于逆向解析機(jī)制的Android安全增強(qiáng)系統(tǒng)。
背景技術(shù):
隨著移動互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,Android系統(tǒng)已成為惡意軟件攻擊的重要目標(biāo)之一。國際知名計算機(jī)及網(wǎng)絡(luò)安全提供商F-Secure公司發(fā)布的2013年下半年安全威脅報告指出,針對Andriod平臺滋生的惡意軟件占所有手機(jī)惡意軟件的97%;F-Secure在2014年發(fā)布的Android檢測報告顯示[2]:在已發(fā)現(xiàn)的149個惡意應(yīng)用家族中,Android惡意應(yīng)用家族數(shù)量為136,占總數(shù)的91.3%。360手機(jī)安全中心發(fā)布了《2014年一季度手機(jī)安全狀況報告》數(shù)據(jù)顯示,2014年一季度共監(jiān)測到Android用戶感染惡意程序3791萬人次,同比增長48.8%;此外,360根據(jù)中國反網(wǎng)絡(luò)病毒聯(lián)盟ANVA的分類標(biāo)準(zhǔn),對2014年第一季度監(jiān)測的Android平臺惡意程序進(jìn)行分類統(tǒng)計,其中資費(fèi)消耗類惡意程序感染量最高,占感染人次總數(shù)的62%;另外,在第一季度感染量最高的十大惡意程序中,有八款為吸費(fèi)類惡意程序,它們主要通過私發(fā)短信、私自下載、后臺定制扣費(fèi)業(yè)務(wù)等惡意行為消耗手機(jī)用戶的流量和資費(fèi)。
因此,惡意應(yīng)用對Android系統(tǒng)產(chǎn)生的安全威脅不容小覷,特別是涉及用戶切身利益的隱私信息和流量資費(fèi)等安全問題已成為業(yè)界關(guān)注的熱點(diǎn)之一。當(dāng)前,Google公司已加強(qiáng)安全措施,在安裝應(yīng)用時提供Google Play的服務(wù)驗證機(jī)制;其次,國內(nèi)各高校和科研院所近年來也圍繞Android惡意應(yīng)用的檢測和防范,展開了深入系統(tǒng)的研究。
本作品針對Android用戶隱私信息保護(hù)和防止惡意扣費(fèi)這一涉及“民生”的安全問題,研究Android惡意應(yīng)用的檢測與防范技術(shù),提供切實有效的Android安全和隱私保護(hù)機(jī)制,對風(fēng)險應(yīng)用進(jìn)行安全增強(qiáng)與加固保護(hù),提供用戶動態(tài)權(quán)限管理的技術(shù)與方法,對促進(jìn)Android應(yīng)用市場的健康發(fā)展具有重要意義。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于針對現(xiàn)有技術(shù)中的缺陷,提供一種基于逆向解析機(jī)制的Android安全增強(qiáng)系統(tǒng)。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于逆向解析機(jī)制的Android安全增強(qiáng)系統(tǒng),其特征在于,包括:
靜態(tài)檢測模塊、逆向解析模塊、權(quán)限管理模塊、請求中轉(zhuǎn)模塊、網(wǎng)絡(luò)保鏢模塊、數(shù)據(jù)庫服務(wù)模塊、通知模塊以及日志記錄模塊;
靜態(tài)檢測模塊,用于檢測已安裝應(yīng)用中是否存在潛在惡意應(yīng)用;
具體如下:通過惡意應(yīng)用MD5特征庫的匹配、基于惡意應(yīng)用家族組合權(quán)限的匹配、基于危險權(quán)限的匹配和基于危險意圖的匹配相結(jié)合的靜態(tài)檢測技術(shù),進(jìn)行多層過濾,獲取已安裝Android應(yīng)用的潛在風(fēng)險;
靜態(tài)檢測的具體步驟如下:
第一層:建立已知惡意應(yīng)用的黑名單庫,存儲惡意應(yīng)用的MD5值。檢測過程中需要從待檢測的APK包中提取MD5值,并與黑名單進(jìn)行快速匹配和判定。從中過濾出已知的惡意應(yīng)用。對于惡意應(yīng)用的MD5樣本,我們利用收集到的4006個惡意樣本的MD5值,設(shè)計并構(gòu)建了惡意應(yīng)用的黑名單。黑名單主要包括兩個部分:即MD5值和相應(yīng)的惡意應(yīng)用類別。
實現(xiàn)方法:
提取APK包的MD5值,與惡意應(yīng)用的MD5黑名單進(jìn)行比對,排除已知的惡意應(yīng)用。其中,提取APK包的MD5值,利用了java.security.MessageDigest包提供的MessageDigest.getInstance("MD5")函數(shù)進(jìn)行提取,得到APK的MD5字符串。
匹配的過程中,需要查詢數(shù)據(jù)庫中的惡意應(yīng)用的MD5黑名單庫。建立與數(shù)據(jù)庫的連接,連接成功后,對惡意應(yīng)用的MD5黑名單表進(jìn)行查詢。即通過建立SQL查詢語句,查詢表中是否有匹配項。
第二層:基于惡意應(yīng)用家族組合權(quán)限的匹配策略。Zhou等人[3]提出了十個惡意軟件家族的組合權(quán)限特征,通過獲取APK申請的權(quán)限,與惡意應(yīng)用家族的組合權(quán)限進(jìn)行匹配,如果某個應(yīng)用同時匹配了該惡意軟件家族的全部權(quán)限,則可以認(rèn)定該應(yīng)用申請的權(quán)限符合該惡意軟件家族的危險權(quán)限特征,被判定為疑似的惡意應(yīng)用。
檢測方法:提取應(yīng)用申請的權(quán)限,將這些應(yīng)用申請的權(quán)限與惡意應(yīng)用家族的組合權(quán)限進(jìn)行匹配,如果該應(yīng)用申請的權(quán)限與某個惡意應(yīng)用家族的組合權(quán)限匹配,則將該應(yīng)用判定為疑似惡意應(yīng)用。
第三層:基于危險權(quán)限列表的匹配策略。對AndroidManifest.xml文件中的權(quán)限與危險權(quán)限進(jìn)行匹配,列出應(yīng)用申請的危險權(quán)限,形成檢測報告對用戶進(jìn)行提醒。
檢測方法:將提取出的權(quán)限與危險權(quán)限列表進(jìn)行比對,找出應(yīng)用申請的危險權(quán)限,并寫入檢測報告。
第四層:基于危險意圖的匹配策略。大多數(shù)基于規(guī)則的靜態(tài)檢測方法中對惡意應(yīng)用的Manifest.xml文件的分析僅局限于<user-permisssion>,本系統(tǒng)對應(yīng)用的AndroidManifest.xml文件進(jìn)行更全面解析,對危險Intent filter action進(jìn)行了統(tǒng)計和分析,通過對危險的Intent filter action的定義和對4006個惡意應(yīng)用樣本的分析,我們總結(jié)出了15種危險的Intent filter action,并對它們進(jìn)行了分類,主要類別包括惡意扣費(fèi)類,惡意添加類,惡意植入類、竊取隱私信息類,惡意篡改類、攔截類、自啟動耗電類。對Manifest.xml文件進(jìn)行深度分析,取得Intent filter結(jié)點(diǎn)下的action子結(jié)點(diǎn),將提取出的action與危險意圖的action列表進(jìn)行匹配,并將匹配的結(jié)果寫入檢測報告。
逆向解析模塊,用于向風(fēng)險應(yīng)用中植入包括用戶態(tài)沙箱代碼的安全策略,得到加固應(yīng)用,并實時監(jiān)控加固應(yīng)用在安裝后的行為;
所述用戶態(tài)沙箱代碼用于保證應(yīng)用在一個監(jiān)控程序的監(jiān)控環(huán)境中運(yùn)行,從而完成對應(yīng)用某些權(quán)限的禁止和允許;
“用戶態(tài)沙箱”是根據(jù)Android應(yīng)用沙箱機(jī)制的一個比喻,是指應(yīng)用在一個監(jiān)控程序的監(jiān)控環(huán)境中運(yùn)行,從而完成對應(yīng)用某些權(quán)限的禁止和允許,就像Android的沙箱機(jī)制,為各個應(yīng)用的運(yùn)行提供一個較獨(dú)立的安全運(yùn)行環(huán)境。本系統(tǒng)通過監(jiān)控程序為應(yīng)用提供沙箱模式,通過對需加固應(yīng)用的代碼進(jìn)行修改,使應(yīng)用的父類指針指向為應(yīng)用定制的監(jiān)控程序運(yùn)行地址,對應(yīng)用的執(zhí)行進(jìn)行重定向,使得應(yīng)用后續(xù)所有行為都在監(jiān)控端的監(jiān)控下進(jìn)行。
監(jiān)控程序,即監(jiān)控端,實現(xiàn)的主要機(jī)制是基于Native C層的攔截技術(shù),即API HOOK。根據(jù)惡意應(yīng)用的惡意行為,惡意應(yīng)用調(diào)用危險API的主要類別有:連接互聯(lián)網(wǎng)、獲取位置信息、讀取通信錄、獲取短信內(nèi)容等,需要對相應(yīng)的Native C層的函數(shù)connect()、getaddrinfo()和ioctl()進(jìn)行攔截。使得應(yīng)用竊取用戶隱私和惡意扣費(fèi)等行為受到監(jiān)控或禁止,并對應(yīng)用的行為進(jìn)行嚴(yán)格的審計。
所述安全策略包括目標(biāo)apk的解包、加入用戶態(tài)沙箱代碼和加固apk的重建;
在對需要加固apk進(jìn)行解包,使用apktool工具,將目標(biāo)apk解包成一個文件目錄,從中可以快速地定位到AndroidManifest文件,從而進(jìn)行后續(xù)用戶態(tài)沙箱代碼的引入。
對目標(biāo)apk進(jìn)行解包后,需要在其中加入用戶態(tài)的沙箱代碼。在加入控制策略之前,需要編寫一個控制程序,并用apktool進(jìn)行解包,找到主類對應(yīng)的smali文件,并把這個smali文件復(fù)制到目標(biāo)apk smali文件夾的相應(yīng)位置,這個smali文件就包含了控制策略的內(nèi)容。接下來,需要解析目標(biāo)apk的AndroidMainfest.xml文件,查找出目標(biāo)apk的主入口類,進(jìn)而遞歸查找直接繼承自Application的類,并修改其父類為監(jiān)控端主類。然后,DetourApplication.smali文件拷貝到相應(yīng)的路徑,成功地將用戶態(tài)沙箱代碼植入應(yīng)用。加入用戶態(tài)沙箱代碼后,再次調(diào)用apktool,完成對加固apk的重建。
權(quán)限管理模塊,用于對逆向解析后的應(yīng)用進(jìn)行權(quán)限管理與行為審計;
所述權(quán)限管理為根據(jù)用戶需求設(shè)置的權(quán)限禁止或許可;
所述行為審計為將用戶的行為信息記錄到數(shù)據(jù)庫中;
請求中轉(zhuǎn)模塊,用于對加固應(yīng)用的不同權(quán)限請求進(jìn)行中轉(zhuǎn)和響應(yīng),將應(yīng)用對Android系統(tǒng)資源的請求轉(zhuǎn)發(fā)至監(jiān)控端的監(jiān)控程序監(jiān)控,根據(jù)監(jiān)控端的返回值進(jìn)行響應(yīng);
請求中轉(zhuǎn)模塊是工作在“用戶態(tài)沙箱”的一個底層模塊,負(fù)責(zé)對用戶態(tài)沙箱代碼根據(jù)加固應(yīng)用的不同權(quán)限請求進(jìn)行轉(zhuǎn)發(fā)和響應(yīng)。加固應(yīng)用運(yùn)行在用戶態(tài)沙箱環(huán)境中,應(yīng)用對Android系統(tǒng)資源的請求都會被監(jiān)控端的監(jiān)控程序監(jiān)控。中轉(zhuǎn)模塊的作用就是將應(yīng)用的請求提交給監(jiān)控端模塊,根據(jù)監(jiān)控端的返回值進(jìn)行響應(yīng)。
所述網(wǎng)絡(luò)保鏢模塊包含廣告插件檢測子模塊和流量監(jiān)控子模塊;
其中,廣告插件檢測子模塊,用于根據(jù)數(shù)據(jù)庫中惡意廣告黑名單檢測出含有廣告插件的應(yīng)用,并提供對含廣告應(yīng)用的卸載功能;
流量監(jiān)控子模塊,用于對應(yīng)用的流量監(jiān)控;
數(shù)據(jù)庫服務(wù)模塊,用于存儲和維護(hù)以下數(shù)據(jù):加固應(yīng)用的權(quán)限設(shè)置信息、靜態(tài)檢測結(jié)果、應(yīng)用行為信息、廣告黑名單、惡意應(yīng)用黑名單、證書庫;
所述通知模塊,用于將靜態(tài)檢測的危險結(jié)果、監(jiān)控程序攔截到的應(yīng)用的危險行為、含廣告插件應(yīng)用名稱和插件數(shù)量信息通知給用戶,并引導(dǎo)用戶正確配置應(yīng)用的權(quán)限,對應(yīng)用進(jìn)行安全加固;
所述日志記錄模塊,用于協(xié)同系統(tǒng)靜態(tài)檢測模塊、權(quán)限管理模塊、廣告檢測模塊,將靜態(tài)檢測結(jié)果、權(quán)限設(shè)置信息、廣告攔截的信息記錄下來,形成日志記錄。
按上述方案,所述靜態(tài)檢測模塊通過惡意應(yīng)用MD5特征庫的匹配、惡意應(yīng)用家族組合權(quán)限的匹配、危險權(quán)限的匹配和危險意圖的匹配相結(jié)合的靜態(tài)檢測技術(shù),進(jìn)行四層過濾,檢測Android應(yīng)用的潛在風(fēng)險。
按上述方案,所述逆向解析模塊的工作流程如下:
1)目標(biāo)apk的解包:使用apktool工具,將目標(biāo)應(yīng)用的apk安裝包解包;
2)加入用戶態(tài)沙箱代碼;所述用戶態(tài)沙箱代碼用于保證應(yīng)用在一個監(jiān)控程序的監(jiān)控環(huán)境中運(yùn)行,從而完成對應(yīng)用某些權(quán)限的禁止和允許;
3)加固apk的重建:加入用戶態(tài)沙箱代碼后,再次調(diào)用apktool,完成對加固apk的重建;
4)加固apk簽名及優(yōu)化:加固apk重建后,對其進(jìn)行簽名,然后對簽名后的apk進(jìn)行優(yōu)化,完成對目標(biāo)apk的逆向解析工作。
本發(fā)明產(chǎn)生的有益效果是:為用戶提供一個Android應(yīng)用的顯式風(fēng)險控制的軟件系統(tǒng),使用戶對Android應(yīng)用真正做到“可視、可管、可控”。本系統(tǒng)以靜態(tài)檢測和逆向解析機(jī)制為核心,結(jié)合流量監(jiān)控、權(quán)限管理等安全機(jī)制來保障Android系統(tǒng)的安全性,側(cè)重解決Android系統(tǒng)中普遍存在的因惡意應(yīng)用引起的用戶隱私泄露和惡意扣費(fèi)等安全問題。
附圖說明
下面將結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步說明,附圖中:
圖1是本發(fā)明的靜態(tài)檢測流程示意圖。
圖2是本發(fā)明的逆向解析模塊工作流程示意圖。
圖3是本發(fā)明中安全策略引入的具體步驟示意圖。
圖4是本發(fā)明中用戶態(tài)沙箱工作模式示意圖。
圖5是本發(fā)明中目標(biāo)API出發(fā)預(yù)處理示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
一種基于逆向解析機(jī)制的Android安全增強(qiáng)系統(tǒng),包括:
靜態(tài)檢測模塊、逆向解析模塊、權(quán)限管理模塊、請求中轉(zhuǎn)模塊、網(wǎng)絡(luò)保鏢模塊、數(shù)據(jù)庫服務(wù)模塊、通知模塊以及日志記錄模塊;
靜態(tài)檢測模塊,用于檢測已安裝應(yīng)用中是否存在潛在惡意應(yīng)用;
具體如下:通過惡意應(yīng)用MD5特征庫的匹配、基于惡意應(yīng)用家族組合權(quán)限的匹配、基于危險權(quán)限的匹配和基于危險意圖的匹配相結(jié)合的靜態(tài)檢測技術(shù),進(jìn)行多層過濾,獲取已安裝Android應(yīng)用的潛在風(fēng)險;
靜態(tài)檢測的具體步驟如下:
第一層:建立已知惡意應(yīng)用的黑名單庫,存儲惡意應(yīng)用的MD5值。檢測過程中需要從待檢測的APK包中提取MD5值,并與黑名單進(jìn)行快速匹配和判定。從中過濾出已知的惡意應(yīng)用。對于惡意應(yīng)用的MD5樣本,我們利用收集到的4006個惡意樣本的MD5值,設(shè)計并構(gòu)建了惡意應(yīng)用的黑名單。黑名單主要包括兩個部分:即MD5值和相應(yīng)的惡意應(yīng)用類別。
實現(xiàn)方法:
提取APK包的MD5值,與惡意應(yīng)用的MD5黑名單進(jìn)行比對,排除已知的惡意應(yīng)用。其中,提取APK包的MD5值,利用了java.security.MessageDigest包提供的MessageDigest.getInstance("MD5")函數(shù)進(jìn)行提取,得到APK的MD5字符串。
匹配的過程中,需要查詢數(shù)據(jù)庫中的惡意應(yīng)用的MD5黑名單庫。建立與數(shù)據(jù)庫的連接,連接成功后,對惡意應(yīng)用的MD5黑名單表進(jìn)行查詢。即通過建立SQL查詢語句,查詢表中是否有匹配項。
第二層:基于惡意應(yīng)用家族組合權(quán)限的匹配策略。Zhou等人[3]提出了十個惡意軟件家族的組合權(quán)限特征,通過獲取APK申請的權(quán)限,與惡意應(yīng)用家族的組合權(quán)限進(jìn)行匹配,如果某個應(yīng)用同時匹配了該惡意軟件家族的全部權(quán)限,則可以認(rèn)定該應(yīng)用申請的權(quán)限符合該惡意軟件家族的危險權(quán)限特征,被判定為疑似的惡意應(yīng)用。
檢測方法:提取應(yīng)用申請的權(quán)限,將這些應(yīng)用申請的權(quán)限與惡意應(yīng)用家族的組合權(quán)限進(jìn)行匹配,如果該應(yīng)用申請的權(quán)限與某個惡意應(yīng)用家族的組合權(quán)限匹配,則將該應(yīng)用判定為疑似惡意應(yīng)用。
第三層:基于危險權(quán)限列表的匹配策略。對AndroidManifest.xml文件中的權(quán)限與危險權(quán)限進(jìn)行匹配,列出應(yīng)用申請的危險權(quán)限,形成檢測報告對用戶進(jìn)行提醒。
檢測方法:將提取出的權(quán)限與危險權(quán)限列表進(jìn)行比對,找出應(yīng)用申請的危險權(quán)限,并寫入檢測報告。
第四層:基于危險意圖的匹配策略。大多數(shù)基于規(guī)則的靜態(tài)檢測方法中對惡意應(yīng)用的Manifest.xml文件的分析僅局限于<user-permisssion>,本系統(tǒng)對應(yīng)用的AndroidManifest.xml文件進(jìn)行更全面解析,對危險Intent filter action進(jìn)行了統(tǒng)計和分析,通過對危險的Intent filter action的定義和對4006個惡意應(yīng)用樣本的分析,我們總結(jié)出了15種危險的Intent filter action,并對它們進(jìn)行了分類,主要類別包括惡意扣費(fèi)類,惡意添加類,惡意植入類、竊取隱私信息類,惡意篡改類、攔截類、自啟動耗電類。對Manifest.xml文件進(jìn)行深度分析,取得Intent filter結(jié)點(diǎn)下的action子結(jié)點(diǎn),將提取出的action與危險意圖的action列表進(jìn)行匹配,并將匹配的結(jié)果寫入檢測報告。
逆向解析模塊,用于向風(fēng)險應(yīng)用中植入包括用戶態(tài)沙箱代碼的安全策略,得到加固應(yīng)用,并實時監(jiān)控加固應(yīng)用在安裝后的行為;
所述用戶態(tài)沙箱代碼用于保證應(yīng)用在一個監(jiān)控程序的監(jiān)控環(huán)境中運(yùn)行,從而完成對應(yīng)用某些權(quán)限的禁止和允許;
“用戶態(tài)沙箱”是根據(jù)Android應(yīng)用沙箱機(jī)制的一個比喻,是指應(yīng)用在一個監(jiān)控程序的監(jiān)控環(huán)境中運(yùn)行,從而完成對應(yīng)用某些權(quán)限的禁止和允許,就像Android的沙箱機(jī)制,為各個應(yīng)用的運(yùn)行提供一個較獨(dú)立的安全運(yùn)行環(huán)境。本系統(tǒng)通過監(jiān)控程序為應(yīng)用提供沙箱模式,通過對需加固應(yīng)用的代碼進(jìn)行修改,使應(yīng)用的父類指針指向為應(yīng)用定制的監(jiān)控程序運(yùn)行地址,對應(yīng)用的執(zhí)行進(jìn)行重定向,使得應(yīng)用后續(xù)所有行為都在監(jiān)控端的監(jiān)控下進(jìn)行。
監(jiān)控程序,即監(jiān)控端,實現(xiàn)的主要機(jī)制是基于Native C層的攔截技術(shù),即API HOOK。根據(jù)惡意應(yīng)用的惡意行為,惡意應(yīng)用調(diào)用危險API的主要類別有:連接互聯(lián)網(wǎng)、獲取位置信息、讀取通信錄、獲取短信內(nèi)容等,需要對相應(yīng)的Native C層的函數(shù)connect()、getaddrinfo()和ioctl()進(jìn)行攔截。使得應(yīng)用竊取用戶隱私和惡意扣費(fèi)等行為受到監(jiān)控或禁止,并對應(yīng)用的行為進(jìn)行嚴(yán)格的審計。
所述安全策略包括目標(biāo)apk的解包、加入用戶態(tài)沙箱代碼和加固apk的重建;
在對需要加固apk進(jìn)行解包,使用apktool工具,將目標(biāo)apk解包成一個文件目錄,從中可以快速地定位到AndroidManifest文件,從而進(jìn)行后續(xù)用戶態(tài)沙箱代碼的引入。
對目標(biāo)apk進(jìn)行解包后,需要在其中加入用戶態(tài)的沙箱代碼。在加入控制策略之前,需要編寫一個控制程序,并用apktool進(jìn)行解包,找到主類對應(yīng)的smali文件,并把這個smali文件復(fù)制到目標(biāo)apk smali文件夾的相應(yīng)位置,這個smali文件就包含了控制策略的內(nèi)容。接下來,需要解析目標(biāo)apk的AndroidMainfest.xml文件,查找出目標(biāo)apk的主入口類,進(jìn)而遞歸查找直接繼承自Application的類,并修改其父類為監(jiān)控端主類。然后,DetourApplication.smali文件拷貝到相應(yīng)的路徑,成功地將用戶態(tài)沙箱代碼植入應(yīng)用。加入用戶態(tài)沙箱代碼后,再次調(diào)用apktool,完成對加固apk的重建。
權(quán)限管理模塊,用于對逆向解析后的應(yīng)用進(jìn)行權(quán)限管理與行為審計;
所述權(quán)限管理為根據(jù)用戶需求設(shè)置的權(quán)限禁止或許可;
所述行為審計為將用戶的行為信息記錄到數(shù)據(jù)庫中;
行為審計就是一個審計功能,算是一個附帶功能,就是記錄用戶的行為。
請求中轉(zhuǎn)模塊,用于對加固應(yīng)用的不同權(quán)限請求進(jìn)行中轉(zhuǎn)和響應(yīng),將應(yīng)用對Android系統(tǒng)資源的請求轉(zhuǎn)發(fā)至監(jiān)控端的監(jiān)控程序監(jiān)控,根據(jù)監(jiān)控端的返回值進(jìn)行響應(yīng);
請求中轉(zhuǎn)模塊是工作在“用戶態(tài)沙箱”的一個底層模塊,負(fù)責(zé)對用戶態(tài)沙箱代碼根據(jù)加固應(yīng)用的不同權(quán)限請求進(jìn)行轉(zhuǎn)發(fā)和響應(yīng)。加固應(yīng)用運(yùn)行在用戶態(tài)沙箱環(huán)境中,應(yīng)用對Android系統(tǒng)資源的請求都會被監(jiān)控端的監(jiān)控程序監(jiān)控。中轉(zhuǎn)模塊的作用就是將應(yīng)用的請求提交給監(jiān)控端模塊,根據(jù)監(jiān)控端的返回值進(jìn)行響應(yīng)。
所述網(wǎng)絡(luò)保鏢模塊包含廣告插件檢測子模塊和流量監(jiān)控子模塊;
其中,廣告插件檢測子模塊,用于根據(jù)數(shù)據(jù)庫中惡意廣告黑名單檢測出含有廣告插件的應(yīng)用,并提供對含廣告應(yīng)用的卸載功能;
流量監(jiān)控子模塊,用于對應(yīng)用的流量監(jiān)控;
數(shù)據(jù)庫服務(wù)模塊,用于存儲和維護(hù)以下數(shù)據(jù):加固應(yīng)用的權(quán)限設(shè)置信息、靜態(tài)檢測結(jié)果、應(yīng)用行為信息、廣告黑名單、惡意應(yīng)用黑名單、證書庫;
所述通知模塊,用于將靜態(tài)檢測的危險結(jié)果、監(jiān)控程序攔截到的應(yīng)用的危險行為、含廣告插件應(yīng)用名稱和插件數(shù)量信息通知給用戶,并引導(dǎo)用戶正確配置應(yīng)用的權(quán)限,對應(yīng)用進(jìn)行安全加固;
所述日志記錄模塊,用于協(xié)同系統(tǒng)靜態(tài)檢測模塊、權(quán)限管理模塊、廣告檢測模塊,將靜態(tài)檢測結(jié)果、權(quán)限設(shè)置信息、廣告攔截的信息記錄下來,形成日志記錄。
圖1給出了靜態(tài)檢測模塊的工作流程圖。建立已知惡意應(yīng)用的黑名單庫,存儲惡意應(yīng)用的MD5值。檢測過程中需要從待檢測的APK包中提取MD5值,并與黑名單進(jìn)行快速匹配和判定。從中過濾出已知的惡意應(yīng)用。對于惡意應(yīng)用的MD5樣本,利用收集到的惡意樣本的MD5值,設(shè)計并構(gòu)建了惡意應(yīng)用的黑名單。
提取APK包的MD5值,與惡意應(yīng)用的MD5黑名單進(jìn)行比對,排除已知的惡意應(yīng)用。其中,提取APK包的MD5值,利用了java.security.MessageDigest包提供的MessageDigest.getInstance("MD5")函數(shù)進(jìn)行提取,得到APK的MD5字符串。
匹配的過程中,需要查詢數(shù)據(jù)庫中的惡意應(yīng)用的MD5黑名單庫。建立與數(shù)據(jù)庫的連接,連接成功后,對惡意應(yīng)用的MD5黑名單表進(jìn)行查詢。即通過建立SQL查詢語句,查詢表中是否有匹配項。
圖2是本發(fā)明的逆向解析模塊流程示意圖。此模塊是逆向解析過程的第一步:當(dāng)一個被確定為疑似惡意應(yīng)用的apk(目標(biāo)apk)要進(jìn)行逆向解析時,首先需要對其進(jìn)行基本信息的提取。將目標(biāo)apk的包名、版本號、版本名、大小等信息存入數(shù)據(jù)庫,記錄目標(biāo)apk的基本信息。然后提取出目標(biāo)apk的證書,以證書中存放的公鑰hash值為關(guān)鍵字進(jìn)行檢索,查詢證書數(shù)據(jù)庫。若存在,則表明之前已經(jīng)對此開發(fā)者的其他apk進(jìn)行過逆向解析,并已經(jīng)為其創(chuàng)建了alias(證書條目別名)和passwd(條目密碼)??梢詫⑵淙〕?,用于在加固apk簽名及優(yōu)化模塊為加固后的apk進(jìn)行簽名;若不存在,需要為此證書創(chuàng)建一個新的條目(包括alias和passwd),將其加入到證書數(shù)據(jù)庫中,同時將此條目用于對加固apk的簽名。
圖3是本發(fā)明中安全策略引入的具體步驟示意圖。主要分為三個步驟:目標(biāo)apk的解包、加入用戶態(tài)沙箱代碼、加固apk的重建,具體步驟如下:
在對目標(biāo)apk進(jìn)行解包時,需要使用apktool工具,將目標(biāo)apk解包成一個文件目錄,從中可以快速地定位到AndroidManifest文件,從而進(jìn)行后續(xù)用戶態(tài)沙箱代碼的引入。
對目標(biāo)apk進(jìn)行解包后,需要在其中加入用戶態(tài)的沙箱代碼。在加入用戶預(yù)定義的控制策略之前,需要編寫一個控制程序,并用apktool進(jìn)行解包,找到主類對應(yīng)的smali文件,并把這個smali文件復(fù)制到目標(biāo)apk smali文件夾的相應(yīng)位置,這個smali文件就包含了控制策略的內(nèi)容。接下來,需要解析目標(biāo)apk的AndroidMainfest.xml文件,查找出目標(biāo)apk的主入口類,進(jìn)而遞歸查找直接繼承自Application的類,并修改其父類為監(jiān)控端主類。然后,DetourApplication.smali文件拷貝到相應(yīng)的路徑,成功地將用戶態(tài)沙箱代碼植入應(yīng)用。加入用戶態(tài)沙箱代碼后,再次調(diào)用apktool,完成對加固apk的重建。
加固apk簽名及優(yōu)化,加固apk重建后,還需要對其進(jìn)行簽名,才可以安裝到手機(jī)端正常使用。需要調(diào)用jarsigner工具為加固后的apk進(jìn)行簽名,得到簽名后的apk(*_signed.apk)。最后,調(diào)用zipalign對簽名后的apk進(jìn)行優(yōu)化。完成對目標(biāo)apk的逆向解析工作。
圖4是本發(fā)明中用戶態(tài)沙箱工作模式示意圖?!坝脩魬B(tài)沙箱”是根據(jù)Android應(yīng)用沙箱機(jī)制的一個比喻,是指應(yīng)用在一個監(jiān)控程序的監(jiān)控環(huán)境中運(yùn)行,從而完成對應(yīng)用某些權(quán)限的禁止和允許,就像Android的沙箱機(jī)制,為各個應(yīng)用的運(yùn)行提供一個較獨(dú)立的安全運(yùn)行環(huán)境。本系統(tǒng)通過監(jiān)控程序為應(yīng)用提供沙箱模式,通過對需加固應(yīng)用的代碼進(jìn)行修改,使應(yīng)用的父類指針指向為應(yīng)用定制的監(jiān)控程序運(yùn)行地址,對應(yīng)用的執(zhí)行進(jìn)行重定向,使得應(yīng)用后續(xù)所有行為都在監(jiān)控端的監(jiān)控下進(jìn)行。
監(jiān)控端實現(xiàn)的主要機(jī)制是基于Native C層的攔截技術(shù),即API HOOK。根據(jù)惡意應(yīng)用的惡意行為,惡意應(yīng)用調(diào)用危險API的主要類別有:連接互聯(lián)網(wǎng)、獲取位置信息、讀取通信錄、獲取短信內(nèi)容等,需要對相應(yīng)的Native C層的函數(shù)connect()、getaddrinfo()和ioctl()進(jìn)行攔截。使得應(yīng)用竊取用戶隱私和惡意扣費(fèi)等行為受到監(jiān)控或禁止,并對應(yīng)用的行為進(jìn)行嚴(yán)格的審計。
圖5是本發(fā)明中目標(biāo)API出發(fā)預(yù)處理示意圖。通過API HOOK完成目標(biāo)函數(shù)的攔截之后,用戶態(tài)沙箱代碼需要在加固函數(shù)內(nèi)部對目標(biāo)函數(shù)的參數(shù)進(jìn)行解析,這是確定權(quán)限請求的關(guān)鍵步驟。在參數(shù)解析完畢后,請求中轉(zhuǎn)模塊會根據(jù)不同的請求轉(zhuǎn)發(fā)給不同的監(jiān)控端服務(wù)。監(jiān)控端服務(wù)根據(jù)用戶制定的權(quán)限設(shè)置策略進(jìn)行相應(yīng)的響應(yīng),再返回給用戶態(tài)沙箱代碼。為了降低代碼量,我們將請求中轉(zhuǎn)模塊在Java層完成,這使得運(yùn)行在Native C層的用戶態(tài)沙箱代碼需要與Java層的請求中轉(zhuǎn)模塊進(jìn)行交互,這需要利用JNI技術(shù)。
從圖5可以看出,當(dāng)加固應(yīng)用觸發(fā)危險API時,程序會跳轉(zhuǎn)到加固API中,在加固API中會進(jìn)行參數(shù)檢測來區(qū)分應(yīng)用的不同請求。根據(jù)請求,通過JNI技術(shù)調(diào)用Java層函數(shù)進(jìn)行權(quán)限查詢,根據(jù)返回結(jié)果判斷是否放行當(dāng)前危險行為。
本發(fā)明具有的理論意義和實際應(yīng)用價值:針對目前惡意應(yīng)用對Android系統(tǒng)的安全問題造成的威脅,本發(fā)明采用多重規(guī)則相結(jié)合的靜態(tài)檢測機(jī)制對用戶手機(jī)中的惡意應(yīng)用進(jìn)行過濾,進(jìn)而對潛在風(fēng)險的應(yīng)用進(jìn)行識別,從多個層次分析風(fēng)險應(yīng)用的安全隱患,形成檢測報告。本發(fā)明采用基于逆向解析技術(shù)的安全加固機(jī)制對用戶手機(jī)中潛在風(fēng)險的應(yīng)用進(jìn)行逆向解析,加入具有安全控制策略的用戶態(tài)沙箱代碼,從而使運(yùn)行在用戶手機(jī)終端的監(jiān)控程序能夠?qū)崟r監(jiān)控、阻止和攔截應(yīng)用竊取用戶隱私數(shù)據(jù)、獲取位置隱私信息、訪問惡意IP地址等危險行為。本系統(tǒng)提供了動態(tài)管理權(quán)限的功能,用戶可以在未獲得Root權(quán)限的情況下,對應(yīng)用申請的權(quán)限進(jìn)行動態(tài)的管理和設(shè)置,使得監(jiān)控程序能夠根據(jù)用戶制定的權(quán)限設(shè)置對應(yīng)用的行為進(jìn)行有針對性地監(jiān)控和攔截。
本發(fā)明引入并改進(jìn)靜態(tài)檢測和逆向解析技術(shù),既提高了檢測的精準(zhǔn)度,也優(yōu)化了Android應(yīng)用安全加固的效率,不需要Root權(quán)限,不依賴于Android系統(tǒng)版本,有更高的普適性,可以為用戶提供Android應(yīng)用的顯式風(fēng)險控制,使用戶對安裝的Android應(yīng)用真正做到“可視、可管、可控”;也可作為Android開發(fā)者和開發(fā)商進(jìn)行應(yīng)用風(fēng)險檢測和風(fēng)險管控的一個工具和手段,為凈化Android空間提供了一個可行的途徑。因此,本系統(tǒng)優(yōu)化高效的性能蘊(yùn)含著巨大的市場與應(yīng)用前景。
應(yīng)當(dāng)理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。