欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

漏洞分析方法、裝置、終端以及存儲介質(zhì)與流程

文檔序號:11590294閱讀:269來源:國知局
漏洞分析方法、裝置、終端以及存儲介質(zhì)與流程

本申請涉及應(yīng)用測試技術(shù)領(lǐng)域,尤其涉及一種漏洞分析方法、裝置、終端以及存儲介質(zhì)。



背景技術(shù):

隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,終端中能夠?qū)崿F(xiàn)與服務(wù)器交互的應(yīng)用程序(也可以稱為客戶端程序)也日益增多。如果應(yīng)用程序存在安全漏洞,那么通過該應(yīng)用程序就可能實現(xiàn)對服務(wù)器的惡意攻擊,使得服務(wù)器中的數(shù)據(jù)存在安全威脅。

為了檢測應(yīng)用程序是否存在安全漏洞,就需要應(yīng)用程序進(jìn)行安全測試。如,對應(yīng)用程序進(jìn)行滲透測試,其中,滲透測試是通過模擬惡意黑客的攻擊方法,來評估計算機(jī)網(wǎng)絡(luò)系統(tǒng)安全的一種評估方法。然而,在應(yīng)用程序與服務(wù)器之間采用加密機(jī)制或者其他防篡改機(jī)制進(jìn)行數(shù)據(jù)交互的情況下,目前卻無法對應(yīng)用程序進(jìn)行安全測試,也就無法測試出應(yīng)用程序是否存在安全漏洞。



技術(shù)實現(xiàn)要素:

有鑒于此,本申請?zhí)峁┝艘环N漏洞分析方法、裝置、終端以及存儲介質(zhì),以對采用加密機(jī)制或者其他防篡改機(jī)制與服務(wù)器進(jìn)行交互的應(yīng)用程序進(jìn)行安全漏洞的測試。

為實現(xiàn)上述目的,一方面,本申請?zhí)峁┝艘环N漏洞分析方法包括:

確定待測試的目標(biāo)應(yīng)用中的至少一個加密函數(shù)以及至少一個解密函數(shù),所述加密函數(shù)為用于執(zhí)行數(shù)據(jù)加密的函數(shù),所述解密函數(shù)為用于執(zhí)行數(shù)據(jù)解密的函數(shù);

監(jiān)控到所述加密函數(shù)中輸入待加密的第一數(shù)據(jù),則截獲所述第一數(shù)據(jù);

監(jiān)控到所述解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲所述解密函數(shù)解密出的所述第二數(shù)據(jù);

基于所述第一數(shù)據(jù)以及第二數(shù)據(jù),對所述目標(biāo)應(yīng)用進(jìn)行漏洞分析。

另一方面,本申請還提供了一種漏洞分析裝置,包括:

函數(shù)確定單元,用于確定待測試的目標(biāo)應(yīng)用中的至少一個加密函數(shù)以及至少一個解密函數(shù),所述加密函數(shù)為用于執(zhí)行數(shù)據(jù)加密的函數(shù),所述解密函數(shù)為用于執(zhí)行數(shù)據(jù)解密的函數(shù);

第一監(jiān)控單元,用于監(jiān)控到所述加密函數(shù)中輸入待加密的第一數(shù)據(jù),則截獲所述第一數(shù)據(jù);

第二監(jiān)控單元,用于監(jiān)控到所述解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲所述解密函數(shù)解密出的所述第二數(shù)據(jù);

漏洞分析單元,用于基于所述第一數(shù)據(jù)以及第二數(shù)據(jù),對所述目標(biāo)應(yīng)用進(jìn)行漏洞分析。

另一方面,本申請還提供了一種終端,包括:

處理器以及存儲器,所述處理器以及存儲器通過通信總線相連;

其中,所述處理器,用于調(diào)用并執(zhí)行所述存儲器中存儲的程序;

所述存儲器,用于存儲程序,所述程序至少用于:

確定待測試的目標(biāo)應(yīng)用中的至少一個加密函數(shù)以及至少一個解密函數(shù),所述加密函數(shù)為用于執(zhí)行數(shù)據(jù)加密的函數(shù),所述解密函數(shù)為用于執(zhí)行數(shù)據(jù)解密的函數(shù);

監(jiān)控到所述加密函數(shù)中輸入待加密的第一數(shù)據(jù),則截獲所述第一數(shù)據(jù);

監(jiān)控到所述解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲所述解密函數(shù)解密出的所述第二數(shù)據(jù);

基于所述第一數(shù)據(jù)以及第二數(shù)據(jù),對所述目標(biāo)應(yīng)用進(jìn)行漏洞分析。

一種存儲介質(zhì),所述存儲介質(zhì)中存儲有計算機(jī)可執(zhí)行指令,所述計算機(jī)可執(zhí)行指令用于執(zhí)行以上所述的漏洞分析方法。

經(jīng)由上述的技術(shù)方案可知,通過對待測試的目標(biāo)應(yīng)用中用于進(jìn)行數(shù)據(jù)加密的加密函數(shù)以及用于進(jìn)行數(shù)據(jù)解密的解密函數(shù)進(jìn)行監(jiān)控,在監(jiān)控到加密函數(shù)中輸入待加密的第一數(shù)據(jù)時,截獲未經(jīng)加密的第一數(shù)據(jù),從而可以在目標(biāo)應(yīng)用將發(fā)送給服務(wù)器的數(shù)據(jù)進(jìn)行加密之前,截取到未經(jīng)加密的數(shù)據(jù);而且,在監(jiān)控到解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密之后,也截獲該解密函數(shù)解密出的第二數(shù)據(jù),這樣,在服務(wù)器為目標(biāo)應(yīng)用返回經(jīng)過加密的數(shù)據(jù)之后,也可以通過對該解密函數(shù)進(jìn)行監(jiān)控,獲取到對服務(wù)器返回的數(shù)據(jù)進(jìn)行解密后的數(shù)據(jù),可見,雖然終端無法獲取到目標(biāo)應(yīng)用與服務(wù)器之間加解密數(shù)據(jù)的加密密鑰以及解密密鑰,但是終端卻可以直接獲取到目標(biāo)應(yīng)用與服務(wù)器之間所交互的加密數(shù)據(jù)所對應(yīng)的未經(jīng)加密的第一數(shù)據(jù)以及第二數(shù)據(jù),從而仍可以基于該第一數(shù)據(jù)以及第二數(shù)據(jù),實現(xiàn)對該目標(biāo)應(yīng)用的安全漏洞分析。

附圖說明

為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。

圖1示出了本申請的一種漏洞分析方法的一種應(yīng)用場景的組成結(jié)構(gòu)示意圖;

圖2示出了適用于本申請的一種漏洞分析方法所適用的終端的一種組成結(jié)構(gòu)示意圖;

圖3示出了本申請一種漏洞分析方法一個實施例的流程示意圖;

圖4示出了本申請的一種漏洞分析方法又一個實施例的流程示意圖;

圖5示出了測試應(yīng)用和目標(biāo)應(yīng)用中涉及到的函數(shù)以及函數(shù)之間關(guān)系的一種示意圖;

圖6示出了本申請一種漏洞分析裝置一個實施例的組成結(jié)構(gòu)示意圖;

圖7示出了本申請一種漏洞分析裝置又一個實施例的組成結(jié)構(gòu)示意圖。

具體實施方式

本申請的漏洞分析方法可以應(yīng)用于對終端中運(yùn)行的應(yīng)用進(jìn)行測試,以測試出應(yīng)用中存在的安全漏洞。

為了便于理解,先對本申請實施例的漏洞分析方法所適用的應(yīng)用場景的系統(tǒng)組成進(jìn)行介紹。如圖1,在圖1所示的應(yīng)用場景中可以包括:終端101以及服務(wù)器102。

其中,終端101可以為手機(jī)、平板電腦等等。

在本申請實施例中,該終端101中安裝有至少一個基于客戶端/服務(wù)器機(jī)制的應(yīng)用程序(application,app),基于該app,終端可以與該app所屬的服務(wù)器建立通信連接,并向該服務(wù)器102發(fā)送訪問請求。

相應(yīng)的,服務(wù)器102響應(yīng)于該終端發(fā)送的訪問請求,為終端中該app返回該app所請求訪問的數(shù)據(jù)。

在本申請實施例中,為了測試app中是否存在影響該app的服務(wù)器中的數(shù)據(jù)安全的安全漏洞,在該終端中還安裝有用于測試該app是否存在安全漏洞的測試應(yīng)用。

在本申請實施例中,該終端可以為手機(jī)、平板電腦等。如,參見圖2,其示出了本申請實施例的漏洞分析方法所適用的終端的一種組成結(jié)構(gòu)示意圖。在圖2中,該終端200可以包括:處理器201、存儲器202、通信接口203、輸入單元204和顯示器205和通信總線206。

處理模塊201、存儲器202、通信接口203、輸入單元204、顯示器205、均通過通信總線206完成相互間的通信。

在本申請實施例中,該處理器201,可以為中央處理器(centralprocessingunit,cpu),特定應(yīng)用集成電路(application-specificintegratedcircuit,asic),數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)成可編程門陣列(fpga)或者其他可編程邏輯器件等。

該處理器可以調(diào)用存儲器202中存儲的程序,具體的,可以處理器可以執(zhí)行以下圖3以及圖4中終端側(cè)所執(zhí)行的操作。

存儲器202中用于存放一個或者一個以上程序,程序可以包括程序代碼,所述程序代碼包括計算機(jī)操作指令,在本申請實施例中,該存儲器中至少存儲有用于實現(xiàn)以下功能的程序:

確定待測試的目標(biāo)應(yīng)用中的至少一個加密函數(shù)以及至少一個解密函數(shù),該加密函數(shù)為該目標(biāo)應(yīng)用中用于執(zhí)行數(shù)據(jù)加密的函數(shù),解密函數(shù)為目標(biāo)應(yīng)用中用于執(zhí)行數(shù)據(jù)解密的函數(shù);

監(jiān)控到加密函數(shù)中輸入待加密的第一數(shù)據(jù),則截獲該第一數(shù)據(jù);

監(jiān)控到該解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲該解密函數(shù)解密出的第二數(shù)據(jù);

基于所述第一數(shù)據(jù)以及第二數(shù)據(jù),對該目標(biāo)應(yīng)用進(jìn)行漏洞分析。

在一種可能的實現(xiàn)方式中,該存儲器202可包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、以上所提到的程序,以及至少一個功能(比如聲音播放功能、圖像播放功能以及定位功能等)所需的應(yīng)用程序等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)終端的使用過程中所創(chuàng)建的數(shù)據(jù),比如,音頻數(shù)據(jù)、電話本等。

此外,存儲器202可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。

該通信接口203可以為通信模塊的接口,如gsm模塊的接口。

本申請還可以包括輸入單元205,該輸入單元可以包括感應(yīng)觸摸顯示面板上的觸摸事件的觸摸感應(yīng)單元、鍵盤等等。

該顯示器204包括顯示面板,如觸摸顯示面板等。在一種可能的情況中,可以采用液晶顯示器(liquidcrystaldisplay,lcd)、有機(jī)發(fā)光二極管(organiclight-emittingdiode,oled)等形式來配置顯示面板。

當(dāng)然,圖2所示的終端結(jié)構(gòu)并不構(gòu)成對本申請實施例中終端的限定,在實際應(yīng)用中終端可以包括比圖2所示的更多或更少的部件,或者組合某些部件。

本申請的發(fā)明人經(jīng)過對app的測試過程進(jìn)行研究發(fā)現(xiàn):目前現(xiàn)有的app測試過程中,一般是在終端上設(shè)置網(wǎng)絡(luò)代理,并通過網(wǎng)絡(luò)代理將該app與服務(wù)器之間交互的數(shù)據(jù)引流到指定設(shè)備(如,臺式電腦)中,從而依據(jù)app與服務(wù)器之間交互的數(shù)據(jù)分析該app是否存在安全漏洞。然而,在應(yīng)用程序與服務(wù)器之間采用加密機(jī)制或者其他防篡改機(jī)制進(jìn)行數(shù)據(jù)交互的情況下,通過網(wǎng)絡(luò)代理引導(dǎo)到指定設(shè)備上的數(shù)據(jù)均為加密后的數(shù)據(jù),如,app將數(shù)據(jù)加密后發(fā)送給服務(wù)器,或者服務(wù)器返回給app的加密后的響應(yīng)數(shù)據(jù),而由于無法獲取到app的加密密鑰以及解密密鑰,也就無法對app與服務(wù)器之間傳輸?shù)慕?jīng)過加密的數(shù)據(jù)進(jìn)行處理以及分析,無法分析出該app是否存在安全漏洞。

可見,為了測試該app中是否存在安全漏洞,關(guān)鍵是能夠獲取到app與服務(wù)器之間交互的經(jīng)過加密的數(shù)據(jù)所對應(yīng)的原始數(shù)據(jù)。因此,在本申請實施例中,終端會監(jiān)控app對數(shù)據(jù)加密以及解密的操作,并在app對需要傳輸?shù)臄?shù)據(jù)進(jìn)行加密之前,截獲該app中所需加密的數(shù)據(jù);同時,在服務(wù)器為app返回經(jīng)過加密的數(shù)據(jù),且app對服務(wù)器返回的數(shù)據(jù)進(jìn)行解密之后,截獲該app所解密出的數(shù)據(jù),從而根據(jù)截獲的該app加密前的數(shù)據(jù)以及對服務(wù)器返回的數(shù)據(jù)解密后的數(shù)據(jù),來分析該app是否存在安全漏洞。

考慮到app中實現(xiàn)數(shù)據(jù)加密以及解密的操作是分別通過app中的加密函數(shù)以及解密函數(shù)完成的,因此,終端可以確定該app中的加密函數(shù)以及解密函數(shù),并分別監(jiān)控該加密函數(shù)以及解密函數(shù),在監(jiān)控到該加密函數(shù)中輸入待加密的第一數(shù)據(jù)時,則截獲該第一數(shù)據(jù);相應(yīng)的,在監(jiān)控到解密函數(shù)對輸入的,經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密時,則截獲該解密函數(shù)解密出的第二數(shù)據(jù);并基于該第一數(shù)據(jù)以及第二數(shù)據(jù),對該app進(jìn)行漏洞分析。

在本申請實施例中,為了便于區(qū)分加密函數(shù)以及解密函數(shù)所處理的數(shù)據(jù),將app中輸入到加密函數(shù)進(jìn)行加密的數(shù)據(jù)稱為第一數(shù)據(jù),將輸入到解密函數(shù)中進(jìn)行解密的數(shù)據(jù)稱為經(jīng)過加密的第二數(shù)據(jù),其中,通過解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)解密可以得到第二數(shù)據(jù)。

下面結(jié)合本申請的以上共性,對本申請實施例的漏洞分析方法進(jìn)行詳細(xì)介紹。

參見圖3,其示出了申請一種漏洞分析方法一個實施例的流程示意圖,本實施例從終端中測試應(yīng)用與待測試的app之間的交互過程進(jìn)行描述。本實施例的方法可以包括:

s301,終端的測試應(yīng)用對待測試的目標(biāo)應(yīng)用的程序代碼進(jìn)行分析,得到該目標(biāo)應(yīng)用的源碼。

其中,如前面所描述的,該測試應(yīng)用用于對該終端中該測試應(yīng)用之外的其他應(yīng)用進(jìn)行漏洞分析。

為了與終端安裝的該測試應(yīng)用以及當(dāng)前無需進(jìn)行漏洞分析的其他應(yīng)用進(jìn)行區(qū)分,將終端中當(dāng)前需要測試或者說需要進(jìn)行漏洞分析的應(yīng)用稱為目標(biāo)應(yīng)用。

為了后續(xù)可以定位出目標(biāo)應(yīng)用中實現(xiàn)數(shù)據(jù)加密和防護(hù)的加密函數(shù),以及對數(shù)據(jù)進(jìn)行解密的解密函數(shù),可以分析該目標(biāo)應(yīng)用的源碼,以根據(jù)源碼分析出該目標(biāo)應(yīng)用中所包含的加密以及解密函數(shù)。

其中,依據(jù)app的程序代碼分析該app的源碼的方式可以有多種,如,以安卓操作系統(tǒng)的app為例,由于安卓操作系統(tǒng)的app大部分使用jave語言編寫,利用jave語言的可逆性,可以逆向分析出該app的源碼,從而得到該app所使用的加密算法、邏輯以及校驗方法等等。如,逆向分析app的源碼可以是通過對app的程序語言的語法進(jìn)行分析,從而還原出該app的源碼。當(dāng)然,對app進(jìn)行逆向分析源碼的具體實現(xiàn)方式可以有多種,在此不加以限制。

s302,測試應(yīng)用按照預(yù)置的加密函數(shù)以及解密函數(shù)的標(biāo)識,從該目標(biāo)應(yīng)用的源碼中,確定出用于執(zhí)行數(shù)據(jù)加密的至少一個加密函數(shù)以及用于執(zhí)行數(shù)據(jù)解密的至少一個解密函數(shù)。

其中,該目標(biāo)應(yīng)用中包括至少一個加密函數(shù)以及至少一個解密函數(shù)。

加密函數(shù)是指對數(shù)據(jù)進(jìn)行加密以及其他防護(hù)處理的函數(shù),相應(yīng)的,解密函數(shù)為對數(shù)據(jù)進(jìn)行解密以解除防護(hù)處理的函數(shù)??梢岳斫獾氖牵粋€app中實現(xiàn)加密的函數(shù)可以有一種或多種,而每一種加密函數(shù)均對應(yīng)著一個解密函數(shù),因此,解密函數(shù)也可以有一種或多種。

其中,從目標(biāo)應(yīng)用中確定加密函數(shù)以及解密函數(shù)的方式可以有多種。考慮到大部分應(yīng)用程序中所采用的加密函數(shù)以及解密函數(shù)都是固定的一些函數(shù),因此,在一種實現(xiàn)方式中,可以預(yù)置所有可能的加密函數(shù)以及解密函數(shù)的標(biāo)識,如,通過不同的列表的形式,分別列舉出加密函數(shù)以及解密函數(shù)。這樣,將該目標(biāo)應(yīng)用的源碼與分別與預(yù)置的加密函數(shù)的標(biāo)識進(jìn)行比對,可以確定該源碼中所包含的加密函數(shù);相應(yīng)的,將源碼與預(yù)置的解密函數(shù)的標(biāo)識進(jìn)行比對,可以確定出源碼中包含的解密函數(shù)。

其中,該加密函數(shù)以及解密函數(shù)的標(biāo)識可以是函數(shù)的名稱。考慮到在一些語言編寫的程序中,允許不同函數(shù)的函數(shù)名相同,因此,為了唯一區(qū)分一個函數(shù),該函數(shù)的標(biāo)識還可以包括函數(shù)的函數(shù)類型以及參數(shù)等。如,加密函數(shù)的標(biāo)識可以包括:加密函數(shù)的函數(shù)名、函數(shù)類型以及參數(shù)。

s303,在終端運(yùn)行該目標(biāo)應(yīng)用的過程中,測試應(yīng)用通過內(nèi)置的鉤子函數(shù)分別監(jiān)控每個加密函數(shù)以及解密函數(shù)。

鉤子函數(shù)內(nèi)置于測試應(yīng)用中。鉤子hook函數(shù)的本質(zhì)是用以處理系統(tǒng)消息的程序,通過鉤子函數(shù)可以捕獲該鉤子函數(shù)所在的進(jìn)程或其它進(jìn)程發(fā)生的事件,鉤子hook可以通過匯編的跳轉(zhuǎn)指令,實現(xiàn)修改其他進(jìn)程中函數(shù)的執(zhí)行流程。因此,通過hook函數(shù)可以對目標(biāo)應(yīng)用中的加密函數(shù)以及解密函數(shù)進(jìn)行監(jiān)控,并阻塞以及改變該加密函數(shù)以及解密函數(shù)的數(shù)據(jù)處理流程。s304,測試應(yīng)用通過鉤子函數(shù)監(jiān)控到加密函數(shù)中輸入待加密的第一數(shù)據(jù)時,通過鉤子函數(shù)截獲該第一數(shù)據(jù)。

鉤子函數(shù)監(jiān)控到該目標(biāo)應(yīng)用向該加密函數(shù)中輸入了所需加密的第一數(shù)據(jù)時,則可以在加密函數(shù)對該第一數(shù)據(jù)進(jìn)行加密之前,通過該鉤子函數(shù)截取該第一數(shù)據(jù),從而使得測試應(yīng)用可以獲取到目標(biāo)應(yīng)用對加密前的第一數(shù)據(jù)。

其中,該加密函數(shù)中預(yù)置有對數(shù)據(jù)的加密密鑰,加密函數(shù)依據(jù)該加密密鑰對數(shù)據(jù)進(jìn)行加密。雖然測試應(yīng)用無法獲取到待測試的目標(biāo)應(yīng)用中該加密函數(shù)的加密密鑰,但是通過鉤子函數(shù)卻可以截獲加密函數(shù)加密前的數(shù)據(jù),從而避免了由于無法破解目標(biāo)應(yīng)用中加密函數(shù)內(nèi)的加密密鑰,而導(dǎo)致無法分析該目標(biāo)應(yīng)用中輸出的經(jīng)過加密的數(shù)據(jù)的問題。

可以理解的是,在采用安全機(jī)制的app中,為了保證向服務(wù)器傳輸?shù)臄?shù)據(jù)不被篡改等,一般會對發(fā)送給服務(wù)器的數(shù)據(jù)進(jìn)行加密,因此,該第一數(shù)據(jù)可以是目標(biāo)應(yīng)用待發(fā)送給服務(wù)器的數(shù)據(jù),或者,所需發(fā)送的數(shù)據(jù)的中間數(shù)據(jù)(即進(jìn)行中間處理的數(shù)據(jù))。因此,在對第一數(shù)據(jù)進(jìn)行加密之前,截取到該第一數(shù)據(jù),則可以避免由于無法解密目標(biāo)應(yīng)用發(fā)送給服務(wù)器的數(shù)據(jù),而無法對目標(biāo)應(yīng)用進(jìn)行安全分析的問題。s305,測試應(yīng)用將該第一數(shù)據(jù)配置為測試數(shù)據(jù)。

可以理解的是,在對目標(biāo)應(yīng)用進(jìn)行安全測試的過程中,有些情況中可能需要修改目標(biāo)應(yīng)用向服務(wù)器發(fā)送的數(shù)據(jù),以便基于服務(wù)器針對該修改后的數(shù)據(jù)所返回的響應(yīng)數(shù)據(jù),來判斷該目標(biāo)應(yīng)用是否存在影響到服務(wù)器安全的漏洞。

其中,將該第一數(shù)據(jù)配置為測試數(shù)據(jù)的方式可以有多種,具體可以根據(jù)實際的測試需要來對第一數(shù)據(jù)進(jìn)行修改、拼接等等不同的配置處理。

如,在一種可能的情況中,可以將該第一數(shù)據(jù)與指定的測試字符進(jìn)行拼接處理,得到該測試數(shù)據(jù)。其中,指定的測試字符可以預(yù)先存儲在終端的存儲器中;該測試字符也可以是由測試人員實時輸入的一些字符。例如,假設(shè)第一數(shù)據(jù)為“www.a*b.com”,則可以將第一數(shù)據(jù)進(jìn)行拼接處理得到“wwwwww.a*b.com.id=1.and1=1”或者是,“wwwwww.a*b.com.id=1.and1=2”,以便后續(xù)將該拼接處理后的數(shù)據(jù)作為目標(biāo)應(yīng)用需要發(fā)送給服務(wù)器的數(shù)據(jù)。

s306,測試應(yīng)用通過該鉤子函數(shù)將該測試數(shù)據(jù)返回給該目標(biāo)應(yīng)用中的該加密函數(shù)進(jìn)行加密。

鉤子函數(shù)將測試數(shù)據(jù)返回給目標(biāo)應(yīng)用中的該加密函數(shù),從而使得加密函數(shù)不再對原來的第一數(shù)據(jù)進(jìn)行加密,而是對該測試數(shù)據(jù)進(jìn)行加密。

可以理解的是,為了能夠測試應(yīng)用使得加密函數(shù)不再對第一數(shù)據(jù)進(jìn)行加密,在測試應(yīng)用截取了該第一數(shù)據(jù)的同時,該測試應(yīng)用可以通過鉤子函數(shù)阻塞該加密函數(shù)的數(shù)據(jù)處理流程,即凍結(jié)該加密函數(shù)的處理進(jìn)程,使得加密函數(shù)處于等待處理處理的狀態(tài),而不再進(jìn)行數(shù)據(jù)加密處理。相應(yīng)的,當(dāng)測試應(yīng)用將該第一數(shù)據(jù)替換為測試數(shù)據(jù)并返回給加密函數(shù)之后,測試應(yīng)用可以通過鉤子函數(shù)解除對該加密函數(shù)的阻塞,以使得加密函數(shù)可以對該測試數(shù)據(jù)進(jìn)行處理。

其中,鉤子函數(shù)阻塞該加密函數(shù)的時長可以是默認(rèn)的時長,也可以是由測試人員根據(jù)需要預(yù)先設(shè)定的,一般以該阻塞的時長大于測試應(yīng)用將該第一數(shù)據(jù)配置為測試數(shù)據(jù)所需的時長為準(zhǔn)。

需要說明的步驟s304至s306是以對一個加密函數(shù)進(jìn)行監(jiān)控并截取加密前的第一數(shù)據(jù)為例進(jìn)行介紹,但是可以理解的是,對于每個加密函數(shù),測試應(yīng)用監(jiān)控該加密函數(shù)以及截取該第一數(shù)據(jù)的過程均相似。

s307,目標(biāo)應(yīng)用中的加密函數(shù)對該測試數(shù)據(jù)進(jìn)行加密之后,將經(jīng)過加密的測試數(shù)據(jù)發(fā)送給該目標(biāo)應(yīng)用的服務(wù)器。

由于加密函數(shù)中加密的測試數(shù)據(jù)為測試應(yīng)用對原始的第一數(shù)據(jù)進(jìn)行處理后得到的,將經(jīng)過加密的測試數(shù)據(jù)發(fā)送給服務(wù)器之后,服務(wù)器可以根據(jù)測試數(shù)據(jù)為目標(biāo)應(yīng)用返回響應(yīng)數(shù)據(jù),以便基于響應(yīng)數(shù)據(jù)分析目標(biāo)應(yīng)用與服務(wù)器之間的數(shù)據(jù)交互是否存在安全漏洞。

可以理解的是,在對目標(biāo)應(yīng)用進(jìn)行測試的過程中,根據(jù)測試需求,測試應(yīng)用根據(jù)需要選擇執(zhí)行該步驟s305至s307,或者選擇不執(zhí)行該s305至s307。如,在不需要向第一數(shù)據(jù)中添加其他數(shù)據(jù)的情況下,則可以不執(zhí)行該步驟s305和s307,則后續(xù)可以直接根據(jù)第一數(shù)據(jù)以及解密函數(shù)解密出的第二數(shù)據(jù),來分析該目標(biāo)應(yīng)用是否存在安全漏洞。

s308,測試應(yīng)用通過鉤子函數(shù)監(jiān)控到解密函數(shù)對輸入的,且經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲該解密函數(shù)解密出的第二數(shù)據(jù)。

如果通過鉤子函數(shù)監(jiān)測到解密函數(shù)輸入了經(jīng)過加密的第二數(shù)據(jù),且該解密函數(shù)對該加密的第二數(shù)據(jù)進(jìn)行解密,得到該第二數(shù)據(jù)時,鉤子函數(shù)可以截獲該第二數(shù)據(jù),從而使得測試程序獲取到未經(jīng)加密的數(shù)據(jù),以便后續(xù)進(jìn)行漏洞分析。

可以理解的是,目標(biāo)應(yīng)用中所需解密的數(shù)據(jù)可以是服務(wù)器返回給目標(biāo)應(yīng)用的數(shù)據(jù),如,服務(wù)器針對目標(biāo)應(yīng)用發(fā)送的數(shù)據(jù)所返回的響應(yīng)數(shù)據(jù)等。當(dāng)然,該經(jīng)過加密的第二數(shù)據(jù)也可以是目標(biāo)應(yīng)用處理服務(wù)器返回的數(shù)據(jù)所產(chǎn)生的中間數(shù)據(jù)等。

可選的,考慮到目標(biāo)應(yīng)用將經(jīng)過加密的第一數(shù)據(jù)或者經(jīng)過加密的測試數(shù)據(jù)發(fā)送給服務(wù)器之后,服務(wù)器會返回經(jīng)過加密的響應(yīng)數(shù)據(jù)(如圖3中服務(wù)器與目標(biāo)應(yīng)用之間的虛線所示),而目標(biāo)應(yīng)用需要利用解密函數(shù)對服務(wù)器返回的經(jīng)過加密的數(shù)據(jù)進(jìn)行解密。因此,解密函數(shù)中輸入該經(jīng)過加密的第二數(shù)據(jù)可以為服務(wù)器針對經(jīng)過加密的第一數(shù)據(jù)或者測試數(shù)據(jù)返回的響應(yīng)數(shù)據(jù)。

進(jìn)一步,由于不同的加密函數(shù)對應(yīng)著不同的解密函數(shù),如采用同一套加解密算法的加密函數(shù)和解密函數(shù)可以屬于該目標(biāo)應(yīng)用的同一個類中,因此,本申請實施例中,解密函數(shù)所解密的第二數(shù)據(jù)可以為服務(wù)器針對與該解密函數(shù)關(guān)聯(lián)的加密函數(shù)所加密的第一數(shù)據(jù)或測試數(shù)據(jù)所返回的響應(yīng)數(shù)據(jù)。

可以理解的是,該步驟s304與步驟s308的順序并不限于圖3所示,在實際應(yīng)用中,目標(biāo)應(yīng)用中不存在關(guān)聯(lián)關(guān)系的加密函數(shù)以及解密函數(shù)可能會同時對不同的數(shù)據(jù)進(jìn)行加密或者解密;同時,即使相互關(guān)聯(lián)的加密函數(shù)以及解密函數(shù)(即采用相同匹配的加密算法以及解密算法的加密函數(shù)以及解密算法)也可能會同時對不同的數(shù)據(jù)進(jìn)行加密或者解密,因此,在執(zhí)行該步驟s304的同時,也可以同時執(zhí)行該步驟s308。

s309,測試應(yīng)用基于該測試數(shù)據(jù)以及該第二數(shù)據(jù),對該目標(biāo)應(yīng)用進(jìn)行漏洞分析。

如,通過比對測試數(shù)據(jù)以及第二數(shù)據(jù),并結(jié)合特定的測試規(guī)則,可以分析該目標(biāo)應(yīng)用中是否存在漏洞。

又如,測試應(yīng)用可以根據(jù)加密函數(shù)與解密函數(shù)的對應(yīng)關(guān)系,將具有對應(yīng)關(guān)系的測試數(shù)據(jù)與第二數(shù)據(jù)(如,第二數(shù)據(jù)為針對測試數(shù)據(jù)的響應(yīng)數(shù)據(jù))進(jìn)行顯示輸出,以便測試人員根據(jù)服務(wù)器針對測試數(shù)據(jù)所返回的第二數(shù)據(jù),分析該目標(biāo)應(yīng)用是否存在漏洞。

當(dāng)然,基于測試數(shù)據(jù)以及第二數(shù)據(jù)分析該目標(biāo)應(yīng)用是否存在漏洞的方式可以有多種,在此不加以限制。

可以理解的是,在本實施例是將第一數(shù)據(jù)配置為測試數(shù)據(jù)后,由目標(biāo)應(yīng)用將測試數(shù)據(jù)加密后發(fā)送給服務(wù)器為例進(jìn)行介紹,因此,該測試應(yīng)用需要基于該測試數(shù)據(jù)以及第二數(shù)據(jù),分析該目標(biāo)應(yīng)用是否存在安全漏洞。但是,如果目標(biāo)應(yīng)用是將第一數(shù)據(jù)加密后發(fā)送給服務(wù)器,則測試應(yīng)用可以直接基于該第一數(shù)據(jù)以及該第二數(shù)據(jù)進(jìn)行漏洞分析。

需要說明的是,在本申請實施例中,是以在測試應(yīng)用中內(nèi)置鉤子函數(shù),并通過鉤子函數(shù)監(jiān)控待測試的目標(biāo)應(yīng)用中的加密函數(shù)以及解密函數(shù)為例進(jìn)行說明,但是可以理解的是,如果通過其他方式監(jiān)控加密函數(shù)以及解密函數(shù),并截取該第一數(shù)據(jù)以及第二數(shù)據(jù)的方式也同樣適用于本申請實施例。如,可以在每個加密函數(shù)以及解密函數(shù)中注入回調(diào)函數(shù),以通過回調(diào)函數(shù)捕獲輸入至加密函數(shù)的第一數(shù)據(jù),以及解密函數(shù)輸出的第二數(shù)據(jù)。本申請對于監(jiān)控該加密函數(shù)以及解密函數(shù),以截取該第一數(shù)據(jù)以及第二數(shù)據(jù)的具體方式不加以限制。

可見,在本申請實施例中,終端可以在目標(biāo)應(yīng)用將發(fā)送給服務(wù)器的數(shù)據(jù)進(jìn)行加密之前,截取到未經(jīng)加密的數(shù)據(jù);并在服務(wù)器為目標(biāo)應(yīng)用返回經(jīng)過加密的數(shù)據(jù)之后,截取該目標(biāo)應(yīng)用對服務(wù)器返回的數(shù)據(jù)進(jìn)行解密后的數(shù)據(jù),可因此,雖然終端無法獲取到目標(biāo)應(yīng)用與服務(wù)器之間加解密數(shù)據(jù)的加密密鑰以及解密密鑰,但是終端卻可以直接獲取到目標(biāo)應(yīng)用與服務(wù)器之間所交互的加密數(shù)據(jù)所對應(yīng)的未經(jīng)加密的第一數(shù)據(jù)以及第二數(shù)據(jù),從而仍可以基于該第一數(shù)據(jù)以及第二數(shù)據(jù),實現(xiàn)對該目標(biāo)應(yīng)用的安全漏洞分析。

可以理解的是,在本申請以上實施例中,是以鉤子函數(shù)從目標(biāo)應(yīng)用中截取第一數(shù)據(jù)以及第二數(shù)據(jù)并返回給測試應(yīng)用為例進(jìn)行說明,但是可以理解的是,為了實現(xiàn)測試應(yīng)用可以獲取到目標(biāo)應(yīng)用中的第一數(shù)據(jù)以及第二數(shù)據(jù),也可以向目標(biāo)應(yīng)用中注入用于實現(xiàn)該目標(biāo)應(yīng)用與測試應(yīng)用之間數(shù)據(jù)傳輸?shù)膹V播函數(shù)。

為了便于理解,以測試應(yīng)用中運(yùn)行有一個用于執(zhí)行安全漏洞測試的安全測試函數(shù)為例進(jìn)行說明,在測試應(yīng)用具有安全測試函數(shù)的情況下,注入到目標(biāo)應(yīng)用中的廣播函數(shù)用于將目標(biāo)app中的數(shù)據(jù)傳輸給測試應(yīng)用中的鉤子函數(shù)以及安全測試函數(shù)。參見圖4,其示出了本申請一種漏洞分析方法又一個實施例的流程示意圖。本實施例可以包括:

s401,終端的測試應(yīng)用通過對待測試的目標(biāo)app的程序代碼進(jìn)行逆向分析,還原出該目標(biāo)app的源碼。

本實施例是以逆向分析出源碼為例進(jìn)行介紹,但是通過其他方式確定目標(biāo)app的源碼的方式也適用于本實施例。

s402,測試應(yīng)用根據(jù)預(yù)置的加密函數(shù)列表以及解密函數(shù)列表,并結(jié)合該目標(biāo)app的源碼,確定出該目標(biāo)app中的至少一個加密函數(shù)的標(biāo)識信息以及至少一個解密函數(shù)的標(biāo)識信息。

其中,該加密函數(shù)以及解密函數(shù)的標(biāo)識信息用于唯一標(biāo)識該加密函數(shù)以及解密函數(shù)加密函數(shù)。該標(biāo)識信息可以包括函數(shù)名、函數(shù)參數(shù)以及函數(shù)類型。

以上步驟s401和步驟s402為對目標(biāo)app進(jìn)行測試前的準(zhǔn)備工作,其目的是預(yù)測出可能的加密函數(shù)以及解密函數(shù),同時為用戶判斷該目標(biāo)app中可能存在的加密函數(shù)以及解密函數(shù)提供依據(jù)。

s403,在終端啟動該目標(biāo)app時,測試應(yīng)用通過內(nèi)置的hook函數(shù)控制該app的主函數(shù)入口,并向該目標(biāo)app的主函數(shù)入口中注入廣播函數(shù)。

s404,目標(biāo)app通過該廣播函數(shù)獲取用戶輸入的阻塞時長以及該hook函數(shù)所需監(jiān)控的至少一個加密函數(shù)的標(biāo)識信息以及至少一個解密函數(shù)的標(biāo)識信息。

其中,標(biāo)識信息可以為函數(shù)名、函數(shù)參數(shù)以及函數(shù)類型。

其中,阻塞時長為對目標(biāo)app中的加密函數(shù)以及解密函數(shù)進(jìn)行阻塞控制,以凍結(jié)函數(shù)運(yùn)行的時長。本實施例是以用戶設(shè)定該阻塞時長為例進(jìn)行介紹,但是該阻塞時長也可以是測試應(yīng)用默認(rèn)的一個時長。

用戶可以結(jié)合前面測試應(yīng)用逆向分析出的源碼以及預(yù)估出的可能的加密函數(shù)以及解密函數(shù),來確定出需要監(jiān)控的加密函數(shù)以及解密函數(shù)。

用戶向該目標(biāo)app中廣播函數(shù)中輸入該阻塞時長、以及加密、解密函數(shù)的標(biāo)識信息,可以是先目標(biāo)app中的輸入框中輸入阻塞時長等相關(guān)信息,則廣播函數(shù)可以捕獲輸入的相關(guān)信息;也可以是通過向終端的操作系統(tǒng)命令行中輸入相關(guān)信息,以實現(xiàn)向該目標(biāo)app內(nèi)設(shè)置相關(guān)信息,并由廣播函數(shù)捕獲這些相關(guān)信息。如,以終端為安卓操作系統(tǒng)為例,可以用戶可以在安卓命令行中輸入或設(shè)置該目標(biāo)app的阻塞時長,則注入該目標(biāo)app的廣播函數(shù)可以捕獲輸入的阻塞時長。

s405,目標(biāo)app中的該廣播函數(shù)將該阻塞時長、加密函數(shù)的標(biāo)識信息以及目標(biāo)解密函數(shù)的標(biāo)識信息傳輸給測試應(yīng)用的hook函數(shù)。

hook函數(shù)根據(jù)廣播函數(shù)傳輸?shù)男畔?,確定所需監(jiān)控的加密以及解密函數(shù),并可以根據(jù)阻塞時長來控制對該加密函數(shù)以及解密函數(shù)的阻塞控制。

s406,測試應(yīng)用通過hook函數(shù)依據(jù)加密函數(shù)的標(biāo)識信息以及解密函數(shù)的標(biāo)識信息,監(jiān)控該目標(biāo)app中的每個加密函數(shù)以及解密函數(shù)。

為了便于理解測試應(yīng)用、目標(biāo)應(yīng)用以及這測試應(yīng)用和目標(biāo)應(yīng)用中涉及到的函數(shù)之間的關(guān)系,可以參見圖5,其示出了測試應(yīng)用以及目標(biāo)應(yīng)用中涉及到的函數(shù),以及函數(shù)之間關(guān)系的一種示意圖,如圖5,該終端中安裝有測試應(yīng)用51以及需要被測試安全漏洞的目標(biāo)應(yīng)用52。

其中,測試應(yīng)用61中包括鉤子函數(shù),目標(biāo)應(yīng)用52中包括至少一個加密函數(shù)以及至少一個解密函數(shù)。

在需要對目標(biāo)應(yīng)用52進(jìn)行漏洞分析時,可以在終端上啟動測試應(yīng)用51,然后啟動該目標(biāo)應(yīng)用52,在該目標(biāo)應(yīng)用52啟動時,測試應(yīng)用51利用鉤子函數(shù)向該目標(biāo)應(yīng)用52的主函數(shù)入口注入廣播函數(shù),使得目標(biāo)應(yīng)用中包括了廣播函數(shù)(如圖5中示出了目標(biāo)應(yīng)用中包括注入的該廣播函數(shù)),且在目標(biāo)應(yīng)用運(yùn)行過程中可以運(yùn)行該廣播函數(shù)。

由鉤子函數(shù)向目標(biāo)應(yīng)用中注入廣播函數(shù)之后,該鉤子函數(shù)可以與位于該目標(biāo)應(yīng)用內(nèi)部的廣播函數(shù)實現(xiàn)數(shù)據(jù)傳輸,從而實現(xiàn)測試應(yīng)用可以通過廣播函數(shù)獲取該目標(biāo)應(yīng)用運(yùn)行過程中所產(chǎn)生或處理的數(shù)據(jù)。

當(dāng)用戶向目標(biāo)應(yīng)用中輸入阻塞時長、加密函數(shù)標(biāo)識以及解密函數(shù)標(biāo)識之后,廣播函數(shù)可以獲取阻塞時長、加密函數(shù)標(biāo)識以及解密函數(shù)標(biāo)識,并傳輸給測試應(yīng)用中的hook函數(shù),如圖5中,步驟s501所示。相應(yīng)的,鉤子函數(shù)依據(jù)該加密函數(shù)標(biāo)識以及解密函數(shù)標(biāo)識分別對加密函數(shù)以及解密函數(shù)進(jìn)行監(jiān)控。

當(dāng)然,該測試應(yīng)用51中除了包括鉤子函數(shù)之外,還可以安全測試函數(shù),該安全測試函數(shù)為測試應(yīng)用中用于接收廣播函數(shù)傳遞的數(shù)據(jù)的函數(shù),這樣,通過測試應(yīng)用中的鉤子函數(shù)、注入到目標(biāo)應(yīng)用中的廣播函數(shù)以及該測試應(yīng)用中的安全測試函數(shù)就可以實現(xiàn)向目標(biāo)應(yīng)用傳遞數(shù)據(jù)以及從目標(biāo)應(yīng)用中獲取數(shù)據(jù)。其中,關(guān)于安全測試函數(shù)與廣播函數(shù)之間的數(shù)據(jù)傳遞關(guān)系可以詳見后續(xù)步驟的介紹。

s407,測試應(yīng)用通過hook函數(shù)監(jiān)控到目標(biāo)app向加密函數(shù)中輸入待加密的第一數(shù)據(jù),則截取該第一數(shù)據(jù)并輸出該廣播函數(shù),并控制該加密函數(shù)處于阻塞狀態(tài)直至達(dá)到該阻塞時長。

結(jié)合圖5進(jìn)行說明,當(dāng)目標(biāo)應(yīng)用52中存在需要該加密函數(shù)加密的第一數(shù)據(jù)時,如圖5所示,加密函數(shù)中存在待輸入的第一數(shù)據(jù),則該hook函數(shù)監(jiān)控到加密函數(shù)中輸入需要加密的第一數(shù)據(jù),將阻塞加密函數(shù)的繼續(xù)執(zhí)行,并截獲該第一數(shù)據(jù),如圖5中步驟s502;同時,hook函數(shù)將截獲到的該第一數(shù)據(jù)傳遞給廣播函數(shù),如圖5中步驟s503所示。

s408,目標(biāo)app的廣播函數(shù)將第一數(shù)據(jù)返回給測試應(yīng)用中的安全測試函數(shù)。

可以理解的是,為了便于描述,本實施例以測試應(yīng)用中設(shè)置有用于進(jìn)行安全測試的安全測試函數(shù)為例進(jìn)行說明,但是實際上該廣播函數(shù)可以將該第一函數(shù)返回給測試應(yīng)用,以通過測試應(yīng)用完成后續(xù)的測試。

s409,測試應(yīng)用通過安全測試函數(shù)將第一數(shù)據(jù)與用戶輸入的待拼接數(shù)據(jù)進(jìn)行拼接處理,得到測試數(shù)據(jù)。

可以理解的是,通過其他方式得到該測試數(shù)據(jù)也同樣適用于本實施例。

s410,測試應(yīng)用通過安全測試函數(shù)將測試數(shù)據(jù)返回給目標(biāo)app中的廣播函數(shù)。

s411,測試應(yīng)用中的hook函數(shù)在取消對加密函數(shù)的阻塞后,控制加密函數(shù)對該廣播函數(shù)獲得的測試數(shù)據(jù)進(jìn)行加密,以使得加密函數(shù)輸出經(jīng)過加密的測試數(shù)據(jù)。

結(jié)合圖5對以上步驟s408至s411進(jìn)行介紹,廣播函數(shù)將截獲到的第一數(shù)據(jù)返回給測試應(yīng)用中的安全測試函數(shù),如步驟s504;安全測試函數(shù)將加密后的第一數(shù)據(jù)進(jìn)行拼接之后,將拼接得到的測試數(shù)據(jù)又返回給該目標(biāo)應(yīng)用中的廣播函數(shù),以使得廣播函數(shù)可以將拼接處理所得到的測試數(shù)據(jù)輸入到加密函數(shù)中,如步驟s505。相應(yīng)的,為了使得目標(biāo)應(yīng)用中的加密函數(shù)能夠繼續(xù)執(zhí)行加密數(shù)據(jù)的流程,hook函數(shù)取消對加密函數(shù)的阻塞,從而使得加密函數(shù)可以執(zhí)行加密流程,并對廣播函數(shù)獲取的測試數(shù)據(jù)進(jìn)行加密,輸出經(jīng)過加密后的測試數(shù)據(jù),如圖5中步驟s506。

當(dāng)然,加密函數(shù)完成對測試數(shù)據(jù)加密之后,目標(biāo)應(yīng)用對經(jīng)過加密的數(shù)據(jù)的處理可以按照目標(biāo)應(yīng)用中設(shè)定的處理流程執(zhí)行,如,目標(biāo)應(yīng)用可以將加密后的數(shù)據(jù)發(fā)送給服務(wù)器。當(dāng)然,目標(biāo)應(yīng)用還可能對加密后的數(shù)據(jù)進(jìn)行其他處理,在此不加以限制。s412,目標(biāo)app將經(jīng)過加密的測試數(shù)據(jù)傳輸給服務(wù)器。

s413,目標(biāo)app獲得服務(wù)器針對該測試數(shù)據(jù)所返回的,經(jīng)過加密的第二數(shù)據(jù)。

可以理解的是,本申請實施例以第二數(shù)據(jù)為服務(wù)器針對測試數(shù)據(jù)所返回的響應(yīng)數(shù)據(jù)為例進(jìn)行介紹,以便于理解應(yīng)用與服務(wù)器之間的數(shù)據(jù)交互,以及測試應(yīng)用在應(yīng)用向服務(wù)器發(fā)送加密的第一數(shù)據(jù)前截取到未經(jīng)加密的第一數(shù)據(jù);并在服務(wù)器返回經(jīng)過加密的第二數(shù)據(jù)后,截取該目標(biāo)app中解密函數(shù)從經(jīng)過加密的數(shù)據(jù)解密出該第二數(shù)據(jù)的過程。

s414,測試應(yīng)用通過hook函數(shù)監(jiān)測到解密函數(shù)對該經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密后,將該解密函數(shù)解密出的第二數(shù)據(jù)輸出給廣播函數(shù)。

s415,app中的廣播函數(shù)將第二數(shù)據(jù)返回給測試應(yīng)用的安全測試函數(shù)。

結(jié)合圖5對步驟s414和s415進(jìn)行介紹,在目標(biāo)應(yīng)用接收到服務(wù)器返回的經(jīng)過加密的第二數(shù)據(jù)時,目標(biāo)應(yīng)用會將該經(jīng)過加密的第二數(shù)據(jù)傳輸給解密函數(shù),以便通過解密函數(shù)解密出該第二數(shù)據(jù),從而基于第二數(shù)據(jù)進(jìn)行相關(guān)處理,如向顯示界面輸出第二數(shù)據(jù)對應(yīng)的圖像等等。測試應(yīng)用通過hook函數(shù)對解密函數(shù)進(jìn)行監(jiān)控,可以監(jiān)測到該解密函數(shù)中輸入了經(jīng)過加密的第二數(shù)據(jù),在該種情況下,hook函數(shù)可以在檢測到該解密函數(shù)從經(jīng)過加密的第二函數(shù)中,解密出該第二數(shù)據(jù)時,截獲該第二數(shù)據(jù),如步驟s507;然后,由hook函數(shù)將第二數(shù)據(jù)傳遞給廣播函數(shù),如圖5中步驟s508;相應(yīng)的,為了使得測試函數(shù)中用于實現(xiàn)執(zhí)行漏洞分析的安全測試函數(shù)可以獲取到該第二數(shù)據(jù),該廣播函數(shù)會將該第二數(shù)據(jù)傳遞給該安全測試函數(shù),如步驟s509,這樣,在目標(biāo)應(yīng)用與服務(wù)器之間交互的過程中,即使目標(biāo)應(yīng)用與服務(wù)器之間采用了防篡改等加密機(jī)制,測試應(yīng)用仍可以獲取到目標(biāo)應(yīng)用與服務(wù)器之間實際交互的數(shù)據(jù)內(nèi)容。

s416,測試應(yīng)用的安全測試函數(shù)依據(jù)該測試數(shù)據(jù)以及第二數(shù)據(jù),分析該目標(biāo)app是否存在安全漏洞。

如,測試數(shù)據(jù)為“wwwwww.a*b.com.id=1.and1=2”,由于“1=2”是不正確的,如果服務(wù)器返回的第二數(shù)據(jù)為錯誤提示,則說明無法通過修改該目標(biāo)app所傳輸?shù)臄?shù)據(jù)對服務(wù)器進(jìn)行數(shù)據(jù)控制;而如果服務(wù)器返回的“未查找到相應(yīng)結(jié)果”,則說明雖然測試數(shù)據(jù)有問題,但是服務(wù)器仍然會進(jìn)行數(shù)據(jù)搜索等處理,因此,則可能通過修改目標(biāo)app所傳輸?shù)臄?shù)據(jù)對服務(wù)器進(jìn)行數(shù)據(jù)控制,即,目標(biāo)app存在安全漏洞。

本實施例中,以通過廣播函數(shù)來實現(xiàn)測試應(yīng)用與目標(biāo)應(yīng)用之間的數(shù)據(jù)傳輸為例進(jìn)行說明。同時,向目標(biāo)應(yīng)用中注入廣播函數(shù)還可以滿足用戶向廣播函數(shù)中輸入所需測試的測試數(shù)據(jù)的目的,這樣,hook函數(shù)可以控制加密函數(shù)對輸入到廣播函數(shù)中的測試數(shù)據(jù)進(jìn)行加密,并由目標(biāo)應(yīng)用將經(jīng)過加密的測試數(shù)據(jù)發(fā)送給服務(wù)器,以便于根據(jù)輸入到廣播函數(shù)中的測試數(shù)據(jù)以及服務(wù)器返回的數(shù)據(jù)進(jìn)行安全測試,從而實現(xiàn)了更為靈活的安全測試。

下面對本發(fā)明實施例提供的一種漏洞分析裝置進(jìn)行介紹,下文描述的一種漏洞分析裝置可與上文描述的一種漏洞分析方法相互對應(yīng)參照。

如,參見圖6,其示出了本申請一種漏洞分析裝置一個實施例的組成結(jié)構(gòu)示意圖,本實施例的裝置可以包括:

函數(shù)確定單元601,用于確定待測試的目標(biāo)應(yīng)用中的至少一個加密函數(shù)以及至少一個解密函數(shù),所述加密函數(shù)為用于執(zhí)行數(shù)據(jù)加密的函數(shù),所述解密函數(shù)為用于執(zhí)行數(shù)據(jù)解密的函數(shù);

第一監(jiān)控單元602,用于監(jiān)控到所述加密函數(shù)中輸入待加密的第一數(shù)據(jù),則截獲所述第一數(shù)據(jù);

第二監(jiān)控單元603,用于監(jiān)控到所述解密函數(shù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲所述解密函數(shù)解密出的所述第二數(shù)據(jù);

漏洞分析單元604,用于基于所述第一數(shù)據(jù)以及第二數(shù)據(jù),對所述目標(biāo)應(yīng)用進(jìn)行漏洞分析。

可選的,所述第一監(jiān)控單元,具體為,用于通過內(nèi)置的鉤子函數(shù)監(jiān)控所述加密函數(shù),并在監(jiān)控到所述加密函數(shù)中輸入待加密的第一數(shù)據(jù)時,截獲所述第一數(shù)據(jù);

所述第二監(jiān)控單元,具體為,用于通過所述鉤子函數(shù)監(jiān)控所述解密函數(shù),并在鉤子函數(shù)監(jiān)控到所述解密數(shù)據(jù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,則截獲所述解密函數(shù)解密出的所述第二數(shù)據(jù)。

可選的,該裝置還可以包括:

函數(shù)注入單元605,用于在終端啟動所述目標(biāo)應(yīng)用時,向所述目標(biāo)應(yīng)用的主函數(shù)入口中注入廣播函數(shù);

相應(yīng)的,所述第一監(jiān)控單元包括:

第一數(shù)據(jù)截取單元,用于通過內(nèi)置的鉤子函數(shù)監(jiān)控所述加密函數(shù),并在監(jiān)控到所述加密函數(shù)中輸入待加密的第一數(shù)據(jù)時,通過鉤子函數(shù)將截獲到的所述第一數(shù)據(jù)輸出給所述廣播函數(shù);

第一數(shù)據(jù)獲取單元,用于通過所述廣播函數(shù)獲取所述第一數(shù)據(jù);

所述第二監(jiān)控單元包括:

第二數(shù)據(jù)輸出單元,用于通過所述鉤子函數(shù)監(jiān)控所述解密函數(shù),并在鉤子函數(shù)監(jiān)控到所述解密數(shù)據(jù)對經(jīng)過加密的第二數(shù)據(jù)進(jìn)行解密,截獲解密出的第二數(shù)據(jù)并輸出給所述廣播函數(shù);

第二數(shù)據(jù)獲取單元,用于通過所述廣播函數(shù)獲取所述第二數(shù)據(jù)。

如圖7,其示出了本申請實施例一種漏洞分析裝置又一個實施例的流程示意圖,本實施例的裝置與圖6所示實施例的不同之處在于:

圖7所示的裝置中,還包括:

數(shù)據(jù)配置單元606,用于在所述第一監(jiān)控單元截獲到所述第一數(shù)據(jù)之后,將所述第一數(shù)據(jù)配置為測試數(shù)據(jù);

數(shù)據(jù)返回單元607,用于將所述測試數(shù)據(jù)返回給所述加密函數(shù),并控制所述加密函數(shù)對所述測試數(shù)據(jù)加密,以便所述目標(biāo)應(yīng)用將所述經(jīng)過加密的測試數(shù)據(jù)傳輸給所述目標(biāo)應(yīng)用的服務(wù)器;

相應(yīng)的,所述第二監(jiān)控單元截獲的所述第二數(shù)據(jù)為所述服務(wù)器針對所述第一數(shù)據(jù)返回的響應(yīng)數(shù)據(jù);

所述漏洞分析單元604具體為,用于依據(jù)所述測試數(shù)據(jù)以及響應(yīng)數(shù)據(jù),對所述目標(biāo)應(yīng)用進(jìn)行漏洞分析。

可選的,在以上任意一個裝置的實施例中,該裝置還可以包括:

阻塞控制單元,用于在所述第一監(jiān)控單元所述截獲所述第一數(shù)據(jù)的同時,阻塞該加密函數(shù)的數(shù)據(jù)處理流程;

阻塞取消單元,用于在所述數(shù)據(jù)返回單元將所述測試數(shù)據(jù)返回給所述加密函數(shù)進(jìn)行加密的同時,取消對所述加密函數(shù)的阻塞,以使得所述加密函數(shù)對所述測試數(shù)據(jù)加密。

可選的,在以上任意一個實施例中,所述函數(shù)確定單元,包括:

源碼分析單元,用于對待測試的目標(biāo)應(yīng)用的程序代碼進(jìn)行逆向分析,得到該目標(biāo)應(yīng)用的源碼;

第一函數(shù)確定單元,用于按照預(yù)置的加密函數(shù)的標(biāo)識,從所述目標(biāo)應(yīng)用的源碼中,確定出用于執(zhí)行數(shù)據(jù)加密的至少一個加密函數(shù);

第二函數(shù)確定單元,用于按照預(yù)置的解密函數(shù)的標(biāo)識,從所述目標(biāo)應(yīng)用的源碼中,確定出用于執(zhí)行數(shù)據(jù)解密的至少一個解密函數(shù)。

需要說明的是,本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點(diǎn)說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

對所公開的實施例的上述說明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。

以上僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
玉林市| 平潭县| 中阳县| 广宁县| 娱乐| 宝丰县| 辽宁省| 保德县| 惠州市| 湟中县| 桐城市| 滦南县| 洛南县| 句容市| 荣昌县| 保德县| 梓潼县| 芦溪县| 浏阳市| 贵定县| 金川县| 册亨县| 高邑县| 师宗县| 绥化市| 丹巴县| 瑞金市| 内黄县| 黄陵县| 平泉县| 兴国县| 白城市| 保定市| 吉木萨尔县| 临夏市| 泰州市| 山阴县| 潼关县| 同仁县| 仁寿县| 龙南县|