国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于動態(tài)鏈接庫注入的Android加密通信檢測裝置和方法

      文檔序號:6624730閱讀:184來源:國知局
      基于動態(tài)鏈接庫注入的Android加密通信檢測裝置和方法
      【專利摘要】一種基于動態(tài)鏈接庫注入的Android加密通信檢測裝置和方法,該檢測裝置設(shè)有動態(tài)鏈接庫注入、監(jiān)控點植入和數(shù)據(jù)包分析共三個模塊,它是在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對終端加密通信進行檢測與分析:采用動態(tài)鏈接庫注入方式,將殼代碼(shellcode)注入到智能終端的設(shè)定進程空間中,再在shellcode中尋找系統(tǒng)加密通信使用的API,作為在Android系統(tǒng)加密通信處設(shè)立或植入的監(jiān)測點,捕獲和記錄Android智能終端發(fā)出和接收的加密前的通信數(shù)據(jù)包,并基于Android平臺對該加密前的通信數(shù)據(jù)包進行檢測分析,解決以竊取用戶或企業(yè)隱私信息、傳播非法信息為目的加密通信造成的安全問題。本發(fā)明的創(chuàng)新優(yōu)點是:適用性強,監(jiān)測點可擴展、全面,數(shù)據(jù)包分析和分析代價小。因此,具有很好的推廣應(yīng)用前景。
      【專利說明】基于動態(tài)鏈接庫注入的Android加密通信檢測裝置和方法

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及一種用于移動Android平臺的加密通信檢測裝置,確切地說,涉及一 種基于動態(tài)鏈接庫注入的Android加密通信檢測裝置和方法,屬于信息安全中的網(wǎng)絡(luò)安全

      【技術(shù)領(lǐng)域】。

      【背景技術(shù)】
      [0002] 目前,針對PC端軟件加密通信進行檢測分析技術(shù)的研究文獻很多,但是,有關(guān)移 動Android平臺加密通信檢測分析技術(shù)的研究尚處初期,故至今尚未形成成熟的檢測工 具。如同PC端一樣,它的檢測,通常建立在軟件逆向分析技術(shù)基礎(chǔ)上。故常用的加密通信 檢測工具及輔助工具包括:Gdbserver、Andbug、Taintdroid和IDA Pro等。下面對這些工 具進行簡介:
      [0003] Gdbserver,作為GNU開源組織發(fā)布的一個強大的UNIX下的C\C++語言程序命令 行調(diào)試工具,主要具備下述四個方面的功能:
      [0004] 1、啟動程序后,可以按照自行定義或設(shè)置的要求隨心所欲地運行該程序。
      [0005] 2、可讓被調(diào)試的程序停止在設(shè)定的斷點處。(該斷點可以是條件表達式)
      [0006] 3、當程序停止時,可以檢查此時該程序中發(fā)生的事。
      [0007] 4、動態(tài)改變程序的執(zhí)行環(huán)境。
      [0008] 由于Android嵌入式系統(tǒng)的資源有限性,一般不能直接在目標系統(tǒng)上進行調(diào)試, 而是通常采用gdb+gdbserver的方式進行調(diào)試。遠程調(diào)試環(huán)境則由宿主機⑶B和目標機調(diào) 試樁stub共同構(gòu)成,兩者通過串口或傳輸控制協(xié)議TCP(Transmission Control Protocol) 網(wǎng)絡(luò)連接,并使用GDB標準程序串行協(xié)議協(xié)同工作,實現(xiàn)對目標機上的系統(tǒng)內(nèi)核和上層應(yīng) 用的監(jiān)控和調(diào)試功能。調(diào)試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機GDB和目標機調(diào) 試程序間的一個媒介而存在。
      [0009] 目前,越來越多的移動應(yīng)用是采用c\c++語言進行關(guān)鍵功能(如加密通信)的開 發(fā),利用JAVA本地程序調(diào)用接口 JNI (JAVA Native Interface)技術(shù),調(diào)用so庫中的功能 代碼,實現(xiàn)加密通信功能。Gdbserver用于調(diào)試C\C++語言實現(xiàn)的加密通信功能的應(yīng)用,找 到功能代碼,對加密通信進行檢測分析。
      [0010] Andbug,是一個無需源代碼的Android平臺JAVA程序調(diào)試器。它支持查看斷點、 堆棧、類或方法信息等功能,具備可擴展性,支持添加自行設(shè)計的腳本加入所需要的功能。
      [0011] 通過JAVA代碼實現(xiàn)加密通信功能的應(yīng)用,可以使用Andbug進行調(diào)試追蹤,對加密 通信進行檢測分析。
      [0012] Taintdroid,它是一個基于系統(tǒng)鏡像(Android ROM)修改的應(yīng)用程序行為檢測工 具,通過修改源碼相應(yīng)的部分代碼,編譯定制系統(tǒng)鏡像R0M,實現(xiàn)包括加密通信等的檢測分 析功能。其主要原理是在Android源碼中增加對對象的操作類,并在對象中增加變量和 存儲標識,完成對關(guān)鍵數(shù)據(jù)的污點標記。當程序通過應(yīng)用程序編程接口 API (Application Programming Interface)獲取敏感信息,利用封裝的操作類數(shù)據(jù)進行污點標識。
      [0013] IDA,作為交互式反匯編器專業(yè)版(Interactive Disassembler Professional) 的遞歸下降反匯編器,它是Hex-Rayd公司推出的一款世界頂級逆向分析工具。它支持 Android動態(tài)鏈接庫無源碼的反匯編與動態(tài)調(diào)試。它能夠結(jié)合gdbserver,更簡便、快捷地 完成由C\C++語言編寫的加密通信功能代碼的檢測分析。
      [0014] 現(xiàn)在,國內(nèi)外都在移動Android平臺加密通信檢測分析領(lǐng)域做了大量的研究工 作,并提出了一些可行的分析方法。
      [0015] 目前,移動Android平臺加密通信檢測分析方法有多種:基于定制手機系統(tǒng)鏡像 (ROM)檢測方法、內(nèi)存解密檢測方法和基于調(diào)試技術(shù)的檢測方法等。其中:
      [0016] 基于定制手機系統(tǒng)鏡像ROM檢測方法:由于Android平臺源碼的開放性,可通過對 源碼的閱讀和修改,定制手機系統(tǒng)鏡像R0M,完成加密通信的檢測分析。
      [0017] 從應(yīng)用完成加密通信開始,追蹤查看API調(diào)用關(guān)系,找到加密通信調(diào)用的系統(tǒng) JAVA層與本地C\C++層API,在相應(yīng)的API實現(xiàn)函數(shù)中,打印出需要檢測分析的數(shù)據(jù)流;修 改完成后,編譯源代碼,生成定制化系統(tǒng)鏡像R0M,刷入檢測終端中,完成加密通信數(shù)據(jù)包的 捕獲分析。
      [0018] 內(nèi)存解密檢測方法:由于程序會對網(wǎng)絡(luò)加密數(shù)據(jù)進行解密操作,因此,只要能夠定 位到加密數(shù)據(jù)在程序中的解密內(nèi)存,即解密數(shù)據(jù)所在內(nèi)存,即可完成對加密通信數(shù)據(jù)檢測 分析。
      [0019] 目前,主要有兩種解密內(nèi)存的定位方法,分別介紹如下:
      [0020] 第一種是基于循環(huán)輸入輸出的解密內(nèi)存通用定位方法:數(shù)據(jù)加密和解密過程中, 通常要執(zhí)行多次迭代操作,因此,基本上所有密碼函數(shù)都在實現(xiàn)過程中采用了循環(huán)結(jié)構(gòu),且 在循環(huán)迭代的過程中,生成解密內(nèi)存。例如,RC4算法密碼函數(shù)中,通常包含有三個循環(huán)結(jié) 構(gòu):前兩個循環(huán)結(jié)構(gòu)用于生成密鑰,最后一個循環(huán)執(zhí)行具體的加解密操作。此外,對于長度 不固定的密文,同樣會使用循環(huán)結(jié)構(gòu)進行分塊處理,并輸出解密結(jié)果。
      [0021] 因此,可以通過動態(tài)定位密碼函數(shù)內(nèi)部的循環(huán)結(jié)構(gòu),對循環(huán)結(jié)構(gòu)的輸入輸出進行 分析,從而收集到包含解密數(shù)據(jù)的內(nèi)存集合。在此基礎(chǔ)上,再結(jié)合解密數(shù)據(jù)的特性,從中進 一步篩選出解密內(nèi)存。
      [0022] 第二種是基于髙依賴度的解密內(nèi)存快速定位方法:目前絕大部分加密通信的密碼 應(yīng)用都是使用分組密碼,如數(shù)據(jù)加密算法DES (Data Encryption Standard)、3DES、高級加 密算法AES (Advanced Encryption Standard)等,都是基于或改進了的Feistel分組密碼 結(jié)構(gòu)。從數(shù)據(jù)相關(guān)性的角度來看,分組密碼輸出的解密數(shù)據(jù)與加密數(shù)據(jù)之間具有很強的關(guān) 聯(lián)性。
      [0023] 因而,根據(jù)上述特點,利用細顆粒度污點分析技術(shù)能夠很好地表達密文與明文之 間的強關(guān)聯(lián)特性,且污點分析的粒度越細(如進行比特級的污點分析),這種關(guān)聯(lián)性就體現(xiàn) 得越強。大部分情況下,解密內(nèi)存中的每個字節(jié)都與密文中的多個字節(jié)數(shù)據(jù)相關(guān),因此,從 細粒度污點分析的角度,解密內(nèi)存中的每個字節(jié)都會被密文的多個字節(jié)所污染,利用該特 性可以較為容易地區(qū)別解密內(nèi)存。
      [0024] 基于調(diào)試技術(shù)的檢測方法:該方法是在靜態(tài)反編譯或反匯編的基礎(chǔ)上,定位加密 通信代碼段,再利用動態(tài)調(diào)試手段,在相應(yīng)的代碼段設(shè)置斷點,查看寄存器或內(nèi)存的變量中 存儲的通信過程中產(chǎn)生的數(shù)據(jù)包,達到檢測分析的目的。
      [0025] 目前,基于調(diào)試技術(shù)的檢測方法,也是在逆向分析加密通信數(shù)據(jù)包時最常用和最 直接的檢測分析方法,但是,其效果很大程度上取決于人工分析經(jīng)驗,而且,其前期準備工 作繁雜,分析代價也最大。
      [0026] 目前,主流的Android平臺加密通信檢測分析方法基本是以逆向工具分析為主, 所需要的準備開銷大,人工參與度高,適用局限性較大。具體不足如下:
      [0027] ㈧分析代價較大:現(xiàn)有技術(shù)的分析方法代價較大,如基于定制ROM的檢測方法 中,構(gòu)建檢測分析環(huán)境時,需要編譯系統(tǒng)鏡像、下載源碼、修改相關(guān)位置代碼和將定制ROM 刷入檢測終端中,這一系列的操作都是非常耗時、耗力。基于調(diào)試技術(shù)的檢測方法中,首先 需要對應(yīng)用進行靜態(tài)代碼分析,定位應(yīng)用加密通信代碼段,然后再動態(tài)運行至斷點位置,逐 一查找相關(guān)信息,這種動靜結(jié)合的方式對加密通信數(shù)據(jù)包進行檢測,工作量巨大。
      [0028] (B)人工參與度高:基于調(diào)試技術(shù)的檢測方法,很大程度上依賴于人工靜態(tài)分析 的結(jié)果,即依靠人工分析的經(jīng)驗來尋找斷點。整個過程需要人為參與,且調(diào)試過程復(fù)雜,技 巧性強,對參與人員的技術(shù)水平要求很高。
      [0029] (C)適用局限性較大:基于定制系統(tǒng)鏡像ROM的檢測方法,只能在其特定系統(tǒng)上 運行待檢測的應(yīng)用,不同的系統(tǒng)鏡像ROM、以及不同的Android系統(tǒng)版本和機型等因素的區(qū) 另IJ,大大增加了其適用的局限性。而且,基于調(diào)試技術(shù)的檢測方法,只能在動態(tài)調(diào)試過程中 對加密通信數(shù)據(jù)包進行檢測分析,且檢測過程復(fù)雜、技術(shù)性較強,碰到多線程的應(yīng)用時,調(diào) 試難度更加增大。所以,該方法的適用局限性較大。
      [0030] 隨著移動互聯(lián)網(wǎng)飛速發(fā)展,Andorid平臺的市場拓展迅猛,Android應(yīng)用正在逐漸 成為人們獲取信息和交流的一種重要工具。與此同時,一些以竊取用戶或企業(yè)隱私信息為 目的的惡意應(yīng)用,以傳播非法信息為目的的翻墻程序等利用加密通信的應(yīng)用,正在成為個 人、企業(yè)、甚至是國家信息安全的重要威脅。
      [0031] 傳統(tǒng)的非加密通信的分析方法基本上是監(jiān)聽其通信數(shù)據(jù),再結(jié)合程序行為特征, 猜測并驗證其特定的數(shù)據(jù)內(nèi)容所對應(yīng)的網(wǎng)絡(luò)行為進行分析。但是,由于加密通信的Android 應(yīng)用,監(jiān)聽到的數(shù)據(jù)大多為無法識別的數(shù)據(jù)格式,上述傳統(tǒng)方法已經(jīng)難以對其進行分析,更 不能得出正確結(jié)果。


      【發(fā)明內(nèi)容】

      [0032] 有鑒于此,本發(fā)明的目的是提供一種基于動態(tài)鏈接庫注入的Android加密通信檢 測裝置和方法,本發(fā)明檢測裝置能夠在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對終端加密 通信進行檢測與分析。通過動態(tài)鏈接庫注入的方式,注入殼代碼(shellcode)代碼到終端 的指定進程空間中;在shellcode中,尋找系統(tǒng)加密通信使用的API,并植入監(jiān)控點。這樣 在應(yīng)用調(diào)用加密通信接口時,通信數(shù)據(jù)經(jīng)過監(jiān)控點時,就會被數(shù)據(jù)分析器所記錄,實現(xiàn)檢測 分析。
      [0033] 為了達到上述目的,本發(fā)明提供了一種基于動態(tài)鏈接庫注入的Android加密通信 檢測裝置,其特征在于:在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對終端加密通信進行檢測 與分析:采用動態(tài)鏈接庫注入方式,將殼代碼(shellcode)注入到智能終端的設(shè)定進程空 間中,再在shellcode中尋找系統(tǒng)加密通信使用的API,作為在Android系統(tǒng)加密通信處設(shè) 立或植入的監(jiān)測點,捕獲和記錄Android智能終端發(fā)出和接收的加密前的通信數(shù)據(jù)包,并 基于Android平臺對該加密前的通信數(shù)據(jù)包進行檢測分析,解決以竊取用戶或企業(yè)隱私信 息、傳播非法信息為目的的加密通信造成的安全問題;設(shè)有:動態(tài)鏈接庫注入模塊、監(jiān)控點 植入模塊、數(shù)據(jù)包分析模塊共三個模塊;其中:
      [0034] 動態(tài)鏈接庫注入模塊,用于將由監(jiān)控代碼編譯的動態(tài)鏈接庫注入到待監(jiān)測應(yīng)用的 進程空間中,為植入監(jiān)控點創(chuàng)造條件;設(shè)有兩個組件:附著進程單元和加載動態(tài)鏈接庫單 元;
      [0035] 監(jiān)控點植入模塊,用于通過替換加密通信API方式,在加密通信過程中,植入作為 監(jiān)控代碼的殼代碼shellcode,以捕獲加密前的通信數(shù)據(jù)包,再傳送給數(shù)據(jù)包分析模塊;設(shè) 有兩個組件:本地C語言層進入JAVA語言層單元和替換JAVA語言層API單元;
      [0036] 數(shù)據(jù)包分析模塊,用于接收并處理由監(jiān)控代碼捕獲的加密前的通信數(shù)據(jù)包,進行 數(shù)據(jù)包分析和分片整合,生成數(shù)據(jù)分析結(jié)果報告;設(shè)有兩個組件:數(shù)據(jù)包分析單元和分片 整合單元。
      [0037] 為了達到上述目的,本發(fā)明還提供了一種采用本發(fā)明基于動態(tài)鏈接庫注入的 Android加密通信檢測裝置的檢測方法,其特征在于:所述方法是在不改變系統(tǒng)ROM和不處 于調(diào)試狀態(tài)下,對終端加密通信進行檢測與分析:該檢測裝置的動態(tài)鏈接庫注入模塊對終 端設(shè)定空間內(nèi)的待監(jiān)測應(yīng)用進程注入殼代碼(shellcode),尋找系統(tǒng)加密通信使用的API, 得到可植入監(jiān)控點的應(yīng)用進程,再傳遞給監(jiān)控點植入模塊;監(jiān)控點植入模塊對該應(yīng)用進程 根據(jù)API替換的方式植入監(jiān)控代碼,得到植入監(jiān)控點的應(yīng)用程序后,傳送給數(shù)據(jù)分析模塊; 在應(yīng)用調(diào)用加密通信接口時,數(shù)據(jù)分析模塊接收由植入監(jiān)控點應(yīng)用程序記錄加密前的通信 數(shù)據(jù)包,進行檢測分析處理,得到最后通信數(shù)據(jù)結(jié)果;該方法包括下列操作步驟:
      [0038] 步驟1,檢測裝置的安裝和配置:在測試終端安裝Android加密通信檢測裝置后, 配置檢測任務(wù),即選擇待測應(yīng)用,并啟動檢測裝置;
      [0039] 步驟2,動態(tài)鏈接庫注入模塊注入動態(tài)鏈接庫,為植入監(jiān)控點創(chuàng)造運行環(huán)境;
      [0040] 步驟3,監(jiān)控點植入模塊替換加密通信API,植入監(jiān)控代碼,捕獲加密前的明文通 信數(shù)據(jù)包;
      [0041] 步驟4,數(shù)據(jù)分析模塊接收并處理加密通信數(shù)據(jù)包,生成數(shù)據(jù)分析結(jié)果。
      [0042] 本發(fā)明基于動態(tài)鏈接庫注入的Android平臺加密通信檢測裝置是在Android系統(tǒng) 加密通信處設(shè)立監(jiān)測點,檢測分析Android平臺的加密通信內(nèi)容,從而解決了以竊取用戶 或企業(yè)的隱私信息、傳播非法信息為目的的加密通信帶來的安全問題。本發(fā)明的創(chuàng)新優(yōu)點 包括下述四個方面:
      [0043] (A)適用性強:本發(fā)明采用基于動態(tài)鏈接庫注入的方法,相對于其他檢測方法,其 不需要更改檢測終端和檢測系統(tǒng),也無需進行調(diào)試狀態(tài)下斷點等方式,就能夠捕獲到加密 通信數(shù)據(jù)包,具有適用性強,使用便捷等優(yōu)點。
      [0044] (B)監(jiān)測點可擴展、全面:基于動態(tài)鏈接庫注入的加密通信檢測分析方法,既能監(jiān) 控由本地層C\C++實現(xiàn)的加密通信API,又能監(jiān)控在JAVA層應(yīng)用環(huán)境中JAVA實現(xiàn)的加密通 信API的監(jiān)測,因此其監(jiān)測點比較全面,且可擴展,并且,擴展操作只需要在動態(tài)鏈接庫添 加相應(yīng)代碼即可,非常便利,容易實現(xiàn)。
      [0045] (C)數(shù)據(jù)包分析:相比于其他檢測方法,本發(fā)明基于動態(tài)鏈接庫注入的加密通信 檢測分析方法,能夠?qū)⒉东@的數(shù)據(jù)包進行記錄,并做通信流處理分析,便于后期的通信內(nèi)容 分析。
      [0046] (D)分析代價?。罕景l(fā)明基于動態(tài)鏈接庫注入的加密通信檢測分析方法既不需要 修改ROM的源代碼,進行編譯刷機;也不用執(zhí)行復(fù)雜的調(diào)試工作,記錄斷點和操作調(diào)試器進 行變量查找等工作,因此,整個通信流程的分析代價小,計算量簡單。
      [0047] 因此,本發(fā)明檢測裝置和方法具有很好的推廣應(yīng)用前景。

      【專利附圖】

      【附圖說明】
      [0048] 圖1是本發(fā)明基于動態(tài)鏈接庫注入的Android加密通信檢測裝置示意圖。
      [0049] 圖2是本發(fā)明基于動態(tài)鏈接庫注入的Android加密通信檢測裝置結(jié)構(gòu)組成示意 圖。
      [0050] 圖3是本發(fā)明基于動態(tài)鏈接庫注入的Android加密通信檢測裝置檢測方法操作步 驟流程圖。

      【具體實施方式】
      [0051] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明作進一步 的詳細描述。
      [0052] 本發(fā)明目標是基于動態(tài)鏈接庫注入的方式,開發(fā)一個Android平臺加密通信檢測 裝置,該裝置可以捕獲記錄Android智能終端發(fā)出和/或接收的加密通信包。因此,如何尋 找監(jiān)測點是加密通信檢測的關(guān)鍵。
      [0053] 參見圖1,介紹本發(fā)明Android加密通信裝置:該檢測裝置設(shè)有:動態(tài)鏈接庫注入 模塊、監(jiān)控點植入模塊、數(shù)據(jù)包分析器共三個模塊,它是在不改變系統(tǒng)ROM和不處于調(diào)試狀 態(tài)下,對終端加密通信進行檢測與分析:采用動態(tài)鏈接庫注入方式,將殼代碼(shellcode) 注入到智能終端的設(shè)定進程空間中,再在shellcode中尋找系統(tǒng)加密通信使用的API,作為 在Android系統(tǒng)加密通信處設(shè)立或植入的監(jiān)測點,捕獲和記錄Android智能終端發(fā)出和接 收的加密前的通信數(shù)據(jù)包,并基于Android平臺對該加密前的通信數(shù)據(jù)包進行檢測分析, 解決以竊取用戶或企業(yè)隱私信息、傳播非法信息為目的的加密通信造成的安全問題。其中, 動態(tài)鏈接庫注入模塊將準備監(jiān)測的應(yīng)用進行注入處理,得到可植入監(jiān)控點的應(yīng)用進程,為 植入監(jiān)控點創(chuàng)造條件。接著,監(jiān)控點植入模塊對上述進程根據(jù)API替換的方式植入監(jiān)控代 碼,得到植入監(jiān)控點應(yīng)用程序。最后,數(shù)據(jù)分析模塊接收由植入監(jiān)控點應(yīng)用程序記錄的加密 前通信數(shù)據(jù)包,進行分析處理,得到最后通信數(shù)據(jù)分析記錄。
      [0054] 參見圖2,具體介紹本發(fā)明基于動態(tài)鏈接庫注入的檢測裝置的結(jié)構(gòu)組成:
      [0055] 動態(tài)鏈接庫注入模塊,其功能是將由監(jiān)控代碼編譯的動態(tài)鏈接庫注入到待監(jiān)測應(yīng) 用的進程空間中,為植入監(jiān)控點創(chuàng)造條件。設(shè)有兩個組件:附著進程單元和加載動態(tài)鏈接庫 單元。這兩個單元功能說明如下 :
      [0056] 附著進程單元:負責根據(jù)調(diào)試器采用的傳統(tǒng)調(diào)試技術(shù)原理,使用進程跟蹤 (ptrace)系統(tǒng)調(diào)用,處理待監(jiān)測的應(yīng)用進程,即將動態(tài)鏈接庫附著到被監(jiān)控應(yīng)用的進程空 間中。
      [0057] 加載動態(tài)鏈接庫單元:用于在動態(tài)鏈接庫附著到待監(jiān)測的應(yīng)用進程后,通過動態(tài) 鏈接庫加載函數(shù),將由監(jiān)控代碼編譯生成的動態(tài)鏈接庫加載到該應(yīng)用進程空間中,以便為 運行監(jiān)控點植入代碼提供條件。
      [0058] 監(jiān)控點植入模塊,其功能是通過替換加密通信API方式,在加密通信過程中,植入 作為監(jiān)控代碼的殼代碼shellcode,以捕獲加密前的通信數(shù)據(jù)包,再傳送給數(shù)據(jù)包分析模 塊;設(shè)有兩個組件:本地C語言層進入JAVA語言層單元和替換JAVA語言層API單元。這兩 個單元功能說明如下 :
      [0059] 本地C語言層進入JAVA語言層單元:負責利用JAVA本地調(diào)用接口 JNI (JAVA Native Interface),由C語言層運行環(huán)境進入JAVA語言層運行環(huán)境,為替換JAVA語言層 加密通信API提供條件。這是因為Android應(yīng)用程序是采用JAVA語言編寫的,其加密通信 調(diào)用的加密API位于JAVA層,而動態(tài)鏈接庫是以C語言編寫的。
      [0060] 替換JAVA語言層API單元:負責在C語言層運行環(huán)境進入JAVA語言層運行環(huán)境 后,將JAVA層原加密通信的API替換為加入監(jiān)控代碼修改后的加密通信API ;并在加密通 信過程中,準備加密的明文數(shù)據(jù)包調(diào)用修改后的加密通信API時,由監(jiān)控代碼記錄該加密 前的明文數(shù)據(jù)包,再傳遞給數(shù)據(jù)分析模塊。
      [0061] 數(shù)據(jù)包分析模塊,其功能是接收并處理由監(jiān)控代碼捕獲的加密前的通信數(shù)據(jù)包, 進行數(shù)據(jù)包分析和分片整合,生成數(shù)據(jù)分析結(jié)果報告。設(shè)有兩個組件:數(shù)據(jù)包分析單元和分 片整合單元。這兩個單元功能說明如下:
      [0062] 數(shù)據(jù)包分析單元:用于根據(jù)協(xié)議對來自監(jiān)控點植入模塊的加密前的明文通信數(shù) 據(jù)包進行分析處理,找出該明文數(shù)據(jù)包中的通信地址、通信端口、通信協(xié)議和通信內(nèi)容的信 息,并進行歸類分片后,送至分片整合單元繼續(xù)處理。
      [0063] 分片整合單元:用于根據(jù)TCP/IP通信協(xié)議,對從數(shù)據(jù)包分析單元獲得的通信分片 數(shù)據(jù)包進行流分析和整合處理,形成多次完整的通信對話,以供對通信內(nèi)容進行分析與展 示;這是因為每次完整的通信對話都會受限于數(shù)據(jù)包容量而被分片為不同數(shù)據(jù)包。
      [0064] 本發(fā)明基于動態(tài)鏈接庫注入的Android加密通信檢測裝置的檢測方法的特點是: 在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,就能夠?qū)K端加密通信進行檢測與分析:
      [0065] 該檢測裝置的動態(tài)鏈接庫注入模塊對終端設(shè)定空間內(nèi)的待監(jiān)測應(yīng)用進程注入殼 代碼(shellcode),尋找系統(tǒng)加密通信使用的API,得到可植入監(jiān)控點的應(yīng)用進程,再傳遞 給監(jiān)控點植入模塊;
      [0066] 監(jiān)控點植入模塊對該應(yīng)用進程根據(jù)API替換的方式植入監(jiān)控代碼,得到植入監(jiān)控 點的應(yīng)用程序后,傳送給數(shù)據(jù)分析模塊;
      [0067] 在應(yīng)用調(diào)用加密通信接口時,數(shù)據(jù)分析模塊接收由植入監(jiān)控點應(yīng)用程序記錄加密 前的通信數(shù)據(jù)包,進行檢測分析處理,得到最后通信數(shù)據(jù)結(jié)果。
      [0068] 參見圖3,介紹本發(fā)明加密通信檢測裝置的檢測方法的具體操作步驟:
      [0069] 步驟1,檢測裝置的安裝和配置:在測試終端安裝Android加密通信檢測裝置后, 配置檢測任務(wù),即選擇待測應(yīng)用,并啟動檢測裝置。
      [0070] 步驟2,動態(tài)鏈接庫注入模塊注入動態(tài)鏈接庫,為植入監(jiān)控點創(chuàng)造運行環(huán)境。該步 驟2包括下列兩項操作內(nèi)容:
      [0071] (21)附著進程:動態(tài)鏈接庫注入模塊中的附著進程單元根據(jù)調(diào)試器采用的傳統(tǒng) 調(diào)試技術(shù)原理,使用進程跟蹤(ptrace)系統(tǒng)調(diào)用來處理待監(jiān)測的應(yīng)用進程,即將動態(tài)鏈接 庫附著到被監(jiān)控應(yīng)用的進程空間中。
      [0072] (22)加載動態(tài)鏈接庫:在動態(tài)鏈接庫附著到待監(jiān)測進程后,加載動態(tài)鏈接庫單元 利用動態(tài)鏈接庫加載函數(shù),將由監(jiān)控代碼編譯生成的動態(tài)鏈接庫加載到進程空間中,以便 為運行監(jiān)控點植入代碼提供條件。
      [0073] 步驟3,監(jiān)控點植入模塊替換加密通信API,植入監(jiān)控代碼,捕獲加密前的明文通 信數(shù)據(jù)包。該步驟3包括下列兩項操作內(nèi)容:
      [0074] (31) C語言層進入JAVA語言層:監(jiān)控點植入模塊中的C語言層進入JAVA語言層 單元利用JAVA本地調(diào)用接口 JNI,使得在鏈接庫中用C語言層運行環(huán)境進入JAVA語言層運 行環(huán)境,為替換JAVA語言層加密通信API提供條件。
      [0075] (32)替換JAVA語言層API :在從C語言層進入JAVA語言層后,替換JAVA語言層 API單元在JAVA層加密通信API中植入監(jiān)控代碼;并在加密通信過程中,準備加密的明文 數(shù)據(jù)包調(diào)用修改后的加密通信API時,由監(jiān)控代碼記錄該加密前的明文通信數(shù)據(jù)包,傳遞 給數(shù)據(jù)分析模塊。
      [0076] 步驟4,數(shù)據(jù)分析模塊接收并處理加密通信數(shù)據(jù)包,生成數(shù)據(jù)分析結(jié)果。該步驟4 包括下列兩項操作內(nèi)容:
      [0077] (41)數(shù)據(jù)包分析:根據(jù)通信協(xié)議規(guī)定,數(shù)據(jù)分析模塊中的數(shù)據(jù)包分析單元對來自 監(jiān)控點植入模塊的加密前的明文數(shù)據(jù)包進行分析,找出其中的通信地址、通信端口、通信協(xié) 議和通信內(nèi)容的信息,并進行歸類分片后,送至分片整合單元繼續(xù)處理。
      [0078] (42)分片整合:根據(jù)TCP/IP通信協(xié)議,每次完整的通信對話會受限于數(shù)據(jù)包大小 而被分片成不同數(shù)據(jù)包,分片整合單元對數(shù)據(jù)包分析單元獲得的通信分片數(shù)據(jù)包進行流分 析和整合處理,形成多次完整的通信對話,以供對通信內(nèi)容進行分析展示。
      [0079] 本發(fā)明已經(jīng)進行了多次仿真實施試驗,下面簡要說明實施例的試驗情況:
      [0080] 第一種實施例是對非法應(yīng)用進行監(jiān)控測試:使用本發(fā)明檢測裝置對以加密通信方 式傳遞非法信息的Android平臺應(yīng)用程序進行加密信息捕獲分析和監(jiān)控測試,并得到相應(yīng) 信息。因此,國家和政府相關(guān)部門如果需要對以加密通信為手段、傳播非法信息為目的的翻 墻程序?qū)嵤┍O(jiān)控,就可以使用本發(fā)明裝置,對可疑的應(yīng)用進行加密通信檢測,獲取非法信息 內(nèi)容,并應(yīng)對其帶來的安全威脅。
      [0081] 第二種實施例是惡意應(yīng)用分析:惡意應(yīng)用檢測與分析的單位和公司對以加密通信 為手段,竊取個人或政企信息等惡意行為的應(yīng)用,也完全能夠使用本發(fā)明裝置,通過檢測分 析其加密通信的數(shù)據(jù)包,對惡意行為進行深度分析及歸類,做出精確的應(yīng)對措施。
      [0082] 本發(fā)明的多次實施例的試驗結(jié)果是成功的,實現(xiàn)了發(fā)明目的。
      【權(quán)利要求】
      1. 一種基于動態(tài)鏈接庫注入的Android加密通信檢測裝置,其特征在于:該檢測裝置 是在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對終端加密通信進行檢測與分析:采用動態(tài)鏈 接庫注入方式,將殼代碼(shellcode)注入到智能終端的設(shè)定進程空間中,再在shellcode 中尋找系統(tǒng)加密通信使用的API,作為在Android系統(tǒng)加密通信處設(shè)立或植入的監(jiān)測點,捕 獲和記錄Android智能終端發(fā)出和接收的加密前的通信數(shù)據(jù)包,并基于Android平臺對該 加密前的通信數(shù)據(jù)包進行檢測分析,解決以竊取用戶或企業(yè)隱私信息、傳播非法信息為目 的的加密通信造成的安全問題;設(shè)有:動態(tài)鏈接庫注入模塊、監(jiān)控點植入模塊、數(shù)據(jù)包分析 模塊共三個模塊;其中: 動態(tài)鏈接庫注入模塊,用于將由監(jiān)控代碼編譯的動態(tài)鏈接庫注入到待監(jiān)測應(yīng)用的進程 空間中,為植入監(jiān)控點創(chuàng)造條件;設(shè)有兩個組件:附著進程單元和加載動態(tài)鏈接庫單元; 監(jiān)控點植入模塊,用于通過替換加密通信API方式,在加密通信過程中,植入作為監(jiān)控 代碼的殼代碼shellcode,以捕獲加密前的通信數(shù)據(jù)包,再傳送給數(shù)據(jù)包分析模塊;設(shè)有兩 個組件:本地C語言層進入JAVA語言層單元和替換JAVA語言層API單元; 數(shù)據(jù)包分析模塊,用于接收并處理由監(jiān)控代碼捕獲的加密前的通信數(shù)據(jù)包,進行數(shù)據(jù) 包分析和分片整合,生成數(shù)據(jù)分析結(jié)果報告;設(shè)有兩個組件:數(shù)據(jù)包分析單元和分片整合 單元。
      2. 根據(jù)權(quán)利要求1所述的裝置,其特征在于:所述動態(tài)鏈接庫注入模塊中的各個組件 功能如下: 附著進程單元,負責根據(jù)調(diào)試器采用的傳統(tǒng)調(diào)試技術(shù)原理,使用進程跟蹤(ptrace)系 統(tǒng)調(diào)用,處理待監(jiān)測的應(yīng)用進程,即將動態(tài)鏈接庫附著到被監(jiān)控應(yīng)用的進程空間中; 加載動態(tài)鏈接庫單元,用于在動態(tài)鏈接庫附著到待監(jiān)測的應(yīng)用進程后,通過動態(tài)鏈接 庫加載函數(shù),將由監(jiān)控代碼編譯生成的動態(tài)鏈接庫加載到該應(yīng)用進程空間中,以便為運行 監(jiān)控點植入代碼提供條件。
      3. 根據(jù)權(quán)利要求1所述的裝置,其特征在于:所述監(jiān)控點植入模塊中的各個組件功能 如下: 本地C語言層進入JAVA語言層單元,負責利用JAVA本地調(diào)用接口 JNI (JAVA Native Interface),由C語言層運行環(huán)境進入JAVA語言層運行環(huán)境,為替換JAVA語言層加密通信 API提供條件;這是因為Android應(yīng)用程序是采用JAVA語言編寫的,其加密通信調(diào)用的加 密API位于JAVA層,而動態(tài)鏈接庫是以C語言編寫的; 替換JAVA語言層API單元,負責在C語言層運行環(huán)境進入JAVA語言層運行環(huán)境后,將 JAVA層原加密通信的API替換為加入監(jiān)控代碼修改后的加密通信API ;并在加密通信過程 中,準備加密的明文數(shù)據(jù)包調(diào)用修改后的加密通信API時,由監(jiān)控代碼記錄該加密前的明 文數(shù)據(jù)包,再傳遞給數(shù)據(jù)分析模塊。
      4. 根據(jù)權(quán)利要求1所述的裝置,其特征在于:所述數(shù)據(jù)包分析模塊中的各個組件功能 如下: 數(shù)據(jù)包分析單元,用于根據(jù)協(xié)議對來自監(jiān)控點植入模塊的加密前的明文通信數(shù)據(jù)包進 行分析處理,找出該明文數(shù)據(jù)包中的通信地址、通信端口、通信協(xié)議和通信內(nèi)容的信息,并 進行歸類分片后,送至分片整合單元繼續(xù)處理; 分片整合單元,用于根據(jù)TCP/IP通信協(xié)議,對從數(shù)據(jù)包分析單元獲得的通信分片數(shù)據(jù) 包進行流分析和整合處理,形成多次完整的通信對話,以供對通信內(nèi)容進行分析與展示;這 是因為每次完整的通信對話都會受限于數(shù)據(jù)包容量而被分片為不同數(shù)據(jù)包。
      5. -種采用權(quán)利要求1所述的基于動態(tài)鏈接庫注入的Android加密通信檢測裝置的檢 測方法,其特征在于:所述方法是在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對終端加密通信 進行檢測與分析:該檢測裝置的動態(tài)鏈接庫注入模塊對終端設(shè)定空間內(nèi)的待監(jiān)測應(yīng)用進程 注入殼代碼(shellcode),尋找系統(tǒng)加密通信使用的API,得到可植入監(jiān)控點的應(yīng)用進程, 再傳遞給監(jiān)控點植入模塊;監(jiān)控點植入模塊對該應(yīng)用進程根據(jù)API替換的方式植入監(jiān)控代 碼,得到植入監(jiān)控點的應(yīng)用程序后,傳送給數(shù)據(jù)分析模塊;在應(yīng)用調(diào)用加密通信接口時,數(shù) 據(jù)分析模塊接收由植入監(jiān)控點應(yīng)用程序記錄加密前的通信數(shù)據(jù)包,進行檢測分析處理,得 到最后通信數(shù)據(jù)結(jié)果;該方法包括下列操作步驟: 步驟1,檢測裝置的安裝和配置:在測試終端安裝Android加密通信檢測裝置后,配置 檢測任務(wù),即選擇待測應(yīng)用,并啟動檢測裝置; 步驟2,動態(tài)鏈接庫注入模塊注入動態(tài)鏈接庫,為植入監(jiān)控點創(chuàng)造運行環(huán)境; 步驟3,監(jiān)控點植入模塊替換加密通信API,植入監(jiān)控代碼,捕獲加密前的明文通信數(shù) 據(jù)包; 步驟4,數(shù)據(jù)分析模塊接收并處理加密通信數(shù)據(jù)包,生成數(shù)據(jù)分析結(jié)果。
      6. 根據(jù)權(quán)利要求5所述的方法,其特征在于:所述步驟2包括下列操作內(nèi)容: (21) 動態(tài)鏈接庫注入模塊中的附著進程單元根據(jù)調(diào)試器采用的傳統(tǒng)調(diào)試技術(shù)原理,使 用進程跟蹤(ptrace)系統(tǒng)調(diào)用來處理待監(jiān)測的應(yīng)用進程,即將動態(tài)鏈接庫附著到被監(jiān)控 應(yīng)用的進程空間中; (22) 在動態(tài)鏈接庫附著到待監(jiān)測進程后,加載動態(tài)鏈接庫單元利用動態(tài)鏈接庫加載函 數(shù),將由監(jiān)控代碼編譯生成的動態(tài)鏈接庫加載到進程空間中,以便為運行監(jiān)控點植入代碼 提供條件。
      7. 根據(jù)權(quán)利要求5所述的方法,其特征在于:所述步驟3包括下列操作內(nèi)容: (31) 監(jiān)控點植入模塊中的C語言層進入JAVA語言層單元利用JAVA本地調(diào)用接口 JNI, 使得在鏈接庫中用C語言層運行環(huán)境進入JAVA語言層運行環(huán)境,為替換JAVA語言層加密 通信API提供條件; (32) 替換JAVA語言層API單元在從C語言層進入JAVA語言層后,在JAVA層加密通 信API中植入監(jiān)控代碼;并在加密通信過程中,準備加密的明文數(shù)據(jù)包調(diào)用修改后的加密 通信API時,由監(jiān)控代碼記錄該加密前的明文通信數(shù)據(jù)包,傳遞給數(shù)據(jù)分析模塊。
      8. 根據(jù)權(quán)利要求5所述的方法,其特征在于:所述步驟4包括下列操作內(nèi)容: (41) 根據(jù)通信協(xié)議規(guī)定,數(shù)據(jù)分析模塊中的數(shù)據(jù)包分析單元對來自監(jiān)控點植入模塊的 加密前的明文數(shù)據(jù)包進行分析,找出其中的通信地址、通信端口、通信協(xié)議和通信內(nèi)容的信 息,并進行歸類分片后,送至分片整合單元繼續(xù)處理; (42) 根據(jù)TCP/IP通信協(xié)議,每次完整的通信對話會受限于數(shù)據(jù)包大小而被分片成不 同數(shù)據(jù)包,分片整合單元對數(shù)據(jù)包分析單元獲得的通信分片數(shù)據(jù)包進行流分析和整合處 理,形成多次完整的通信對話,以供對通信內(nèi)容進行分析展示。
      【文檔編號】G06F17/30GK104156481SQ201410424511
      【公開日】2014年11月19日 申請日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
      【發(fā)明者】徐國愛, 張淼 申請人:北京軟安科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1