1.一種Android系統(tǒng)內(nèi)置應(yīng)用漏洞挖掘方法,其特征在于:
S1,建立一個(gè)Android漏洞庫;將漏洞分為以下8類:拒絕服務(wù)漏洞,跨站腳本攻擊漏洞,輸入驗(yàn)證漏洞,緩沖區(qū)溢出漏洞,敏感信息泄露漏洞,組件/權(quán)限暴露漏洞,SQL注入漏洞,其他;詳細(xì)分析每一類的漏洞的特點(diǎn),為每一類的漏洞整理出該類漏洞規(guī)則,并根據(jù)每類漏洞的威脅度附以不同的權(quán)值;
S2,將目標(biāo)APK文件進(jìn)行反編譯,得到包括Manifest文件、資源文件和代碼文件的文件;將反編譯后的Manifest文件和資源文件進(jìn)行解析,獲取應(yīng)用的權(quán)限申請(qǐng)、組件聲明和類函數(shù)調(diào)用等信息;再對(duì)相應(yīng)的可執(zhí)行文件進(jìn)行反匯編,對(duì)反匯編代碼進(jìn)行切片并進(jìn)行匯集;
S3,將匯集后的反匯編代碼通過語法詞法分析、危險(xiǎn)API分析、控制流、數(shù)據(jù)流分析,得到目標(biāo)APK文件的行為特性,生成特征數(shù)據(jù);對(duì)反編譯后得到的smali代碼進(jìn)行詞法分析和語法分析,獲取危險(xiǎn)函數(shù)調(diào)用信息;
S4,引入IDA工具對(duì).so文件靜態(tài)分析;通過一段python代碼,實(shí)現(xiàn)從指定APP中提取所有的.so文件;將提取的.so文件導(dǎo)入IDA,反匯編.so文件得到二進(jìn)制代碼,通過二進(jìn)制代碼中靜態(tài)分析的地址和.so文件在內(nèi)存中的基址來定位目標(biāo)函數(shù);將二進(jìn)制代碼轉(zhuǎn)換為C語言代碼,利用IDA的功能模塊Graph View查看目標(biāo)APK的設(shè)計(jì)流程;
S5,漏洞匹配;針對(duì)不同種類的Android漏洞,通過編碼構(gòu)建相應(yīng)的漏洞檢測(cè)器,對(duì)靜態(tài)分析得到的特征數(shù)據(jù)進(jìn)行匹配檢測(cè),判斷應(yīng)用是否存在相應(yīng)的漏洞;
S6,將S5中得到的漏洞類別以及對(duì)應(yīng)的權(quán)值和S4中.so文件分析結(jié)果,對(duì)目標(biāo)APK進(jìn)行整體風(fēng)險(xiǎn)評(píng)估,生成靜態(tài)分析報(bào)告;
S7,在開始動(dòng)態(tài)檢測(cè)前,獲取指定APK文件靜態(tài)報(bào)告中的威脅,監(jiān)測(cè)應(yīng)用程序API函數(shù)的調(diào)用;
S8,引入IDA對(duì).so文件動(dòng)態(tài)分析;使用IDA工具打開.so文件,找到指定的native層函數(shù);結(jié)合S4中APK的設(shè)計(jì)流程和IDA中的快捷鍵,得到函數(shù)的執(zhí)行流程;調(diào)試.so文件,將DA目錄中的android_server拷貝到設(shè)備的指定目錄下,修改android_server的運(yùn)行權(quán)限,用Root身份運(yùn)行android_server;使用adb forward進(jìn)行端口轉(zhuǎn)發(fā),讓遠(yuǎn)程調(diào)試端IDA可以連接到被調(diào)試端;使用IDA連接上轉(zhuǎn)發(fā)的端口,查看設(shè)備的所有進(jìn)程,找到需要調(diào)試的進(jìn)程;再次打開.so文件,找到需要調(diào)試的函數(shù)的相對(duì)地址,然后在調(diào)試頁面使用Ctrl+S找到.so文件的基地址,相加之后得到絕對(duì)地址,使用G鍵,跳轉(zhuǎn)到函數(shù)的地址處,下好斷點(diǎn)后運(yùn)行;觸發(fā)native層的函數(shù),利用單步調(diào)試,查看寄存器中的值;
S9,過集成Drozer動(dòng)態(tài)分析框架,在命令行中輸入各種測(cè)試命令,確定攻擊面;針對(duì)可攻擊的地方,運(yùn)用滲透手段進(jìn)行測(cè)試;
S10,結(jié)合靜態(tài)檢測(cè)和動(dòng)態(tài)檢測(cè)結(jié)果,生成檢測(cè)報(bào)告。
2.如權(quán)利要求1所述內(nèi)容進(jìn)行Android系統(tǒng)內(nèi)置應(yīng)用漏洞挖掘的方法,其特征在于,
步驟S3及S4之間還能存在以下步驟:
S31,生成目標(biāo)APK調(diào)用可視化文件,具體到目標(biāo)APK中類方法調(diào)用關(guān)系,將表示其調(diào)用關(guān)系的類調(diào)用圖采用YiFan Hu算法進(jìn)行可視化美化;并在第三方軟件Gephi中Filters選項(xiàng)設(shè)置相應(yīng)的Class_name,對(duì)實(shí)現(xiàn)可視化圖形進(jìn)行篩選;在DataLabortatory對(duì)Nodes節(jié)點(diǎn)篩選包含指定類和方法調(diào)用;最終以gexf格式存儲(chǔ);
S32,分析應(yīng)用組件的生命周期函數(shù)和事件回調(diào)函數(shù);根據(jù)類調(diào)用圖模擬應(yīng)用中函數(shù)調(diào)用的情況,得到控制流圖。