亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種Android系統(tǒng)應(yīng)用程序漏洞檢測(cè)方法與流程

文檔序號(hào):12803330閱讀:287來(lái)源:國(guó)知局

本發(fā)明屬于網(wǎng)絡(luò)空間安全技術(shù)領(lǐng)域,尤其涉及一種android系統(tǒng)應(yīng)用程序漏洞檢測(cè)方法。



背景技術(shù):

近年來(lái),智能移動(dòng)端發(fā)展迅速,android操作系統(tǒng)以其開(kāi)源、界面美觀、用戶體驗(yàn)好等諸多優(yōu)勢(shì)在智能移動(dòng)端操作系統(tǒng)林立涌現(xiàn)的局勢(shì)下,迅速占據(jù)了最大的市場(chǎng)份額。android的安裝程序apk也由于其開(kāi)發(fā)者入門(mén)門(mén)檻較低,支持第三方開(kāi)發(fā)等原因,備受開(kāi)發(fā)者的青睞。在一個(gè)apk開(kāi)發(fā)到應(yīng)用的過(guò)程中,正常情況要經(jīng)歷很多個(gè)版本,從一開(kāi)始的內(nèi)測(cè)版本到公測(cè)版本,再到后來(lái)的商用版本。每一次的更新都是對(duì)自身的一次提升,早期版本的apk由于技術(shù)所限,開(kāi)發(fā)人員的經(jīng)驗(yàn)不足,尤其是在開(kāi)發(fā)過(guò)程中涉及到網(wǎng)絡(luò)與信息安全問(wèn)題的處理不當(dāng),很可能導(dǎo)致早期版本存在很多邏輯設(shè)計(jì)上或安全應(yīng)用上的漏洞或者缺陷。

對(duì)于最新版的apk應(yīng)用程序,要想通過(guò)逆向工程手段進(jìn)行分析是十分困難的,因?yàn)槠浯a一般采取了相應(yīng)的保護(hù)措施。但是這一點(diǎn)在早期版本中并不明顯。事實(shí)上,如果攻擊者能對(duì)早期的apk包展開(kāi)攻擊,恢復(fù)出源代碼,或者通過(guò)分析協(xié)議,拿到一些企業(yè)仍在使用的restfulapi接口,那么攻擊者的能力就會(huì)變得非常強(qiáng),很可能拿到一些有價(jià)值的信息,甚至直接對(duì)企業(yè)服務(wù)器展開(kāi)攻擊。

前述逆向工程,顧名思義,就是通過(guò)現(xiàn)有的產(chǎn)品,采用一些技術(shù)手段對(duì)其進(jìn)行逆向推演,最后還原出產(chǎn)品本來(lái)的系統(tǒng)架構(gòu)、模塊組成等。對(duì)于一個(gè)android應(yīng)用程序來(lái)說(shuō),我們可以通過(guò)最原始的apk包,利用一些工具還原出apk的邏輯代碼、架構(gòu)、函數(shù)調(diào)用樹(shù)、界面源碼等。常見(jiàn)的工具有apktool和dex2jar,這也是我們主要使用的工具。另外,有專門(mén)針對(duì)于android逆向工程的linux操作系統(tǒng),集成了很多可以進(jìn)行反編譯的工具。

傳統(tǒng)的apk漏洞檢測(cè)方法,側(cè)重于在最新的版本中進(jìn)行漏洞檢測(cè),這樣只能發(fā)現(xiàn)當(dāng)前版本客戶端應(yīng)用的漏洞,而無(wú)法發(fā)現(xiàn)存在于服務(wù)器端、但未在新版本中使用的漏洞。這是傳統(tǒng)的檢測(cè)方法的一個(gè)盲點(diǎn)。

此外,傳統(tǒng)的apk漏洞檢測(cè)方法,僅對(duì)一個(gè)版本的apk進(jìn)行漏洞檢測(cè),忽略了版本與版本之間的聯(lián)系,因而檢測(cè)結(jié)果具有局限性,無(wú)法對(duì)apk的安全性進(jìn)行全面綜合的評(píng)測(cè)。



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

本發(fā)明的目的在于提供一種android系統(tǒng)應(yīng)用程序漏洞檢測(cè)方法,能有效檢測(cè)出應(yīng)用程序的漏洞,輔助于服務(wù)器滲透測(cè)試或者滲透測(cè)試工程師對(duì)第三方apk軟件的安全性評(píng)估等。

本發(fā)明android系統(tǒng)應(yīng)用程序漏洞檢測(cè)方法,包括以下步驟:

步驟一、分析待檢測(cè)的apk包,確定其可能存在的漏洞種類;

步驟二、尋找apk包的早期版本,并按照發(fā)布時(shí)間順序從早到晚排序各版本;

步驟三、從最早發(fā)布的apk包進(jìn)行apk可用性的測(cè)試,即測(cè)試apk包能否正常使用;如果不能正常使用,按照發(fā)布時(shí)間順序繼續(xù)選擇下一個(gè)apk包進(jìn)行測(cè)試,以此類推,直至找到一個(gè)可用的apk包為止,找到后進(jìn)入步驟四;

步驟四、對(duì)于不存在網(wǎng)絡(luò)連接的apk包,直接進(jìn)入步驟五,對(duì)于存在網(wǎng)絡(luò)連接的apk包,對(duì)apk包進(jìn)行網(wǎng)絡(luò)抓包嗅探分析測(cè)試,尋找漏洞;測(cè)試完畢后,對(duì)剩下的可用早期版本apk包逐一進(jìn)行網(wǎng)絡(luò)抓包嗅探分析測(cè)試,尋找漏洞,并記錄找到的每一個(gè)漏洞;

步驟五、對(duì)apk包進(jìn)行解包逆向工程操作,分析其是否存在漏洞;對(duì)剩下的可用早期版本apk進(jìn)行逆向工程測(cè)試,記錄找到的每一個(gè)漏洞;

步驟六、利用找到的漏洞進(jìn)行攻擊,試探攻擊是否成功,如果成功,則確定為漏洞。

從以上技術(shù)方案可知,本發(fā)明通過(guò)分析測(cè)試待檢測(cè)的apk包,確定其可能存在的漏洞種類;然后尋找apk包的早期版本,按照從舊到新排序各版本;循環(huán)遍歷早期版本的apk包,對(duì)其進(jìn)行apk可用性測(cè)試,對(duì)于存在網(wǎng)絡(luò)連接的apk包,對(duì)apk進(jìn)行抓包分析操作,記錄apk產(chǎn)生的各種參數(shù)。對(duì)于不存在網(wǎng)絡(luò)連接的apk,或是抓包分析完畢的apk,進(jìn)行解包逆向工程操作,結(jié)合網(wǎng)絡(luò)流分析其是否存在漏洞,最后,利用找到的漏洞進(jìn)行攻擊,試探攻擊的是否成功。

與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)和有益效果:對(duì)apk包的眾多版本,從舊版本到新版本逐一進(jìn)行漏洞測(cè)試,即采用全局版本的方式進(jìn)行漏洞檢測(cè)。一方面,可利用以前版本的漏洞來(lái)推斷新版本的漏洞,使得在檢測(cè)過(guò)程中,更有目的性;另外一方面,全局版本的漏洞檢測(cè)方式,可以更全面的檢測(cè)漏洞,從而對(duì)apk的安全性有一個(gè)更為綜合的評(píng)測(cè)結(jié)果。

附圖說(shuō)明

圖1是本發(fā)明實(shí)施例提供的一種android系統(tǒng)應(yīng)用程序漏洞檢測(cè)方法的流程圖。

具體實(shí)施方式

下面結(jié)合實(shí)施例和說(shuō)明書(shū)附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的具體實(shí)施方式不限于此。

實(shí)施例

本發(fā)明android系統(tǒng)應(yīng)用程序漏洞檢測(cè)方法先確定準(zhǔn)備檢測(cè)的apk應(yīng)用程序與其可能存在的漏洞種類;然后,尋找apk包的早期版本,將早期版本按照一定順序逐一展開(kāi)一系列的滲透測(cè)試;最后,對(duì)apk包進(jìn)行抓包嗅探測(cè)試與逆向工程分析;最后,利用早期版本發(fā)現(xiàn)的漏洞,攻擊現(xiàn)有版本的apk應(yīng)用。如圖1,各步驟具體如下:

步驟一、分析待檢測(cè)的apk包,確定其可能存在的漏洞種類。可能存在的漏洞種類包括以下情形:

1、泄露沿用的核心算法。最突出的就是在游戲中,很多算法一旦確定后都不會(huì)變更的。如2048、像素鳥(niǎo)、植物大戰(zhàn)僵尸、水果忍者等游戲。如果早期的源代碼被破解,現(xiàn)在的游戲便很容易被盜版。

2、泄露沿用的ui設(shè)計(jì)。在現(xiàn)有的很多android系統(tǒng)應(yīng)用程序中,可能存在部分界面和早期的類似甚至完全相同。

3、通信機(jī)制和內(nèi)部協(xié)議。如百度云3.0版本的andriod系統(tǒng)客戶端,仍然可以訪問(wèn)百度云現(xiàn)有的服務(wù)器。

4、客戶端與服務(wù)器協(xié)商的保密參數(shù),該參數(shù)可用作apk登錄的認(rèn)證憑證。

5、泄露企業(yè)的編程風(fēng)格。不同的企業(yè)在代碼開(kāi)發(fā)管理規(guī)范上都有不同的管理要求。有的是可以公開(kāi)的,而有的編程風(fēng)格或者所透露的代碼管理規(guī)范是企業(yè)不允許公開(kāi)的。

6、弱安全機(jī)制操作接口。通過(guò)早期版本暴露出來(lái)的操作接口,直接攻擊安全機(jī)制較差的服務(wù)器。

7、攻擊者通過(guò)android系統(tǒng)平臺(tái),揣摩其他平臺(tái)的代碼與算法。很可能他們用的算法是一樣的,至少結(jié)構(gòu)是一樣的。

8、篡改源代碼。繞過(guò)客戶端內(nèi)嵌的檢驗(yàn)機(jī)制或者植入病毒,如有的客戶端存在訪問(wèn)次數(shù)和期限的限制,如果拿到之前容易反編譯的客戶端版本,我們就可以利用其重新篡改源代碼轉(zhuǎn)入后臺(tái)。

步驟二、尋找該apk包的早期版本,并按照發(fā)布時(shí)間順序從早到晚排序各版本。尋找早期版本可以通過(guò)如下方式:

1、第三方平臺(tái):很多第三方平臺(tái),如安卓市場(chǎng)、手機(jī)樂(lè)園等,都提供了一個(gè)apk對(duì)應(yīng)歷史版本的下載鏈接。

2、官方發(fā)布:官方會(huì)有自己的網(wǎng)站、微博賬號(hào)、貼吧等,通過(guò)這些渠道發(fā)布自己最新的apk版本。通過(guò)其多個(gè)版本的發(fā)布情況,我們可以獲取到早期的apk版本。

3、搜索引擎。通過(guò)百度或者谷歌搜索引擎進(jìn)行搜索,搜索的關(guān)鍵字包括:

1)apk名稱+“歷史版本”,如淘寶歷史版本;

2)apk名稱+模糊版本號(hào),如淘寶1.0,百度云2.0,優(yōu)酷2.2;

3)apk名稱+具體版本號(hào),具體版本號(hào)一般建立于模糊版本號(hào)的基礎(chǔ)上,假如當(dāng)搜索了淘寶1.0,搜索引擎反饋回來(lái)的是所有與1.0有關(guān)的版本信息,如淘寶1.0.5今日發(fā)布,淘寶3.1.0重要更新。鑒于此,可以細(xì)化版本號(hào),完成精確搜索下載。

步驟三、從最早發(fā)布的apk包進(jìn)行apk可用性的測(cè)試,即測(cè)試該apk包是否可以正常使用;如果不可以正常使用,按照發(fā)布時(shí)間順序繼續(xù)選擇下一個(gè)apk包進(jìn)行測(cè)試,以此類推,直至找到一個(gè)可用的apk包為止,找到后進(jìn)入步驟四。

確定一個(gè)應(yīng)用程序的發(fā)布時(shí)間,可以通過(guò)解壓apk包的方法,獲取其“classes.dex”等文件的生成時(shí)間,該時(shí)間可以認(rèn)為是apk的發(fā)布時(shí)間,這用編程語(yǔ)言是非常容易實(shí)現(xiàn)的。

可用性測(cè)試可結(jié)合步驟四。如果一個(gè)apk已經(jīng)不可以使用,那么后續(xù)對(duì)其進(jìn)行的所有操作都是徒勞的。所以,能否正常使用是apk檢測(cè)操作的第一步,也是最為基本的一步。

步驟四、對(duì)于不存在網(wǎng)絡(luò)連接的apk包,直接進(jìn)入步驟五,對(duì)于存在網(wǎng)絡(luò)連接的apk包,對(duì)apk包進(jìn)行網(wǎng)絡(luò)抓包嗅探分析測(cè)試,尋找漏洞;測(cè)試完畢后,對(duì)剩下的可用早期版本apk包逐一進(jìn)行網(wǎng)絡(luò)抓包嗅探分析測(cè)試,尋找漏洞,并記錄找到的每一個(gè)漏洞。

網(wǎng)絡(luò)抓包嗅探,指的是通過(guò)抓取正常網(wǎng)絡(luò)的通信數(shù)據(jù),進(jìn)行數(shù)據(jù)嗅探,對(duì)抓取到的數(shù)據(jù)包進(jìn)行拆包和解包,試圖理解包內(nèi)數(shù)據(jù)的每個(gè)字段代表的具體含義,并試圖利用數(shù)據(jù)包模擬客戶端與服務(wù)器進(jìn)行交互。

尋找漏洞,主要是要借助客戶端和服務(wù)器之間的數(shù)據(jù)流,查找和操作相關(guān)的參數(shù),對(duì)數(shù)據(jù)流進(jìn)行分析,以快速鎖定目標(biāo)(即漏洞)。前述參數(shù)一般包括變量名和對(duì)應(yīng)的值,通常由運(yùn)算符“=”連接,非常容易被識(shí)別。具體來(lái)說(shuō),對(duì)漏洞判斷有價(jià)值的參數(shù)可分為以下三種:

(1)操作行為參數(shù):表明了操作行為的鍵值對(duì)。此時(shí),變量名可能是一個(gè)縮寫(xiě),如“op”、“method”等。它對(duì)應(yīng)的值可能看起來(lái)像一些字符串,包含目前將要進(jìn)行的行為,如“del”、“delete”。

(2)操作客體參數(shù):表明了操作客體的鍵值對(duì),變量名代表“要?jiǎng)h除名稱”,這些變量名可能形如“name”、“file”等。對(duì)應(yīng)的值是具體的文件名等。

(3)認(rèn)證參數(shù):表明了用戶身份信息或會(huì)話密鑰等鍵值對(duì)。一般情況,用戶名的變量形如“u”、“username”等等。密碼變量名則形如“password”、“pwd”等。認(rèn)證參數(shù)的變量名則形如“secret”、“sig”等。提交的值并不總是明文,如果值是密文,加密密鑰必然內(nèi)嵌在客戶端源代碼中,記錄下來(lái)等待步驟五的進(jìn)一步操作。

步驟五、對(duì)該apk包進(jìn)行解包逆向工程操作,分析其是否存在漏洞。對(duì)剩下的可用早期版本apk進(jìn)行逆向工程測(cè)試,記錄找到的每一個(gè)漏洞。

因?yàn)椴襟E四中得到的認(rèn)證參數(shù),往往不一定是明文,不能直接用于認(rèn)證或者攻擊行為,所以,一般的做法是將apk包進(jìn)行逆向工程操作,解析出內(nèi)部的認(rèn)證參數(shù)算法或者固化在應(yīng)用程序內(nèi)部的秘密認(rèn)證。利用鏈接網(wǎng)絡(luò)的版本,我們可以破譯通信機(jī)制和內(nèi)部協(xié)議、客戶端與服務(wù)器協(xié)商的保密參數(shù)、弱安全機(jī)制等方面的漏洞。

對(duì)于不連接網(wǎng)絡(luò)的版本,我們可以利用解析出的源代碼,推測(cè)應(yīng)用程序沿用的核心算法、沿用的ui設(shè)計(jì)、企業(yè)的編程風(fēng)格、跨操作系統(tǒng)平臺(tái)的攻擊漏洞和篡改源碼權(quán)限繞過(guò)等,為企業(yè)android系統(tǒng)應(yīng)用程序發(fā)展在這些方面的漏洞敲響警鐘。

步驟六、利用找到的漏洞進(jìn)行攻擊,試探攻擊是否成功,如果成功,則確定為漏洞。攻擊的方法可以為:

1)閱讀源代碼,破譯核心算法。

2)閱讀源代碼,破譯ui設(shè)計(jì)。

3)閱讀源代碼,解析企業(yè)編程風(fēng)格。

4)閱讀源代碼,尋找跨平臺(tái)攻擊點(diǎn)。

5)閱讀源代碼,進(jìn)行權(quán)限繞過(guò)。

6)包裝網(wǎng)絡(luò)流,對(duì)操作行為參數(shù)、操作客體參數(shù)等進(jìn)行數(shù)據(jù)重新封裝,利用tcpreplay、fiddler等工具進(jìn)行重放攻擊和中間人攻擊等。

7)閱讀源代碼,了解認(rèn)證機(jī)制和包裝網(wǎng)絡(luò)流,對(duì)指定用戶名與密碼進(jìn)行窮舉。

8)閱讀源代碼,了解弱安全機(jī)制接口和包裝網(wǎng)絡(luò)流,直接對(duì)弱安全機(jī)制接口進(jìn)行漏洞攻擊。

以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1