欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于內(nèi)存保護(hù)類型監(jiān)控的惡意代碼跟蹤識別方法與流程

文檔序號:11654767閱讀:285來源:國知局
一種基于內(nèi)存保護(hù)類型監(jiān)控的惡意代碼跟蹤識別方法與流程

一.技術(shù)領(lǐng)域

本發(fā)明提供一種基于內(nèi)存保護(hù)類型監(jiān)控的惡意代碼跟蹤識別方法,它涉及漏洞防御,惡意代碼檢測識別方法,屬于信息安全領(lǐng)域。

二.

背景技術(shù):

隨著電子設(shè)備的普及,計(jì)算機(jī)技術(shù)不斷發(fā)展,整個(gè)社會對于互聯(lián)網(wǎng)及計(jì)算機(jī)的依賴持續(xù)增長,此時(shí)信息安全已成為不容忽視的問題,而軟件漏洞的檢測識別及防御技術(shù)顯得尤為重要。根據(jù)專利申請者的統(tǒng)計(jì),近年來漏洞攻擊技術(shù)中,代碼復(fù)用攻擊(codereuseattacks)占主要地位,漏洞攻擊者通常會通過攻擊虛函數(shù)表或返回地址執(zhí)行系統(tǒng)接口函數(shù)修改惡意代碼所在內(nèi)存保護(hù)屬性,而現(xiàn)有針對這種攻擊手段的防護(hù)方式如微軟提供的執(zhí)行流保護(hù)(cfgcontrolflowguard)有下列缺點(diǎn):保護(hù)覆蓋面積小,兼容性低,通常需要在應(yīng)用程序編譯時(shí)開發(fā)環(huán)境提供支持,且運(yùn)行于windows10以上的高系統(tǒng)版本,兩種條件缺一不可,導(dǎo)致目前有大量的應(yīng)用程序并無法使用該類保護(hù)方案。

三.

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

1.發(fā)明目的

本發(fā)明公開了一種基于內(nèi)存保護(hù)類型監(jiān)控的惡意代碼跟蹤識別方法,目的在于精確檢測出發(fā)生的漏洞攻擊技術(shù)以及惡意代碼威脅,從而快速進(jìn)行相應(yīng)的防御反應(yīng),保護(hù)沙箱環(huán)境所在網(wǎng)絡(luò)中的計(jì)算機(jī)系統(tǒng)的安全。

2.技術(shù)方案

本發(fā)明為一種基于內(nèi)存保護(hù)類型監(jiān)控的惡意代碼跟蹤識別方法,其步驟如下:

步驟1:將技術(shù)人員開發(fā)的動態(tài)鏈接庫注入到目標(biāo)進(jìn)程中;

步驟2:在目標(biāo)進(jìn)程中申請向量化異常處理函數(shù),用于接管目標(biāo)進(jìn)程中所發(fā)出的異常并對該異常環(huán)境進(jìn)行分析,分析流程包含以下步驟;

步驟2-1:等待當(dāng)前進(jìn)程發(fā)生的異常事件,過濾訪問違規(guī)之外的異常信息,并與收集的參數(shù)環(huán)境比對異常信息;

步驟2-2:如果步驟2-1比對信息成功,備份保留此段內(nèi)存,并在此內(nèi)存范圍內(nèi)做靜態(tài)規(guī)則匹配;

步驟2-3:若靜態(tài)規(guī)則匹配失敗,則從異常發(fā)生的地址動態(tài)模擬解析并執(zhí)行該段內(nèi)存代碼,做動態(tài)行為分析;

步驟2-4:根據(jù)步驟2-3的返回結(jié)果,最終輸出本次的檢測結(jié)論,如果為惡意代碼,給出提示并退出執(zhí)行過程;

步驟3:獲取系統(tǒng)指定動態(tài)鏈接庫中針對與修改內(nèi)存保護(hù)屬性的接口函數(shù)地址,劫持其執(zhí)行流程到技術(shù)人員開發(fā)的動態(tài)鏈接庫中;

步驟4:在保護(hù)程序的運(yùn)行周期中監(jiān)控所有關(guān)于此接口的調(diào)用流程,初步檢測調(diào)用的合法性,如果不合法,進(jìn)入步驟9;

步驟5:通過初步的合法性檢測后,判斷參數(shù)中是否包含執(zhí)行屬性標(biāo)志;

步驟6:針對修改內(nèi)存保護(hù)屬性為可執(zhí)行屬性的接口函數(shù)調(diào)用,清除可執(zhí)行保護(hù)標(biāo)志位;

步驟7:記錄本次接口函數(shù)調(diào)用的參數(shù)環(huán)境;

步驟8:調(diào)用原始接口函數(shù),使程序正常運(yùn)行;

步驟9:報(bào)告發(fā)現(xiàn)漏洞攻擊(exploit)。

其中,步驟1中所述的“目標(biāo)進(jìn)程”,它是指受到本發(fā)明保護(hù)的進(jìn)程。

其中,步驟1中所述的“將技術(shù)人員開發(fā)的動態(tài)鏈接庫注入到目標(biāo)進(jìn)程中”,其作法如下:其中的注入方法是本領(lǐng)域的常見技術(shù)。

其中,步驟2中所述的“在目標(biāo)進(jìn)程中申請向量化異常處理函數(shù),用于接管目標(biāo)進(jìn)程中所發(fā)出的異?!保渥鞣ㄈ缦拢赫{(diào)用操作系統(tǒng)接口函數(shù)addvectoredexceptionhandler,注冊一個(gè)處理函數(shù),用于處理進(jìn)程中發(fā)生的異常中斷。

其中,步驟2-1中所述的“等待當(dāng)前進(jìn)程發(fā)生的異常事件,過濾訪問違規(guī)之外的異常信息,并與收集的參數(shù)環(huán)境比對異常信息”,其作法如下:當(dāng)進(jìn)程環(huán)境發(fā)生異常中斷后,會被步驟2中申請的向量化異常處理函數(shù)所接管,過濾掉exceptioncode為status_access_violation之外的異常消息,將其發(fā)生異常的地址(exceptionaddress)同步驟7中記錄的信息做對比,判斷這次異常發(fā)生的地址是否位于記錄的區(qū)間中。

其中,步驟2-2、步驟2-3中所述的“靜態(tài)規(guī)則匹配”,它是指符合惡意代碼(shellcode)形態(tài)的指令模式匹配。

其中,步驟2-2中所述的“如果步驟2-1比對信息成功,備份保留此段內(nèi)存,并在此內(nèi)存范圍內(nèi)做靜態(tài)規(guī)則匹配”,其作法如下:如果異常發(fā)生的地址位于記錄的數(shù)據(jù)區(qū)間中,保留(dump)本段內(nèi)存到本地,并對該段內(nèi)存數(shù)據(jù)進(jìn)行符合惡意代碼(shellcode)模式的靜態(tài)搜索,其中的搜索方法是本領(lǐng)域的常見技術(shù),其中的dump方法是本領(lǐng)域的常見技術(shù)。

其中,步驟2-3中所述的“若靜態(tài)規(guī)則匹配失敗,則從異常發(fā)生的地址動態(tài)模擬解析并執(zhí)行該段內(nèi)存代碼,做動態(tài)行為分析”,其作法如下:動態(tài)模塊將步驟2-1中dump下來的數(shù)據(jù)塊載入內(nèi)存中,從異常發(fā)生地址處偏移建立執(zhí)行流程,記錄其對系統(tǒng)接口函數(shù)的訪問情況,是否存在動態(tài)獲取系統(tǒng)接口函數(shù)地址并執(zhí)行敏感接口函數(shù)的行為。

其中,步驟3中所述的“獲取系統(tǒng)指定動態(tài)鏈接庫中針對與修改內(nèi)存保護(hù)屬性的接口函數(shù)地址,劫持其執(zhí)行流程到技術(shù)人員開發(fā)的動態(tài)鏈接庫中”,其作法如下:獲取ntdll模塊中,zwprotectvirtualmemory接口函數(shù)的地址,hook其執(zhí)行流程。其中hook方法是本領(lǐng)域的常見技術(shù)。

其中,步驟4中所述的“在保護(hù)程序的運(yùn)行周期中監(jiān)控所有關(guān)于此接口的調(diào)用流程,初步檢測調(diào)用的合法性”,其做法如下:檢測要改變保護(hù)屬性的內(nèi)存基址是否位于當(dāng)前線程信息塊中所保存的棧地址的起始范圍內(nèi)。

其中,步驟5中所述的“判斷參數(shù)中是否包含執(zhí)行屬性標(biāo)志”,其做法如下:檢測本次zwprotectvirtualmemory調(diào)用參數(shù)的newaccessprotection中是否包含執(zhí)行標(biāo)志。

其中,步驟6中所述的“清除可執(zhí)行保護(hù)標(biāo)志位”,其作法如下:該方法是本領(lǐng)域的常見技術(shù)。

其中,步驟7中所述的“記錄本次接口函數(shù)調(diào)用的參數(shù)環(huán)境”,其作法如下:記錄ntdll模塊中,newzwprotectvirtualmemory接口函數(shù)調(diào)用時(shí)的baseaddress參數(shù),numberofbytestoprotect參數(shù),oldaccessprotection參數(shù)。

其中,步驟8中所述的“調(diào)用原始接口函數(shù),使程序正常運(yùn)行”,其做法如下:該方法是本領(lǐng)域的常見技術(shù)。

通過以上步驟,本發(fā)明達(dá)到了識別漏洞攻擊過程中惡意代碼(shellcode)執(zhí)行的效果,解決了現(xiàn)有技術(shù)保護(hù)覆蓋面積小,兼容性低的問題。

3.優(yōu)點(diǎn)

本發(fā)明通過劫持修改內(nèi)存保護(hù)屬性的系統(tǒng)接口函數(shù),判斷調(diào)用參數(shù)是否位于棧地址空間,并記錄包含可執(zhí)行屬性的調(diào)用參數(shù),清除可執(zhí)行標(biāo)志位,導(dǎo)致受保護(hù)的應(yīng)用程序因任何原因跳轉(zhuǎn),執(zhí)行到屬性修改過的內(nèi)存塊時(shí),對于異常的地址進(jìn)行向高地址反匯編,并根據(jù)反匯編結(jié)果進(jìn)行的靜態(tài)掃描及加載異常內(nèi)存塊,模擬執(zhí)行的動態(tài)行為進(jìn)行漏洞攻擊,惡意代碼的識別判斷。

針對目前常見的漏洞攻擊利用手段,通過攻擊虛函數(shù)表,調(diào)用修改內(nèi)存屬性的接口函數(shù)修改通過腳本所布置的惡意代碼段所在的內(nèi)存屬性,并通過攻擊虛表劫持中央處理器(cpu)的指令指針寄存器執(zhí)行到惡意代碼等代碼復(fù)用攻擊(codereuseattacks),目前操作系統(tǒng)擁有的漏洞保護(hù)方案:地址空間布局隨機(jī)化,數(shù)據(jù)執(zhí)行保護(hù)通常無法檢測,而與windows10操作系統(tǒng)上才默認(rèn)開啟,由微軟提供的執(zhí)行流保護(hù)(cfgcontrolflowguard)這一保護(hù)方案相比,本發(fā)明有以下優(yōu)點(diǎn):保護(hù)覆蓋面積廣,兼容性高,執(zhí)行流保護(hù)只能被windows最新版本所支持,并且需要在編譯時(shí)開啟這一保護(hù)方案,而非最新操作系統(tǒng)或者受保護(hù)程序在編譯時(shí)沒有開啟這一保護(hù)策略,則無法使用這種保護(hù),導(dǎo)致市面上大多數(shù)的軟件不支持這種防護(hù)方式,而本發(fā)明不存在這種問題,可以在保證準(zhǔn)確度的前提下保護(hù)并支持基本上所有的應(yīng)用程序。

四.附圖說明

圖1是本發(fā)明所述方法流程示意圖。

圖2是本發(fā)明方法的異常處理流程示意圖。

五.具體實(shí)施方式:

本發(fā)明通過劫持修改內(nèi)存保護(hù)屬性的系統(tǒng)接口函數(shù),收集記錄包含可執(zhí)行屬性的調(diào)用參數(shù),做清除可執(zhí)行標(biāo)志位處理,通過監(jiān)控異常的方式來攔截目標(biāo)代碼的執(zhí)行,通過靜態(tài)規(guī)則及動態(tài)模擬執(zhí)行的方式高效準(zhǔn)確的識別漏洞攻擊及惡意代碼。

參見圖1,為本發(fā)明所述方法流程示意圖,具體流程包括:

步驟s101:將本發(fā)明的保護(hù)模塊注入到目標(biāo)進(jìn)程中。

步驟s102:在受保護(hù)的目標(biāo)進(jìn)程中申請向量化異常處理函數(shù),用于接管該進(jìn)程在運(yùn)行中所引發(fā)的異常中斷,處理分析異常環(huán)境,其處理過程見參考圖2,分為s201-s21010個(gè)步驟,如下:

步驟s201:進(jìn)程運(yùn)行期間發(fā)出異常中斷,并被向量化異常處理所攔截。

步驟s202:判定步驟s201所發(fā)生的異常中斷信息,是否為關(guān)注的異常行為,即“訪問違規(guī)”異常(memoryaccessviolationoccurred),對于其他原因所發(fā)出的異常中斷,此處不做處理,并將異常正常下發(fā)步驟s209。

步驟s203:對于步驟s202所過濾下的異常中斷信息,判斷其異常中斷地址(exception-address)是否位于數(shù)據(jù)容器內(nèi),對于非該范圍內(nèi)的異常地址,執(zhí)行步驟s209。

步驟s204:將異常發(fā)生的內(nèi)存基地址開始,地址大小范圍內(nèi)的內(nèi)存?zhèn)浞輳?fù)制下來,并記錄異常發(fā)生地址對于這段內(nèi)存的偏移地址。

步驟s205:從異常發(fā)生的地址開始向下反匯編,將數(shù)據(jù)交由s206處理。

步驟s206:對于反匯編后的代碼,對其進(jìn)行靜態(tài)特征代碼塊掃描識別,對識別到特殊惡意指令塊的操作,報(bào)告漏洞攻擊行為步驟s210。

步驟s207:如靜態(tài)模塊掃描識別沒有危險(xiǎn)特征,進(jìn)行動態(tài)模擬執(zhí)行操作,并將結(jié)果傳遞給步驟s208進(jìn)行行為分析。

步驟s208:分析該異常代碼段的行為結(jié)果,如果命中動態(tài)特征規(guī)則,則報(bào)告漏洞攻擊,執(zhí)行步驟s210,否則執(zhí)行步驟s09。

步驟s209:本次異常檢測結(jié)束,檢測結(jié)果為非漏洞攻擊。

步驟s210:報(bào)告當(dāng)前進(jìn)程中發(fā)現(xiàn)漏洞攻擊(exploit)。

步驟s103:劫持修改內(nèi)存屬性的系統(tǒng)應(yīng)用程序編程接口(applicationprogramminginterface),在漏洞攻擊過程中,該函數(shù)常用于修改目標(biāo)即惡意代碼(shellcode)所在內(nèi)存段的內(nèi)存屬性,劫持該接口函數(shù)用于實(shí)現(xiàn)初步漏洞攻擊判定及特定信息參數(shù)的收集。

步驟s104:用于判斷進(jìn)程是否存在通過該接口函數(shù)修改線程棧所在內(nèi)存的內(nèi)存屬性行為,如果修改保護(hù)屬性的內(nèi)存的地址位于棧地址空間中,報(bào)告漏洞攻擊,執(zhí)行步驟s109。

步驟s105:判定該次調(diào)用的參數(shù)是否帶有可執(zhí)行標(biāo)記位,即是否要將目標(biāo)內(nèi)存設(shè)置為帶有可執(zhí)行屬性的內(nèi)存,此處過濾不帶有可執(zhí)行標(biāo)志位的調(diào)用,返回執(zhí)行原始接口函數(shù)步驟s108。

步驟s106:通過步驟s105的處理部分,即說明本次接口函數(shù)的調(diào)用參數(shù)中帶有可執(zhí)行標(biāo)記位,將原始的可執(zhí)行標(biāo)志位取消掉。

步驟s107:收集本次調(diào)用的參數(shù)環(huán)境信息,并加入由保護(hù)模塊維護(hù)的數(shù)據(jù)容器中。

步驟s108:內(nèi)存設(shè)置完畢,調(diào)用原始函數(shù)不打斷進(jìn)程的正常執(zhí)行流程,并等待該進(jìn)程所發(fā)出的異常中斷信息。

步驟s109:報(bào)告當(dāng)前進(jìn)程中發(fā)現(xiàn)漏洞攻擊(exploit)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
保德县| 新田县| 巴彦淖尔市| 潮州市| 塔河县| 称多县| 交口县| 通州市| 武义县| 辉南县| 黄石市| 普安县| 徐水县| 怀化市| 昭觉县| 启东市| 咸丰县| 石林| 柳州市| 阜南县| 彭州市| 文成县| 柳江县| 白城市| 宝山区| 安徽省| 五指山市| 云龙县| 马公市| 蒲城县| 乡城县| 华安县| 周口市| 喀喇沁旗| 讷河市| 海南省| 泰兴市| 东山县| 呼和浩特市| 项城市| 偏关县|