檢測(cè)安卓系統(tǒng)敏感信息泄露的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于檢測(cè)敏感信息泄露領(lǐng)域,具體涉及一種檢測(cè)安卓系統(tǒng)敏感信息泄露的方法和裝置。
【背景技術(shù)】
[0002]由于Android開源等特性,Android已經(jīng)成為全世界最流行的移動(dòng)終端操作系統(tǒng)。根據(jù)StrategyAnalytics的2014第三季度調(diào)研數(shù)據(jù)顯示,Android系統(tǒng)市場(chǎng)占有率為83.6%,居移動(dòng)操作系統(tǒng)市場(chǎng)第一。隨著Android移動(dòng)設(shè)備的廣泛應(yīng)用,大規(guī)模的惡意應(yīng)用也隨之產(chǎn)生。至2013年,Android占全球移動(dòng)惡意應(yīng)用的份額為97%。
[0003]通過(guò)大量非官方市場(chǎng)(包括官方市場(chǎng)google play)發(fā)布的應(yīng)用可以看出,由于缺乏有效的檢測(cè)機(jī)制,惡意應(yīng)用泛濫。惡意應(yīng)用主要分為耗費(fèi)資源型,破壞系統(tǒng)型,惡意扣費(fèi)型,竊取隱私數(shù)據(jù)型等等。如今,很多用戶在移動(dòng)終端保存了大量個(gè)人隱私數(shù)據(jù),并且很多商務(wù)人士還保存了商業(yè)機(jī)密數(shù)據(jù),這些數(shù)據(jù)成為越來(lái)越多的惡意應(yīng)用竊取的目標(biāo)。
[0004]目前檢測(cè)android隱私泄露主流的方法有靜態(tài)和動(dòng)態(tài)兩種。靜態(tài)的方法通過(guò)反編譯技術(shù)發(fā)現(xiàn)源碼中是否有的敏感數(shù)據(jù)泄露途徑。動(dòng)態(tài)方法是收集程序運(yùn)行時(shí)的行為信息,并檢測(cè)應(yīng)用程序與外部環(huán)境之間的交互,從而判斷是否有惡意行為。動(dòng)態(tài)污點(diǎn)分析是一種典型的隱私泄露檢測(cè)方法,通常需要三個(gè)環(huán)節(jié),污點(diǎn)標(biāo)記,污點(diǎn)傳播和污點(diǎn)檢測(cè),屬于動(dòng)態(tài)檢測(cè)方法的范疇。
[0005]現(xiàn)有的基于污點(diǎn)的檢測(cè)方法通常是通過(guò)定制特定的污點(diǎn)檢測(cè)系統(tǒng),對(duì)android系統(tǒng)或模擬器進(jìn)行靜態(tài)或動(dòng)態(tài)插粧,添加污點(diǎn)標(biāo)簽,觸發(fā)相應(yīng)的行為,在程序運(yùn)行時(shí)進(jìn)行檢測(cè)。這些方法大都需要配置復(fù)雜的android系統(tǒng)或模擬器環(huán)境,插粧過(guò)程比較復(fù)雜,通常難以準(zhǔn)確觸發(fā)惡意行為發(fā)生,也無(wú)法檢測(cè)污點(diǎn)數(shù)據(jù)的密文泄露等。
[0006]目前,中國(guó)專利申請(qǐng)公布號(hào)為CN103177210A公開了一種在Android中植入動(dòng)態(tài)污點(diǎn)分析模塊的方法,該方法對(duì)Android系統(tǒng)的系統(tǒng)類庫(kù)和應(yīng)用程序進(jìn)行靜態(tài)插粧,通過(guò)重定向虛擬機(jī)啟動(dòng)函數(shù)的方法重構(gòu)執(zhí)行環(huán)境,應(yīng)用程序裝載時(shí)能夠引用插粧后的系統(tǒng)類庫(kù),在運(yùn)行過(guò)程中,動(dòng)態(tài)污點(diǎn)分析模塊同步運(yùn)行,實(shí)施動(dòng)態(tài)污點(diǎn)跟蹤分析。該方法雖然不需要修改Android系統(tǒng)源代碼和系統(tǒng)架構(gòu),但對(duì)系統(tǒng)類庫(kù)和待測(cè)應(yīng)用都要進(jìn)行靜態(tài)插粧,還需要重構(gòu)執(zhí)行環(huán)境,實(shí)現(xiàn)復(fù)雜,且無(wú)法檢測(cè)污點(diǎn)數(shù)據(jù)以密文形式泄露,更無(wú)法自定義敏感數(shù)據(jù)源并預(yù)警提示待測(cè)應(yīng)用的危險(xiǎn)等級(jí)等。
【發(fā)明內(nèi)容】
[0007]本發(fā)明是為了解決上述課題而進(jìn)行的,目的在于提供一種實(shí)現(xiàn)簡(jiǎn)單,能自定義敏感信息且能夠同時(shí)檢測(cè)以明文或密文形式泄露的污點(diǎn)數(shù)據(jù)并能預(yù)警危險(xiǎn)等級(jí)的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法和裝置。
[0008]本發(fā)明提供了一種實(shí)現(xiàn)簡(jiǎn)單,能自定義敏感信息且能夠同時(shí)檢測(cè)以明文或密文形式泄露的污點(diǎn)數(shù)據(jù)并能預(yù)警危險(xiǎn)等級(jí)的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法,其特征在于,包括以下步驟:步驟1,將庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytesO以及庫(kù)函數(shù)SSL_write()的函數(shù)名稱加前綴,然后形成so文件,導(dǎo)入android native層中;
[0009]步驟2,將庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytes O以及庫(kù)函數(shù)SSL_write O對(duì)應(yīng)的函數(shù)體通過(guò)調(diào)用步驟I中相對(duì)應(yīng)的加前綴的庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytesO以及庫(kù)函數(shù)SSL_write O分別形成相應(yīng)的殼函數(shù),然后形成so文件,導(dǎo)入android native層中;
[0010]步驟3,定義敏感信息,將所有敏感信息進(jìn)程和待測(cè)應(yīng)用進(jìn)程的信息存儲(chǔ)于共享區(qū)中;
[0011]步驟4,當(dāng)待測(cè)應(yīng)用進(jìn)程調(diào)用所述庫(kù)函數(shù)1ctl O進(jìn)行進(jìn)程通信并且訪問的目的進(jìn)程屬于共存區(qū)時(shí),采用敏感信息進(jìn)程,標(biāo)記的常量污點(diǎn)數(shù)據(jù)和訪問敏感信息權(quán)重的三元組污點(diǎn)標(biāo)記形式對(duì)所述待測(cè)應(yīng)用進(jìn)程進(jìn)行污點(diǎn)標(biāo)記形成標(biāo)記信息,并將共享區(qū)中對(duì)應(yīng)的marked位置位,將所述標(biāo)記的常量污點(diǎn)數(shù)據(jù)存儲(chǔ)到共享存區(qū)的marked data中;
[0012]步驟5,根據(jù)標(biāo)記信息對(duì)殼函數(shù)sendtoBytes O和殼函數(shù)SSL_write O發(fā)送的數(shù)據(jù)包進(jìn)行污點(diǎn)檢測(cè);
[0013]步驟6,判斷包含標(biāo)記信息的所述數(shù)據(jù)包是否需要重新檢測(cè);
[0014]步驟7,計(jì)算待測(cè)應(yīng)用進(jìn)程中的訪問敏感信息權(quán)重之和并預(yù)警提示待測(cè)應(yīng)用進(jìn)程的危險(xiǎn)等級(jí)。
[0015]本發(fā)明的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法還可以具有這樣的特征:其中,殼函數(shù)的函數(shù)簽名與庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytes O以及庫(kù)函數(shù)SSL_write O的函數(shù)簽名形同。
[0016]本發(fā)明的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法還可以具有這樣的特征:其中,當(dāng)所述待測(cè)應(yīng)用沒使用加密算法時(shí),殼函數(shù)sendtoBytes O發(fā)送的為明文數(shù)據(jù)包,殼函數(shù)SSL_write O發(fā)送的為傳輸層SSL加密的密文數(shù)據(jù)包;當(dāng)所述待測(cè)應(yīng)用使用加密算法時(shí),兩個(gè)殼函數(shù)都發(fā)送密文數(shù)據(jù)包。
[0017]本發(fā)明的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法還可以具有這樣的特征:其中,步驟6包含以下步驟:
[0018]步驟6-1,緩存包含標(biāo)記信息的數(shù)據(jù)包至共享區(qū)的checked data和weight位;步驟 6~2,如果 checked data 和 marked data 一致,則 remarked 為置 0,如果 checked data和marked data不一致,則remarked為置1,暫存checked data的值,重新進(jìn)行污點(diǎn)標(biāo)記和檢測(cè)。
[0019]本發(fā)明還包括檢測(cè)android系統(tǒng)敏感信息泄露的裝置,其特征在于,包含:污點(diǎn)標(biāo)記模塊,位于android native層,用于對(duì)待檢測(cè)的應(yīng)用進(jìn)程進(jìn)行污點(diǎn)標(biāo)記;污點(diǎn)檢測(cè)模塊,位于android native層,用于過(guò)濾并截獲殼函數(shù)sendtoBytes O和殼函數(shù)SSL_write ()發(fā)送的數(shù)據(jù)包;控制模塊,位于android應(yīng)用層,用于用戶自定義敏感信息,自行查找所有敏感信息進(jìn)程和待檢測(cè)的應(yīng)用進(jìn)程的信息并寫入共享區(qū)中,接收所述污點(diǎn)檢測(cè)模塊發(fā)送的所述數(shù)據(jù)包,并對(duì)所述數(shù)據(jù)包進(jìn)行計(jì)算,給檢測(cè)人員預(yù)警提示所述待檢測(cè)的應(yīng)用進(jìn)程的危險(xiǎn)等級(jí);以及共享存儲(chǔ)模塊,位于進(jìn)程的全局?jǐn)?shù)據(jù)區(qū),用于存儲(chǔ)所述待檢測(cè)的應(yīng)用進(jìn)程、敏感信息進(jìn)程和標(biāo)記信息。
[0020]發(fā)明的作用與效果
[0021]根據(jù)本發(fā)明所涉及的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法,通過(guò)將在natinve層的庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytesO以及庫(kù)函數(shù)SSL_write O的函數(shù)名稱加前綴,并對(duì)庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytes O以及庫(kù)函數(shù)SSL_write O加殼形成殼函數(shù),加殼的庫(kù)函數(shù)1ctl O能夠?qū)Υ郎y(cè)應(yīng)用進(jìn)程進(jìn)行污點(diǎn)標(biāo)記,加殼的庫(kù)函數(shù)sendtoBytesO以及庫(kù)函數(shù)SSL_Write()能夠?qū)Υ郎y(cè)應(yīng)用進(jìn)程進(jìn)行明文和密文的污點(diǎn)檢查,從而降低了漏檢概率,在應(yīng)用層中,控制模塊能夠自定義敏感信息,并對(duì)待測(cè)應(yīng)用的危險(xiǎn)程度進(jìn)行計(jì)算和預(yù)警提示,因此本發(fā)明所涉及的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法不需要給待測(cè)應(yīng)用進(jìn)行靜態(tài)插粧,也不需要重構(gòu)執(zhí)行環(huán)境,即可以實(shí)現(xiàn)natinve層的動(dòng)態(tài)污點(diǎn)檢測(cè),并且檢測(cè)環(huán)境分層互聯(lián),實(shí)現(xiàn)簡(jiǎn)單,而且能夠預(yù)警危險(xiǎn)等級(jí)。
【附圖說(shuō)明】
[0022]圖1是本發(fā)明的實(shí)施例中檢測(cè)安卓系統(tǒng)敏感信息泄露的方法的流程圖;以及
[0023]圖2是本發(fā)明的實(shí)施例中檢測(cè)安卓系統(tǒng)敏感信息泄露的裝置的結(jié)構(gòu)圖。
[0024]具體實(shí)施案例
[0025]為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,以下實(shí)施例結(jié)合附圖對(duì)本發(fā)明的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法和裝置作具體闡述。
[0026]在Android中,一些敏感信息,比如通訊錄,相冊(cè),瀏覽日志信息等,都是以系統(tǒng)服務(wù)的形式存儲(chǔ),要訪問這些信息,必須訪問相應(yīng)的服務(wù)進(jìn)程。
[0027]惡意應(yīng)用獲取敏感信息數(shù)據(jù),大部分會(huì)通過(guò)網(wǎng)絡(luò)發(fā)送給遠(yuǎn)程服務(wù)器。這些敏感信息數(shù)據(jù)通過(guò)明文或密文發(fā)送。調(diào)用的兩個(gè)本地庫(kù)函數(shù)是sendtoBytesO和SSL_write()。
[0028]圖1是本發(fā)明的實(shí)施例中檢測(cè)安卓系統(tǒng)敏感信息泄露的方法的流程圖。
[0029]如圖1所示,檢測(cè)安卓系統(tǒng)敏感信息泄露的方法用于檢測(cè)安卓系統(tǒng)中的惡意應(yīng)用程序,防止惡意應(yīng)用肆意傳播,本發(fā)明的檢測(cè)安卓系統(tǒng)敏感信息泄露的方法實(shí)現(xiàn)簡(jiǎn)單,能自定義敏感信息且能夠同時(shí)檢測(cè)以明文或密文形式泄露的污點(diǎn)數(shù)據(jù)并能預(yù)警危險(xiǎn)等級(jí)。檢測(cè)安卓系統(tǒng)敏感信息泄露的方法100包含以下步驟:
[0030]步驟SI,分別導(dǎo)出android本地庫(kù)中包含的庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytesO以及庫(kù)函數(shù)SSL_write O的共享庫(kù)文件,解析文件獲取文件原型,然后給的庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytesO以及庫(kù)函數(shù)SSL_write O函數(shù)名稱加前綴,編譯成so文件,重新導(dǎo)入本地庫(kù)層中。
[0031]給函數(shù)名稱加前綴,如加“ctlmark_”,得到以 ctlmark_1ctl O,ctlmark_sendtoBytes O , ctlmark_SSL_write O 命名的形式,將以 ctlmark_1ctl O,ctlmark_sendtoBytes (),ctlmark_SSL_write O命名的庫(kù)函數(shù)編譯成so文件后,重新導(dǎo)入本地庫(kù)層中。然后進(jìn)入步驟S2。
[0032]步驟S2,將庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytes O以及所述庫(kù)函數(shù)SSL_write O對(duì)應(yīng)的函數(shù)體通過(guò)調(diào)用步驟I中相對(duì)應(yīng)的加前綴的庫(kù)函數(shù)1ctl O、庫(kù)函數(shù)sendtoBytes O以及庫(kù)函數(shù)SSL_write()分別形成相應(yīng)的殼函數(shù),然后形成so文件,導(dǎo)入本地庫(kù)層中。
[0033]污點(diǎn)標(biāo)記模塊:
[0034]mark, so包含如下內(nèi)容:
[0035]1ctl (para...) {
[0036]污點(diǎn)標(biāo)記功能代碼;
[0037]傳參代碼;
[0038]return ctlmark_1clt (para...);
[0039]}
[0040]污點(diǎn)檢測(cè)模塊:
[0041]check, so包含如下內(nèi)容:
[0042]sendToBytes (para...) {
[0043]檢測(cè)功能代碼;
[0044]傳參代碼;
[0045]return ctlmark_sendToBytes (para...);
[0046]}
[0047]SSLffrite (para...) {
[0048]檢測(cè)功能代碼;
[0049]傳參代碼;
[00