基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置和方法
【專利摘要】一種基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置和方法,該檢測(cè)裝置設(shè)有動(dòng)態(tài)鏈接庫(kù)注入、監(jiān)控點(diǎn)植入和數(shù)據(jù)包分析共三個(gè)模塊,它是在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對(duì)終端加密通信進(jìn)行檢測(cè)與分析:采用動(dòng)態(tài)鏈接庫(kù)注入方式,將殼代碼(shellcode)注入到智能終端的設(shè)定進(jìn)程空間中,再在shellcode中尋找系統(tǒng)加密通信使用的API,作為在Android系統(tǒng)加密通信處設(shè)立或植入的監(jiān)測(cè)點(diǎn),捕獲和記錄Android智能終端發(fā)出和接收的加密前的通信數(shù)據(jù)包,并基于Android平臺(tái)對(duì)該加密前的通信數(shù)據(jù)包進(jìn)行檢測(cè)分析,解決以竊取用戶或企業(yè)隱私信息、傳播非法信息為目的加密通信造成的安全問(wèn)題。本發(fā)明的創(chuàng)新優(yōu)點(diǎn)是:適用性強(qiáng),監(jiān)測(cè)點(diǎn)可擴(kuò)展、全面,數(shù)據(jù)包分析和分析代價(jià)小。因此,具有很好的推廣應(yīng)用前景。
【專利說(shuō)明】基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種用于移動(dòng)Android平臺(tái)的加密通信檢測(cè)裝置,確切地說(shuō),涉及一 種基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置和方法,屬于信息安全中的網(wǎng)絡(luò)安全
【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002] 目前,針對(duì)PC端軟件加密通信進(jìn)行檢測(cè)分析技術(shù)的研究文獻(xiàn)很多,但是,有關(guān)移 動(dòng)Android平臺(tái)加密通信檢測(cè)分析技術(shù)的研究尚處初期,故至今尚未形成成熟的檢測(cè)工 具。如同PC端一樣,它的檢測(cè),通常建立在軟件逆向分析技術(shù)基礎(chǔ)上。故常用的加密通信 檢測(cè)工具及輔助工具包括:Gdbserver、Andbug、Taintdroid和IDA Pro等。下面對(duì)這些工 具進(jìn)行簡(jiǎn)介:
[0003] Gdbserver,作為GNU開(kāi)源組織發(fā)布的一個(gè)強(qiáng)大的UNIX下的C\C++語(yǔ)言程序命令 行調(diào)試工具,主要具備下述四個(gè)方面的功能:
[0004] 1、啟動(dòng)程序后,可以按照自行定義或設(shè)置的要求隨心所欲地運(yùn)行該程序。
[0005] 2、可讓被調(diào)試的程序停止在設(shè)定的斷點(diǎn)處。(該斷點(diǎn)可以是條件表達(dá)式)
[0006] 3、當(dāng)程序停止時(shí),可以檢查此時(shí)該程序中發(fā)生的事。
[0007] 4、動(dòng)態(tài)改變程序的執(zhí)行環(huán)境。
[0008] 由于Android嵌入式系統(tǒng)的資源有限性,一般不能直接在目標(biāo)系統(tǒng)上進(jìn)行調(diào)試, 而是通常采用gdb+gdbserver的方式進(jìn)行調(diào)試。遠(yuǎn)程調(diào)試環(huán)境則由宿主機(jī)⑶B和目標(biāo)機(jī)調(diào) 試樁stub共同構(gòu)成,兩者通過(guò)串口或傳輸控制協(xié)議TCP(Transmission Control Protocol) 網(wǎng)絡(luò)連接,并使用GDB標(biāo)準(zhǔn)程序串行協(xié)議協(xié)同工作,實(shí)現(xiàn)對(duì)目標(biāo)機(jī)上的系統(tǒng)內(nèi)核和上層應(yīng) 用的監(jiān)控和調(diào)試功能。調(diào)試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機(jī)GDB和目標(biāo)機(jī)調(diào) 試程序間的一個(gè)媒介而存在。
[0009] 目前,越來(lái)越多的移動(dòng)應(yīng)用是采用c\c++語(yǔ)言進(jìn)行關(guān)鍵功能(如加密通信)的開(kāi) 發(fā),利用JAVA本地程序調(diào)用接口 JNI (JAVA Native Interface)技術(shù),調(diào)用so庫(kù)中的功能 代碼,實(shí)現(xiàn)加密通信功能。Gdbserver用于調(diào)試C\C++語(yǔ)言實(shí)現(xiàn)的加密通信功能的應(yīng)用,找 到功能代碼,對(duì)加密通信進(jìn)行檢測(cè)分析。
[0010] Andbug,是一個(gè)無(wú)需源代碼的Android平臺(tái)JAVA程序調(diào)試器。它支持查看斷點(diǎn)、 堆棧、類或方法信息等功能,具備可擴(kuò)展性,支持添加自行設(shè)計(jì)的腳本加入所需要的功能。
[0011] 通過(guò)JAVA代碼實(shí)現(xiàn)加密通信功能的應(yīng)用,可以使用Andbug進(jìn)行調(diào)試追蹤,對(duì)加密 通信進(jìn)行檢測(cè)分析。
[0012] Taintdroid,它是一個(gè)基于系統(tǒng)鏡像(Android ROM)修改的應(yīng)用程序行為檢測(cè)工 具,通過(guò)修改源碼相應(yīng)的部分代碼,編譯定制系統(tǒng)鏡像R0M,實(shí)現(xiàn)包括加密通信等的檢測(cè)分 析功能。其主要原理是在Android源碼中增加對(duì)對(duì)象的操作類,并在對(duì)象中增加變量和 存儲(chǔ)標(biāo)識(shí),完成對(duì)關(guān)鍵數(shù)據(jù)的污點(diǎn)標(biāo)記。當(dāng)程序通過(guò)應(yīng)用程序編程接口 API (Application Programming Interface)獲取敏感信息,利用封裝的操作類數(shù)據(jù)進(jìn)行污點(diǎn)標(biāo)識(shí)。
[0013] IDA,作為交互式反匯編器專業(yè)版(Interactive Disassembler Professional) 的遞歸下降反匯編器,它是Hex-Rayd公司推出的一款世界頂級(jí)逆向分析工具。它支持 Android動(dòng)態(tài)鏈接庫(kù)無(wú)源碼的反匯編與動(dòng)態(tài)調(diào)試。它能夠結(jié)合gdbserver,更簡(jiǎn)便、快捷地 完成由C\C++語(yǔ)言編寫(xiě)的加密通信功能代碼的檢測(cè)分析。
[0014] 現(xiàn)在,國(guó)內(nèi)外都在移動(dòng)Android平臺(tái)加密通信檢測(cè)分析領(lǐng)域做了大量的研究工 作,并提出了一些可行的分析方法。
[0015] 目前,移動(dòng)Android平臺(tái)加密通信檢測(cè)分析方法有多種:基于定制手機(jī)系統(tǒng)鏡像 (ROM)檢測(cè)方法、內(nèi)存解密檢測(cè)方法和基于調(diào)試技術(shù)的檢測(cè)方法等。其中:
[0016] 基于定制手機(jī)系統(tǒng)鏡像ROM檢測(cè)方法:由于Android平臺(tái)源碼的開(kāi)放性,可通過(guò)對(duì) 源碼的閱讀和修改,定制手機(jī)系統(tǒng)鏡像R0M,完成加密通信的檢測(cè)分析。
[0017] 從應(yīng)用完成加密通信開(kāi)始,追蹤查看API調(diào)用關(guān)系,找到加密通信調(diào)用的系統(tǒng) JAVA層與本地C\C++層API,在相應(yīng)的API實(shí)現(xiàn)函數(shù)中,打印出需要檢測(cè)分析的數(shù)據(jù)流;修 改完成后,編譯源代碼,生成定制化系統(tǒng)鏡像R0M,刷入檢測(cè)終端中,完成加密通信數(shù)據(jù)包的 捕獲分析。
[0018] 內(nèi)存解密檢測(cè)方法:由于程序會(huì)對(duì)網(wǎng)絡(luò)加密數(shù)據(jù)進(jìn)行解密操作,因此,只要能夠定 位到加密數(shù)據(jù)在程序中的解密內(nèi)存,即解密數(shù)據(jù)所在內(nèi)存,即可完成對(duì)加密通信數(shù)據(jù)檢測(cè) 分析。
[0019] 目前,主要有兩種解密內(nèi)存的定位方法,分別介紹如下:
[0020] 第一種是基于循環(huán)輸入輸出的解密內(nèi)存通用定位方法:數(shù)據(jù)加密和解密過(guò)程中, 通常要執(zhí)行多次迭代操作,因此,基本上所有密碼函數(shù)都在實(shí)現(xiàn)過(guò)程中采用了循環(huán)結(jié)構(gòu),且 在循環(huán)迭代的過(guò)程中,生成解密內(nèi)存。例如,RC4算法密碼函數(shù)中,通常包含有三個(gè)循環(huán)結(jié) 構(gòu):前兩個(gè)循環(huán)結(jié)構(gòu)用于生成密鑰,最后一個(gè)循環(huán)執(zhí)行具體的加解密操作。此外,對(duì)于長(zhǎng)度 不固定的密文,同樣會(huì)使用循環(huán)結(jié)構(gòu)進(jìn)行分塊處理,并輸出解密結(jié)果。
[0021] 因此,可以通過(guò)動(dòng)態(tài)定位密碼函數(shù)內(nèi)部的循環(huán)結(jié)構(gòu),對(duì)循環(huán)結(jié)構(gòu)的輸入輸出進(jìn)行 分析,從而收集到包含解密數(shù)據(jù)的內(nèi)存集合。在此基礎(chǔ)上,再結(jié)合解密數(shù)據(jù)的特性,從中進(jìn) 一步篩選出解密內(nèi)存。
[0022] 第二種是基于髙依賴度的解密內(nèi)存快速定位方法:目前絕大部分加密通信的密碼 應(yīng)用都是使用分組密碼,如數(shù)據(jù)加密算法DES (Data Encryption Standard)、3DES、高級(jí)加 密算法AES (Advanced Encryption Standard)等,都是基于或改進(jìn)了的Feistel分組密碼 結(jié)構(gòu)。從數(shù)據(jù)相關(guān)性的角度來(lái)看,分組密碼輸出的解密數(shù)據(jù)與加密數(shù)據(jù)之間具有很強(qiáng)的關(guān) 聯(lián)性。
[0023] 因而,根據(jù)上述特點(diǎn),利用細(xì)顆粒度污點(diǎn)分析技術(shù)能夠很好地表達(dá)密文與明文之 間的強(qiáng)關(guān)聯(lián)特性,且污點(diǎn)分析的粒度越細(xì)(如進(jìn)行比特級(jí)的污點(diǎn)分析),這種關(guān)聯(lián)性就體現(xiàn) 得越強(qiáng)。大部分情況下,解密內(nèi)存中的每個(gè)字節(jié)都與密文中的多個(gè)字節(jié)數(shù)據(jù)相關(guān),因此,從 細(xì)粒度污點(diǎn)分析的角度,解密內(nèi)存中的每個(gè)字節(jié)都會(huì)被密文的多個(gè)字節(jié)所污染,利用該特 性可以較為容易地區(qū)別解密內(nèi)存。
[0024] 基于調(diào)試技術(shù)的檢測(cè)方法:該方法是在靜態(tài)反編譯或反匯編的基礎(chǔ)上,定位加密 通信代碼段,再利用動(dòng)態(tài)調(diào)試手段,在相應(yīng)的代碼段設(shè)置斷點(diǎn),查看寄存器或內(nèi)存的變量中 存儲(chǔ)的通信過(guò)程中產(chǎn)生的數(shù)據(jù)包,達(dá)到檢測(cè)分析的目的。
[0025] 目前,基于調(diào)試技術(shù)的檢測(cè)方法,也是在逆向分析加密通信數(shù)據(jù)包時(shí)最常用和最 直接的檢測(cè)分析方法,但是,其效果很大程度上取決于人工分析經(jīng)驗(yàn),而且,其前期準(zhǔn)備工 作繁雜,分析代價(jià)也最大。
[0026] 目前,主流的Android平臺(tái)加密通信檢測(cè)分析方法基本是以逆向工具分析為主, 所需要的準(zhǔn)備開(kāi)銷大,人工參與度高,適用局限性較大。具體不足如下:
[0027] ㈧分析代價(jià)較大:現(xiàn)有技術(shù)的分析方法代價(jià)較大,如基于定制ROM的檢測(cè)方法 中,構(gòu)建檢測(cè)分析環(huán)境時(shí),需要編譯系統(tǒng)鏡像、下載源碼、修改相關(guān)位置代碼和將定制ROM 刷入檢測(cè)終端中,這一系列的操作都是非常耗時(shí)、耗力。基于調(diào)試技術(shù)的檢測(cè)方法中,首先 需要對(duì)應(yīng)用進(jìn)行靜態(tài)代碼分析,定位應(yīng)用加密通信代碼段,然后再動(dòng)態(tài)運(yùn)行至斷點(diǎn)位置,逐 一查找相關(guān)信息,這種動(dòng)靜結(jié)合的方式對(duì)加密通信數(shù)據(jù)包進(jìn)行檢測(cè),工作量巨大。
[0028] (B)人工參與度高:基于調(diào)試技術(shù)的檢測(cè)方法,很大程度上依賴于人工靜態(tài)分析 的結(jié)果,即依靠人工分析的經(jīng)驗(yàn)來(lái)尋找斷點(diǎn)。整個(gè)過(guò)程需要人為參與,且調(diào)試過(guò)程復(fù)雜,技 巧性強(qiáng),對(duì)參與人員的技術(shù)水平要求很高。
[0029] (C)適用局限性較大:基于定制系統(tǒng)鏡像ROM的檢測(cè)方法,只能在其特定系統(tǒng)上 運(yùn)行待檢測(cè)的應(yīng)用,不同的系統(tǒng)鏡像ROM、以及不同的Android系統(tǒng)版本和機(jī)型等因素的區(qū) 另IJ,大大增加了其適用的局限性。而且,基于調(diào)試技術(shù)的檢測(cè)方法,只能在動(dòng)態(tài)調(diào)試過(guò)程中 對(duì)加密通信數(shù)據(jù)包進(jìn)行檢測(cè)分析,且檢測(cè)過(guò)程復(fù)雜、技術(shù)性較強(qiáng),碰到多線程的應(yīng)用時(shí),調(diào) 試難度更加增大。所以,該方法的適用局限性較大。
[0030] 隨著移動(dòng)互聯(lián)網(wǎng)飛速發(fā)展,Andorid平臺(tái)的市場(chǎng)拓展迅猛,Android應(yīng)用正在逐漸 成為人們獲取信息和交流的一種重要工具。與此同時(shí),一些以竊取用戶或企業(yè)隱私信息為 目的的惡意應(yīng)用,以傳播非法信息為目的的翻墻程序等利用加密通信的應(yīng)用,正在成為個(gè) 人、企業(yè)、甚至是國(guó)家信息安全的重要威脅。
[0031] 傳統(tǒng)的非加密通信的分析方法基本上是監(jiān)聽(tīng)其通信數(shù)據(jù),再結(jié)合程序行為特征, 猜測(cè)并驗(yàn)證其特定的數(shù)據(jù)內(nèi)容所對(duì)應(yīng)的網(wǎng)絡(luò)行為進(jìn)行分析。但是,由于加密通信的Android 應(yīng)用,監(jiān)聽(tīng)到的數(shù)據(jù)大多為無(wú)法識(shí)別的數(shù)據(jù)格式,上述傳統(tǒng)方法已經(jīng)難以對(duì)其進(jìn)行分析,更 不能得出正確結(jié)果。
【發(fā)明內(nèi)容】
[0032] 有鑒于此,本發(fā)明的目的是提供一種基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢 測(cè)裝置和方法,本發(fā)明檢測(cè)裝置能夠在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對(duì)終端加密 通信進(jìn)行檢測(cè)與分析。通過(guò)動(dòng)態(tài)鏈接庫(kù)注入的方式,注入殼代碼(shellcode)代碼到終端 的指定進(jìn)程空間中;在shellcode中,尋找系統(tǒng)加密通信使用的API,并植入監(jiān)控點(diǎn)。這樣 在應(yīng)用調(diào)用加密通信接口時(shí),通信數(shù)據(jù)經(jīng)過(guò)監(jiān)控點(diǎn)時(shí),就會(huì)被數(shù)據(jù)分析器所記錄,實(shí)現(xiàn)檢測(cè) 分析。
[0033] 為了達(dá)到上述目的,本發(fā)明提供了一種基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信 檢測(cè)裝置,其特征在于:在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對(duì)終端加密通信進(jìn)行檢測(cè) 與分析:采用動(dòng)態(tài)鏈接庫(kù)注入方式,將殼代碼(shellcode)注入到智能終端的設(shè)定進(jìn)程空 間中,再在shellcode中尋找系統(tǒng)加密通信使用的API,作為在Android系統(tǒng)加密通信處設(shè) 立或植入的監(jiān)測(cè)點(diǎn),捕獲和記錄Android智能終端發(fā)出和接收的加密前的通信數(shù)據(jù)包,并 基于Android平臺(tái)對(duì)該加密前的通信數(shù)據(jù)包進(jìn)行檢測(cè)分析,解決以竊取用戶或企業(yè)隱私信 息、傳播非法信息為目的的加密通信造成的安全問(wèn)題;設(shè)有:動(dòng)態(tài)鏈接庫(kù)注入模塊、監(jiān)控點(diǎn) 植入模塊、數(shù)據(jù)包分析模塊共三個(gè)模塊;其中:
[0034] 動(dòng)態(tài)鏈接庫(kù)注入模塊,用于將由監(jiān)控代碼編譯的動(dòng)態(tài)鏈接庫(kù)注入到待監(jiān)測(cè)應(yīng)用的 進(jìn)程空間中,為植入監(jiān)控點(diǎn)創(chuàng)造條件;設(shè)有兩個(gè)組件:附著進(jìn)程單元和加載動(dòng)態(tài)鏈接庫(kù)單 元;
[0035] 監(jiān)控點(diǎn)植入模塊,用于通過(guò)替換加密通信API方式,在加密通信過(guò)程中,植入作為 監(jiān)控代碼的殼代碼shellcode,以捕獲加密前的通信數(shù)據(jù)包,再傳送給數(shù)據(jù)包分析模塊;設(shè) 有兩個(gè)組件:本地C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層單元和替換JAVA語(yǔ)言層API單元;
[0036] 數(shù)據(jù)包分析模塊,用于接收并處理由監(jiān)控代碼捕獲的加密前的通信數(shù)據(jù)包,進(jìn)行 數(shù)據(jù)包分析和分片整合,生成數(shù)據(jù)分析結(jié)果報(bào)告;設(shè)有兩個(gè)組件:數(shù)據(jù)包分析單元和分片 整合單元。
[0037] 為了達(dá)到上述目的,本發(fā)明還提供了一種采用本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的 Android加密通信檢測(cè)裝置的檢測(cè)方法,其特征在于:所述方法是在不改變系統(tǒng)ROM和不處 于調(diào)試狀態(tài)下,對(duì)終端加密通信進(jìn)行檢測(cè)與分析:該檢測(cè)裝置的動(dòng)態(tài)鏈接庫(kù)注入模塊對(duì)終 端設(shè)定空間內(nèi)的待監(jiān)測(cè)應(yīng)用進(jìn)程注入殼代碼(shellcode),尋找系統(tǒng)加密通信使用的API, 得到可植入監(jiān)控點(diǎn)的應(yīng)用進(jìn)程,再傳遞給監(jiān)控點(diǎn)植入模塊;監(jiān)控點(diǎn)植入模塊對(duì)該應(yīng)用進(jìn)程 根據(jù)API替換的方式植入監(jiān)控代碼,得到植入監(jiān)控點(diǎn)的應(yīng)用程序后,傳送給數(shù)據(jù)分析模塊; 在應(yīng)用調(diào)用加密通信接口時(shí),數(shù)據(jù)分析模塊接收由植入監(jiān)控點(diǎn)應(yīng)用程序記錄加密前的通信 數(shù)據(jù)包,進(jìn)行檢測(cè)分析處理,得到最后通信數(shù)據(jù)結(jié)果;該方法包括下列操作步驟:
[0038] 步驟1,檢測(cè)裝置的安裝和配置:在測(cè)試終端安裝Android加密通信檢測(cè)裝置后, 配置檢測(cè)任務(wù),即選擇待測(cè)應(yīng)用,并啟動(dòng)檢測(cè)裝置;
[0039] 步驟2,動(dòng)態(tài)鏈接庫(kù)注入模塊注入動(dòng)態(tài)鏈接庫(kù),為植入監(jiān)控點(diǎn)創(chuàng)造運(yùn)行環(huán)境;
[0040] 步驟3,監(jiān)控點(diǎn)植入模塊替換加密通信API,植入監(jiān)控代碼,捕獲加密前的明文通 信數(shù)據(jù)包;
[0041] 步驟4,數(shù)據(jù)分析模塊接收并處理加密通信數(shù)據(jù)包,生成數(shù)據(jù)分析結(jié)果。
[0042] 本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的Android平臺(tái)加密通信檢測(cè)裝置是在Android系統(tǒng) 加密通信處設(shè)立監(jiān)測(cè)點(diǎn),檢測(cè)分析Android平臺(tái)的加密通信內(nèi)容,從而解決了以竊取用戶 或企業(yè)的隱私信息、傳播非法信息為目的的加密通信帶來(lái)的安全問(wèn)題。本發(fā)明的創(chuàng)新優(yōu)點(diǎn) 包括下述四個(gè)方面:
[0043] (A)適用性強(qiáng):本發(fā)明采用基于動(dòng)態(tài)鏈接庫(kù)注入的方法,相對(duì)于其他檢測(cè)方法,其 不需要更改檢測(cè)終端和檢測(cè)系統(tǒng),也無(wú)需進(jìn)行調(diào)試狀態(tài)下斷點(diǎn)等方式,就能夠捕獲到加密 通信數(shù)據(jù)包,具有適用性強(qiáng),使用便捷等優(yōu)點(diǎn)。
[0044] (B)監(jiān)測(cè)點(diǎn)可擴(kuò)展、全面:基于動(dòng)態(tài)鏈接庫(kù)注入的加密通信檢測(cè)分析方法,既能監(jiān) 控由本地層C\C++實(shí)現(xiàn)的加密通信API,又能監(jiān)控在JAVA層應(yīng)用環(huán)境中JAVA實(shí)現(xiàn)的加密通 信API的監(jiān)測(cè),因此其監(jiān)測(cè)點(diǎn)比較全面,且可擴(kuò)展,并且,擴(kuò)展操作只需要在動(dòng)態(tài)鏈接庫(kù)添 加相應(yīng)代碼即可,非常便利,容易實(shí)現(xiàn)。
[0045] (C)數(shù)據(jù)包分析:相比于其他檢測(cè)方法,本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的加密通信 檢測(cè)分析方法,能夠?qū)⒉东@的數(shù)據(jù)包進(jìn)行記錄,并做通信流處理分析,便于后期的通信內(nèi)容 分析。
[0046] (D)分析代價(jià)?。罕景l(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的加密通信檢測(cè)分析方法既不需要 修改ROM的源代碼,進(jìn)行編譯刷機(jī);也不用執(zhí)行復(fù)雜的調(diào)試工作,記錄斷點(diǎn)和操作調(diào)試器進(jìn) 行變量查找等工作,因此,整個(gè)通信流程的分析代價(jià)小,計(jì)算量簡(jiǎn)單。
[0047] 因此,本發(fā)明檢測(cè)裝置和方法具有很好的推廣應(yīng)用前景。
【專利附圖】
【附圖說(shuō)明】
[0048] 圖1是本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置示意圖。
[0049] 圖2是本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置結(jié)構(gòu)組成示意 圖。
[0050] 圖3是本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置檢測(cè)方法操作步 驟流程圖。
【具體實(shí)施方式】
[0051] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步 的詳細(xì)描述。
[0052] 本發(fā)明目標(biāo)是基于動(dòng)態(tài)鏈接庫(kù)注入的方式,開(kāi)發(fā)一個(gè)Android平臺(tái)加密通信檢測(cè) 裝置,該裝置可以捕獲記錄Android智能終端發(fā)出和/或接收的加密通信包。因此,如何尋 找監(jiān)測(cè)點(diǎn)是加密通信檢測(cè)的關(guān)鍵。
[0053] 參見(jiàn)圖1,介紹本發(fā)明Android加密通信裝置:該檢測(cè)裝置設(shè)有:動(dòng)態(tài)鏈接庫(kù)注入 模塊、監(jiān)控點(diǎn)植入模塊、數(shù)據(jù)包分析器共三個(gè)模塊,它是在不改變系統(tǒng)ROM和不處于調(diào)試狀 態(tài)下,對(duì)終端加密通信進(jìn)行檢測(cè)與分析:采用動(dòng)態(tài)鏈接庫(kù)注入方式,將殼代碼(shellcode) 注入到智能終端的設(shè)定進(jìn)程空間中,再在shellcode中尋找系統(tǒng)加密通信使用的API,作為 在Android系統(tǒng)加密通信處設(shè)立或植入的監(jiān)測(cè)點(diǎn),捕獲和記錄Android智能終端發(fā)出和接 收的加密前的通信數(shù)據(jù)包,并基于Android平臺(tái)對(duì)該加密前的通信數(shù)據(jù)包進(jìn)行檢測(cè)分析, 解決以竊取用戶或企業(yè)隱私信息、傳播非法信息為目的的加密通信造成的安全問(wèn)題。其中, 動(dòng)態(tài)鏈接庫(kù)注入模塊將準(zhǔn)備監(jiān)測(cè)的應(yīng)用進(jìn)行注入處理,得到可植入監(jiān)控點(diǎn)的應(yīng)用進(jìn)程,為 植入監(jiān)控點(diǎn)創(chuàng)造條件。接著,監(jiān)控點(diǎn)植入模塊對(duì)上述進(jìn)程根據(jù)API替換的方式植入監(jiān)控代 碼,得到植入監(jiān)控點(diǎn)應(yīng)用程序。最后,數(shù)據(jù)分析模塊接收由植入監(jiān)控點(diǎn)應(yīng)用程序記錄的加密 前通信數(shù)據(jù)包,進(jìn)行分析處理,得到最后通信數(shù)據(jù)分析記錄。
[0054] 參見(jiàn)圖2,具體介紹本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的檢測(cè)裝置的結(jié)構(gòu)組成:
[0055] 動(dòng)態(tài)鏈接庫(kù)注入模塊,其功能是將由監(jiān)控代碼編譯的動(dòng)態(tài)鏈接庫(kù)注入到待監(jiān)測(cè)應(yīng) 用的進(jìn)程空間中,為植入監(jiān)控點(diǎn)創(chuàng)造條件。設(shè)有兩個(gè)組件:附著進(jìn)程單元和加載動(dòng)態(tài)鏈接庫(kù) 單元。這兩個(gè)單元功能說(shuō)明如下 :
[0056] 附著進(jìn)程單元:負(fù)責(zé)根據(jù)調(diào)試器采用的傳統(tǒng)調(diào)試技術(shù)原理,使用進(jìn)程跟蹤 (ptrace)系統(tǒng)調(diào)用,處理待監(jiān)測(cè)的應(yīng)用進(jìn)程,即將動(dòng)態(tài)鏈接庫(kù)附著到被監(jiān)控應(yīng)用的進(jìn)程空 間中。
[0057] 加載動(dòng)態(tài)鏈接庫(kù)單元:用于在動(dòng)態(tài)鏈接庫(kù)附著到待監(jiān)測(cè)的應(yīng)用進(jìn)程后,通過(guò)動(dòng)態(tài) 鏈接庫(kù)加載函數(shù),將由監(jiān)控代碼編譯生成的動(dòng)態(tài)鏈接庫(kù)加載到該應(yīng)用進(jìn)程空間中,以便為 運(yùn)行監(jiān)控點(diǎn)植入代碼提供條件。
[0058] 監(jiān)控點(diǎn)植入模塊,其功能是通過(guò)替換加密通信API方式,在加密通信過(guò)程中,植入 作為監(jiān)控代碼的殼代碼shellcode,以捕獲加密前的通信數(shù)據(jù)包,再傳送給數(shù)據(jù)包分析模 塊;設(shè)有兩個(gè)組件:本地C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層單元和替換JAVA語(yǔ)言層API單元。這兩 個(gè)單元功能說(shuō)明如下 :
[0059] 本地C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層單元:負(fù)責(zé)利用JAVA本地調(diào)用接口 JNI (JAVA Native Interface),由C語(yǔ)言層運(yùn)行環(huán)境進(jìn)入JAVA語(yǔ)言層運(yùn)行環(huán)境,為替換JAVA語(yǔ)言層 加密通信API提供條件。這是因?yàn)锳ndroid應(yīng)用程序是采用JAVA語(yǔ)言編寫(xiě)的,其加密通信 調(diào)用的加密API位于JAVA層,而動(dòng)態(tài)鏈接庫(kù)是以C語(yǔ)言編寫(xiě)的。
[0060] 替換JAVA語(yǔ)言層API單元:負(fù)責(zé)在C語(yǔ)言層運(yùn)行環(huán)境進(jìn)入JAVA語(yǔ)言層運(yùn)行環(huán)境 后,將JAVA層原加密通信的API替換為加入監(jiān)控代碼修改后的加密通信API ;并在加密通 信過(guò)程中,準(zhǔn)備加密的明文數(shù)據(jù)包調(diào)用修改后的加密通信API時(shí),由監(jiān)控代碼記錄該加密 前的明文數(shù)據(jù)包,再傳遞給數(shù)據(jù)分析模塊。
[0061] 數(shù)據(jù)包分析模塊,其功能是接收并處理由監(jiān)控代碼捕獲的加密前的通信數(shù)據(jù)包, 進(jìn)行數(shù)據(jù)包分析和分片整合,生成數(shù)據(jù)分析結(jié)果報(bào)告。設(shè)有兩個(gè)組件:數(shù)據(jù)包分析單元和分 片整合單元。這兩個(gè)單元功能說(shuō)明如下:
[0062] 數(shù)據(jù)包分析單元:用于根據(jù)協(xié)議對(duì)來(lái)自監(jiān)控點(diǎn)植入模塊的加密前的明文通信數(shù) 據(jù)包進(jìn)行分析處理,找出該明文數(shù)據(jù)包中的通信地址、通信端口、通信協(xié)議和通信內(nèi)容的信 息,并進(jìn)行歸類分片后,送至分片整合單元繼續(xù)處理。
[0063] 分片整合單元:用于根據(jù)TCP/IP通信協(xié)議,對(duì)從數(shù)據(jù)包分析單元獲得的通信分片 數(shù)據(jù)包進(jìn)行流分析和整合處理,形成多次完整的通信對(duì)話,以供對(duì)通信內(nèi)容進(jìn)行分析與展 示;這是因?yàn)槊看瓮暾耐ㄐ艑?duì)話都會(huì)受限于數(shù)據(jù)包容量而被分片為不同數(shù)據(jù)包。
[0064] 本發(fā)明基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置的檢測(cè)方法的特點(diǎn)是: 在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,就能夠?qū)K端加密通信進(jìn)行檢測(cè)與分析:
[0065] 該檢測(cè)裝置的動(dòng)態(tài)鏈接庫(kù)注入模塊對(duì)終端設(shè)定空間內(nèi)的待監(jiān)測(cè)應(yīng)用進(jìn)程注入殼 代碼(shellcode),尋找系統(tǒng)加密通信使用的API,得到可植入監(jiān)控點(diǎn)的應(yīng)用進(jìn)程,再傳遞 給監(jiān)控點(diǎn)植入模塊;
[0066] 監(jiān)控點(diǎn)植入模塊對(duì)該應(yīng)用進(jìn)程根據(jù)API替換的方式植入監(jiān)控代碼,得到植入監(jiān)控 點(diǎn)的應(yīng)用程序后,傳送給數(shù)據(jù)分析模塊;
[0067] 在應(yīng)用調(diào)用加密通信接口時(shí),數(shù)據(jù)分析模塊接收由植入監(jiān)控點(diǎn)應(yīng)用程序記錄加密 前的通信數(shù)據(jù)包,進(jìn)行檢測(cè)分析處理,得到最后通信數(shù)據(jù)結(jié)果。
[0068] 參見(jiàn)圖3,介紹本發(fā)明加密通信檢測(cè)裝置的檢測(cè)方法的具體操作步驟:
[0069] 步驟1,檢測(cè)裝置的安裝和配置:在測(cè)試終端安裝Android加密通信檢測(cè)裝置后, 配置檢測(cè)任務(wù),即選擇待測(cè)應(yīng)用,并啟動(dòng)檢測(cè)裝置。
[0070] 步驟2,動(dòng)態(tài)鏈接庫(kù)注入模塊注入動(dòng)態(tài)鏈接庫(kù),為植入監(jiān)控點(diǎn)創(chuàng)造運(yùn)行環(huán)境。該步 驟2包括下列兩項(xiàng)操作內(nèi)容:
[0071] (21)附著進(jìn)程:動(dòng)態(tài)鏈接庫(kù)注入模塊中的附著進(jìn)程單元根據(jù)調(diào)試器采用的傳統(tǒng) 調(diào)試技術(shù)原理,使用進(jìn)程跟蹤(ptrace)系統(tǒng)調(diào)用來(lái)處理待監(jiān)測(cè)的應(yīng)用進(jìn)程,即將動(dòng)態(tài)鏈接 庫(kù)附著到被監(jiān)控應(yīng)用的進(jìn)程空間中。
[0072] (22)加載動(dòng)態(tài)鏈接庫(kù):在動(dòng)態(tài)鏈接庫(kù)附著到待監(jiān)測(cè)進(jìn)程后,加載動(dòng)態(tài)鏈接庫(kù)單元 利用動(dòng)態(tài)鏈接庫(kù)加載函數(shù),將由監(jiān)控代碼編譯生成的動(dòng)態(tài)鏈接庫(kù)加載到進(jìn)程空間中,以便 為運(yùn)行監(jiān)控點(diǎn)植入代碼提供條件。
[0073] 步驟3,監(jiān)控點(diǎn)植入模塊替換加密通信API,植入監(jiān)控代碼,捕獲加密前的明文通 信數(shù)據(jù)包。該步驟3包括下列兩項(xiàng)操作內(nèi)容:
[0074] (31) C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層:監(jiān)控點(diǎn)植入模塊中的C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層 單元利用JAVA本地調(diào)用接口 JNI,使得在鏈接庫(kù)中用C語(yǔ)言層運(yùn)行環(huán)境進(jìn)入JAVA語(yǔ)言層運(yùn) 行環(huán)境,為替換JAVA語(yǔ)言層加密通信API提供條件。
[0075] (32)替換JAVA語(yǔ)言層API :在從C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層后,替換JAVA語(yǔ)言層 API單元在JAVA層加密通信API中植入監(jiān)控代碼;并在加密通信過(guò)程中,準(zhǔn)備加密的明文 數(shù)據(jù)包調(diào)用修改后的加密通信API時(shí),由監(jiān)控代碼記錄該加密前的明文通信數(shù)據(jù)包,傳遞 給數(shù)據(jù)分析模塊。
[0076] 步驟4,數(shù)據(jù)分析模塊接收并處理加密通信數(shù)據(jù)包,生成數(shù)據(jù)分析結(jié)果。該步驟4 包括下列兩項(xiàng)操作內(nèi)容:
[0077] (41)數(shù)據(jù)包分析:根據(jù)通信協(xié)議規(guī)定,數(shù)據(jù)分析模塊中的數(shù)據(jù)包分析單元對(duì)來(lái)自 監(jiān)控點(diǎn)植入模塊的加密前的明文數(shù)據(jù)包進(jìn)行分析,找出其中的通信地址、通信端口、通信協(xié) 議和通信內(nèi)容的信息,并進(jìn)行歸類分片后,送至分片整合單元繼續(xù)處理。
[0078] (42)分片整合:根據(jù)TCP/IP通信協(xié)議,每次完整的通信對(duì)話會(huì)受限于數(shù)據(jù)包大小 而被分片成不同數(shù)據(jù)包,分片整合單元對(duì)數(shù)據(jù)包分析單元獲得的通信分片數(shù)據(jù)包進(jìn)行流分 析和整合處理,形成多次完整的通信對(duì)話,以供對(duì)通信內(nèi)容進(jìn)行分析展示。
[0079] 本發(fā)明已經(jīng)進(jìn)行了多次仿真實(shí)施試驗(yàn),下面簡(jiǎn)要說(shuō)明實(shí)施例的試驗(yàn)情況:
[0080] 第一種實(shí)施例是對(duì)非法應(yīng)用進(jìn)行監(jiān)控測(cè)試:使用本發(fā)明檢測(cè)裝置對(duì)以加密通信方 式傳遞非法信息的Android平臺(tái)應(yīng)用程序進(jìn)行加密信息捕獲分析和監(jiān)控測(cè)試,并得到相應(yīng) 信息。因此,國(guó)家和政府相關(guān)部門(mén)如果需要對(duì)以加密通信為手段、傳播非法信息為目的的翻 墻程序?qū)嵤┍O(jiān)控,就可以使用本發(fā)明裝置,對(duì)可疑的應(yīng)用進(jìn)行加密通信檢測(cè),獲取非法信息 內(nèi)容,并應(yīng)對(duì)其帶來(lái)的安全威脅。
[0081] 第二種實(shí)施例是惡意應(yīng)用分析:惡意應(yīng)用檢測(cè)與分析的單位和公司對(duì)以加密通信 為手段,竊取個(gè)人或政企信息等惡意行為的應(yīng)用,也完全能夠使用本發(fā)明裝置,通過(guò)檢測(cè)分 析其加密通信的數(shù)據(jù)包,對(duì)惡意行為進(jìn)行深度分析及歸類,做出精確的應(yīng)對(duì)措施。
[0082] 本發(fā)明的多次實(shí)施例的試驗(yàn)結(jié)果是成功的,實(shí)現(xiàn)了發(fā)明目的。
【權(quán)利要求】
1. 一種基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置,其特征在于:該檢測(cè)裝置 是在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對(duì)終端加密通信進(jìn)行檢測(cè)與分析:采用動(dòng)態(tài)鏈 接庫(kù)注入方式,將殼代碼(shellcode)注入到智能終端的設(shè)定進(jìn)程空間中,再在shellcode 中尋找系統(tǒng)加密通信使用的API,作為在Android系統(tǒng)加密通信處設(shè)立或植入的監(jiān)測(cè)點(diǎn),捕 獲和記錄Android智能終端發(fā)出和接收的加密前的通信數(shù)據(jù)包,并基于Android平臺(tái)對(duì)該 加密前的通信數(shù)據(jù)包進(jìn)行檢測(cè)分析,解決以竊取用戶或企業(yè)隱私信息、傳播非法信息為目 的的加密通信造成的安全問(wèn)題;設(shè)有:動(dòng)態(tài)鏈接庫(kù)注入模塊、監(jiān)控點(diǎn)植入模塊、數(shù)據(jù)包分析 模塊共三個(gè)模塊;其中: 動(dòng)態(tài)鏈接庫(kù)注入模塊,用于將由監(jiān)控代碼編譯的動(dòng)態(tài)鏈接庫(kù)注入到待監(jiān)測(cè)應(yīng)用的進(jìn)程 空間中,為植入監(jiān)控點(diǎn)創(chuàng)造條件;設(shè)有兩個(gè)組件:附著進(jìn)程單元和加載動(dòng)態(tài)鏈接庫(kù)單元; 監(jiān)控點(diǎn)植入模塊,用于通過(guò)替換加密通信API方式,在加密通信過(guò)程中,植入作為監(jiān)控 代碼的殼代碼shellcode,以捕獲加密前的通信數(shù)據(jù)包,再傳送給數(shù)據(jù)包分析模塊;設(shè)有兩 個(gè)組件:本地C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層單元和替換JAVA語(yǔ)言層API單元; 數(shù)據(jù)包分析模塊,用于接收并處理由監(jiān)控代碼捕獲的加密前的通信數(shù)據(jù)包,進(jìn)行數(shù)據(jù) 包分析和分片整合,生成數(shù)據(jù)分析結(jié)果報(bào)告;設(shè)有兩個(gè)組件:數(shù)據(jù)包分析單元和分片整合 單元。
2. 根據(jù)權(quán)利要求1所述的裝置,其特征在于:所述動(dòng)態(tài)鏈接庫(kù)注入模塊中的各個(gè)組件 功能如下: 附著進(jìn)程單元,負(fù)責(zé)根據(jù)調(diào)試器采用的傳統(tǒng)調(diào)試技術(shù)原理,使用進(jìn)程跟蹤(ptrace)系 統(tǒng)調(diào)用,處理待監(jiān)測(cè)的應(yīng)用進(jìn)程,即將動(dòng)態(tài)鏈接庫(kù)附著到被監(jiān)控應(yīng)用的進(jìn)程空間中; 加載動(dòng)態(tài)鏈接庫(kù)單元,用于在動(dòng)態(tài)鏈接庫(kù)附著到待監(jiān)測(cè)的應(yīng)用進(jìn)程后,通過(guò)動(dòng)態(tài)鏈接 庫(kù)加載函數(shù),將由監(jiān)控代碼編譯生成的動(dòng)態(tài)鏈接庫(kù)加載到該應(yīng)用進(jìn)程空間中,以便為運(yùn)行 監(jiān)控點(diǎn)植入代碼提供條件。
3. 根據(jù)權(quán)利要求1所述的裝置,其特征在于:所述監(jiān)控點(diǎn)植入模塊中的各個(gè)組件功能 如下: 本地C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層單元,負(fù)責(zé)利用JAVA本地調(diào)用接口 JNI (JAVA Native Interface),由C語(yǔ)言層運(yùn)行環(huán)境進(jìn)入JAVA語(yǔ)言層運(yùn)行環(huán)境,為替換JAVA語(yǔ)言層加密通信 API提供條件;這是因?yàn)锳ndroid應(yīng)用程序是采用JAVA語(yǔ)言編寫(xiě)的,其加密通信調(diào)用的加 密API位于JAVA層,而動(dòng)態(tài)鏈接庫(kù)是以C語(yǔ)言編寫(xiě)的; 替換JAVA語(yǔ)言層API單元,負(fù)責(zé)在C語(yǔ)言層運(yùn)行環(huán)境進(jìn)入JAVA語(yǔ)言層運(yùn)行環(huán)境后,將 JAVA層原加密通信的API替換為加入監(jiān)控代碼修改后的加密通信API ;并在加密通信過(guò)程 中,準(zhǔn)備加密的明文數(shù)據(jù)包調(diào)用修改后的加密通信API時(shí),由監(jiān)控代碼記錄該加密前的明 文數(shù)據(jù)包,再傳遞給數(shù)據(jù)分析模塊。
4. 根據(jù)權(quán)利要求1所述的裝置,其特征在于:所述數(shù)據(jù)包分析模塊中的各個(gè)組件功能 如下: 數(shù)據(jù)包分析單元,用于根據(jù)協(xié)議對(duì)來(lái)自監(jiān)控點(diǎn)植入模塊的加密前的明文通信數(shù)據(jù)包進(jìn) 行分析處理,找出該明文數(shù)據(jù)包中的通信地址、通信端口、通信協(xié)議和通信內(nèi)容的信息,并 進(jìn)行歸類分片后,送至分片整合單元繼續(xù)處理; 分片整合單元,用于根據(jù)TCP/IP通信協(xié)議,對(duì)從數(shù)據(jù)包分析單元獲得的通信分片數(shù)據(jù) 包進(jìn)行流分析和整合處理,形成多次完整的通信對(duì)話,以供對(duì)通信內(nèi)容進(jìn)行分析與展示;這 是因?yàn)槊看瓮暾耐ㄐ艑?duì)話都會(huì)受限于數(shù)據(jù)包容量而被分片為不同數(shù)據(jù)包。
5. -種采用權(quán)利要求1所述的基于動(dòng)態(tài)鏈接庫(kù)注入的Android加密通信檢測(cè)裝置的檢 測(cè)方法,其特征在于:所述方法是在不改變系統(tǒng)ROM和不處于調(diào)試狀態(tài)下,對(duì)終端加密通信 進(jìn)行檢測(cè)與分析:該檢測(cè)裝置的動(dòng)態(tài)鏈接庫(kù)注入模塊對(duì)終端設(shè)定空間內(nèi)的待監(jiān)測(cè)應(yīng)用進(jìn)程 注入殼代碼(shellcode),尋找系統(tǒng)加密通信使用的API,得到可植入監(jiān)控點(diǎn)的應(yīng)用進(jìn)程, 再傳遞給監(jiān)控點(diǎn)植入模塊;監(jiān)控點(diǎn)植入模塊對(duì)該應(yīng)用進(jìn)程根據(jù)API替換的方式植入監(jiān)控代 碼,得到植入監(jiān)控點(diǎn)的應(yīng)用程序后,傳送給數(shù)據(jù)分析模塊;在應(yīng)用調(diào)用加密通信接口時(shí),數(shù) 據(jù)分析模塊接收由植入監(jiān)控點(diǎn)應(yīng)用程序記錄加密前的通信數(shù)據(jù)包,進(jìn)行檢測(cè)分析處理,得 到最后通信數(shù)據(jù)結(jié)果;該方法包括下列操作步驟: 步驟1,檢測(cè)裝置的安裝和配置:在測(cè)試終端安裝Android加密通信檢測(cè)裝置后,配置 檢測(cè)任務(wù),即選擇待測(cè)應(yīng)用,并啟動(dòng)檢測(cè)裝置; 步驟2,動(dòng)態(tài)鏈接庫(kù)注入模塊注入動(dòng)態(tài)鏈接庫(kù),為植入監(jiān)控點(diǎn)創(chuàng)造運(yùn)行環(huán)境; 步驟3,監(jiān)控點(diǎn)植入模塊替換加密通信API,植入監(jiān)控代碼,捕獲加密前的明文通信數(shù) 據(jù)包; 步驟4,數(shù)據(jù)分析模塊接收并處理加密通信數(shù)據(jù)包,生成數(shù)據(jù)分析結(jié)果。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于:所述步驟2包括下列操作內(nèi)容: (21) 動(dòng)態(tài)鏈接庫(kù)注入模塊中的附著進(jìn)程單元根據(jù)調(diào)試器采用的傳統(tǒng)調(diào)試技術(shù)原理,使 用進(jìn)程跟蹤(ptrace)系統(tǒng)調(diào)用來(lái)處理待監(jiān)測(cè)的應(yīng)用進(jìn)程,即將動(dòng)態(tài)鏈接庫(kù)附著到被監(jiān)控 應(yīng)用的進(jìn)程空間中; (22) 在動(dòng)態(tài)鏈接庫(kù)附著到待監(jiān)測(cè)進(jìn)程后,加載動(dòng)態(tài)鏈接庫(kù)單元利用動(dòng)態(tài)鏈接庫(kù)加載函 數(shù),將由監(jiān)控代碼編譯生成的動(dòng)態(tài)鏈接庫(kù)加載到進(jìn)程空間中,以便為運(yùn)行監(jiān)控點(diǎn)植入代碼 提供條件。
7. 根據(jù)權(quán)利要求5所述的方法,其特征在于:所述步驟3包括下列操作內(nèi)容: (31) 監(jiān)控點(diǎn)植入模塊中的C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層單元利用JAVA本地調(diào)用接口 JNI, 使得在鏈接庫(kù)中用C語(yǔ)言層運(yùn)行環(huán)境進(jìn)入JAVA語(yǔ)言層運(yùn)行環(huán)境,為替換JAVA語(yǔ)言層加密 通信API提供條件; (32) 替換JAVA語(yǔ)言層API單元在從C語(yǔ)言層進(jìn)入JAVA語(yǔ)言層后,在JAVA層加密通 信API中植入監(jiān)控代碼;并在加密通信過(guò)程中,準(zhǔn)備加密的明文數(shù)據(jù)包調(diào)用修改后的加密 通信API時(shí),由監(jiān)控代碼記錄該加密前的明文通信數(shù)據(jù)包,傳遞給數(shù)據(jù)分析模塊。
8. 根據(jù)權(quán)利要求5所述的方法,其特征在于:所述步驟4包括下列操作內(nèi)容: (41) 根據(jù)通信協(xié)議規(guī)定,數(shù)據(jù)分析模塊中的數(shù)據(jù)包分析單元對(duì)來(lái)自監(jiān)控點(diǎn)植入模塊的 加密前的明文數(shù)據(jù)包進(jìn)行分析,找出其中的通信地址、通信端口、通信協(xié)議和通信內(nèi)容的信 息,并進(jìn)行歸類分片后,送至分片整合單元繼續(xù)處理; (42) 根據(jù)TCP/IP通信協(xié)議,每次完整的通信對(duì)話會(huì)受限于數(shù)據(jù)包大小而被分片成不 同數(shù)據(jù)包,分片整合單元對(duì)數(shù)據(jù)包分析單元獲得的通信分片數(shù)據(jù)包進(jìn)行流分析和整合處 理,形成多次完整的通信對(duì)話,以供對(duì)通信內(nèi)容進(jìn)行分析展示。
【文檔編號(hào)】G06F17/30GK104156481SQ201410424511
【公開(kāi)日】2014年11月19日 申請(qǐng)日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
【發(fā)明者】徐國(guó)愛(ài), 張淼 申請(qǐng)人:北京軟安科技有限公司