本發(fā)明屬于移動安全和界面自動化測試技術(shù)領(lǐng)域,更具體地,涉及一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測方法及系統(tǒng)。
背景技術(shù):
安卓移動設(shè)備承載著用戶越來越多的隱私數(shù)據(jù),不安全的網(wǎng)絡(luò)通信將導(dǎo)致用戶隱私泄漏。據(jù)統(tǒng)計,安卓應(yīng)用網(wǎng)絡(luò)通信過程中約67%采用http協(xié)議,約20%采用https協(xié)議。由于http協(xié)議的明文傳輸,一旦http網(wǎng)絡(luò)請求中包含用戶的隱私數(shù)據(jù)(如通訊錄、短信、日歷和照片等),將存在隱私泄漏。同時,ssl協(xié)議的錯誤使用也將導(dǎo)致用戶面臨中間人攻擊、隱私泄漏的風(fēng)險。
目前針對安卓應(yīng)用中隱私泄露問題,主要采用以下方式:(1)對安卓系統(tǒng)dalvik虛擬機、binder驅(qū)動和文件系統(tǒng)進行修改,以跟蹤污點數(shù)據(jù)是否在網(wǎng)絡(luò)傳輸、文件寫入等泄漏點處傳播。然而該系統(tǒng)需要修改安卓底層系統(tǒng),且只能解決安卓原生應(yīng)用中的網(wǎng)絡(luò)傳輸?shù)碾[私泄露問題,具有一定的局限性。(2)在第一種方式的基礎(chǔ)上集成模擬器偽裝、事件觸發(fā)、fuzzing測試、智能輸入和智能搜索等功能實現(xiàn)大規(guī)模的、自動化的檢測安卓應(yīng)用內(nèi)的隱私泄露行為。然而,該方式中主要以monkey發(fā)送偽隨機事件為主,由于偽隨機事件的不確定性,存在效率低、覆蓋率低等缺點。
目前針對安卓應(yīng)用中網(wǎng)絡(luò)通信安全性問題,rfcs2818、2246和3280文檔明確規(guī)定安卓ssl協(xié)議中證書鏈合法當(dāng)且僅當(dāng)滿足如下三個條件:(1)證書鏈中的每個證書未過期;(2)根證書必須來自于可信的證書機構(gòu),且存在于客戶端可信證書機構(gòu)的列表中;(3)當(dāng)證書鏈中存在多個證書時,需要驗證每個證書的合法性。其規(guī)定主機名合法當(dāng)且僅當(dāng):客戶端連接的服務(wù)器的完全限定的dns名稱能夠匹配證書中構(gòu)建的服務(wù)器標(biāo)識符列表。目前為檢測安卓應(yīng)用程序中錯誤使用ssl的情況主要有以下方式:通過擴展androguard靜態(tài)分析框架,提取安卓應(yīng)用反編譯后的代碼中的urls鏈接(http和https)驗證其域名證書的有效性從而判斷應(yīng)用是否存在ssl誤用漏洞。然而,該方式基于靜態(tài)提取urls鏈接,不能有效獲取動態(tài)urls鏈接,同時需要安全專家運行應(yīng)用手工確認(rèn)從而避免誤報。針對上述方式的高誤報、人工驗證的缺陷,出現(xiàn)了一種改進方式:結(jié)合動靜態(tài)分析技術(shù)檢測安卓應(yīng)用能否抵抗中間人攻擊來確認(rèn)ssl調(diào)用的正確性。靜態(tài)分析過程中,通過控制流、數(shù)據(jù)流分析技術(shù)構(gòu)建可能存在ssl誤用漏洞的目標(biāo)組件集合與布局文件中所有的輸入文本值類型集合;動態(tài)運行過程中,通過adb命令安裝、啟動應(yīng)用后,循環(huán)發(fā)送“adbshellamstart-npackagename/targetactivity”命令跳轉(zhuǎn)到指定的目標(biāo)activity組件并窮盡遍歷該activity組件的ui控件,同時開啟mimt代理(burpsuiteproxy)監(jiān)控所有https流量并且嘗試去發(fā)起一個mimt攻擊,記錄攻擊結(jié)果。該系統(tǒng)側(cè)重分析安卓應(yīng)用ssl安全性,由于直接跳轉(zhuǎn)到指定activity組件,缺乏一定的上下文信息導(dǎo)致一部分的activity組件跳轉(zhuǎn)失敗。
綜上所述,目前關(guān)于安卓應(yīng)用網(wǎng)絡(luò)通信過程中隱私泄漏的檢測分別從http和https展開,已有的解決方案均能在一定程度上檢測。但從實施的角度來看,已有的解決方案依賴于修改安卓系統(tǒng)或安卓應(yīng)用程序結(jié)構(gòu);動態(tài)分析依賴于靜態(tài)反編譯技術(shù)指導(dǎo);不能有效檢測加固應(yīng)用。因此,從實施性和通用性角度來看,已有的解決方案有待改進。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的以上缺陷或改進需求,本發(fā)明的目的在于提供了一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測方法及系統(tǒng),由此解決現(xiàn)有技術(shù)中的隱私泄漏檢測在實施性和通用性方面存在的局限性。
為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測方法,包括:
s1、爬取待測安卓應(yīng)用,構(gòu)建待測應(yīng)用集合;
s2、構(gòu)建中間人攻擊服務(wù)器,并初始化各測試機環(huán)境,配置多測試機分布式運行調(diào)度系統(tǒng);
s3、分析所述待測應(yīng)用集合中的apk文件,獲取與所述apk文件對應(yīng)的應(yīng)用程序的包名和主activity信息;
s4、根據(jù)所述包名和主activity信息,安裝與所述apk文件對應(yīng)的應(yīng)用程序,并基于ui自動化遍歷框架驅(qū)動所述應(yīng)用程序運行;
s5、分析burpsuite生成的日志文件,獲取存在ssl中間人攻擊的應(yīng)用集合;
s6、對收集的當(dāng)前應(yīng)用程序運行過程中產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包文件進行分析,結(jié)合所述存在ssl中間人攻擊的應(yīng)用集合識別所述網(wǎng)絡(luò)數(shù)據(jù)包文件中的隱私泄漏類型。
優(yōu)選地,步驟s1具體包括以下子步驟:
s1.1、選取m個目標(biāo)應(yīng)用市場,分析各目標(biāo)應(yīng)用市場按照類別劃分的列表頁url特征、詳細應(yīng)用頁面url特征、應(yīng)用下載url特征,其中,m為正整數(shù);
s1.2、分析所述列表頁url特征、所述詳細應(yīng)用頁面url特征以及所述應(yīng)用下載url特征,基于id或包名探測方式構(gòu)建http請求,下載各目標(biāo)應(yīng)用市場中各類別的n個待測安卓應(yīng)用,其中,n為正整數(shù);
s1.3、將所述n個待測安卓應(yīng)用的apk文件采用fastdfs文件框架分布式存儲到不同的服務(wù)器上,并將安卓應(yīng)用相關(guān)信息存儲到數(shù)據(jù)庫中。
優(yōu)選地,步驟s3具體包括以下子步驟:
s3.1、基于androidsdk自帶的aapt工具分析各待測安卓應(yīng)用;
s3.2、提取待測安卓應(yīng)用的權(quán)限集合,判斷是否存在聯(lián)網(wǎng)權(quán)限;
s3.3、若存在聯(lián)網(wǎng)權(quán)限,則提取待測安卓應(yīng)用的包名與主activity名。
優(yōu)選地,步驟s4具體包括以下子步驟:
s4.1、基于accessibilityservice提供的接口獲取當(dāng)前待測安卓應(yīng)用運行過程中的gui界面信息,并根據(jù)預(yù)先制定的gui界面分類規(guī)則識別與所述gui界面信息對應(yīng)的gui界面類型;
s4.2、采用與所述gui界面類型對應(yīng)的控件集處理方式,并將最終處理后的可操作控件事件投入任務(wù)列表;
s4.3、采用啟發(fā)式深度優(yōu)先遍歷算法,對所述任務(wù)列表中的控件事件進行用戶動作模擬,并判斷當(dāng)前gui界面狀態(tài)是否發(fā)生變化,若發(fā)生變化,則跳轉(zhuǎn)執(zhí)行步驟s4.1;若沒有變化,則判斷所述任務(wù)列表是否為空,若為空,表示當(dāng)前gui界面處理完畢,返回到上一層界面繼續(xù)任務(wù)列表中的控件事件,若不為空,繼續(xù)執(zhí)行所述任務(wù)列表中的控件事件。
優(yōu)選地,步驟s5具體包括以下子步驟:
s5.1、實時監(jiān)控ssllistener插件生成的日志信息,提取burpsuite監(jiān)聽端口、https請求成功的網(wǎng)絡(luò)數(shù)據(jù)包的時間戳與主機域名信息;
s5.2、根據(jù)所述監(jiān)聽端口、所述時間戳和所述主機域名信息,采用模糊正則匹配的方式獲取目標(biāo)待測安卓應(yīng)用包名,作為存在ssl中間人攻擊的應(yīng)用集合,其中,所述目標(biāo)待測安卓應(yīng)用包名對應(yīng)的應(yīng)用存在中間人攻擊風(fēng)險。
優(yōu)選地,步驟s6具體包括以下子步驟:
s6.1、采用jnetpcap.jar包對生成的網(wǎng)絡(luò)數(shù)據(jù)包文件進行解析,構(gòu)建http請求數(shù)據(jù)包,以josn的數(shù)據(jù)格式保存;
s6.2、采用詞袋模型對json格式的網(wǎng)絡(luò)數(shù)據(jù)包進行預(yù)處理;
s6.3、采用tf-idf方法進行特征提取,過濾掉停用詞和低頻詞;
s6.4、根據(jù)選擇的特征、特征出現(xiàn)的詞頻以及隱私泄漏標(biāo)簽,生成arff文件,并由訓(xùn)練好的分類器對各待測安卓應(yīng)用的網(wǎng)絡(luò)數(shù)據(jù)包進行預(yù)測是否存在隱私泄漏;
s6.5、針對存在隱私泄漏的待測安卓應(yīng)用,采用基于模糊正則匹配的方式判斷隱私泄漏類型。
優(yōu)選地,所述預(yù)先制定的gui界面分類規(guī)則包括:歡迎界面、列表界面、彈出框界面、輸入界面、詳細界面和其他界面。
按照本發(fā)明的另一方面,提供了一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測系統(tǒng),包括:
爬取模塊,用于爬取待測安卓應(yīng)用,構(gòu)建待測應(yīng)用集合;
初始化模塊,用于構(gòu)建中間人攻擊服務(wù)器,并初始化各測試機環(huán)境,配置多測試機分布式運行調(diào)度系統(tǒng);
第一分析模塊,用于分析所述待測應(yīng)用集合中的apk文件,獲取與所述apk文件對應(yīng)的應(yīng)用程序的包名和主activity信息;
應(yīng)用程序安裝模塊,用于根據(jù)所述包名和主activity信息,安裝與所述apk文件對應(yīng)的應(yīng)用程序,并基于ui自動化遍歷框架驅(qū)動所述應(yīng)用程序運行;
第二分析模塊,用于分析burpsuite生成的日志文件,獲取存在ssl中間人攻擊的應(yīng)用集合;
判斷模塊,用于對收集的當(dāng)前應(yīng)用程序運行過程中產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包文件進行分析,結(jié)合所述存在ssl中間人攻擊的應(yīng)用集合識別所述網(wǎng)絡(luò)數(shù)據(jù)包文件中的隱私泄漏類型。
總體而言,本發(fā)明方法與現(xiàn)有技術(shù)方案相比,能夠取得下列有益效果:
1、本發(fā)明從不安全的https和http明文傳輸兩方面分析,能夠更全面、更準(zhǔn)確的檢測安卓應(yīng)用在網(wǎng)絡(luò)通信過程中隱私泄露行為,使用方法靈活,全程自動化,不需要修改安卓系統(tǒng)和安卓應(yīng)用程序結(jié)構(gòu),同時不依賴于靜態(tài)分析指導(dǎo)應(yīng)用程序動態(tài)運行,對應(yīng)用市場批量檢測新上架應(yīng)用具有一定的意義。
2、本發(fā)明旨在動態(tài)驅(qū)動安卓應(yīng)用運行,實時進行攻擊測試來判斷是否存在ssl誤用漏洞,同時收集網(wǎng)絡(luò)數(shù)據(jù)包并采用機器學(xué)習(xí)算法進行隱私數(shù)據(jù)泄露判斷。
3、首次提出基于安卓應(yīng)用gui界面的類型進行控件集處理策略,并提出啟發(fā)式深度遍歷算法,描述了gui界面狀態(tài)、gui界面轉(zhuǎn)化以及gui節(jié)點樹的擴充過程,保證動態(tài)運行能夠觸發(fā)盡可能多的網(wǎng)絡(luò)交互事件。
4、不需要修改安卓系統(tǒng)或安卓應(yīng)用程序結(jié)構(gòu),自動化、大規(guī)模動態(tài)檢測安卓應(yīng)用網(wǎng)絡(luò)通信中的隱私泄漏問題,可作為應(yīng)用市場對新上架應(yīng)用的安全審計操作。
5、本發(fā)明全面考慮到https和http的安全問題,并對生成的網(wǎng)絡(luò)數(shù)據(jù)包進行分類。具有較高的準(zhǔn)確率和效率。
附圖說明
圖1為本發(fā)明實施例公開的一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測的整體架構(gòu)圖;
圖2為本發(fā)明實施例公開的一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測方法的流程示意圖;
圖3為本發(fā)明實施例公開的一種爬取待測安卓應(yīng)用的方法流程示意圖;
圖4為本發(fā)明實施例公開的一種ui自動化遍歷方法的流程示意圖;
圖5為本發(fā)明實施例公開的一種界面類型劃分示意圖;
圖6為本發(fā)明實施例公開的一種ui自動化遍歷方法的具體實現(xiàn)代碼示例圖;
圖7為本發(fā)明實施例公開的一種對網(wǎng)絡(luò)數(shù)據(jù)包文件分析的方法流程示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
以下首先就本發(fā)明所涉及的技術(shù)術(shù)語進行解釋和說明:
安卓:由google主導(dǎo)開發(fā)的基于linux內(nèi)核的移動操作系統(tǒng),以其開放的特性在移動操作系統(tǒng)市場上擁有較高的占有率。
安卓應(yīng)用程序:運行在安卓系統(tǒng)中的應(yīng)用程序,主要由java語言開發(fā)。
隱私:用戶存儲在系統(tǒng)中的個人數(shù)據(jù),在移動設(shè)備中主要包括聯(lián)系人信息、通話記錄、地理位置信息和設(shè)備相關(guān)信息等。
activity:安卓應(yīng)用程序四大組件之一,主要負責(zé)顯示內(nèi)容、與用戶交互。在應(yīng)用程序中,activity通常表現(xiàn)為一個或者多個界面,用于顯示一些控件并監(jiān)聽用戶的事件做出響應(yīng),activity之間可以通過intent機制進行通信。
gui界面:圖形用戶界面,允許用戶通過點擊圖標(biāo)、滑動屏幕或通過軟鍵盤輸入文本,以實現(xiàn)界面跳轉(zhuǎn)或啟動相應(yīng)服務(wù)。
控件:安卓應(yīng)用gui界面上顯示的圖標(biāo),比如按鈕、文本框、輸入框、圖片等。
ui遍歷:一種用于軟件開發(fā)測試中檢測軟件性能與兼容性的方法,通過模擬用戶點擊界面元素實現(xiàn)gui界面遍歷。
gui界面狀態(tài):標(biāo)識運行過程中的每個gui界面,由二元組<gui界面,activity組件名稱>表示,其中activity組件名稱表示該gui界面所屬的activity,由該activity的全限定名表示。
任務(wù):由二元組<gui界面狀態(tài)、控件事件>表示,表明該控件事件僅在該gui界面狀態(tài)下執(zhí)行。
gui節(jié)點:由二元組<gui界面狀態(tài)、任務(wù)列表>構(gòu)成,表示遍歷策略中的節(jié)點信息,每個節(jié)點保存了從根節(jié)點到當(dāng)前節(jié)點執(zhí)行的任務(wù)序列。
gui界面轉(zhuǎn)換:由二元組<任務(wù),gui節(jié)點>表示,用于描述遍歷策略中節(jié)點的跳轉(zhuǎn)關(guān)系,其中任務(wù)是父節(jié)點任務(wù)列表中的一個任務(wù),gui節(jié)點是執(zhí)行該任務(wù)后跳轉(zhuǎn)到的目的節(jié)點。
以下結(jié)合具體實施例和附圖對本發(fā)明所提供的安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄露檢測方法做進一步說明。
安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏產(chǎn)生的主要原因是不安全的https傳輸(側(cè)重指ssl誤用漏洞)和http明文傳輸隱私數(shù)據(jù)。本發(fā)明提出一種自動化的、大規(guī)模安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測框架。它提出了針對不同的gui界面類型的控件集處理策略,設(shè)計出啟發(fā)式的深度遍歷算法驅(qū)動應(yīng)用運行,并收集產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包,結(jié)合機器學(xué)習(xí)分類技術(shù)判斷網(wǎng)絡(luò)數(shù)據(jù)包中的隱私泄漏。
如圖1所示為本發(fā)明實施例公開的一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測的整體架構(gòu)圖。從圖1可以看出,本發(fā)明的主要工作集中在以下三個部分:首先對待測應(yīng)用分析,提取應(yīng)用包名和主activity信息啟動應(yīng)用運行,運行過程中根據(jù)控件特征識別gui界面類型進行控件集處理生成任務(wù)列表,并按照深度優(yōu)先的策略實現(xiàn)gui界面的跳轉(zhuǎn),觸發(fā)盡可能多的網(wǎng)絡(luò)請求;其次,對正在運行的應(yīng)用,實時收集產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包,并對https網(wǎng)絡(luò)請求進行中間人攻擊測試;最后,采用機器學(xué)習(xí)的算法對收集到的網(wǎng)絡(luò)數(shù)據(jù)包分析,采用關(guān)聯(lián)分析技術(shù)對攻擊測試的日志進行分析。
如圖2所示為本發(fā)明實施例公開的一種安卓應(yīng)用網(wǎng)絡(luò)通信中隱私泄漏檢測方法的流程示意圖;在圖2所示的方法中包括以下步驟:
s1、爬取待測安卓應(yīng)用,構(gòu)建待測應(yīng)用集合;
s2、構(gòu)建中間人攻擊服務(wù)器,并初始化各測試機環(huán)境,配置多測試機分布式運行調(diào)度系統(tǒng);
s3、分析待測應(yīng)用集合中的apk文件,獲取與apk文件對應(yīng)的應(yīng)用程序的包名和主activity信息;
s4、根據(jù)包名和主activity信息,安裝與apk文件對應(yīng)的應(yīng)用程序,并基于ui自動化遍歷框架驅(qū)動應(yīng)用程序運行;
s5、分析burpsuite生成的日志文件,獲取存在ssl中間人攻擊的應(yīng)用集合;
s6、對收集的當(dāng)前應(yīng)用程序運行過程中產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包文件進行分析,結(jié)合上述存在ssl中間人攻擊的應(yīng)用集合識別網(wǎng)絡(luò)數(shù)據(jù)包文件中的隱私泄漏類型。
作為一種可選的實施方式,如圖3所示為本發(fā)明實施例公開的一種爬取待測安卓應(yīng)用的方法流程示意圖,具體包括以下子步驟:
s1.1、選取m個目標(biāo)應(yīng)用市場,分析各目標(biāo)應(yīng)用市場按照類別劃分的列表頁url特征、詳細應(yīng)用頁面url特征、應(yīng)用下載url特征,其中,m為正整數(shù),m優(yōu)選取值為10;
例如,騰訊應(yīng)用寶市場類別列表形式為:
http://sj.qq.com/myapp/category.htm?orgame=1&categoryid=122;
詳細應(yīng)用頁面url特征為:
http://sj.qq.com/myapp/detail.htm?apkname=com.jingdong.app.mall;
應(yīng)用下載url特征為:
http://imtt.dd.qq.com/16891/e00d69d73077fc37744e7856331d071a.apk?fsname=com.jingdong.app.mall_5.7.0_42153.apk&csr=4d5s。
s1.2、分析上述列表頁url特征、上述詳細應(yīng)用頁面url特征以及上述應(yīng)用下載url特征,基于id或包名探測方式構(gòu)建http請求,下載各目標(biāo)應(yīng)用市場中各類別的n個待測安卓應(yīng)用,其中,n為正整數(shù),n優(yōu)選取值為100;
例如,根據(jù)應(yīng)用市場類別列表url的變化特點,以id自增或包名的方式自動化發(fā)送請求,例如騰訊應(yīng)用寶市場修改“categoryid”范圍“110-130”都能獲取到具體類別頁面,然后針對具體的列表頁面和詳細應(yīng)用頁面,采用xpath定位進行頁面解析,獲取應(yīng)用基本信息和下載鏈接。
s1.3、將所述n個待測安卓應(yīng)用的apk文件采用fastdfs文件框架分布式存儲到不同的服務(wù)器上,并將安卓應(yīng)用相關(guān)信息存儲到數(shù)據(jù)庫中。其中,安卓相關(guān)信息可以包括市場名、應(yīng)用名、下載量、存儲路徑等信息。
作為一種可選的實施方式,步驟s2具體包括以下子步驟:
s2.1、在pc機端安裝burpsuite代理工具,并基于burpsuite提供的擴展api實現(xiàn)ssllistener插件,監(jiān)聽https請求的狀態(tài),實時記錄攻擊測試結(jié)果;
s2.2、分別在測試設(shè)備上分別安裝burpsuite自簽名的證書,并手工設(shè)置proxy代理,代理ip為安裝burpsuite工具的pc機的靜態(tài)ip,代理端口為依次從8080遞增;
s2.3、基于rmi遠程方法調(diào)用實現(xiàn)多臺測試設(shè)備管理,包括測試設(shè)備狀態(tài)管理、安卓應(yīng)用分發(fā)、安卓應(yīng)用安裝、安卓應(yīng)用運行等。
作為一種可選的實施方式,步驟s3具體包括以下子步驟:
s3.1、基于androidsdk自帶的aapt(androidassetpackagingtool)工具分析各待測安卓應(yīng)用;
具體而言,安卓應(yīng)用采用aapt工具將資源文件與清單文件(manifest.xml)打包到應(yīng)用程序apk文件中。同樣的,通過執(zhí)行“aaptdumpbadgingmanifest.xml”命令可從應(yīng)用程序apk文件獲取清單文件。
s3.2、提取待測安卓應(yīng)用的權(quán)限集合,判斷是否存在聯(lián)網(wǎng)權(quán)限;
具體而言,提取所有<user-permission>節(jié)點信息,查找“android.permission.internet”字符串,若存在,說明申請了聯(lián)網(wǎng)權(quán)限。
s3.3、若存在聯(lián)網(wǎng)權(quán)限,則提取待測安卓應(yīng)用的包名與主activity名。
具體而言,提取清單文件中key為“package”的value值以及包含“android.intent.action.main”和“android.intent.category.launcher”值的<activity>節(jié)點的名稱信息。
作為一種可選的實施方式,如圖4所示為本發(fā)明實施例公開的一種ui自動化遍歷方法的流程示意圖,具體包括以下子步驟:
s4.1、基于accessibilityservice提供的接口獲取當(dāng)前待測安卓應(yīng)用運行過程中的gui界面信息,并根據(jù)預(yù)先制定的gui界面分類規(guī)則識別與所述gui界面信息對應(yīng)的gui界面類型;
其中,預(yù)先制定的gui界面分類規(guī)則可以采用以下方式實現(xiàn):通過分析多個(如500個)應(yīng)用的gui界面截圖,根據(jù)gui界面的大小、控件特征將gui界面類型分為歡迎界面、列表界面、彈出框界面、輸入界面、詳細界面和其他界面六大類,分類規(guī)則如圖5所示。當(dāng)gui界面的面積小于手機屏幕面積時,gui界面類型為彈出框界面;當(dāng)gui界面的面積等于手機屏幕面積時,若gui界面中存在imageview控件且占據(jù)整個手機屏幕,則為歡迎界面;若gui界面中存在edittext、checkbox和radiobutton控件時,則為輸入界面;若gui界面中存在相同子控件樹或者listview等列表控件,則為列表界面;若gui界面中存在大量的圖片、文字或者webview控件,則為詳細界面;若不匹配以上的判斷規(guī)則,則為其他界面。
其中,appium移動應(yīng)用測試框架android版底層實現(xiàn)了androidsdk自帶的原生測試工具uiautomator,uiautomator內(nèi)部封裝了獲取當(dāng)前界面控件樹的accessibilityservice服務(wù)和執(zhí)行界面控件操作的accessibilityevent服務(wù),通過appium提供的“getpagesource”函數(shù)獲取當(dāng)前界面的控件所有信息。根據(jù)制定的界面分類規(guī)則,對當(dāng)前界面進行分類。
s4.2、采用與所述gui界面類型對應(yīng)的控件集處理方式,如控件裁剪、控件事件組合和輸入控件的啟發(fā)式輸入,并將最終處理后的可操作控件事件投入任務(wù)列表;
具體而言,當(dāng)前界面狀態(tài)用二元組<activity組件,gui界面>標(biāo)示,其中“gui界面”包括所有控件信息。根據(jù)gui界面的大小、特定控件特征將gui界面劃分為歡迎界面、列表界面、彈出框界面、輸入框界面、詳細界面和其他界面六大類?;诓煌慕缑骖愋徒o出如下的控件事件序列生成規(guī)則:
(1)當(dāng)識別的界面為輸入界面時,在控件樹搜索textview、radiobutton和checkbox等控件葉子節(jié)點,獲取該節(jié)點的text、content-desc和resource-id等信息,從而識別出該節(jié)點需要輸入的信息類型,然后根據(jù)已有的輸入庫進行匹配,生成<控件1,edittext,“手機號碼”>控件事件;同時獲取該控件節(jié)點的兄弟節(jié)點、父節(jié)點或父節(jié)點的兄弟節(jié)點,結(jié)合控件的上下文信息匹配出對應(yīng)的按鈕節(jié)點,生成<控件2,“點擊”,“”>控件事件,并將該兩個控件事件封裝成組合事件;
(2)當(dāng)識別的gui界面為列表界面時,對控件樹中包含可滾動的列表控件(如listview,recyclerview或expandablelistview)節(jié)點或者相同子控件樹節(jié)點的路徑生成路徑摘要信息。對相同路徑摘要信息的集合,由于其觸發(fā)的是同一個事件處理監(jiān)聽器,故進行過濾處理,只對列表控件節(jié)點或相同子控件樹下的多個子節(jié)點中的一個節(jié)點下的控件事件進行操作處理;
(3)當(dāng)識別的界面為彈出框時,對界面的提示信息進行簡單文本匹配,若提示為更新下載信息時,選擇“取消”等拒絕按鈕;對于廣告彈出框,選擇“關(guān)閉”等按鈕;對于其他系統(tǒng)提示框,依照可操作控件在控件樹的層次遍歷順序生成控件事件序列;
(4)當(dāng)識別的界面為詳細界面時,搜索界面上“返回”標(biāo)志控件或添加返回事件碼操作,直接返回到上一層gui界面,對該界面的其他控件不進行處理;
(5)當(dāng)識別的界面為歡迎界面時,對界面進行滑動操作(左滑,右滑,上滑和下滑),使頁面跳轉(zhuǎn)到真正的起始界面;
(6)當(dāng)識別的界面為其他界面時,依照可操作控件在控件樹的層次遍歷順序生成控件事件序列;
(7)針對每個界面上的不同控件事件處理優(yōu)先級:輸入事件>點擊事件>滑動事件;
(8)針對每個界面上的同種控件事件處理優(yōu)先級:遵守gui控件樹層次遍歷序列前后順序。
s4.3、采用啟發(fā)式深度優(yōu)先遍歷算法,對所述任務(wù)列表中的控件事件進行用戶動作模擬,并判斷當(dāng)前gui界面狀態(tài)是否發(fā)生變化,若發(fā)生變化,則跳轉(zhuǎn)執(zhí)行步驟s4.1;若沒有變化,則判斷所述任務(wù)列表是否為空,若為空,表示當(dāng)前gui界面處理完畢,返回到上一層界面繼續(xù)任務(wù)列表中的控件事件,若不為空,繼續(xù)執(zhí)行所述任務(wù)列表中的控件事件。
具體而言,應(yīng)用程序從主activity開始遍歷,從任務(wù)列表中執(zhí)行一個任務(wù),界面將會發(fā)生狀態(tài)改變,如界面跳轉(zhuǎn)、界面刷新、彈出對話框或菜單欄等,根據(jù)gui界面狀態(tài)判斷是否達到一個新的界面還是跳回到之前已經(jīng)遍歷過的界面。若為新界面,則重復(fù)進行界面識別、任務(wù)列表生成和控件事件模擬三個步驟;若是已遍歷過的界面,判斷該界面的任務(wù)列表是否處理完畢,若遍歷完畢返回到其上一層界面,若沒有則觸發(fā)剩下的任務(wù)列表中的任務(wù)。循環(huán)往復(fù),從而不斷地對應(yīng)用的界面方向矢量圖進行動態(tài)擴充,直到主activity任務(wù)列表為空遍歷結(jié)束。啟發(fā)式深度優(yōu)先遍歷算法的具體代碼如圖6所示。
作為一種可選的實施方式,步驟s5具體包括以下子步驟:
s5.1、實時監(jiān)控ssllistener插件生成的日志信息,提取burpsuite監(jiān)聽端口、https請求成功的網(wǎng)絡(luò)數(shù)據(jù)包的時間戳與主機域名信息;
s5.2、根據(jù)所述監(jiān)聽端口、所述時間戳和所述主機域名信息,采用模糊正則匹配的方式獲取目標(biāo)待測安卓應(yīng)用包名,作為存在ssl中間人攻擊的應(yīng)用集合,其中,所述目標(biāo)待測安卓應(yīng)用包名對應(yīng)的應(yīng)用存在中間人攻擊風(fēng)險。
作為一種可選的實施方式,如圖7所示為本發(fā)明實施例公開的一種對網(wǎng)絡(luò)數(shù)據(jù)包文件分析的方法流程示意圖,具體包括以下子步驟:
s6.1、采用jnetpcap.jar包對生成的網(wǎng)絡(luò)數(shù)據(jù)包文件進行解析,構(gòu)建http請求數(shù)據(jù)包,以josn(javascriptobjectnotation)的數(shù)據(jù)格式保存;
s6.2、采用詞袋模型對json格式的網(wǎng)絡(luò)數(shù)據(jù)包進行預(yù)處理;
具體而言,即根據(jù)“:”、“{}”、“”、“->”等作為分割符,將一連串的字符串轉(zhuǎn)化為一個個包含最小含義的單詞,如“header”、“http”、“content-type”、“packagename”、“host”等。
s6.3、采用tf-idf方法進行特征提取,過濾掉停用詞和低頻詞;
具體而言,即降低特征的維度,針對那些對分類作用不大的詞去掉,如低頻詞(出現(xiàn)的次數(shù)小于5)以及“header”、“content-type”、“url”等停用詞。
s6.4、根據(jù)選擇的特征、特征出現(xiàn)的詞頻以及隱私泄漏標(biāo)簽,生成arff文件,并由訓(xùn)練好的分類器對各待測安卓應(yīng)用的網(wǎng)絡(luò)數(shù)據(jù)包進行預(yù)測是否存在隱私泄漏;
其中,分類器算法采用工具weka中的c4.5決策樹算法。
s6.5、針對存在隱私泄漏的待測安卓應(yīng)用,采用基于模糊正則匹配的方式判斷隱私泄漏類型。
具體而言,如國際移動設(shè)備標(biāo)識(internationalmobileequipmentidentity,imei)、手機號碼、郵編、性別等信息采用模糊的正則表達式進行匹配,從而判斷具體的隱私泄漏類型。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。