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

用于防護(hù)網(wǎng)頁攻擊的方法和設(shè)備的制作方法

文檔序號(hào):6373579閱讀:263來源:國知局
專利名稱:用于防護(hù)網(wǎng)頁攻擊的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù),尤其涉及一種用于防護(hù)網(wǎng)頁攻擊的方法和設(shè)備。
背景技術(shù)
網(wǎng)頁木馬攻擊是當(dāng)前最流行的網(wǎng)絡(luò)攻擊之一。目前,網(wǎng)頁木馬大多基于瀏覽器的緩沖區(qū)溢出漏洞,攻擊者通過溢出漏洞來改變和控制程序的執(zhí)行流程,從而最終控制系統(tǒng)下載并運(yùn)行木馬。網(wǎng)頁木馬攻擊的過程一般是攻擊者通過j avascript操作瀏覽器的堆內(nèi)存,將惡意代碼shellcode寫入瀏覽器的堆內(nèi)存地址,通過緩沖區(qū)溢出漏洞改變程序的執(zhí)行流程,使得瀏覽器堆內(nèi)存中的shellcode得以執(zhí)行。隨著網(wǎng)頁木馬攻擊越來越普遍,各安全廠商的安全產(chǎn)品也加強(qiáng)了針對(duì)網(wǎng)頁木馬攻擊的安全防護(hù)功能,其中防護(hù)網(wǎng)頁木馬攻擊而普遍使用的技術(shù)是針對(duì)shellcode經(jīng)常使用的關(guān)鍵函數(shù)進(jìn)行HOOK鉤子監(jiān)控,該技術(shù)一般是內(nèi)聯(lián)掛鉤(inline hook),將匯編代碼直接寫入到API函數(shù)的內(nèi)存區(qū)域,在原始函數(shù)的匯編代碼入口插入5字節(jié)的jmp跳轉(zhuǎn)指令,跳轉(zhuǎn)到安全軟件自定義的函數(shù)地址執(zhí)行自定義代碼進(jìn)行安全檢測(cè),發(fā)現(xiàn)有惡意代碼調(diào)用關(guān)鍵函數(shù)立即阻止并攔擊網(wǎng)頁木馬的攻擊行為,安全檢測(cè)完畢再跳回原始函數(shù)的地址繼續(xù)執(zhí)行代碼。另一方面,黑客也開始使用新的攻擊技術(shù)針對(duì)網(wǎng)頁木馬防護(hù)技術(shù)進(jìn)行攻防,網(wǎng)絡(luò)上出現(xiàn)過一類專門針對(duì)安全軟件Η00Κ鉤子關(guān)鍵API函數(shù)摘鉤的攻擊方法,一旦這類摘鉤的攻擊方法成功就會(huì)導(dǎo)致安全軟件的防護(hù)完全失效。安全軟件防護(hù)網(wǎng)頁木馬攻擊常會(huì)對(duì)執(zhí)行木馬文件的函數(shù)進(jìn)行內(nèi)聯(lián)掛鉤(inlinehook),如 CreateProcessIntemalW 函數(shù),網(wǎng)頁木馬在調(diào)用 CreateProcessIntemalW 函數(shù)執(zhí)行木馬文件前安全軟件會(huì)對(duì)CreateProcessIntemalW函數(shù)進(jìn)行安全監(jiān)控和檢測(cè),攻擊者便對(duì)CreateProcessIntemalW函數(shù)的前幾個(gè)字節(jié)的jmp跳轉(zhuǎn)指令進(jìn)行內(nèi)聯(lián)掛鉤(inlinehook)還原,使安全軟件的防護(hù)完全失效。這種繞過Η00Κ鉤子防護(hù),針對(duì)關(guān)鍵API函數(shù)的內(nèi)聯(lián)掛鉤(inline hook)還原的攻擊方式需要進(jìn)行兩個(gè)步驟I、使用VirtualProtect函數(shù)改變關(guān)鍵API函數(shù)入口內(nèi)存區(qū)域的內(nèi)存保護(hù)屬性為可寫權(quán)限,從而能夠?qū)θ肟趦?nèi)存區(qū)域的指令擁有修改權(quán)限。2、還原inline hook (內(nèi)聯(lián)掛鉤)的jmp跳轉(zhuǎn)指令為普通的函數(shù)入口指令,從而使安全軟件的安全檢測(cè)無法生效。因此針對(duì)Η00Κ鉤子關(guān)鍵API函數(shù)摘鉤的惡意攻擊進(jìn)行防護(hù)和檢測(cè),目前已成為安全軟件的重要功能。

發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種用于防護(hù)網(wǎng)頁攻擊的方法和設(shè)備,以解決現(xiàn)有技術(shù)存在的針對(duì)HOOK鉤子關(guān)鍵API函數(shù)摘鉤的惡意攻擊問題,其中,該方法可以包括在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前,獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù);檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),警告或阻止所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,該方法還可以包括當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成 所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,該方法還可以包括當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,該方法還可以包括當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的另一方面,還提供一種用于防護(hù)網(wǎng)頁攻擊的設(shè)備。該設(shè)備可以包括獲取模塊,用于在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù);檢測(cè)模塊,用于檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及阻止與執(zhí)行模塊,用于當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),警告或阻止所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,所述阻止與執(zhí)行模塊還可以被配置成當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,所述阻止與執(zhí)行模塊還可以被配置成當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,所述阻止與執(zhí)行模塊還可以被配置成當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,與可執(zhí)行相關(guān)聯(lián)的權(quán)限可以是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限可以是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,所述第一參數(shù)可以是lpAddress參數(shù),所述第二參數(shù)可以是 flNewProtect 參數(shù)。根據(jù)本發(fā)明的實(shí)施例,所述待檢測(cè)函數(shù)可以是VirtualPiOtect函數(shù),所述已掛鉤待檢測(cè)函數(shù)可以是VirtualPiOtectEx函數(shù),所述第一屬性為內(nèi)存保護(hù)屬性,以及所述第二屬性為內(nèi)存保護(hù)屬性。根據(jù)本發(fā)明的實(shí)施例,獲取模塊可以分成獲取第一參數(shù)的第一獲取模塊和獲取第二參數(shù)的第二獲取模塊。根據(jù)本發(fā)明的實(shí)施例,所述檢測(cè)模塊可以包括用于檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限的第一檢測(cè)模塊,和用于檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限的第二檢測(cè)模塊。與現(xiàn)有技術(shù)相比,根據(jù)本發(fā)明的技術(shù)方案,檢測(cè)發(fā)現(xiàn)和阻斷通過網(wǎng)頁木馬的改寫內(nèi)存保護(hù)屬性行為,防止網(wǎng)頁木馬摘掉安全軟件所有HOOK鉤子的關(guān)鍵API函數(shù)。


此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)本發(fā)明實(shí)施例的用于防護(hù)網(wǎng)頁攻擊的方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的用于防護(hù)網(wǎng)頁攻擊的設(shè)備的框圖;以及圖3示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。
具體實(shí)施例方式本發(fā)明實(shí)施例在于,進(jìn)程在調(diào)用改變內(nèi)存頁保護(hù)屬性的API函數(shù)時(shí),對(duì)修改的內(nèi)存地址的內(nèi)存頁屬性進(jìn)行檢測(cè),通過規(guī)則對(duì)內(nèi)存地址頁的原有內(nèi)存頁保護(hù)屬性進(jìn)行判別,一旦發(fā)現(xiàn)惡意的修改行為即阻止和警告,保護(hù)HOOK鉤子函數(shù)入口地址不被修改內(nèi)存保護(hù)屬性,并且不被惡意篡改。本申請(qǐng)的技術(shù)方案主要通過監(jiān)控對(duì)改變內(nèi)存屬性的API函數(shù)的調(diào)用,保護(hù)HOOK鉤子函數(shù)入口地址的內(nèi)存保護(hù)屬性不被修改成可寫。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下結(jié)合附圖及具體實(shí)施例,對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說明。根據(jù)本發(fā)明的實(shí)施例,提供了一種用于防護(hù)網(wǎng)頁攻擊的方法和設(shè)備。 如前所述,為了防止網(wǎng)頁木馬,通過HOOK技術(shù)對(duì)待檢測(cè)函數(shù)進(jìn)行掛鉤(例如,采用內(nèi)聯(lián)掛鉤(inline hook)技術(shù)來進(jìn)行掛鉤),利用HOOK函數(shù)MineVirtualProtectEx對(duì)已掛鉤待檢測(cè)函數(shù)的參數(shù)進(jìn)行檢測(cè)。為了使本發(fā)明的技術(shù)方案更加清楚,將針對(duì)VirtualProtectEx函數(shù)來描述本發(fā)明的檢測(cè)方法的實(shí)施。因此,首先描述與該函數(shù)相關(guān)的參數(shù)以及權(quán)限定義。VirtualProtectEx函數(shù)的作用是改變調(diào)用進(jìn)程的內(nèi)存保護(hù)訪問級(jí)別,其函數(shù)內(nèi)容如下Virtua I ProtectEx(
HANDLE hProcess,
LPVOID IpAddress,
SiZE T dwSize,
DWORD flNewProtect,
PDVVORD IpflOldPiOtect
)
其中,hProcess參數(shù)是修改內(nèi)存的進(jìn)程句柄;IpAddress參數(shù)是修改內(nèi)存的起始地址;dwSize參數(shù)是修改內(nèi)存的字節(jié);flNewProtect參數(shù)是修改后的內(nèi)存保護(hù)屬性;以及IpflOldProtect參數(shù)是修改前的內(nèi)存保護(hù)屬性的地址。內(nèi)存頁面的內(nèi)存保護(hù)屬性可以有如下8個(gè)PAGE_N0ACCESS不可讀,試圖讀取頁面、寫入頁面或執(zhí)行頁面中的代碼將引發(fā)訪問違規(guī);PAGE_READ0NLY只讀權(quán)限,試圖寫入頁面或執(zhí)行頁面中的代碼將引發(fā)訪問違規(guī);PAGE_READWRITE可讀可寫權(quán)限,試圖執(zhí)行頁面中的代碼將引發(fā)訪問違規(guī);PAGE_EXE⑶TE可執(zhí)行權(quán)限,試圖讀取頁面或?qū)懭腠撁鎸⒁l(fā)訪問違規(guī);PAGE_EXECUTE_READ可讀可執(zhí)行權(quán)限,試圖寫入頁面將引發(fā)訪問違規(guī);PAGE_EXECUTE_READWRITE可讀可寫可執(zhí)行權(quán)限,對(duì)頁面執(zhí)行任何操作都不會(huì)引發(fā)訪問違規(guī);PAGE_WRITECOPY可寫可拷貝權(quán)限,試圖執(zhí)行頁面中的代碼將引發(fā)訪問違規(guī);PAGE_EXE⑶TE_WRITEC0PY可寫可拷貝可執(zhí)行權(quán)限,對(duì)頁面執(zhí)行任何操作都不會(huì)引發(fā)訪問違規(guī)。當(dāng)然,內(nèi)存頁面的內(nèi)存保護(hù)屬性也可以有其他的屬性。參考圖1,圖I是本發(fā)明實(shí)施例的用于防護(hù)網(wǎng)頁攻擊的方法的流程圖。根據(jù)本發(fā)明的實(shí)施例,在進(jìn)程調(diào)用改變內(nèi)存頁保護(hù)屬性的API吋,對(duì)修改的內(nèi)存地址的內(nèi)存保護(hù)屬性進(jìn)行預(yù)檢測(cè),通過規(guī)則來對(duì)內(nèi)存地址頁的緣由內(nèi)存頁保護(hù)屬性進(jìn)行判另IJ,一旦發(fā)現(xiàn)惡意的修改行為即進(jìn)行阻止和警告,保護(hù)已掛鉤函數(shù)入口地址不被修改內(nèi)存保護(hù)屬性,并且不被惡意篡改。在步驟101,在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前,獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù)。例如,所述函數(shù)可以是VirtualPiOtect函數(shù),所述已掛鉤待檢測(cè)函數(shù)可以是VirtualProtectEx函數(shù),所述第一參數(shù)可以是IpAddress參數(shù),所述第二參數(shù)可以是flNewProtect參數(shù)。其中,IpAddress參數(shù)是一個(gè)具體的內(nèi)存地址,使用VirtualQuery函數(shù)查詢內(nèi)存地址頁的內(nèi)存保護(hù)屬性。在步驟102,可以檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且可以檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。其中,所述第一屬性和所述第二屬性是內(nèi)存保護(hù)屬性。也即是說,檢測(cè)lpAddress參數(shù)的內(nèi)存地址的內(nèi)存保護(hù)屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)flNewProtect參數(shù)的內(nèi)存保護(hù)屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。根據(jù)本發(fā)明的實(shí)施例,所述檢測(cè)步驟可以由單個(gè)檢測(cè)步驟來檢測(cè)第一屬性和第二屬性;所述檢測(cè)步驟也可以分成兩個(gè)獨(dú)立的檢測(cè)步驟檢測(cè)第一屬性的第一檢測(cè)步驟和檢測(cè)第二屬性的第二檢測(cè)步驟。根據(jù)本發(fā)明的實(shí)施例,關(guān)于第一參數(shù)和第二參數(shù)的獲取步驟可以分成獲取第一參數(shù)的第一獲取步驟和獲取第二參數(shù)的第二獲取步驟,并且兩個(gè)獲取步驟的順序可以變化。關(guān)于第一屬性和第二屬性的檢測(cè)順序也可以變化。并且,可以先獲取第一參數(shù)后執(zhí)行關(guān)于第一屬性的檢測(cè),然后再獲取第二參數(shù),井隨后執(zhí)行關(guān)于第二屬性的檢測(cè)??商鎿Q地,可以先獲取第二參數(shù)后執(zhí)行關(guān)于第二屬性的檢測(cè),然后再 獲取第一參數(shù),井隨后執(zhí)行關(guān)于第一屬性的檢測(cè)。如果所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限,則在步驟103阻止所述函數(shù)的執(zhí)行。否則,可以在步驟104完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。也就是說,通過該方法阻止了對(duì)網(wǎng)頁的攻擊。具體而言,如果所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限、或者所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限、或者所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限,則在步驟104,完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。在本發(fā)明的實(shí)施中,第二屬性的修改是與惡意程序相關(guān)聯(lián)的,則阻止已掛鉤待檢測(cè)函數(shù)的執(zhí)行。如果所述第二屬性的修改不與惡意程序相關(guān)聯(lián),則完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。例如,如果flNewProtect參數(shù)的內(nèi)存保護(hù)屬性被惡意程序惡意修改,則阻止該函數(shù)VirtualProtectEx函數(shù)的執(zhí)行;否則,返回執(zhí)行真實(shí)的VirtualProtectEx函數(shù)。根據(jù)本發(fā)明的實(shí)施例,與可執(zhí)行相關(guān)聯(lián)的權(quán)限可以是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限可以是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。由上可知,本發(fā)明的實(shí)施例例如可以對(duì)IpAddress參數(shù)和flNewProtect參數(shù)進(jìn)行監(jiān)控,檢測(cè)VirtualProtect函數(shù)是否修改IpAddress參數(shù)內(nèi)存的起始地址的內(nèi)存保護(hù)屬性和flNewProtect參數(shù)的內(nèi)存保護(hù)屬性,是否存在修改內(nèi)存保護(hù)屬性為可寫權(quán)限的惡意行為,保護(hù)已完成掛鉤操作的關(guān)鍵函數(shù)不被還原。圖2是根據(jù)本發(fā)明實(shí)施例的用于防護(hù)網(wǎng)頁攻擊的設(shè)備200的框圖。根據(jù)本發(fā)明的實(shí)施例,用于防護(hù)網(wǎng)頁攻擊的設(shè)備200包括獲取模塊205、檢測(cè)模塊203以及阻止與執(zhí)行模塊204。獲取模塊205可以被配置成在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù)。例如,所述函數(shù)可以是VirtualProtect函數(shù),所述已掛鉤待檢測(cè)函數(shù)可以是VirtualPiOtectEx函數(shù),所述第一參數(shù)可以是IpAddress參數(shù),所述第二參數(shù)可以是flNewProtect參數(shù)。其中,IpAddress參數(shù)是一個(gè)具體的內(nèi)存地址,使用VirtualQuery函數(shù)查詢內(nèi)存地址頁的內(nèi)存保護(hù)屬性。根據(jù)本發(fā)明的實(shí)施例,獲取模塊205可以分成獲取第一參數(shù)的第一獲取模塊201和獲取第二參數(shù)的第二獲取模塊202。
檢測(cè)模塊203可以被配置成檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。其中,所述第一屬性和所述第二屬性是內(nèi)存保護(hù)屬性。也即是說,檢測(cè)lpAddress參數(shù)的內(nèi)存地址的內(nèi)存保護(hù)屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)flNewProtect參數(shù)的內(nèi)存保護(hù)屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。根據(jù)本發(fā)明的實(shí)施例,所述檢測(cè)模塊203可以由單個(gè)檢測(cè)模塊來完成第一屬性的檢測(cè)和第二屬性的檢測(cè);所述檢測(cè)模塊203也可以包括兩個(gè)獨(dú)立的檢測(cè)模塊檢測(cè)第一屬性的第一檢測(cè)模塊和檢測(cè)第二屬性的第二檢測(cè)模塊。并且,可以先獲取第一參數(shù)后執(zhí)行關(guān)于第一屬性的檢測(cè),然后再獲取第二參數(shù),井隨后執(zhí)行關(guān)于第二屬性的檢測(cè)??商鎿Q地,可以先獲取第二參數(shù)后執(zhí)行關(guān)于第二屬性的檢測(cè),然后再獲取第一參數(shù),井隨后執(zhí)行關(guān)于第一屬性的檢測(cè)。如果所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限,則阻止與執(zhí)行模塊204可以被配置成阻止所述函數(shù)的執(zhí)行。否則,阻止與執(zhí)行模塊204可以被配置成完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。 具體而言,如果所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限、或者所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限、或者所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限,則阻止與執(zhí)行模塊204可以被配置成完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,與可執(zhí)行相關(guān)聯(lián)的權(quán)限可以是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限可以是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,用于防護(hù)網(wǎng)頁攻擊的方法還可以用計(jì)算機(jī)程序來實(shí)現(xiàn),具體如下BOOL WINAPI MineVirtualProtectEx(
HANDLE hProcess.
LPVOID lpAddress,
SIZE—T dwSize,
DWORD flNewProtect,
PDWORD IpflOldProtect)
{
if ( C_BEGIN—HOOK == false ) {
return RealViitualPiOtectEx(hProcess,lpAddress, dwSize, tlNewProtect, IpflO Ici Protect);MEMORY—BASIC—INFORMATION minfo;memset(&minfo, 0,sizeof(minfo));
Vinua.lQuery(.lpAddi,ess, &.minfo, sizeof(minfo));
Il原內(nèi)存屬性只讀可執(zhí)行,新屬性増加了允許寫
if ( minfo.Protect == PAGE EXECUTE READ || minfo.Protect ==
PAGE—EXECUTE—READWRiTE ) &&
(flNewProtect == PAGE—EXECUTE—READWRITE 11 flNewProtect ==PAGE—EXECUTE—WRITECOPY || flNewProtect :== PAGE—READWRITE ||flNewProtect == PAGE—WRITECOP Y) )
{
std::string funcName;
if ( GetHookFuncName(ipAddress, funcName))
{
LOG_INFO("Hooked E VirtualPiOtect to %s", funcName.c_str());g HookProtect.InvaildExit(funcName);
}

return RealVirtualProtectEx(hProcess,lpAddress, dwSize, flNewProtect,IpflOIdProtect):
}
本發(fā)明在通過軟件來實(shí)現(xiàn)時(shí),所述軟件能夠在其中執(zhí)行的計(jì)算機(jī)系統(tǒng)如圖3所
/Jn ο圖3示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。如圖3所示,計(jì)算機(jī)系統(tǒng)可以包括CPU(中央處理單元)301、RAM (隨機(jī)存取存儲(chǔ)器)302、ROM (只讀存儲(chǔ)器)303、系統(tǒng)總線304、硬盤控制器305、鍵盤控制器306、串行接ロ控制器307、并行接ロ控制器308、顯示控制器309、硬盤310、鍵盤311、串行外部設(shè)備312、并行外部設(shè)備313和顯示器314。在這些部件中,與系統(tǒng)總線304相連的有CPU 301、RAM 302、ROM 303、硬盤控制器305、鍵盤控制器306、串行控制器307、并行控制器308和顯示控制器309。硬盤310與硬盤控制器305相連,鍵盤311與鍵盤控制器306相連,串行外部設(shè)備312與串行接ロ控制器307相連,并行外部設(shè)備313與并行接ロ控制器308相連,以及顯示器313與顯示控制器309相連。應(yīng)當(dāng)理解,圖3所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出 的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。特別地,除硬件實(shí)施方式之外,本發(fā)明的實(shí)施例可以通過計(jì)算機(jī)程序產(chǎn)品的形式實(shí)現(xiàn)。例如,參考圖I描述的方法可以通過計(jì)算機(jī)程序產(chǎn)品來實(shí)現(xiàn)。該計(jì)算機(jī)程序產(chǎn)品可以存儲(chǔ)在例如圖3所示的RAM 304,ROM 304、硬盤310和/或任何適當(dāng)?shù)拇鎯?chǔ)介質(zhì)中,或者通過網(wǎng)絡(luò)從適當(dāng)?shù)奈恢孟螺d到計(jì)算機(jī)系統(tǒng)上。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)代碼部分,其包括可由適當(dāng)?shù)奶幚碓O(shè)備(例如,圖3中示出的CPU301)執(zhí)行的程序指令。所述程序指令至少可以包括用于實(shí)現(xiàn)上文描述的方法的指令。應(yīng)當(dāng)注意,本發(fā)明的實(shí)施例可以通過硬件、軟件或者軟件和硬件的結(jié)合來實(shí)現(xiàn)。硬件部分可以利用專用邏輯來實(shí)現(xiàn);軟件部分可以存儲(chǔ)在存儲(chǔ)器中,由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計(jì)硬件來執(zhí)行。本領(lǐng)域的普通技術(shù)人員可以理解上述的設(shè)備和方法可以使用計(jì)算機(jī)可執(zhí)行指令和/或包含在處理器控制代碼中來實(shí)現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲(chǔ)器(固件)的可編程的存儲(chǔ)器或者諸如光學(xué)或電子信號(hào)載體的數(shù)據(jù)載體上提供了這樣的代碼。本發(fā)明的設(shè)備及其模塊可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導(dǎo)體、或者諸如現(xiàn)場(chǎng)可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實(shí)現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實(shí)現(xiàn),也可以由上述硬件電路和軟件的結(jié)合例如固件來實(shí)現(xiàn)。應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了設(shè)備的若干模塊或子模塊,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施例,上文描述的兩個(gè)或更多模塊的特征和功能可以在ー個(gè)模塊中具體化。反之,上文描述的ー個(gè)模塊的特征和功能可以進(jìn)ー步劃分為由多個(gè)模塊來具體化。此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為ー個(gè)步驟執(zhí)行,和/或?qū)ⅸ`個(gè)步驟分解為多個(gè)步驟執(zhí)行。以上所述僅為本發(fā)明的實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種用于防護(hù)網(wǎng)頁攻擊的方法,其特征在于,包括 在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前,獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù); 檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及 當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),警告或阻止所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,還包括當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),或者當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),或者當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)打。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,其中,與可執(zhí)行相關(guān)聯(lián)的權(quán)限是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,其中,所述第一參數(shù)是lpAddress參數(shù),所述第二參數(shù)是fINewProtect參數(shù)。
5.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,其中,所述待檢測(cè)函數(shù)是VirtualProtect函數(shù),所述已掛鉤待檢測(cè)函數(shù)是VirtualProtecEx函數(shù),所述第一屬性為內(nèi)存保護(hù)屬性,以及所述第二屬性為內(nèi)存保護(hù)屬性。
6.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述第二屬性的修改是與惡意程序相關(guān)聯(lián)的。
7.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,還包括如果所述第二屬性的修改不與惡意程序相關(guān)聯(lián),則完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。
8.一種用于防護(hù)網(wǎng)頁攻擊的設(shè)備,其特征在于,包括 獲取模塊,用于在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前,獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù); 檢測(cè)模塊,用于檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及 阻止與執(zhí)行模塊,用于當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí)警告或阻止所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。
9.根據(jù)權(quán)利要求8所述的設(shè)備,其特征在于,所述阻止與執(zhí)行模塊還被配置成當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),或者當(dāng)所述第一屬性不是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),或者當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性未被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),則完成所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。
10.根據(jù)權(quán)利要求8或9所述的設(shè)備,其特征在于,其中,與可執(zhí)行相關(guān)聯(lián)的權(quán)限是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。
11.根據(jù)權(quán)利要求8或9所述的設(shè)備,其特征在于,其中,所述待檢測(cè)函數(shù)是VirtualProtect函數(shù),所述已掛鉤待檢測(cè)函數(shù)是VirtualProtectEx函數(shù),所述第一屬性為內(nèi)存保護(hù)屬性,以及所述第二屬性為內(nèi)存保護(hù)屬性。
12.根據(jù)權(quán)利要求8或9所述的設(shè)備,其特征在于,其中,所述獲取模塊包括用于獲取所述第一參數(shù)的第一獲取模塊和用于獲取所述第二參數(shù)的第二獲取模塊。
13.根據(jù)權(quán)利要求8或9所述的設(shè)備,其特征在于,所述檢測(cè)模塊包括用于檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限的第一檢測(cè)模塊,和用于檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限的第二檢測(cè)模塊。
全文摘要
本發(fā)明涉及一種用于防護(hù)網(wǎng)頁攻擊的方法和設(shè)備。該方法包括在調(diào)用改變內(nèi)存地址的內(nèi)存保護(hù)屬性的已掛鉤待檢測(cè)函數(shù)之前,獲取已掛鉤待檢測(cè)函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測(cè)函數(shù)是完成掛鉤操作的待檢測(cè)函數(shù);檢測(cè)與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測(cè)與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及當(dāng)所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時(shí),警告或阻止所述已掛鉤待檢測(cè)函數(shù)的執(zhí)行。
文檔編號(hào)G06F21/00GK102819703SQ201210251560
公開日2012年12月12日 申請(qǐng)日期2012年7月19日 優(yōu)先權(quán)日2012年7月19日
發(fā)明者宋申雷, 劉起, 張聰 申請(qǐng)人:北京奇虎科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
黔西| 琼中| 麻栗坡县| 蚌埠市| 南投市| 积石山| 阿勒泰市| 丰台区| 阿拉尔市| 永和县| 凉城县| 金昌市| 绥中县| 汶上县| 济源市| 甘泉县| 陵川县| 青海省| 大关县| 铜山县| 托克逊县| 正镶白旗| 光泽县| 兴城市| 大城县| 常山县| 都兰县| 文昌市| 枣阳市| 文成县| 张家港市| 醴陵市| 资阳市| 宝清县| 镇原县| 陆良县| 北辰区| 乐安县| 商丘市| 廉江市| 汉源县|