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