国产精品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>

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

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

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


      此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖I是根據(jù)本發(fā)明實施例的用于防護網(wǎng)頁攻擊的方法的流程圖;圖2是根據(jù)本發(fā)明實施例的用于防護網(wǎng)頁攻擊的設(shè)備的框圖;以及圖3示出了適于用來實現(xiàn)本發(fā)明實施例的計算機系統(tǒng)的框圖。
      具體實施例方式本發(fā)明實施例在于,進程在調(diào)用改變內(nèi)存頁保護屬性的API函數(shù)時,對修改的內(nèi)存地址的內(nèi)存頁屬性進行檢測,通過規(guī)則對內(nèi)存地址頁的原有內(nèi)存頁保護屬性進行判別,一旦發(fā)現(xiàn)惡意的修改行為即阻止和警告,保護HOOK鉤子函數(shù)入口地址不被修改內(nèi)存保護屬性,并且不被惡意篡改。本申請的技術(shù)方案主要通過監(jiān)控對改變內(nèi)存屬性的API函數(shù)的調(diào)用,保護HOOK鉤子函數(shù)入口地址的內(nèi)存保護屬性不被修改成可寫。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖及具體實施例,對本發(fā)明作進一步地詳細說明。根據(jù)本發(fā)明的實施例,提供了一種用于防護網(wǎng)頁攻擊的方法和設(shè)備。 如前所述,為了防止網(wǎng)頁木馬,通過HOOK技術(shù)對待檢測函數(shù)進行掛鉤(例如,采用內(nèi)聯(lián)掛鉤(inline hook)技術(shù)來進行掛鉤),利用HOOK函數(shù)MineVirtualProtectEx對已掛鉤待檢測函數(shù)的參數(shù)進行檢測。為了使本發(fā)明的技術(shù)方案更加清楚,將針對VirtualProtectEx函數(shù)來描述本發(fā)明的檢測方法的實施。因此,首先描述與該函數(shù)相關(guān)的參數(shù)以及權(quán)限定義。VirtualProtectEx函數(shù)的作用是改變調(diào)用進程的內(nèi)存保護訪問級別,其函數(shù)內(nèi)容如下Virtua I ProtectEx(
      HANDLE hProcess,
      LPVOID IpAddress,
      SiZE T dwSize,
      DWORD flNewProtect,
      PDVVORD IpflOldPiOtect
      )
      其中,hProcess參數(shù)是修改內(nèi)存的進程句柄;IpAddress參數(shù)是修改內(nèi)存的起始地址;dwSize參數(shù)是修改內(nèi)存的字節(jié);flNewProtect參數(shù)是修改后的內(nèi)存保護屬性;以及IpflOldProtect參數(shù)是修改前的內(nèi)存保護屬性的地址。內(nèi)存頁面的內(nèi)存保護屬性可以有如下8個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)限,對頁面執(zhí)行任何操作都不會引發(fā)訪問違規(guī);PAGE_WRITECOPY可寫可拷貝權(quán)限,試圖執(zhí)行頁面中的代碼將引發(fā)訪問違規(guī);PAGE_EXE⑶TE_WRITEC0PY可寫可拷貝可執(zhí)行權(quán)限,對頁面執(zhí)行任何操作都不會引發(fā)訪問違規(guī)。當然,內(nèi)存頁面的內(nèi)存保護屬性也可以有其他的屬性。參考圖1,圖I是本發(fā)明實施例的用于防護網(wǎng)頁攻擊的方法的流程圖。根據(jù)本發(fā)明的實施例,在進程調(diào)用改變內(nèi)存頁保護屬性的API吋,對修改的內(nèi)存地址的內(nèi)存保護屬性進行預(yù)檢測,通過規(guī)則來對內(nèi)存地址頁的緣由內(nèi)存頁保護屬性進行判另IJ,一旦發(fā)現(xiàn)惡意的修改行為即進行阻止和警告,保護已掛鉤函數(shù)入口地址不被修改內(nèi)存保護屬性,并且不被惡意篡改。在步驟101,在調(diào)用改變內(nèi)存地址的內(nèi)存保護屬性的已掛鉤待檢測函數(shù)之前,獲取已掛鉤待檢測函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測函數(shù)是完成掛鉤操作的待檢測函數(shù)。例如,所述函數(shù)可以是VirtualPiOtect函數(shù),所述已掛鉤待檢測函數(shù)可以是VirtualProtectEx函數(shù),所述第一參數(shù)可以是IpAddress參數(shù),所述第二參數(shù)可以是flNewProtect參數(shù)。其中,IpAddress參數(shù)是一個具體的內(nèi)存地址,使用VirtualQuery函數(shù)查詢內(nèi)存地址頁的內(nèi)存保護屬性。在步驟102,可以檢測與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且可以檢測與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。其中,所述第一屬性和所述第二屬性是內(nèi)存保護屬性。也即是說,檢測lpAddress參數(shù)的內(nèi)存地址的內(nèi)存保護屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測flNewProtect參數(shù)的內(nèi)存保護屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。根據(jù)本發(fā)明的實施例,所述檢測步驟可以由單個檢測步驟來檢測第一屬性和第二屬性;所述檢測步驟也可以分成兩個獨立的檢測步驟檢測第一屬性的第一檢測步驟和檢測第二屬性的第二檢測步驟。根據(jù)本發(fā)明的實施例,關(guān)于第一參數(shù)和第二參數(shù)的獲取步驟可以分成獲取第一參數(shù)的第一獲取步驟和獲取第二參數(shù)的第二獲取步驟,并且兩個獲取步驟的順序可以變化。關(guān)于第一屬性和第二屬性的檢測順序也可以變化。并且,可以先獲取第一參數(shù)后執(zhí)行關(guān)于第一屬性的檢測,然后再獲取第二參數(shù),井隨后執(zhí)行關(guān)于第二屬性的檢測??商鎿Q地,可以先獲取第二參數(shù)后執(zhí)行關(guān)于第二屬性的檢測,然后再 獲取第一參數(shù),井隨后執(zhí)行關(guān)于第一屬性的檢測。如果所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限,則在步驟103阻止所述函數(shù)的執(zhí)行。否則,可以在步驟104完成所述已掛鉤待檢測函數(shù)的執(zhí)行。也就是說,通過該方法阻止了對網(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,完成所述已掛鉤待檢測函數(shù)的執(zhí)行。在本發(fā)明的實施中,第二屬性的修改是與惡意程序相關(guān)聯(lián)的,則阻止已掛鉤待檢測函數(shù)的執(zhí)行。如果所述第二屬性的修改不與惡意程序相關(guān)聯(lián),則完成所述已掛鉤待檢測函數(shù)的執(zhí)行。例如,如果flNewProtect參數(shù)的內(nèi)存保護屬性被惡意程序惡意修改,則阻止該函數(shù)VirtualProtectEx函數(shù)的執(zhí)行;否則,返回執(zhí)行真實的VirtualProtectEx函數(shù)。根據(jù)本發(fā)明的實施例,與可執(zhí)行相關(guān)聯(lián)的權(quán)限可以是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限可以是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。由上可知,本發(fā)明的實施例例如可以對IpAddress參數(shù)和flNewProtect參數(shù)進行監(jiān)控,檢測VirtualProtect函數(shù)是否修改IpAddress參數(shù)內(nèi)存的起始地址的內(nèi)存保護屬性和flNewProtect參數(shù)的內(nèi)存保護屬性,是否存在修改內(nèi)存保護屬性為可寫權(quán)限的惡意行為,保護已完成掛鉤操作的關(guān)鍵函數(shù)不被還原。圖2是根據(jù)本發(fā)明實施例的用于防護網(wǎng)頁攻擊的設(shè)備200的框圖。根據(jù)本發(fā)明的實施例,用于防護網(wǎng)頁攻擊的設(shè)備200包括獲取模塊205、檢測模塊203以及阻止與執(zhí)行模塊204。獲取模塊205可以被配置成在調(diào)用改變內(nèi)存地址的內(nèi)存保護屬性的已掛鉤待檢測函數(shù)之前獲取已掛鉤待檢測函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測函數(shù)是完成掛鉤操作的待檢測函數(shù)。例如,所述函數(shù)可以是VirtualProtect函數(shù),所述已掛鉤待檢測函數(shù)可以是VirtualPiOtectEx函數(shù),所述第一參數(shù)可以是IpAddress參數(shù),所述第二參數(shù)可以是flNewProtect參數(shù)。其中,IpAddress參數(shù)是一個具體的內(nèi)存地址,使用VirtualQuery函數(shù)查詢內(nèi)存地址頁的內(nèi)存保護屬性。根據(jù)本發(fā)明的實施例,獲取模塊205可以分成獲取第一參數(shù)的第一獲取模塊201和獲取第二參數(shù)的第二獲取模塊202。
      檢測模塊203可以被配置成檢測與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。其中,所述第一屬性和所述第二屬性是內(nèi)存保護屬性。也即是說,檢測lpAddress參數(shù)的內(nèi)存地址的內(nèi)存保護屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測flNewProtect參數(shù)的內(nèi)存保護屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限。根據(jù)本發(fā)明的實施例,所述檢測模塊203可以由單個檢測模塊來完成第一屬性的檢測和第二屬性的檢測;所述檢測模塊203也可以包括兩個獨立的檢測模塊檢測第一屬性的第一檢測模塊和檢測第二屬性的第二檢測模塊。并且,可以先獲取第一參數(shù)后執(zhí)行關(guān)于第一屬性的檢測,然后再獲取第二參數(shù),井隨后執(zhí)行關(guān)于第二屬性的檢測??商鎿Q地,可以先獲取第二參數(shù)后執(zhí)行關(guān)于第二屬性的檢測,然后再獲取第一參數(shù),井隨后執(zhí)行關(guān)于第一屬性的檢測。如果所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限,則阻止與執(zhí)行模塊204可以被配置成阻止所述函數(shù)的執(zhí)行。否則,阻止與執(zhí)行模塊204可以被配置成完成所述已掛鉤待檢測函數(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可以被配置成完成所述已掛鉤待檢測函數(shù)的執(zhí)行。根據(jù)本發(fā)明的實施例,與可執(zhí)行相關(guān)聯(lián)的權(quán)限可以是可執(zhí)行或可讀可執(zhí)行,與可寫相關(guān)聯(lián)的權(quán)限可以是可讀可寫可執(zhí)行或可寫可拷貝可執(zhí)行。根據(jù)本發(fā)明的實施例,用于防護網(wǎng)頁攻擊的方法還可以用計算機程序來實現(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ā)明在通過軟件來實現(xiàn)時,所述軟件能夠在其中執(zhí)行的計算機系統(tǒng)如圖3所
      /Jn ο圖3示出了適于用來實現(xiàn)本發(fā)明實施例的計算機系統(tǒng)的框圖。如圖3所示,計算機系統(tǒng)可以包括CPU(中央處理單元)301、RAM (隨機存取存儲器)302、ROM (只讀存儲器)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)當理解,圖3所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出 的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。特別地,除硬件實施方式之外,本發(fā)明的實施例可以通過計算機程序產(chǎn)品的形式實現(xiàn)。例如,參考圖I描述的方法可以通過計算機程序產(chǎn)品來實現(xiàn)。該計算機程序產(chǎn)品可以存儲在例如圖3所示的RAM 304,ROM 304、硬盤310和/或任何適當?shù)拇鎯橘|(zhì)中,或者通過網(wǎng)絡(luò)從適當?shù)奈恢孟螺d到計算機系統(tǒng)上。計算機程序產(chǎn)品可以包括計算機代碼部分,其包括可由適當?shù)奶幚碓O(shè)備(例如,圖3中示出的CPU301)執(zhí)行的程序指令。所述程序指令至少可以包括用于實現(xiàn)上文描述的方法的指令。應(yīng)當注意,本發(fā)明的實施例可以通過硬件、軟件或者軟件和硬件的結(jié)合來實現(xiàn)。硬件部分可以利用專用邏輯來實現(xiàn);軟件部分可以存儲在存儲器中,由適當?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計硬件來執(zhí)行。本領(lǐng)域的普通技術(shù)人員可以理解上述的設(shè)備和方法可以使用計算機可執(zhí)行指令和/或包含在處理器控制代碼中來實現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲器(固件)的可編程的存儲器或者諸如光學或電子信號載體的數(shù)據(jù)載體上提供了這樣的代碼。本發(fā)明的設(shè)備及其模塊可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導體、或者諸如現(xiàn)場可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實現(xiàn),也可以由上述硬件電路和軟件的結(jié)合例如固件來實現(xiàn)。應(yīng)當注意,盡管在上文詳細描述中提及了設(shè)備的若干模塊或子模塊,但是這種劃分僅僅并非強制性的。實際上,根據(jù)本發(fā)明的實施例,上文描述的兩個或更多模塊的特征和功能可以在ー個模塊中具體化。反之,上文描述的ー個模塊的特征和功能可以進ー步劃分為由多個模塊來具體化。此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個步驟合并為ー個步驟執(zhí)行,和/或?qū)ⅸ`個步驟分解為多個步驟執(zhí)行。以上所述僅為本發(fā)明的實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
      權(quán)利要求
      1.一種用于防護網(wǎng)頁攻擊的方法,其特征在于,包括 在調(diào)用改變內(nèi)存地址的內(nèi)存保護屬性的已掛鉤待檢測函數(shù)之前,獲取已掛鉤待檢測函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測函數(shù)是完成掛鉤操作的待檢測函數(shù); 檢測與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及 當所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時,警告或阻止所述已掛鉤待檢測函數(shù)的執(zhí)行。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,還包括當所述第一屬性不是與可執(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)限時,完成所述已掛鉤待檢測函數(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所述的方法,其特征在于,其中,所述待檢測函數(shù)是VirtualProtect函數(shù),所述已掛鉤待檢測函數(shù)是VirtualProtecEx函數(shù),所述第一屬性為內(nèi)存保護屬性,以及所述第二屬性為內(nèi)存保護屬性。
      6.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述第二屬性的修改是與惡意程序相關(guān)聯(lián)的。
      7.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,還包括如果所述第二屬性的修改不與惡意程序相關(guān)聯(lián),則完成所述已掛鉤待檢測函數(shù)的執(zhí)行。
      8.一種用于防護網(wǎng)頁攻擊的設(shè)備,其特征在于,包括 獲取模塊,用于在調(diào)用改變內(nèi)存地址的內(nèi)存保護屬性的已掛鉤待檢測函數(shù)之前,獲取已掛鉤待檢測函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測函數(shù)是完成掛鉤操作的待檢測函數(shù); 檢測模塊,用于檢測與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及 阻止與執(zhí)行模塊,用于當所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時警告或阻止所述已掛鉤待檢測函數(shù)的執(zhí)行。
      9.根據(jù)權(quán)利要求8所述的設(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)限時,則完成所述已掛鉤待檢測函數(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è)備,其特征在于,其中,所述待檢測函數(shù)是VirtualProtect函數(shù),所述已掛鉤待檢測函數(shù)是VirtualProtectEx函數(shù),所述第一屬性為內(nèi)存保護屬性,以及所述第二屬性為內(nèi)存保護屬性。
      12.根據(jù)權(quán)利要求8或9所述的設(shè)備,其特征在于,其中,所述獲取模塊包括用于獲取所述第一參數(shù)的第一獲取模塊和用于獲取所述第二參數(shù)的第二獲取模塊。
      13.根據(jù)權(quán)利要求8或9所述的設(shè)備,其特征在于,所述檢測模塊包括用于檢測與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限的第一檢測模塊,和用于檢測與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限的第二檢測模塊。
      全文摘要
      本發(fā)明涉及一種用于防護網(wǎng)頁攻擊的方法和設(shè)備。該方法包括在調(diào)用改變內(nèi)存地址的內(nèi)存保護屬性的已掛鉤待檢測函數(shù)之前,獲取已掛鉤待檢測函數(shù)的第一參數(shù)和第二參數(shù),其中,所述已掛鉤待檢測函數(shù)是完成掛鉤操作的待檢測函數(shù);檢測與所述第一參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第一屬性是否為與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且檢測與所述第二參數(shù)相關(guān)聯(lián)的內(nèi)存地址頁的第二屬性是否被修改成與可寫相關(guān)聯(lián)的權(quán)限;以及當所述第一屬性是與可執(zhí)行相關(guān)聯(lián)的權(quán)限,并且所述第二屬性被修改成與可寫相關(guān)聯(lián)的權(quán)限時,警告或阻止所述已掛鉤待檢測函數(shù)的執(zhí)行。
      文檔編號G06F21/00GK102819703SQ201210251560
      公開日2012年12月12日 申請日期2012年7月19日 優(yōu)先權(quán)日2012年7月19日
      發(fā)明者宋申雷, 劉起, 張聰 申請人:北京奇虎科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1