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

一種基于動態(tài)污點(diǎn)分析對加密應(yīng)用的明文提取的系統(tǒng)的制作方法

文檔序號:11262106閱讀:263來源:國知局
一種基于動態(tài)污點(diǎn)分析對加密應(yīng)用的明文提取的系統(tǒng)的制造方法與工藝

本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,更具體地,涉及一種基于動態(tài)污點(diǎn)分析對加密應(yīng)用的明文提取的系統(tǒng)。



背景技術(shù):

近年來,隨著互聯(lián)網(wǎng)的高速發(fā)展,應(yīng)用程序每天成千上萬地出現(xiàn),而為了通信安全,大部分客戶端的應(yīng)用程序與服務(wù)器端之間又會使用加密協(xié)議。加密協(xié)議除了常見的、標(biāo)準(zhǔn)的應(yīng)用層協(xié)議,比如https、sftp,還出現(xiàn)大量私有加密協(xié)議。對于使用這些加密協(xié)議客戶端軟件的電腦用戶來說,他們并不知道其在后臺所處理的加密報(bào)文是什么,從而不知道其是否會有一些隱秘的動作,比如竊取電腦里面的個人隱私信息、自動下載某些有害的代碼和指向第三方網(wǎng)站等等,這些動作都是傷害到電腦用戶的切身利益。

因此,如果針對這些使用加密協(xié)議的客戶端軟件,能夠逆向解析出它所處理的加密報(bào)文的明文信息,這樣便可以對加密協(xié)議明文內(nèi)容的分析和加密協(xié)議格式的逆向解析,從而提高對加密應(yīng)用的安全性監(jiān)控。



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

本發(fā)明為克服上述現(xiàn)有技術(shù)所述的至少一種缺陷,提供一種基于動態(tài)污點(diǎn)分析對加密應(yīng)用的明文提取的系統(tǒng)。

本發(fā)明旨在至少在一定程度上解決上述技術(shù)問題。

本發(fā)明的首要目的是提供一種對加密應(yīng)用中逆向解析它的處理的加密報(bào)文的明文信息,以提高對加密應(yīng)用的安全性監(jiān)控。

為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案如下:一種基于動態(tài)污點(diǎn)分析對加密應(yīng)用的明文提取的系統(tǒng),包括污點(diǎn)數(shù)據(jù)源定位模塊、動態(tài)污點(diǎn)分析模塊、指令分析模塊和內(nèi)存行為分析模塊,其中:污點(diǎn)數(shù)據(jù)源定位模塊,用于攔截加密應(yīng)用的系統(tǒng)調(diào)用,獲取系統(tǒng)調(diào)用中加密報(bào)文的內(nèi)存地址,并對其進(jìn)行污點(diǎn)數(shù)據(jù)源的標(biāo)記;動態(tài)污點(diǎn)分析模塊,用于追蹤有污點(diǎn)標(biāo)記的數(shù)據(jù)源,并從污點(diǎn)數(shù)據(jù)源中逆向獲取對其進(jìn)行操作的指令執(zhí)行軌跡;指令分析模塊,用于解析所獲取的對污點(diǎn)數(shù)據(jù)進(jìn)行操作的指令執(zhí)行軌跡,區(qū)分污點(diǎn)數(shù)據(jù)的報(bào)文解密和報(bào)文處理階段;內(nèi)存行為分析模塊,用于根據(jù)加密調(diào)用指令中加密報(bào)文的內(nèi)存讀寫行為信息,獲取污點(diǎn)數(shù)據(jù)在報(bào)文解密階段進(jìn)行寫操作且在報(bào)文處理階段進(jìn)行讀操作的內(nèi)存地址,并從該內(nèi)存地址中提取解密后的明文信息。

優(yōu)選地,對有污點(diǎn)標(biāo)記的數(shù)據(jù)源的追蹤包括源操作數(shù)為內(nèi)存的污點(diǎn)追蹤、目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤、源操作數(shù)為寄存器的污點(diǎn)追蹤和目的操作數(shù)為寄存器的污點(diǎn)追蹤,所述動態(tài)污點(diǎn)分析模塊包括:源操作數(shù)為內(nèi)存的判斷單元,用于判斷加密調(diào)用指令中源操作數(shù)是否包含加密報(bào)文的內(nèi)存地址;源操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元,用于若源操作數(shù)為內(nèi)存的判斷單元判斷為是,則進(jìn)行源操作數(shù)為內(nèi)存的污點(diǎn)追蹤;目的操作數(shù)為內(nèi)存的判斷單元,用于若源操作數(shù)為內(nèi)存的判斷單元判斷為否時(shí),判斷加密調(diào)用指令中目的操作數(shù)是否包含加密報(bào)文的內(nèi)存地址;目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元,用于若目的操作數(shù)為內(nèi)存的判斷單元判斷為是,則進(jìn)行目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤;源操作數(shù)為寄存器的判斷單元,用于若目的操作數(shù)為內(nèi)存的判斷單元為否時(shí),判斷加密調(diào)用指令中的源操作數(shù)是否為寄存器;源操作數(shù)為寄存器的污點(diǎn)追蹤單元,用于若源操作數(shù)為寄存器的判斷單元判斷為是,則進(jìn)行源操作數(shù)為寄存器的污點(diǎn)追蹤;目的操作數(shù)為寄存器的判斷單元,用于若源操作數(shù)為寄存器的判斷單元判斷為否時(shí),判斷加密調(diào)用指令中目的操作數(shù)是否為寄存器;目的操作數(shù)為寄存器的污點(diǎn)追蹤單元,用于若目的操作數(shù)為寄存器的判斷單元判斷為是,則進(jìn)行目的操作數(shù)為寄存器的污點(diǎn)追蹤。

優(yōu)選地,源操作數(shù)為內(nèi)存時(shí)包括目的操作數(shù)為寄存器的情形和目的操作數(shù)不存在的情形,所述源操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元包括:第一追蹤記錄子單元,用于若內(nèi)存標(biāo)記為已污染,寄存器標(biāo)記為已污染時(shí),則追蹤記錄加密調(diào)用指令;還用于若內(nèi)存標(biāo)記為已污染,寄存器標(biāo)記為未污染時(shí),則追蹤記錄加密調(diào)用指令;還用于若內(nèi)存標(biāo)記為已污染,目的操作數(shù)不存在時(shí),則追蹤記錄加密調(diào)用指令;第一追蹤標(biāo)記子單元,用于若內(nèi)存標(biāo)記為已污染,寄存器標(biāo)記為未污染時(shí),則追蹤標(biāo)記該寄存器為已污染;還用于若內(nèi)存標(biāo)記為未污染,寄存器標(biāo)記為已污染,則追蹤標(biāo)記該寄存器為未污染。

優(yōu)選地,目的操作數(shù)為內(nèi)存時(shí)包括源操作數(shù)為寄存器的情形和源操作數(shù)為立即數(shù)的情形,所述目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元包括:第二追蹤記錄子單元,用于若寄存器標(biāo)記為已污染,內(nèi)存標(biāo)記為已污染時(shí),則追蹤記錄加密調(diào)用指令;還用于若寄存器標(biāo)記為已污染,內(nèi)存標(biāo)記為未污染時(shí),則追蹤記錄加密調(diào)用指令;第二追蹤標(biāo)記子單元,用于若寄存器標(biāo)記為已污染,內(nèi)存標(biāo)記為未污染時(shí),則追蹤標(biāo)記該內(nèi)存為已污染;還用于若寄存器標(biāo)記為未污染,內(nèi)存標(biāo)記為已污染,則追蹤標(biāo)記該內(nèi)存為未污染;還用于若源作數(shù)為立即數(shù),內(nèi)存標(biāo)記為已污染,則追蹤標(biāo)記該內(nèi)存為未污染。

優(yōu)選地,源操作數(shù)為寄存器時(shí)包括目的操作數(shù)為寄存器的情形和目的操作數(shù)不存在的情形,所述源操作數(shù)為寄存器的污點(diǎn)追蹤單元包括:第三追蹤記錄子單元,用于若源寄存器標(biāo)記為已污染,目的寄存器標(biāo)記為已污染,則追蹤記錄加密調(diào)用指令;還用于若源寄存器標(biāo)記為已污染,目的寄存器標(biāo)記為未污染,則追蹤記錄加密調(diào)用指令;還用于若源寄存器標(biāo)記為已污染,目的操作數(shù)不存在,則追蹤記錄加密調(diào)用指令;第三追蹤標(biāo)記子單元,用于若源寄存器標(biāo)記為已污染,目的寄存器標(biāo)記為未污染,則追蹤標(biāo)記目的寄存器為已污染;若源寄存器標(biāo)記為未污染,目的寄存器標(biāo)記為已污染,則追蹤標(biāo)記目的寄存器為未污染。

優(yōu)選地,目的操作數(shù)為寄存器時(shí),存在源操作數(shù)為立即數(shù)的情形,所述目的操作數(shù)為寄存器的污點(diǎn)追蹤單元包括:第四追蹤標(biāo)記子單元,用于若源操作數(shù)為立即數(shù),目的寄存器標(biāo)記為已污染,則追蹤標(biāo)記目的寄存器為未污染。

優(yōu)選地,所述指令分析模塊包括指令解析單元、報(bào)文解密與報(bào)文處理的區(qū)分單元,其中:指令解析單元,用于確定報(bào)文解密和報(bào)文處理的指令的大概位置;報(bào)文解密與報(bào)文處理的區(qū)分單元,用于結(jié)合指令解析單元所確定的結(jié)果,采用滑動窗口技術(shù)來具體確定報(bào)文解密和報(bào)文處理的指令。

優(yōu)選地,所述內(nèi)存行為分析模塊包括內(nèi)存讀寫行為單元、獲取單元和提取單元,其中:內(nèi)存讀寫行為單元,用于定義一個全局變量,并動態(tài)跟蹤加密應(yīng)用對內(nèi)存的分配和釋放,分配內(nèi)存則加入全局變量中,釋放內(nèi)存則從全局變量里移除;獲取單元,用于在報(bào)文解密階段,若有指令對內(nèi)存進(jìn)行寫操作,則在全局變量中找到該內(nèi)存緩沖區(qū),并將其狀態(tài)標(biāo)記為已污染,在報(bào)文處理階段,若有指令對內(nèi)存進(jìn)行讀操作,則在全局變量中找到該內(nèi)存緩沖區(qū),若該內(nèi)存緩沖區(qū)的狀態(tài)標(biāo)記為已污染,則獲取該內(nèi)存地址;提取單元,用于從所獲取的內(nèi)存地址提取解密后的明文信息。

與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是:針對使用加密協(xié)議的客戶端軟件,提供了一種對加密應(yīng)用的明文提取的系統(tǒng),這樣便可以對加密協(xié)議明文內(nèi)容的分析和加密協(xié)議格式的逆向解析,從而提高對加密應(yīng)用的安全性監(jiān)控。

附圖說明

圖1為本申請發(fā)明的一實(shí)施例的功能模塊圖;

圖2為本發(fā)明的動態(tài)污點(diǎn)分析模塊的細(xì)化功能模塊圖;

圖3為本發(fā)明的源操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元的細(xì)化功能模塊圖;

圖4為本發(fā)明目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元的細(xì)化功能模塊圖;

圖5為本發(fā)明源操作數(shù)為寄存器的污點(diǎn)追蹤單元的細(xì)化功能模塊圖;

圖6為本發(fā)明指令分析模塊的細(xì)化功能模塊圖;

圖7為本發(fā)明的內(nèi)存行為分析模塊的細(xì)化功能模塊圖;

圖8為本發(fā)明的動態(tài)污點(diǎn)分析模塊流程示意圖;

圖9為本發(fā)明的內(nèi)存行為分析模塊流程示意圖;

圖10為本發(fā)明的實(shí)景測試中指令解析單元所構(gòu)建的折線圖;

圖11為本發(fā)明的實(shí)景測試中報(bào)文解密與報(bào)文處理的區(qū)分單元所構(gòu)建的散點(diǎn)圖。

具體實(shí)施方式

附圖僅用于示例性說明,不能理解為對本專利的限制;為了更好說明本實(shí)施例,附圖某些部件會有省略、放大或縮小,并不代表實(shí)際產(chǎn)品的尺寸;相同或相似的標(biāo)號對應(yīng)相同或相似的部件;對于本領(lǐng)域技術(shù)人員來說,附圖中某些公知結(jié)構(gòu)及其說明可能省略是可以理解的。

下面結(jié)合附圖和實(shí)施例對本發(fā)明的技術(shù)方案做進(jìn)一步的說明。

如圖1所示,本發(fā)明公開了一種基于動態(tài)污點(diǎn)分析對加密應(yīng)用的明文提取的系統(tǒng),包括污點(diǎn)數(shù)據(jù)源定位模塊01、動態(tài)污點(diǎn)分析模塊02、指令分析模塊03和內(nèi)存行為分析模塊04,其中:污點(diǎn)數(shù)據(jù)源定位模塊01,用于攔截總系統(tǒng)的加密調(diào)用指令,獲取加密調(diào)用指令中加密報(bào)文的內(nèi)存地址,并對其進(jìn)行污點(diǎn)數(shù)據(jù)源的標(biāo)記;動態(tài)污點(diǎn)分析模塊02,用于追蹤有污點(diǎn)標(biāo)記的數(shù)據(jù)源,并從污點(diǎn)數(shù)據(jù)源中逆向獲取對其進(jìn)行操作的指令執(zhí)行軌跡;指令分析模塊03,用于解析所獲取的對污點(diǎn)數(shù)據(jù)進(jìn)行操作的指令執(zhí)行軌跡,區(qū)分污點(diǎn)數(shù)據(jù)的報(bào)文解密和報(bào)文處理階段;內(nèi)存行為分析模塊04,用于根據(jù)加密調(diào)用指令中加密報(bào)文的內(nèi)存讀寫行為信息,獲取污點(diǎn)數(shù)據(jù)在報(bào)文解密階段進(jìn)行寫操作且在報(bào)文處理階段進(jìn)行讀操作的內(nèi)存地址,并從該內(nèi)存地址中提取解密后的明文信息。

在本實(shí)施例中,本發(fā)明通過動態(tài)污點(diǎn)分析技術(shù),找到加密應(yīng)用存儲加密報(bào)文解密后的明文的內(nèi)存,從而提取出解密后的明文。因此本發(fā)明提取出加密應(yīng)用的明文,便于對加密協(xié)議明文內(nèi)容的分析和加密協(xié)議格式的逆向解析,提高對加密應(yīng)用的安全性監(jiān)控。

需要說明一下地是,污點(diǎn)數(shù)據(jù)源定位模塊01用于攔截加密應(yīng)用的系統(tǒng)調(diào)用,獲取系統(tǒng)調(diào)用中加密應(yīng)用在讀取加密報(bào)文時(shí)存儲內(nèi)存的起始地址和大小,并對該內(nèi)存地址進(jìn)行污點(diǎn)數(shù)據(jù)源的標(biāo)記。具體執(zhí)行流程如下:1)攔截系統(tǒng)調(diào)用,若該系統(tǒng)調(diào)用為從文件描述符或網(wǎng)絡(luò)套接字中讀數(shù)據(jù)的系統(tǒng)調(diào)用,則進(jìn)行下一步分析;否則返回重新攔截系統(tǒng)調(diào)用;2)定位污點(diǎn)數(shù)據(jù)源,從該系統(tǒng)調(diào)用的輸入?yún)?shù)和返回參數(shù)中獲取加密應(yīng)用在讀取加密報(bào)文時(shí)存儲內(nèi)存的起始地址和大小,并對該內(nèi)存地址進(jìn)行污點(diǎn)數(shù)據(jù)源的標(biāo)記。

如圖2-5和圖8所示,進(jìn)一步地,對有污點(diǎn)標(biāo)記的數(shù)據(jù)源的追蹤包括源操作數(shù)為內(nèi)存的污點(diǎn)追蹤、目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤、源操作數(shù)為寄存器的污點(diǎn)追蹤和目的操作數(shù)為寄存器的污點(diǎn)追蹤,所述動態(tài)污點(diǎn)分析模塊02包括:源操作數(shù)為內(nèi)存的判斷單元021,用于判斷加密調(diào)用指令中源操作數(shù)是否包含加密報(bào)文的內(nèi)存地址;源操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元022,用于若源操作數(shù)為內(nèi)存的判斷單元判斷為是,則進(jìn)行源操作數(shù)為內(nèi)存的污點(diǎn)追蹤;目的操作數(shù)為內(nèi)存的判斷單元023,用于若源操作數(shù)為內(nèi)存的判斷單元判斷為否時(shí),判斷加密調(diào)用指令中目的操作數(shù)是否包含加密報(bào)文的內(nèi)存地址;目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元024,用于若目的操作數(shù)為內(nèi)存的判斷單元判斷為是,則進(jìn)行目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤;源操作數(shù)為寄存器的判斷單元025,用于若目的操作數(shù)為內(nèi)存的判斷單元為否時(shí),判斷加密調(diào)用指令中的源操作數(shù)是否為寄存器;源操作數(shù)為寄存器的污點(diǎn)追蹤單元026,用于若源操作數(shù)為寄存器的判斷單元判斷為是,則進(jìn)行源操作數(shù)為寄存器的污點(diǎn)追蹤;目的操作數(shù)為寄存器的判斷單元027,用于若源操作數(shù)為寄存器的判斷單元判斷為否時(shí),判斷加密調(diào)用指令中目的操作數(shù)是否為寄存器;目的操作數(shù)為寄存器的污點(diǎn)追蹤單元028,用于若目的操作數(shù)為寄存器的判斷單元判斷為是,則進(jìn)行目的操作數(shù)為寄存器的污點(diǎn)追蹤。

進(jìn)一步地,源操作數(shù)為內(nèi)存時(shí)包括目的操作數(shù)為寄存器的情形和目的操作數(shù)不存在的情形,所述源操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元022包括:第一追蹤記錄子單元0221,用于若內(nèi)存標(biāo)記為已污染,寄存器標(biāo)記為已污染時(shí),則追蹤記錄加密調(diào)用指令;還用于若內(nèi)存標(biāo)記為已污染,寄存器標(biāo)記為未污染時(shí),則追蹤記錄加密調(diào)用指令;還用于若內(nèi)存標(biāo)記為已污染,目的操作數(shù)不存在時(shí),則追蹤記錄加密調(diào)用指令;第一追蹤標(biāo)記子單元0222,用于若內(nèi)存標(biāo)記為已污染,寄存器標(biāo)記為未污染時(shí),則追蹤標(biāo)記該寄存器為已污染;還用于若內(nèi)存標(biāo)記為未污染,寄存器標(biāo)記為已污染,則追蹤標(biāo)記該寄存器為未污染。

進(jìn)一步地,目的操作數(shù)為內(nèi)存時(shí)包括源操作數(shù)為寄存器的情形和源操作數(shù)為立即數(shù)的情形,所述目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤單元024包括:第二追蹤記錄子單元0241,用于若寄存器標(biāo)記為已污染,內(nèi)存標(biāo)記為已污染時(shí),則追蹤記錄加密調(diào)用指令;還用于若寄存器標(biāo)記為已污染,內(nèi)存標(biāo)記為未污染時(shí),則追蹤記錄加密調(diào)用指令;第二追蹤標(biāo)記子單元0242,用于若寄存器標(biāo)記為已污染,內(nèi)存標(biāo)記為未污染時(shí),則追蹤標(biāo)記該內(nèi)存為已污染;還用于若寄存器標(biāo)記為未污染,內(nèi)存標(biāo)記為已污染,則追蹤標(biāo)記該內(nèi)存為未污染;還用于若源作數(shù)為立即數(shù),內(nèi)存標(biāo)記為已污染,則追蹤標(biāo)記該內(nèi)存為未污染。

進(jìn)一步地,源操作數(shù)為寄存器時(shí)包括目的操作數(shù)為寄存器的情形和目的操作數(shù)不存在的情形,所述源操作數(shù)為寄存器的污點(diǎn)追蹤單元026包括:第三追蹤記錄子單元0261,用于若源寄存器標(biāo)記為已污染,目的寄存器標(biāo)記為已污染,則追蹤記錄加密調(diào)用指令;還用于若源寄存器標(biāo)記為已污染,目的寄存器標(biāo)記為未污染,則追蹤記錄加密調(diào)用指令;還用于若源寄存器標(biāo)記為已污染,目的操作數(shù)不存在,則追蹤記錄加密調(diào)用指令;第三追蹤標(biāo)記子單元0262,用于若源寄存器標(biāo)記為已污染,目的寄存器標(biāo)記為未污染,則追蹤標(biāo)記目的寄存器為已污染;若源寄存器標(biāo)記為未污染,目的寄存器標(biāo)記為已污染,則追蹤標(biāo)記目的寄存器為未污染。

進(jìn)一步地,目的操作數(shù)為寄存器時(shí),存在源操作數(shù)為立即數(shù)的情形,所述目的操作數(shù)為寄存器的污點(diǎn)追蹤單元028包括:第四追蹤標(biāo)記子單元,用于若源操作數(shù)為立即數(shù),目的寄存器標(biāo)記為已污染,則追蹤標(biāo)記目的寄存器為未污染。

在本實(shí)施例中,運(yùn)用動態(tài)污點(diǎn)分析技術(shù),通過對源操作數(shù)為內(nèi)存的污點(diǎn)追蹤、目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤、源操作數(shù)為寄存器的污點(diǎn)追蹤和目的操作數(shù)為寄存器的污點(diǎn)追蹤這四個情形來獲得只對污點(diǎn)數(shù)據(jù)進(jìn)行操作的指令執(zhí)行軌跡。

具體執(zhí)行流程如下(為了方便描述,1代表已污染,0代表未污染):1)源操作數(shù)為內(nèi)存的污點(diǎn)追蹤

當(dāng)源操作數(shù)為內(nèi)存時(shí),存在兩種情形:目的操作數(shù)為寄存器(如movrdx,qwordptr[rsp])、不存在目的操作數(shù)(如cmpal,byteptr[rbx+rdx*1]),具體處理如下:

a)如果內(nèi)存為1,寄存器為1,則記錄下此指令。

b)如果內(nèi)存為1,寄存器為0,則標(biāo)記此寄存器為1,且記錄下此指令。

c)如果內(nèi)存為1,無目的操作數(shù),則記錄下此指令。

d)如果內(nèi)存為0,寄存器為1,則標(biāo)記此寄存器為0。

e)如果內(nèi)存為0,寄存器為0,則無需任何操作。

f)如果內(nèi)存為0,無目的操作數(shù),則無需任何操作。

2)目的操作數(shù)為內(nèi)存的污點(diǎn)追蹤

當(dāng)目的操作數(shù)為內(nèi)存時(shí),存在兩種情形:源操作數(shù)為寄存器(如movqwordptr[rsp],rdx)、源操作數(shù)為立即數(shù)(如movbyteptr[rsp],0xfa),具體處理如下:

a)如果寄存器為1,內(nèi)存為1,則記錄下此指令。

b)如果寄存器為1,內(nèi)存為0,則標(biāo)記此內(nèi)存為1,且記錄下此指令。

c)如果寄存器為0,內(nèi)存為1,則標(biāo)記此內(nèi)存為0。

d)如果寄存器為0,內(nèi)存為0,則無需任何操作。

e)如果源操作數(shù)為立即數(shù),內(nèi)存為1,則標(biāo)記此內(nèi)存為0。

f)如果源操作數(shù)為立即數(shù),內(nèi)存為0,則無需任何操作。

3)源操作數(shù)為寄存器的污點(diǎn)追蹤

在前面第1)和2)步驟執(zhí)行后,當(dāng)源操作數(shù)為寄存器時(shí),還存在兩種情形:目的操作數(shù)為寄存器(如movrdx,rcx)、無目的操作數(shù)(如cmpal,0x2),具體處理如下:

a)遍歷所有源寄存器,如果存在源寄存器為1,目的寄存器為1,則記錄下此指令。

b)遍歷所有源寄存器,如果存在源寄存器為1,目的寄存器為0,則標(biāo)記目的寄存器為1,且記錄下此指令。

c)遍歷所有源寄存器,如果存在源寄存器為1,無目的操作數(shù),則記錄下此指令。

d)遍歷所有源寄存器,如果所有源寄存器均為0,目的寄存器為1,則標(biāo)記目的寄存器為0。

e)遍歷所有源寄存器,如果所有源寄存器均為0,目的寄存器為0,則無需任何操作。

f)遍歷所有源寄存器,如果所有源寄存器均為0,無目的操作數(shù),則無需任何操作。

4)目的操作數(shù)為寄存器的污點(diǎn)追蹤

在前面第1)、2)和3)步驟執(zhí)行后,當(dāng)目的操作數(shù)為寄存器時(shí),還存在一種情形:源操作數(shù)為立即數(shù)(如moval,0x2),具體處理如下:

a)如果源操作數(shù)為立即數(shù),目的寄存器為1,則標(biāo)記此寄存器為0。

b)如果源操作數(shù)為立即數(shù),目的寄存器為0,則無需任何操作。

如圖6和圖9所示,進(jìn)一步地,所述指令分析模塊03包括指令解析單元031、報(bào)文解密與報(bào)文處理的區(qū)分單元032,其中:指令解析單元031,用于確定報(bào)文解密和報(bào)文處理的指令的大概位置;報(bào)文解密與報(bào)文處理的區(qū)分單元032,用于結(jié)合指令解析單元031所確定的結(jié)果,采用滑動窗口技術(shù)來具體確定報(bào)文解密和報(bào)文處理的指令。

在本實(shí)施例中,指令分析模塊03用于分析指令執(zhí)行軌跡,通過使用算術(shù)運(yùn)算類指令和邏輯操作類指令的百分比、時(shí)間窗口技術(shù)來區(qū)分“報(bào)文解密”和“報(bào)文處理”階段,具體執(zhí)行流程如下:

(1)計(jì)算出算術(shù)運(yùn)算類指令和邏輯操作類指令占總指令的百分比。比如,第n個指令,就計(jì)算出前n個指令中,算術(shù)運(yùn)算類指令和邏輯操作類指令占總指令的百分比。由此,x軸為指令數(shù),y軸為算術(shù)運(yùn)算類指令和邏輯操作類指令占總指令的百分比,得到一個折線圖。在此折線圖中,最高點(diǎn)和最低點(diǎn)之間,必定包含“報(bào)文解密”和“報(bào)文處理”階段之間的轉(zhuǎn)折點(diǎn)。

(2)針對于最高點(diǎn)的指令和最低點(diǎn)的指令之間的指令,采用滑動窗口技術(shù)來計(jì)算算術(shù)運(yùn)算類指令和邏輯操作類指令占該窗口指令數(shù)的百分比,滑動窗口技術(shù)是指:維持一個包含固定指令數(shù)量的窗口,計(jì)算窗口內(nèi)算術(shù)運(yùn)算類指令和邏輯操作類指令占該滑動窗口指令數(shù)的百分比,該窗口從第一條指令開始,每移動一條指令計(jì)算一次。由此,以指令數(shù)為x軸,以算術(shù)運(yùn)算類指令和邏輯操作類指令占該窗口指令數(shù)的百分比為y軸,得到一個散點(diǎn)圖,經(jīng)實(shí)驗(yàn)測試得知:在此散點(diǎn)圖中,當(dāng)這百分比低于某個閾值時(shí),則前一個滑動窗口內(nèi)的指令有一半以上屬于這個加密應(yīng)用中調(diào)用的指令函數(shù),該指令函數(shù)就是報(bào)文解密和報(bào)文處理階段之間的轉(zhuǎn)折點(diǎn)。通過多次實(shí)驗(yàn)研究,本發(fā)明將滑動窗口設(shè)定為30條指定數(shù),閾值設(shè)定為50%為最佳。

實(shí)景測試:如圖10所示的指令折線圖,該圖是本發(fā)明監(jiān)控某加密應(yīng)用處理https加密報(bào)文時(shí),指令解析單元生成的折線圖,圖中表明報(bào)文解密和報(bào)文處理的轉(zhuǎn)折點(diǎn)在函數(shù)gcm_ghash_avx和函數(shù)ngx_http_process_request之間。先在指令解析單元031構(gòu)建的折線圖中確定報(bào)文解密和報(bào)文處理的指令的大概位置在函數(shù)gcm..和ngx..之間,又如圖11所示的指令散點(diǎn)圖,該圖是本發(fā)明監(jiān)控某加密應(yīng)用處理https加密報(bào)文時(shí),報(bào)文解密與報(bào)文處理的區(qū)分單元生成的散點(diǎn)圖,圖中表明報(bào)文解密和報(bào)文處理的轉(zhuǎn)折點(diǎn)是函數(shù)gcm_ghash_avx。結(jié)合指令解析單元031所確定的結(jié)果,再在報(bào)文解密與報(bào)文處理的區(qū)分單元032構(gòu)建的散點(diǎn)圖中具體地確定指令。

進(jìn)一步地,所述內(nèi)存行為分析模塊04包括內(nèi)存讀寫行為單元041、獲取單元042和提取單元043,其中:內(nèi)存讀寫行為單元041,用于定義一個全局變量,并動態(tài)跟蹤加密應(yīng)用對內(nèi)存的分配和釋放,分配內(nèi)存則加入全局變量中,釋放內(nèi)存則從全局變量里移除;獲取單元042,用于在報(bào)文解密階段,若有指令對內(nèi)存進(jìn)行寫操作,則在全局變量中找到該內(nèi)存緩沖區(qū),并將其狀態(tài)標(biāo)記為已污染,在報(bào)文處理階段,若有指令對內(nèi)存進(jìn)行讀操作,則在全局變量中找到該內(nèi)存緩沖區(qū),若該內(nèi)存緩沖區(qū)的狀態(tài)標(biāo)記為已污染,則獲取該內(nèi)存地址;提取單元043,用于從所獲取的內(nèi)存地址提取解密后的明文信息。

在本實(shí)施例中,內(nèi)存行為分析模塊04用于分析內(nèi)存的讀寫行為信息,找到在“報(bào)文解密”階段進(jìn)行寫操作而且在“報(bào)文處理”階段進(jìn)行讀操作的內(nèi)存,從而提取出解密后的明文信息。具體執(zhí)行流程如下:

1)內(nèi)存分配和釋放的跟蹤

定義一個全局變量memorylist并動態(tài)跟蹤加密應(yīng)用對內(nèi)存的分配和釋放,分配內(nèi)存則加入全局變量memorylist中,釋放內(nèi)存則從全局變量memorylist里移除。

2)“報(bào)文解密”階段的分析

若有指令對內(nèi)存進(jìn)行寫操作,則在全局變量memorylist中找到該內(nèi)存緩沖區(qū),并將其狀態(tài)標(biāo)記為1(已污染)。因?yàn)榧用軕?yīng)用在對加密報(bào)文進(jìn)行解密時(shí),其解密后的明文必定會存入內(nèi)存緩沖區(qū)中。

3)“報(bào)文處理”階段的分析

若有指令對內(nèi)存進(jìn)行寫操作,則在全局變量memorylist中找到該內(nèi)存緩沖區(qū),并將其狀態(tài)標(biāo)記為0(未污染)。因?yàn)榧用軕?yīng)用在“報(bào)文處理”階段一定是從內(nèi)存中讀取上一階段“報(bào)文解密”得到的明文并進(jìn)行相應(yīng)的處理,如果該內(nèi)存是被寫入數(shù)據(jù),就不可能是解密后的明文存儲的位置。

若有指令對內(nèi)存進(jìn)行讀操作,則在全局變量memorylist中找到該內(nèi)存緩沖區(qū),若該內(nèi)存緩沖區(qū)的狀態(tài)為1(已污染)則將其輸出。對于在“報(bào)文處理”階段進(jìn)行讀操作的內(nèi)存,需要說明一下地是,只需要關(guān)注第一個被讀取的內(nèi)存緩沖區(qū),因?yàn)樵搩?nèi)存緩沖區(qū)就是存儲解密后的明文的位置。

顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實(shí)施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。

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