一種應(yīng)用程序安全性測(cè)試方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種應(yīng)用程序安全性測(cè)試方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]不可否認(rèn),手機(jī)應(yīng)用無(wú)論是在個(gè)人領(lǐng)域還是企業(yè)應(yīng)用領(lǐng)域都變得舉足輕重,而其中,安卓(Android)的份額最大。但是Android應(yīng)用一直以來(lái)都有一個(gè)為用戶所垢病的問(wèn)題,就是其安全性,因而構(gòu)建一款成功的Android應(yīng)用程序,安全的重要性不言而喻。
[0003]針對(duì)Android應(yīng)用程序的安全性測(cè)試現(xiàn)有實(shí)現(xiàn)中采用靜態(tài)特征代碼檢測(cè)方案,SP反編譯安卓安裝包(AndroidPackage,APk)。
[0004]由于靜態(tài)掃描出來(lái)的代碼在實(shí)際運(yùn)行時(shí)并不一定被執(zhí)行,因此會(huì)產(chǎn)生漏報(bào)和誤報(bào);并且靜態(tài)特征代碼檢測(cè)依賴于反編譯APk,而市面上很多經(jīng)過(guò)加殼或特殊處理的APk無(wú)法被反編譯,因此,該種測(cè)試方式也存在很大的局限性。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本申請(qǐng)?zhí)峁┮环N應(yīng)用程序安全性測(cè)試方法、裝置和系統(tǒng),以提高應(yīng)用程序安全性測(cè)試的準(zhǔn)確性。
[0006]為解決上述技術(shù)問(wèn)題,本申請(qǐng)的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]—種應(yīng)用程序安全性測(cè)試方法,應(yīng)用于安裝應(yīng)用程序的終端設(shè)備上,該方法包括:
[0008]該終端設(shè)備安裝Hook程序,所述Hook程序配置需監(jiān)控的調(diào)用函數(shù);
[0009]在運(yùn)行應(yīng)用程序的同時(shí),運(yùn)行Hook程序;
[0010]當(dāng)在應(yīng)用程序運(yùn)行過(guò)程中,通過(guò)Hook程序監(jiān)控到與配置的調(diào)用函數(shù)匹配的調(diào)用函數(shù)時(shí),記錄該調(diào)用函數(shù)的調(diào)用信息;該調(diào)用信息包括:輸入?yún)?shù),和/或返回值;
[0011]當(dāng)遍歷完所述應(yīng)用程序中的所有控件時(shí),確定在記錄的調(diào)用函數(shù)的調(diào)用信息中是否存在與配置的匹配參數(shù)匹配的信息,如果是,確定該應(yīng)用程序存在安全漏洞;否則,確定該應(yīng)用程序安全。
[0012]—種應(yīng)用程序安全性測(cè)試方法,應(yīng)用于包括測(cè)試設(shè)備和被測(cè)設(shè)備的系統(tǒng)中,
[0013]所述被測(cè)設(shè)備安裝應(yīng)用程序和Hook程序,所述Hook程序配置需監(jiān)控的調(diào)用函數(shù);在運(yùn)行應(yīng)用程序的同時(shí),運(yùn)行Hook程序;當(dāng)在應(yīng)用程序運(yùn)行過(guò)程中,通過(guò)Hook程序監(jiān)控到與配置的調(diào)用函數(shù)匹配的調(diào)用函數(shù)時(shí),記錄該調(diào)用函數(shù)的調(diào)用信息,并發(fā)送給所述測(cè)試設(shè)備;直到遍歷完所述應(yīng)用程序中的所有控件;該調(diào)用信息包括:輸入?yún)?shù),和/或返回值;
[0014]所述測(cè)試設(shè)備接收并存儲(chǔ)所述被測(cè)設(shè)備發(fā)送的調(diào)用函數(shù)的調(diào)用信息;當(dāng)所述被測(cè)設(shè)備遍歷完所述應(yīng)用程序中的所有控件時(shí),確定在存儲(chǔ)的調(diào)用函數(shù)的調(diào)用信息中是否存在與配置的匹配參數(shù)匹配的信息,如果是,確定該應(yīng)用程序存在安全漏洞;否則,確定該應(yīng)用程序安全。
[0015]—種應(yīng)用程序安全性測(cè)試裝置,應(yīng)用于安裝應(yīng)用程序的終端設(shè)備上,該裝置包括:安裝單元、運(yùn)行單元、監(jiān)控單元、記錄單元和確定單元;
[0016]所述安裝單元,用于安裝Hook程序,所述Hook程序配置需監(jiān)控的調(diào)用函數(shù);
[0017]所述運(yùn)行單元,用于在運(yùn)行安裝的應(yīng)用程序的同時(shí),運(yùn)行所述安裝單元安裝的Hook程序;
[0018]所述監(jiān)控單元,用于所述運(yùn)行單元運(yùn)行應(yīng)用程序過(guò)程中,通過(guò)Hook程序監(jiān)控配置的調(diào)用函數(shù);
[0019]所述記錄單元,用于當(dāng)所述監(jiān)控單元通過(guò)Hook程序監(jiān)控到與配置的調(diào)用函數(shù)匹配的調(diào)用函數(shù)時(shí),記錄該調(diào)用函數(shù)的調(diào)用信息;該調(diào)用信息包括:輸入?yún)?shù),和/或返回值;
[0020]所述確定單元,用于當(dāng)所述運(yùn)行單元遍歷完所述應(yīng)用程序中的所有控件時(shí),確定在記錄的調(diào)用函數(shù)的調(diào)用信息中是否存在與配置的匹配參數(shù)匹配的信息,如果是,確定該應(yīng)用程序存在安全漏洞;否則,確定該應(yīng)用程序安全。
[0021]一種應(yīng)用程序安全性測(cè)試系統(tǒng),該系統(tǒng)包括:測(cè)試設(shè)備和被測(cè)設(shè)備;
[0022]所述被測(cè)設(shè)備,用于安裝應(yīng)用程序和Hook程序,所述Hook程序配置需監(jiān)控的調(diào)用函數(shù);在運(yùn)行應(yīng)用程序的同時(shí),運(yùn)行Hook程序;當(dāng)在應(yīng)用程序運(yùn)行過(guò)程中,通過(guò)Hook程序監(jiān)控到與配置的調(diào)用函數(shù)匹配的調(diào)用函數(shù)時(shí),記錄該調(diào)用函數(shù)的調(diào)用信息,并發(fā)送給所述測(cè)試設(shè)備;直到遍歷完所述應(yīng)用程序中的所有控件;該調(diào)用信息包括:輸入?yún)?shù),和/或返回值;
[0023]所述測(cè)試設(shè)備,用于接收并存儲(chǔ)所述被測(cè)設(shè)備發(fā)送的調(diào)用函數(shù)的調(diào)用信息;當(dāng)所述被測(cè)設(shè)備遍歷完所述應(yīng)用程序中的所有控件時(shí),確定在存儲(chǔ)的調(diào)用函數(shù)的調(diào)用信息中是否存在與配置的匹配參數(shù)匹配的信息,如果是,確定該應(yīng)用程序存在安全漏洞;否則,確定該應(yīng)用程序安全。
[0024]由上面的技術(shù)方案可知,本申請(qǐng)中通過(guò)配置的Hook程序,在應(yīng)用程序運(yùn)行時(shí),記錄Hook程序中配置的調(diào)用函數(shù)的調(diào)用信息,通過(guò)記錄的調(diào)用信息確定該應(yīng)用程序是否存在安全漏洞。通過(guò)該技術(shù)方案能夠提高應(yīng)用程序安全性測(cè)試的準(zhǔn)確性。
【附圖說(shuō)明】
[0025]圖1為本申請(qǐng)實(shí)施例一中應(yīng)用程序安全性測(cè)試流程示意圖;
[0026]圖2為本申請(qǐng)實(shí)施例一中自動(dòng)化測(cè)試流程示意圖;
[0027]圖3為本申請(qǐng)實(shí)施例一中UI上的控件示意圖;
[0028]圖4為已生成的UI路徑示意圖;
[0029]圖5為本申請(qǐng)實(shí)施例二中應(yīng)用程序安全性測(cè)試流程示意圖;
[0030]圖6為本申請(qǐng)實(shí)施例中安全性測(cè)試裝置結(jié)構(gòu)示意圖;
[0031]圖7為本申請(qǐng)具體實(shí)施例中應(yīng)用程序安全性測(cè)試的終端設(shè)備的硬件架構(gòu)組成示意圖;
[0032]圖8為本申請(qǐng)實(shí)施例中應(yīng)用程序安全性測(cè)試系統(tǒng)示意圖。
【具體實(shí)施方式】
[0033]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖并舉實(shí)施例,對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
[0034]本申請(qǐng)實(shí)施例中提供一種應(yīng)用程序安全性測(cè)試方案,通過(guò)配置的鉤子(Hook)程序,在應(yīng)用程序運(yùn)行時(shí),記錄Hook程序中配置的調(diào)用函數(shù)的調(diào)用信息,通過(guò)記錄的調(diào)用信息確定該應(yīng)用程序是否存在安全漏洞。通過(guò)該技術(shù)方案能夠提高應(yīng)用程序安全性測(cè)試的準(zhǔn)確性。
[0035]在具體實(shí)現(xiàn)時(shí),需預(yù)先編寫Hook程序,在Hook程序中配置需監(jiān)控的調(diào)用函數(shù),具體配置哪些調(diào)用函數(shù),根據(jù)實(shí)際要測(cè)試的應(yīng)用程序確定,即測(cè)試一應(yīng)用程序的安全性時(shí),需要監(jiān)控哪些調(diào)用函數(shù)來(lái)確定應(yīng)用程序是否存在漏洞,則配置哪些調(diào)用函數(shù)。
[0036]如,針對(duì)a n d r ο i d應(yīng)用程序,配置的調(diào)用函數(shù)如:org.apache.http.conn, ssl.SSLSocketFactory類setHostnameVerif ier函數(shù)等。
[0037]在終端設(shè)備上安裝待測(cè)試的應(yīng)用程序,以及配編寫的Hook程序。本申請(qǐng)實(shí)施例中,可以僅使用終端設(shè)備完成應(yīng)用程序的安全性測(cè)試,也可以使用測(cè)試設(shè)備配合終端設(shè)備完成應(yīng)用程序的安全測(cè)試,此時(shí),終端設(shè)備可以被稱為被測(cè)設(shè)備。這里的終端設(shè)備為應(yīng)用程序安裝使用的設(shè)備,如手機(jī)、平板等;測(cè)試設(shè)備可以為有計(jì)算處理能力的設(shè)備,如PC等。
[0038]下文通過(guò)多個(gè)實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)?zhí)峁┑膽?yīng)用程序安全性測(cè)試方案。
[0039]實(shí)施例一
[0040]本實(shí)施例以僅使用終端設(shè)備完成應(yīng)用程序安全性測(cè)試為例。
[0041]參見(jiàn)圖1,圖1為本申請(qǐng)實(shí)施例一中應(yīng)用程序安全性測(cè)試流程示意圖。具體步驟為:
[0042]步驟101,終端設(shè)備在運(yùn)行應(yīng)用程序的同時(shí),運(yùn)行Hook程序。
[0043]本步驟中終端設(shè)備可以通過(guò)自動(dòng)化測(cè)試、手工測(cè)試,或使用該應(yīng)用程序使該應(yīng)用程序運(yùn)行
[0044]無(wú)論在使用應(yīng)用程序還是在測(cè)試應(yīng)用程序,都需遍歷整個(gè)應(yīng)用程序中的所有控件,即所對(duì)應(yīng)的所有用戶界面(User Interface,UI);當(dāng)然如果僅需要確定應(yīng)用程序中的某個(gè)部分是否存在安全漏洞,只運(yùn)行程序的某個(gè)部分即可。
[0045]當(dāng)對(duì)應(yīng)用程序進(jìn)行自動(dòng)化測(cè)試時(shí),可以使用現(xiàn)有實(shí)現(xiàn)中的各種自動(dòng)化測(cè)試方式。本申請(qǐng)實(shí)施例中為了簡(jiǎn)化測(cè)試中的遍歷的邏輯,提高遍歷效率,給出如下自動(dòng)化測(cè)試方案:
[0046]參見(jiàn)圖2,圖2為本申請(qǐng)實(shí)施例一中自動(dòng)化測(cè)試流程示意圖。具體步驟為:
[0047]步驟201,終端設(shè)備根據(jù)測(cè)試腳本運(yùn)行應(yīng)用程序,獲取所述應(yīng)用程序當(dāng)前運(yùn)行UI上控件的控件信息,并計(jì)算各控件的特征值。
[0048]測(cè)試腳本根據(jù)要測(cè)試的應(yīng)用程序預(yù)先編寫,測(cè)試腳本的具體編寫不作限制,只要在執(zhí)行測(cè)試腳本時(shí),能夠使待測(cè)試的應(yīng)用程序遍歷所需要測(cè)試的UI即可,如可以按照深度優(yōu)先的原則遍歷,也可以按照廣度優(yōu)先的原則遍歷。
[0049]終端設(shè)備獲取的UI上控件的控件信息包括:控件類型、位置、大小、文字、是否可點(diǎn)擊、是否禁止、資源ID等。
[0050]當(dāng)一個(gè)UI界面上存在多個(gè)控件,分別計(jì)算各控件的特征值,在計(jì)算各控件的特征值時(shí),可以根據(jù)各控件的控件信息按照預(yù)設(shè)規(guī)則計(jì)算特征值,如使用哈希、求平均等規(guī)則,使用計(jì)算出的特征值唯一標(biāo)識(shí)一個(gè)控件。
[0051]終端設(shè)備在計(jì)算UI上的控件的特征值時(shí),若任一控件對(duì)應(yīng)動(dòng)態(tài)生成的子控件,則在生成該控件的特征時(shí),不使用該控件的子控件的控件信息,且不生成子控件的特征值。
[0052]如存在控件ListView、GridView、Webview的UI,忽略掉其對(duì)應(yīng)的子控件。
[0053]參見(jiàn)圖3,圖3為本申請(qǐng)實(shí)施例一中UI上的控件示意圖。在圖3中控件ListView對(duì)應(yīng)7個(gè)子控件,在進(jìn)行UI上