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

      一種檢測面向返程的編程攻擊的方法及裝置制造方法

      文檔序號:6626573閱讀:364來源:國知局
      一種檢測面向返程的編程攻擊的方法及裝置制造方法
      【專利摘要】本發(fā)明的實施例公開一種檢測面向返程的編程攻擊的方法及裝置。檢測面向返程的編程攻擊的方法包括:分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口API函數(shù)庫中的API函數(shù)時,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用;按照預(yù)先設(shè)置的面向返程的編程ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。應(yīng)用本發(fā)明,可以有效檢測ROP攻擊、提升網(wǎng)絡(luò)安全性。
      【專利說明】一種檢測面向返程的編程攻擊的方法及裝置

      【技術(shù)領(lǐng)域】
      [0001 ] 本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù),尤其涉及一種檢測面向返程的編程(R0P,Return-oriented Programming)攻擊的方法及裝置。

      【背景技術(shù)】
      [0002]隨著計算機網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,互聯(lián)網(wǎng)逐漸成為惡意應(yīng)用程序攻擊用戶的主要途徑,惡意應(yīng)用程序通過將應(yīng)用程序文件偽裝成其他類型文件,并引誘用戶點擊和下載,在惡意應(yīng)用程序被下載到用戶計算機并成功運行后,攻擊者就可以利用安裝的惡意應(yīng)用程序,針對操作系統(tǒng)以及應(yīng)用程序軟件的漏洞實施攻擊,例如,破壞用戶計算機、竊取用戶隱私信息等。其中,漏洞是指操作系統(tǒng)或應(yīng)用程序軟件在邏輯設(shè)計上的缺陷或在編寫時產(chǎn)生的錯誤。這些缺陷或錯誤往往可以被攻擊者利用,并植入木馬等惡意應(yīng)用程序,從而侵害、控制甚至破壞用戶計算機軟硬件系統(tǒng),或者竊取用戶隱私信息,給用戶的網(wǎng)絡(luò)安全帶來極大隱患。
      [0003]通過緩沖區(qū)溢出的方式對操作系統(tǒng)漏洞實施攻擊,是近年來操作系統(tǒng)遭受惡意應(yīng)用程序攻擊的主要方式。緩沖區(qū)是操作系統(tǒng)在應(yīng)用程序運行期間,為該應(yīng)用程序分配的用于存放局部變量及函數(shù)參數(shù)的一段連續(xù)的存儲空間。當(dāng)應(yīng)用程序向預(yù)分配的固定大小(容量)的緩沖區(qū)中進行數(shù)據(jù)填充時,如果填充的數(shù)據(jù)超過緩沖區(qū)容量,在操作系統(tǒng)不對緩沖區(qū)中填充的數(shù)據(jù)進行邊界檢測的情況下,將發(fā)生緩沖區(qū)溢出現(xiàn)象,溢出的數(shù)據(jù)將向與緩沖區(qū)相鄰的高地址繼續(xù)寫入,形成緩沖區(qū)溢出現(xiàn)象。
      [0004]由于操作系統(tǒng)存在缺乏邊界安全檢查的機制,從而為攻擊者入侵提供了可乘之機,攻擊者可以利用緩沖區(qū)溢出現(xiàn)象,通過構(gòu)造用于填充緩沖區(qū)的填充數(shù)據(jù),從而使得溢出的數(shù)據(jù)覆蓋到該應(yīng)用程序的關(guān)鍵位置,例如,函數(shù)指針、函數(shù)的返回地址或是棧指針等,實現(xiàn)對該應(yīng)用程序執(zhí)行流程的控制,并進而可以將該應(yīng)用程序引導(dǎo)到預(yù)先存放的惡意代碼處執(zhí)行,從而達到破壞操作系統(tǒng)甚至獲得操作系統(tǒng)控制權(quán)限。例如,通過緩沖區(qū)溢出,可以獲取根(root)權(quán)限或管理員權(quán)限,并利用獲得的根權(quán)限或管理員權(quán)限,竊取用戶隱私信息的目的。
      [0005]目前,針對緩沖區(qū)溢出,業(yè)界雖然提出了許多檢測和防護策略,但緩沖區(qū)溢出攻擊仍面臨較為嚴(yán)峻的形勢,一方面,在于不斷有新的操作系統(tǒng)漏洞被發(fā)掘和利用,另一方面,已有的防護策略也被層出不窮的攻擊方式所攻破。因而,針對緩沖區(qū)溢出攻擊的研究是網(wǎng)絡(luò)安全領(lǐng)域的一個熱點研究。
      [0006]ROP攻擊是一種新的緩沖區(qū)溢出攻擊方式,采用基于代碼的復(fù)用技術(shù),ROP攻擊通過從操作系統(tǒng)內(nèi)存中已經(jīng)存在的二進制代碼段的指令片斷(gadget)或者可執(zhí)行文件中,尋找合適的指令片斷(gadget),并通過精心設(shè)計返回堆棧,從而將各尋找到的合適的gadget拼接起來形成包含惡意代碼的攻擊序列,從而達到惡意攻擊的目的。由于ROP攻擊利用的都是內(nèi)存中合法的的代碼,可以繞過操作系統(tǒng)防護緩沖區(qū)溢出的重要保護機制,例如,數(shù)據(jù)執(zhí)行保護(DEP,Data Execut1n Prevent1n),從而給操作系統(tǒng)以及網(wǎng)絡(luò)帶來極大的安全威脅。
      [0007]以Windows操作系統(tǒng)為例,ROP攻擊一直是微軟面臨的最大安全問題。雖然微軟在不斷完善ROP攻擊的防護策略,例如,在Vista以上的版本中開始加入Windows地址空間配置隨機化(ASLR, Address Space Layout Randomizat1n)防護技術(shù)或 Mandatory ASLR防護技術(shù),可以較為有效地防范惡意應(yīng)用程序中的ROP攻擊,但該防范技術(shù)需要編譯器的支持。這樣,一方面,使得很多早期的操作系統(tǒng),例如,早期版本msvcrt.dll、gdi32.dll等,由于都不支持ASLR以及支持編譯器,導(dǎo)致早期的操作系統(tǒng),容易被攻擊者利用,從而成功構(gòu)造ROP攻擊代碼進行操作系統(tǒng)攻擊;另一方面,由于層出不窮的漏洞攻擊,尤其是在微軟停止XP服務(wù)后,已有的防護策略可能被其他的攻擊方式所攻破,使得許多基于Windows操作系統(tǒng)的用戶將面臨更為嚴(yán)重的安全問題。


      【發(fā)明內(nèi)容】

      [0008]有鑒于此,本發(fā)明實施例提供一種檢測面向返程的編程攻擊的方法及裝置,能夠有效檢測ROP攻擊、提升網(wǎng)絡(luò)安全性。
      [0009]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
      [0010]一方面,本發(fā)明實施例提供一種檢測面向返程的編程攻擊的方法,分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;該方法還包括:
      [0011]監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口 API函數(shù)庫中的API函數(shù)時,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用;
      [0012]按照預(yù)先設(shè)置的面向返程的編程ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0013]本發(fā)明實施例提供的檢測面向返程的編程攻擊的方法,通過注入的方法注入應(yīng)用編程接口函數(shù)監(jiān)測程序,用以監(jiān)測API函數(shù)的調(diào)用,在監(jiān)測到API函數(shù)被調(diào)用時,先暫緩該API函數(shù)的調(diào)用,并對暫緩調(diào)用的API函數(shù)進行是否為ROP攻擊的判斷,以避免ROP攻擊,可以不依賴系統(tǒng)版本、模塊版本或軟件版本,能夠有效檢測到是否為ROP攻擊,并對檢測到的ROP攻擊進行有效的防護,提升了網(wǎng)絡(luò)安全性。
      [0014]另一方面,本發(fā)明實施例提供一種檢測面向返程的編程攻擊的裝置,包括:注入模塊、監(jiān)測模塊以及處理模塊,其中,
      [0015]注入模塊,用于分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;
      [0016]監(jiān)測模塊,用于在監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口 API函數(shù)庫中的API函數(shù)后,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用;
      [0017]處理模塊,用于按照預(yù)先設(shè)置的面向返程的編程ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0018]本發(fā)明實施例提供的檢測面向返程的編程攻擊的裝置,注入模塊通過注入的方法注入應(yīng)用編程接口函數(shù)監(jiān)測程序,監(jiān)測模塊根據(jù)注入的應(yīng)用編程接口函數(shù)監(jiān)測程序監(jiān)測API函數(shù)的調(diào)用,并在監(jiān)測到API函數(shù)被調(diào)用時,先暫緩該API函數(shù)的調(diào)用,并對暫緩調(diào)用的API函數(shù)進行是否為ROP攻擊的判斷,以避免ROP攻擊,從而能夠有效檢測到是否為ROP攻擊,并對檢測到的ROP攻擊進行有效的防護,提升了網(wǎng)絡(luò)安全性。

      【專利附圖】

      【附圖說明】
      [0019]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
      [0020]圖1為本發(fā)明實施例檢測面向返程的編程攻擊的方法流程示意圖;
      [0021]圖2為本發(fā)明實施例檢測面向返程的編程攻擊的方法具體流程示意圖;
      [0022]圖3為本發(fā)明實施例檢測面向返程的編程攻擊的裝置結(jié)構(gòu)示意圖。

      【具體實施方式】
      [0023]下面結(jié)合附圖對本發(fā)明實施例進行詳細(xì)描述。
      [0024]應(yīng)當(dāng)明確,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
      [0025]圖1為本發(fā)明實施例檢測面向返程的編程攻擊的方法流程示意圖。參見圖1,該方法包括:
      [0026]步驟101,分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;
      [0027]本步驟中,在應(yīng)用程序的進程中注入應(yīng)用編程接口函數(shù)監(jiān)測程序,是為了使注入的所述應(yīng)用編程接口函數(shù)監(jiān)測程序監(jiān)測并處理所述待監(jiān)測的應(yīng)用程序的進程后續(xù)的調(diào)用事宜。
      [0028]由于不同的用戶,對操作系統(tǒng)進行操作的權(quán)限可能不同。例如,以Windows操作系統(tǒng)為例,Windows操作系統(tǒng)將用戶分為不同的權(quán)限組,并為每個權(quán)限組賦予相應(yīng)的操作權(quán)限。其中,權(quán)限組可以包括:管理員權(quán)限組、高權(quán)限用戶組、普通用戶組以及匿名權(quán)限組等。其中,管理員權(quán)限組對應(yīng)的操作權(quán)限為管理員權(quán)限,高權(quán)限用戶組對應(yīng)的操作權(quán)限為高權(quán)限,普通用戶組對應(yīng)的操作權(quán)限為普通權(quán)限等。
      [0029]本發(fā)明實施例中,考慮到不同的操作權(quán)限雖然將用戶對操作系統(tǒng)的操作限制在相應(yīng)的操作權(quán)限內(nèi),但由于各操作權(quán)限之間并不相互獨立,都依賴于同樣的指令完成權(quán)限操作。因而,可以利用提升權(quán)限(Adjust Token Privilege),例如,鉤子(Hook)的方法提升用戶訪問的操作權(quán)限,其中,提升權(quán)限是指程序員或相關(guān)技術(shù)人員利用各種操作系統(tǒng)漏洞,突破操作系統(tǒng)指派的操作權(quán)限級別,將自己當(dāng)前的操作權(quán)限提高一個或多個級別,從而使用戶獲取更多對操作系統(tǒng)進行操作的權(quán)限,例如,通過提升權(quán)限的方法,可以使用戶獲取原先未曾擁有的對系統(tǒng)文件的刪、增、改等權(quán)限。
      [0030]這樣,通過提升權(quán)限的方法將本發(fā)明實施例的應(yīng)用編程接口函數(shù)監(jiān)測程序注入到運行的待監(jiān)測應(yīng)用程序的進程中,使得注入的應(yīng)用編程接口函數(shù)監(jiān)測程序能夠?qū)?yīng)用程序進程進行監(jiān)測并擁有對進程進行處理的權(quán)限,由于擁有操作系統(tǒng)的高級權(quán)限,從而在后續(xù)應(yīng)用中,本發(fā)明實施例提出的檢測面向返程的編程攻擊的方法可以不依賴于操作系統(tǒng)及模塊版本,也無需編譯器的支持,可以對早期Windows系統(tǒng)或者早期PE文件進行有效防護;進一步地,由于通過注入的方式,實現(xiàn)的是主動防御,可以實現(xiàn)對進程的有效監(jiān)控,并能在后續(xù)進程調(diào)用應(yīng)用編程接口(API, Applicat1n Program Interface)函數(shù)時,能夠?qū)崟r進行處理,從而降低操作系統(tǒng)遭受攻擊的風(fēng)險。
      [0031]所應(yīng)說明的是,該步驟只需執(zhí)行一次,而無需在每次檢測面向返程的編程攻擊時都執(zhí)行。
      [0032]步驟102,監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)庫中的API函數(shù)時,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用;
      [0033]本步驟中,注入的應(yīng)用編程接口函數(shù)監(jiān)測程序在監(jiān)測到該應(yīng)用程序的進程調(diào)用API函數(shù)時,例如,在進程發(fā)出調(diào)用API函數(shù)的請求時,截獲該調(diào)用API函數(shù)的請求,如果調(diào)用API函數(shù)的請求中包含的API函數(shù)屬于預(yù)先設(shè)置的API函數(shù)庫中的一 API函數(shù),則暫緩該API函數(shù)的調(diào)用,以對該API函數(shù)進行處理后再確定是否允許該應(yīng)用程序的進程調(diào)用該API函數(shù)。
      [0034]步驟103,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0035]本步驟中,如果依據(jù)ROP防護策略,確定調(diào)用API函數(shù)的應(yīng)用程序為惡意應(yīng)用程序,則拒絕應(yīng)用程序的進程調(diào)用暫緩調(diào)用的所述API函數(shù),從而避免ROP攻擊;如果確定調(diào)用API函數(shù)的應(yīng)用程序為非惡意應(yīng)用程序,允許調(diào)用暫緩調(diào)用的所述API函數(shù),以執(zhí)行正常的應(yīng)用程序業(yè)務(wù)。
      [0036]本發(fā)明實施例中,作為一可選實施例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括:
      [0037]獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址的屬性是否具有可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0038]作為另一可選實施例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)也可以包括:
      [0039]獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0040]作為再一可選實施例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)也可以包括:
      [0041]獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址處的上一條指令是否為CALL指令,如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0042]作為再一可選實施例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)也可以包括:
      [0043]獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址是否在當(dāng)前線程環(huán)境塊中所描述的??臻g范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0044]作為再一可選實施例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)也可以包括:
      [0045]獲取暫緩調(diào)用API函數(shù)的通用命名規(guī)則路徑,判斷獲取的通用命名規(guī)則路徑是否為遠(yuǎn)程路徑,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0046]作為再一可選實施例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)也可以包括:
      [0047]在API函數(shù)NtProtectVirtualMemory中,判斷是否可將暫緩調(diào)用的API函數(shù)的屬性修改為??臻g的可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0048]實際應(yīng)用中,也可以結(jié)合上述方法的任意組合,以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。即組合的ROP防護策略包括:返回地址屬性檢測策略、和/或,調(diào)用空間檢測策略、和/或,調(diào)用指令檢測策略、和/或,棧異常檢測策略、和/或,通用命名規(guī)則路徑檢測策略、和/或,??臻g屬性修改檢測策略。
      [0049]對于組合的情形,當(dāng)根據(jù)當(dāng)前的ROP防護策略確定不允許調(diào)用暫緩調(diào)用的所述API函數(shù)時,啟用下一 ROP防護策略,對是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)進行判斷。以組合的ROP防護策略包括:返回地址屬性檢測策略以及調(diào)用空間檢測策略為例,按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括:
      [0050]Al,獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址的屬性是否具有可執(zhí)行屬性,如果是,執(zhí)行步驟A2,如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù);
      [0051]A2,獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址的屬性是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0052]本發(fā)明實施例中,在確定不允許調(diào)用暫緩調(diào)用的所述API函數(shù)之后,該方法還可以進一步包括:
      [0053]發(fā)送消息提醒,以提醒用戶進行處理;和/或,
      [0054]對調(diào)用API函數(shù)的應(yīng)用程序進行安全掃描,并對掃描結(jié)果為不安全的應(yīng)用程序進行及時處理;和/或,
      [0055]卸載調(diào)用API函數(shù)的應(yīng)用程序,以避免該應(yīng)用程序運行時帶來的潛在風(fēng)險;和/或,
      [0056]為調(diào)用API函數(shù)的應(yīng)用程序設(shè)置訪問權(quán)限,例如,設(shè)置禁止網(wǎng)絡(luò)訪問權(quán)限或有限訪問權(quán)限。
      [0057]以下以一組合的ROP防護策略為例,對本發(fā)明實施例檢測面向返程的編程攻擊的方法流程進行詳細(xì)描述。
      [0058]圖2為本發(fā)明實施例檢測面向返程的編程攻擊的方法具體流程示意圖。參見圖2,該方法包括:
      [0059]步驟201,在待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;
      [0060]本步驟中,作為可選實施例,應(yīng)用編程接口函數(shù)監(jiān)測程序包括主程序以及防護模塊,并由主程序負(fù)責(zé)將防護模塊注入到待監(jiān)測的應(yīng)用程序的進程中,即需要保護的進程中。例如,QQ應(yīng)用程序進程、微信進程、IE進程、Office進程、應(yīng)用程序安裝進程等。具體地,可以預(yù)先在每一待監(jiān)測的應(yīng)用程序中注入一應(yīng)用編程接口函數(shù)監(jiān)測程序,并設(shè)置在待監(jiān)測的應(yīng)用程序啟動時,同步啟動注入的應(yīng)用編程接口函數(shù)監(jiān)測程序。
      [0061]作為可選實施例,在待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序包括:
      [0062]All,在待監(jiān)測的應(yīng)用程序中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序的分析以及回調(diào)模塊,利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊;
      [0063]本步驟中,可以通過調(diào)用WindowManager的addview方法替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊。這樣,通過替換待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊,從而可以在后續(xù)流程中,在應(yīng)用程序的進程調(diào)用API函數(shù),可以按照注入的分析以及回調(diào)模塊對調(diào)用的API函數(shù)進行處理。關(guān)于調(diào)用WindowManager的addview方法,屬于公知技術(shù),在此略去詳述。
      [0064]作為可選實施例,利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊包括:
      [0065]A111,查找所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊的內(nèi)存變量;
      [0066]A112,將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量。
      [0067]本發(fā)明實施例中,作為可選實施例,步驟Al 12可以具體包括:
      [0068]將分析以及回調(diào)模塊的內(nèi)存變量對應(yīng)的代碼寫入動態(tài)鏈接庫(DLL,Dynamic LinkLibrary)中,利用操作系統(tǒng)中的windows鉤子(Hook)將寫入動態(tài)鏈接庫中的內(nèi)存變量代碼映射到所述調(diào)用管理模塊。
      [0069]作為另一可選實施例,步驟A112也可以包括:
      [0070]將分析以及回調(diào)模塊的內(nèi)存變量對應(yīng)的代碼寫入動態(tài)鏈接庫中,利用操作系統(tǒng)中的遠(yuǎn)程注入(CreatRemoteThread)以及動態(tài)加載(LoadLibrary)將寫入動態(tài)鏈接庫中的內(nèi)存變量代碼映射到所述調(diào)用管理模塊。
      [0071]本發(fā)明實施例中,替換后的分析以及回調(diào)模塊中相對應(yīng)的內(nèi)存變量代碼所實現(xiàn)的功能與調(diào)用管理模塊中的相關(guān)內(nèi)存變量代碼所實現(xiàn)的功能一致,且追加有暫緩調(diào)用以及依據(jù)ROP防護策略處理暫緩調(diào)用的API函數(shù)的功能。這樣,可以實現(xiàn)對調(diào)用的API函數(shù)進行暫緩調(diào)用,并對其進行處理以確定是否允許其被調(diào)用。
      [0072]所應(yīng)說明的是,本發(fā)明實施例中的注入僅是示例性的,本領(lǐng)域普通技術(shù)人員可以采用其他的技術(shù)來完成替換流程,例如,在操作系統(tǒng)啟動后調(diào)用SetWindowsHookEx接口向Windows操作系統(tǒng)注冊本發(fā)明實施例的應(yīng)用編程接口函數(shù)監(jiān)測程序,用于監(jiān)測和處理應(yīng)用程序的進程調(diào)用API函數(shù)的事例,本發(fā)明實施例不再一一例舉。
      [0073]A12,監(jiān)測到所述待監(jiān)測的應(yīng)用程序啟動,同步啟動注入在所述待監(jiān)測的應(yīng)用程序中的所述分析以及回調(diào)模塊。
      [0074]本步驟中,應(yīng)用程序在啟動的過程中,操作系統(tǒng)為該應(yīng)用程序分配進程,在進程啟動后,加載入在所述待監(jiān)測的應(yīng)用程序中的所述分析以及回調(diào)模塊。
      [0075]作為可選實施例,在注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序之前,該方法進一步包括:
      [0076]調(diào)用Windows操作系統(tǒng)的SetWindowsHookEx接口,設(shè)置用于監(jiān)測和處理進程調(diào)用的API函數(shù)的應(yīng)用編程接口函數(shù)監(jiān)測程序。
      [0077]本步驟中,應(yīng)用編程接口函數(shù)監(jiān)測程序是Windows操作系統(tǒng)中用于監(jiān)測和處理進程調(diào)用的API函數(shù)的鉤子程序。通過設(shè)置應(yīng)用編程接口函數(shù)監(jiān)測程序,每當(dāng)進程發(fā)出調(diào)用API函數(shù)的請求之后,在沒有調(diào)用API函數(shù)之前,應(yīng)用編程接口函數(shù)監(jiān)測程序可以捕獲該調(diào)用API函數(shù)請求,即應(yīng)用編程接口函數(shù)監(jiān)測程序優(yōu)先得到控制權(quán)。這樣,應(yīng)用編程接口函數(shù)監(jiān)測程序可以修改該調(diào)用API函數(shù)請求,也可以不作處理而繼續(xù)傳遞該調(diào)用API函數(shù)請求,還可以強制結(jié)束該調(diào)用API函數(shù)請求的傳遞。
      [0078]作為另一可選實施例,在注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序之前,該方法可以進一步包括:
      [0079]獲取操作系統(tǒng)的根(Root)權(quán)限。
      [0080]本步驟中,通過預(yù)先獲取操作系統(tǒng)的Root權(quán)限,從而可以實現(xiàn)提升權(quán)限。其中,Root是Linux操作系統(tǒng)、Windows操作系統(tǒng)和Unix操作系統(tǒng)中的超級管理員用戶賬戶,如果獲得Root權(quán)限,表示已經(jīng)獲取操作系統(tǒng)的最高權(quán)限。這樣,可以對操作系統(tǒng)中的任何文件(包括操作系統(tǒng)文件)執(zhí)行增、刪、改、查等操作,從而實現(xiàn)應(yīng)用編程接口函數(shù)監(jiān)測程序的注入。
      [0081]步驟202,利用應(yīng)用編程接口函數(shù)監(jiān)測程序監(jiān)測所述待監(jiān)測的應(yīng)用程序的進程對預(yù)先設(shè)置的API函數(shù)庫中API函數(shù)的調(diào)用;
      [0082]本步驟中,當(dāng)前述的防護模塊被注入到待監(jiān)測的應(yīng)用程序的進程中后,對進程調(diào)用預(yù)先設(shè)置的API函數(shù)進行監(jiān)測,即利用API Hook技術(shù),對當(dāng)前進程中的所有關(guān)鍵API函數(shù)進行監(jiān)測。
      [0083]本發(fā)明實施例中,API Hook技術(shù)是一種通過修改API函數(shù)指令來檢測API函數(shù)的執(zhí)行或者改變API函數(shù)執(zhí)行結(jié)果的技術(shù)。也就是說,在Windows操作系統(tǒng)下的應(yīng)用程序編程,需要接觸到API函數(shù)的調(diào)用以實現(xiàn)預(yù)設(shè)的功能,當(dāng)對某些API函數(shù)的功能不滿意的情況下,則可以通過API Hook技術(shù)修改或編輯API函數(shù),使之能更好地服務(wù)于應(yīng)用程序。
      [0084]具體來說,用戶可以通過Hook操作,提高自己的操作系統(tǒng)權(quán)限,從而跨越不同進程間訪問的限制,并通過Hook “接觸”到需要修改的API函數(shù)入口點,并改變API函數(shù)的地址使之指向新的自定義函數(shù),以修改其功能。其中,Hook操作是一個用于處理信息的程序段,通過操作系統(tǒng)調(diào)用,可以將用戶編程的應(yīng)用程序掛入到操作系統(tǒng)中預(yù)定的應(yīng)用程序中。例如,在Windows操作系統(tǒng)中,在使用Hook技術(shù)對API函數(shù)實施監(jiān)控后,只要是針對受監(jiān)控的API函數(shù)的調(diào)用行為,都會被自動截獲,使得執(zhí)行調(diào)用API函數(shù)的流程跳轉(zhuǎn)到執(zhí)行用于暫緩調(diào)用該API函數(shù),并對暫緩調(diào)用的該API函數(shù)進行處理。
      [0085]本發(fā)明實施例中,為了繞過操作系統(tǒng)的DEP防護策略,因而,在惡意應(yīng)用程序構(gòu)建的ROP攻擊代碼中,包含有對實現(xiàn)繞過操作系統(tǒng)DEP防護策略的相關(guān)API函數(shù)的調(diào)用指令,由該相關(guān)API函數(shù)構(gòu)成API函數(shù)庫。因而,API函數(shù)庫中的API函數(shù)包括但不限于:
      [0086]" ntdll.dll" " NtMapViewOfSect1n"
      [0087]" ntdll.dll" " NtCreateSect1n"
      [0088]" ntdll.dll" " NtCreateFile"
      [0089]" ntdll.dll" " NtWriteVirtualMemory"
      [0090]" ntdll.dll" " NtCreateThreadEx!f
      [0091]" ntdll.dll" " NtCreateProcess!f
      [0092]" ntdll.dll" " NtCreateUserProcess!f
      [0093]" ntdll.dll" " RtlCreateHeap"
      [0094]" ntdll.dll" " NtAl1cateVirtualMemory!f
      [0095]" ntdll.dll" " LdrLoadDll"
      [0096]" ntdll.dll" " NtProtectVirtualMemory"
      [0097]" ntdll.dll" " LdrHotPatchRoutine"
      [0098]" kernel32.dll" " MapViewOfFileEx"
      [0099]" kernel32.dll" " MapViewOfFile"
      [0100]" kernel32.dll" " CreateFileMappingW"
      [0101]" kernel32.dll" " CreateFileMappingA"
      [0102]" kernel32.dll" " CreateFileW!f
      [0103]" kernel32.dll" " CreateFileA!f
      [0104]" kernel32.dll" " WinExec/r
      [0105]" kernel32.dll" " WriteProcessMemory"
      [0106]" kernel32.dll" " CreateRemoteThreadEx!f
      [0107]" kernel32.dll" " CreateRemoteThread!f
      [0108]" kernel32.dll" " CreateProcessInternalW/r
      [0109]" kernel32.dll" " CreateProcessInternalA"
      [0110]" kernel32.dll" " CreateProcessW!f
      [0111]" kernel32.dll" " CreateProcessA!f
      [0112]" kernel32.dll" " HeapCreate/r
      [0113]" kernel32.dll" " VirtualAllocExrr
      [0114]" kernel32.dll" " VirtualAlloc"
      [0115]" kernel32.dll" " LoadLibraryExW!f
      [0116]" kernel32.dll" " LoadLibraryExA!f
      [0117]" kernel32.dll" " LoadLibraryW!f
      [0118]" kernel32.dll" " LoadLibraryA!f
      [0119]" kernel32.dll" " VirtualProtectEx"
      [0120]" kernel32.dll" " VirtualProtect"
      [0121]實際應(yīng)用中,還可以根據(jù)實際需要,在API函數(shù)庫中添加其它API函數(shù)或從中刪除一些API函數(shù)。
      [0122]步驟203,監(jiān)測到Hook的API函數(shù)被調(diào)用,暫緩所述待監(jiān)測的應(yīng)用程序的進程的調(diào)用,進行返回地址屬性檢測,判斷該返回地址是否具有可執(zhí)行屬性,如果否,執(zhí)行步驟211,如果是,執(zhí)行步驟204;
      [0123]本步驟中,可以根據(jù)棧指針寄存器(ESP,Extended Stack Pointer),獲取待調(diào)用的API函數(shù)的返回地址,并判斷該返回地址是否具有可執(zhí)行屬性。
      [0124]作為可選實施例,可以通過VirtualQuery函數(shù)查詢該返回地址處是否具有可執(zhí)行屬性。如果該返回地址處不具有可執(zhí)行屬性,則執(zhí)行步驟211的返回攻擊提醒流程,如果該返回地址具有可執(zhí)行屬性,則繼續(xù)進行檢測以確定是否為ROP攻擊。其中,API函數(shù)的返回地址是指API函數(shù)的調(diào)用者(進程)所在的地址。因此,根據(jù)返回地址的特征可以確定API函數(shù)的調(diào)用者是否為惡意指令代碼(shellcode),如果確定出調(diào)用者是惡意代碼,則該API函數(shù)的調(diào)用就屬于不合法的調(diào)用,向用戶返回攻擊提醒,由用戶選擇是否允許調(diào)用API函數(shù),或者,直接拒絕該應(yīng)用程序的進程對該API函數(shù)的調(diào)用。其中,Shellcode是一段可執(zhí)行的CPU指令代碼,在后續(xù)利用操作系統(tǒng)漏洞或應(yīng)用程序軟件漏洞成功實施緩沖區(qū)溢出攻擊后,Shellcode將獲得操作系統(tǒng)執(zhí)行權(quán)限,從而可以執(zhí)行其內(nèi)存空間中的代碼,造成應(yīng)用程序執(zhí)行流程跳轉(zhuǎn),從而使應(yīng)用程序執(zhí)行跳轉(zhuǎn)到Shellcode所在的內(nèi)存空間,并執(zhí)行Shellcode中的代碼,并通過執(zhí)行Shellcode代碼完成用戶隱私信息的竊取。
      [0125]實際應(yīng)用中,一般的惡意代碼shellcode都是被寫入數(shù)據(jù)的內(nèi)存頁面,不具備可執(zhí)行權(quán)限。因此,進一步地,可以通過檢測API函數(shù)返回地址的內(nèi)存頁屬性,來判斷API函數(shù)調(diào)用是否合法,即利用VirtualQuery函數(shù)查看進程內(nèi)存地址空間的頁面分配情況(API函數(shù)的返回地址的內(nèi)存頁屬性),如果查詢到API函數(shù)的返回地址的內(nèi)存頁屬性為不可執(zhí)行屬性,則判定該API函數(shù)的調(diào)用不合法。
      [0126]步驟204,進行調(diào)用空間檢測,判斷該返回地址是否處于預(yù)先設(shè)置的模塊的加載地址范圍內(nèi),如果否,執(zhí)行步驟211,如果是,執(zhí)行步驟205 ;
      [0127]本步驟中,調(diào)用空間檢測是指通過VirtualQuery函數(shù),查詢該返回地址處是否處于預(yù)先設(shè)置的某模塊內(nèi),即檢測待調(diào)用的API函數(shù)的返回地址是否在預(yù)設(shè)的所屬模塊的加載地址范圍內(nèi),也就是該返回地址是否為堆空間地址或者棧空間地址。如果不是,則返回攻擊提醒。如果處于預(yù)設(shè)的所屬模塊的加載地址范圍內(nèi),則繼續(xù)進行檢測以確定是否為ROP攻擊。具體來說,如果是正常的API函數(shù)調(diào)用,API函數(shù)的返回地址會在所屬模塊的加載地址范圍內(nèi),否則,該API函數(shù)的調(diào)用應(yīng)該屬于非法調(diào)用,應(yīng)當(dāng)被禁止。
      [0128]需要說明的是,本發(fā)明實施例中,預(yù)設(shè)的所屬模塊是指應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫(DLL, Dynamic Link Library)模塊,DLL模塊由一組可供任何應(yīng)用程序使用的獨立函數(shù)組成,每一 DLL模塊包含一些可供應(yīng)用程序或其他DLL模塊調(diào)用的函數(shù),每一函數(shù)對應(yīng)有一加載地址,應(yīng)用程序在啟動運行過程中,會在用戶的操作系統(tǒng)中對該DLL模塊進行定位,并將該DLL模塊映射到應(yīng)用程序進程的地址空間中。操作系統(tǒng)將各應(yīng)用程序所調(diào)用的相應(yīng)DLL模塊映射到對應(yīng)進程的地址空間范圍,形成所屬模塊的加載地址范圍。
      [0129]實際應(yīng)用中,由于每一 DLL模塊都有自己的內(nèi)存地址范圍,正常的API函數(shù)調(diào)用的返回地址都是在進程加載的DLL模塊的內(nèi)存地址范圍內(nèi);而惡意代碼調(diào)用API函數(shù)的返回地址,一般都不會在進程加載的DLL模塊的內(nèi)存地址范圍內(nèi)。因此,如果是惡意代碼shellcode調(diào)用的API函數(shù),則其返回地址就會與預(yù)設(shè)的所屬模塊的加載地址范圍不符的情形,因而,當(dāng)出現(xiàn)調(diào)用的API函數(shù)的返回地址與所屬模塊的加載地址范圍不符的情形時,可以判定出當(dāng)前進程的調(diào)用可能是不合法的。
      [0130]本步驟可通過如下的程序代碼段實現(xiàn):
      [0131]MEM0RY_BASIC_INF0RMAT1N mbmemlnfo ;
      [0132]VirtualQuery((PVOID)IpRetAddr, &mbiMemInfo, sizeof (MEM0RY_BASIC_INFORMAT1N));
      [0133]KAE_Success_EXIT (mbMemlnf0.TYpe = = MEM_IMAGE);
      [0134]Kstatus = KAE_STATUS_FAILED ;
      [0135]KAE_EXIT ;
      [0136]Return kstatus ;
      [0137]步驟205,進行調(diào)用指令檢測,判斷該返回地址處的上一條指令是否為CALL指令,如果否,執(zhí)行步驟211,如果是,執(zhí)行步驟206 ;
      [0138]本步驟中,調(diào)用指令檢測用于檢測暫緩調(diào)用的API函數(shù)的調(diào)用指令是否為CALL指令。具體為:獲取返回地址處的上一條指令,判斷該上一條指令是否為CALL指令:如果不是,則返回攻擊提醒。如果是CALL指令,則繼續(xù)進行檢測。
      [0139]本步驟可通過如下的程序代碼段實現(xiàn):
      [0140]KAESTATUS KStatus = KAE_STATUS_SUCCESS ;
      [0141]KAE_SUCCESS_EXIT(*((PBYTE)lpRetAddr-5) = = 0XE8);
      [0142]KAE_SUCCESS_EXIT(*((PBYTE)lpRetAddr-3) = = 0XE8);
      [0143]KAE_SUCCESS_EXIT(*((PBYTE)lpRetAddr-5) = = 0X9A);
      [0144]KAE_SUCCESS_EXIT(*((PBYTE)lpRetAddr-7) = = 0X9A);
      [0145]for (int i = 2 ;i < 8 ;i++)
      [0146]{
      [0147]KAE_SUCCESS_EXIT(*((PBYTE)IpRetAddr-1) = = OXFF)&&
      [0148](((* ((PBYTE)IpRetAddr-1+l))&0X38) = = 0X10));
      [0149]}
      [0150]for (int i = 2 ;i < 10 ;i++)
      [0151]{
      [0152]KAE_SUCCESS_EXIT(*((PBYTE)IpRetAddr-1) = = OXFF)&&
      [0153](((* ((PBYTE)IpRetAddr-1+l))&0X38) = = 0X18));
      [0154]}
      [0155]KStatus = KAE_STATUS_FAILED ;
      [0156]KAE_EXIT ;
      [0157]Return KStatus ;
      [0158]步驟206,進行棧異常檢測,判斷該返回地址是否屬于當(dāng)前TEB中所描述的棧空間范圍內(nèi),如果否,執(zhí)行步驟211,如果是,執(zhí)行步驟207 ;
      [0159]本步驟中,進行棧異常檢測,以檢測??臻g地址是否正常:判斷API函數(shù)的返回地址是否在當(dāng)前線程環(huán)境塊(TEB, Thread Environment Block)中所描述的??臻g范圍內(nèi)。如果不在該TEB中所描述的??臻g范圍內(nèi),則返回攻擊提醒。如果是,則繼續(xù)進行檢測。其中,TEB中保存有頻繁使用的線程相關(guān)的數(shù)據(jù),位于用戶地址空間內(nèi)。
      [0160]步驟207,進行UNC路徑檢測,判斷UNC路徑是否為遠(yuǎn)程路徑,如果是,執(zhí)行步驟211,如果否,執(zhí)行步驟208 ;
      [0161]本步驟中,進行通用命名規(guī)則(UNC, Universal Naming Convent1n)路徑檢測,以檢測LoadLibrary的路徑是否為網(wǎng)絡(luò)路徑(遠(yuǎn)程路徑),即在函數(shù)LoadLibraryA或LoadLibraryff中,獲取調(diào)用API函數(shù)的UNC路徑,判斷獲取的UNC路徑是否為遠(yuǎn)程路徑,例如,是否為遠(yuǎn)程網(wǎng)絡(luò)路徑。如果是,則返回攻擊提醒。如果不是,則繼續(xù)進行檢測。
      [0162]步驟208,進行屬性修改檢測,判斷屬性修改是否為可執(zhí)行屬性,如果是,且修改目標(biāo)為棧空間,執(zhí)行步驟211,否則,結(jié)束檢測流程。
      [0163]本步驟中,進行屬性修改檢測:即在API函數(shù)NtProtectVirtualMemory中,判斷是否可將API函數(shù)的屬性修改為??臻g的可執(zhí)行屬性。如果是,則返回攻擊提醒,否則,則結(jié)束檢測。
      [0164]步驟211,返回攻擊提醒。
      [0165]由上述可見,本發(fā)明實施例提供專門針對ROP攻擊的檢測方法,通過在待監(jiān)測的應(yīng)用程序的進程中注入應(yīng)用編程接口函數(shù)監(jiān)測程序,在監(jiān)測到應(yīng)用程序的進程調(diào)用API函數(shù)時,暫緩所述應(yīng)用程序的進程對所述API函數(shù)的調(diào)用,并按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。通過注入程序的方法注入程序監(jiān)測API函數(shù)的調(diào)用,可以不依賴系統(tǒng)版本、模塊版本或軟件版本,并能有效的防護ROP攻擊,有效解決了早期Windows系統(tǒng),或者早期PE文件的安全性防護技術(shù)問題。進一步地,還可以兼容現(xiàn)有Windows操作系統(tǒng)的安全機制,如DEP等技術(shù),可大大提升用戶電腦的安全保障性,極大地增加了漏洞攻擊的難度,從而可大大降低漏洞攻擊的成功率。而且,還可以通過組合的ROP防護策略,進行多重特征檢測,極大地增加了構(gòu)造ROP的難度,使得攻擊者幾乎很難再有機會完成ROP攻擊。
      [0166]圖3為本發(fā)明實施例檢測面向返程的編程攻擊的裝置結(jié)構(gòu)示意圖。參見圖3,該裝置包括:注入模塊301、監(jiān)測模塊302以及處理模塊303,其中,
      [0167]注入模塊301,用于分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;
      [0168]本發(fā)明實施例中,作為可選實施例,注入模塊301包括:注入單元以及同步單元(圖中未示出),其中,
      [0169]注入單元,用于在待監(jiān)測的應(yīng)用程序中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序的分析以及回調(diào)模塊,利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊;
      [0170]本發(fā)明實施例中,利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊包括:
      [0171]查找所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊的內(nèi)存變量;
      [0172]將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量。
      [0173]其中,作為一可選實施例,將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量包括:
      [0174]將分析以及回調(diào)模塊的內(nèi)存變量對應(yīng)的代碼寫入動態(tài)鏈接庫中,利用操作系統(tǒng)中的windows鉤子將寫入動態(tài)鏈接庫中的內(nèi)存變量代碼映射到所述調(diào)用管理模塊。
      [0175]作為另一可選實施例,將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量包括:
      [0176]將分析以及回調(diào)模塊的內(nèi)存變量對應(yīng)的代碼寫入動態(tài)鏈接庫中,利用操作系統(tǒng)中的遠(yuǎn)程注入以及動態(tài)加載將寫入動態(tài)鏈接庫中的內(nèi)存變量代碼映射到所述調(diào)用管理模塊。
      [0177]同步單元,用于在監(jiān)測到所述待監(jiān)測的應(yīng)用程序啟動后,同步啟動注入在所述待監(jiān)測的應(yīng)用程序中的所述分析以及回調(diào)模塊。
      [0178]監(jiān)測模塊302,用于在監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口 API函數(shù)庫中的API函數(shù)后,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用;
      [0179]處理模塊303,用于按照預(yù)先設(shè)置的面向返程的編程ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0180]本發(fā)明實施例中,作為一可選實施例,處理模塊303包括:返回地址獲取單元以及屬性判斷處理單元(圖中未示出),其中,
      [0181]返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址;
      [0182]屬性判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址的屬性是否具有可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0183]作為另一可選實施例,處理模塊303包括:返回地址獲取單元以及加載地址判斷處理單元(圖中未示出),其中,
      [0184]返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址;
      [0185]加載地址判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0186]作為再一可選實施例,處理模塊303包括:返回地址獲取單元以及指令判斷處理單元(圖中未示出),其中,
      [0187]返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址;
      [0188]指令判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址處的上一條指令是否為CALL指令,如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0189]作為再一可選實施例,處理模塊303包括:返回地址獲取單元以及??臻g判斷處理單元(圖中未示出),其中,
      [0190]返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址;
      [0191]??臻g判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址是否在當(dāng)前線程環(huán)境塊中所描述的棧空間范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0192]作為再一可選實施例,處理模塊303包括:路徑獲取單元以及路徑判斷處理單元(圖中未示出),其中,
      [0193]路徑獲取單元,用于獲取暫緩調(diào)用API函數(shù)的通用命名規(guī)則路徑;
      [0194]路徑判斷處理單元,用于判斷路徑獲取單元獲取的通用命名規(guī)則路徑是否為遠(yuǎn)程路徑,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0195]作為再一可選實施例,處理模塊303包括:函數(shù)獲取單元以及屬性修改處理單元(圖中未示出),其中,
      [0196]函數(shù)獲取單兀,用于獲取API函數(shù)NtProtectVirtualMemory ;
      [0197]屬性修改處理單元,用于在函數(shù)獲取單元獲取的API函數(shù)NtProtectVirtualMemory中,判斷是否可將暫緩調(diào)用的API函數(shù)的屬性修改為棧空間的可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0198]作為再一可選實施例,處理模塊303包括:返回地址獲取單元、屬性判斷處理單元以及加載地址判斷處理單元(圖中未示出),其中,
      [0199]返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址;
      [0200]屬性判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址的屬性是否具有可執(zhí)行屬性,如果是,將所述返回地址輸出至加載地址判斷處理單元,如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù);
      [0201]加載地址判斷處理單元,用于判斷接收的所述返回地址的屬性是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      [0202]較佳地,處理模塊303還可以進一步包括:
      [0203]ROP攻擊處理單元,用于在確定處理模塊303不允許調(diào)用暫緩調(diào)用的所述API函數(shù)之后,發(fā)送消息提醒,以提醒用戶進行處理;和/或,
      [0204]對調(diào)用API函數(shù)的應(yīng)用程序進行安全掃描,并對掃描結(jié)果為不安全的應(yīng)用程序進行及時處理;和/或,
      [0205]卸載調(diào)用API函數(shù)的應(yīng)用程序;和/或,
      [0206]為調(diào)用API函數(shù)的應(yīng)用程序設(shè)置訪問權(quán)限。
      [0207]本發(fā)明實施例中,可以通過棧指針寄存器獲取所述暫緩調(diào)用的API函數(shù)的返回地址,并通過VirtualQuery函數(shù)查詢所述返回地址處是否具有可執(zhí)行屬性。
      [0208]作為可選實施例,該裝置還可以進一步包括:
      [0209]注入設(shè)置模塊304,用于調(diào)用Windows操作系統(tǒng)的SetWindowsHookEx接口,設(shè)置用于監(jiān)測和處理進程調(diào)用的API函數(shù)的應(yīng)用編程接口函數(shù)監(jiān)測程序,并獲取操作系統(tǒng)的根權(quán)限,以將所述應(yīng)用編程接口函數(shù)監(jiān)測程序注入到待監(jiān)測的應(yīng)用程序中。
      [0210]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。
      [0211]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準(zhǔn)。
      【權(quán)利要求】
      1.一種檢測面向返程的編程攻擊的方法,其特征在于,分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序;該方法還包括: 監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口 API函數(shù)庫中的API函數(shù)時,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用; 按照預(yù)先設(shè)置的面向返程的編程ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: 獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址的屬性是否具有可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: 獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: 獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址處的上一條指令是否為CALL指令,如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: 獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址是否在當(dāng)前線程環(huán)境塊中所描述的??臻g范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: 獲取暫緩調(diào)用API函數(shù)的通用命名規(guī)則路徑,判斷獲取的通用命名規(guī)則路徑是否為遠(yuǎn)程路徑,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: 在API函數(shù)NtProtectVirtualMemory中,判斷是否可將暫緩調(diào)用的API函數(shù)的屬性修改為??臻g的可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)先設(shè)置的ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)包括: Al,獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址的屬性是否具有可執(zhí)行屬性,如果是,執(zhí)行步驟A2,如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù); A2,獲取暫緩調(diào)用的API函數(shù)的返回地址,判斷所述返回地址的屬性是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      9.根據(jù)權(quán)利要求2至8任一項所述的方法,其特征在于,在確定不允許調(diào)用暫緩調(diào)用的所述API函數(shù)之后,所述方法進一步包括: 發(fā)送消息提醒,以提醒用戶進行處理;和/或, 對調(diào)用API函數(shù)的應(yīng)用程序進行安全掃描,并對掃描結(jié)果為不安全的應(yīng)用程序進行及時處理;和/或, 卸載調(diào)用API函數(shù)的應(yīng)用程序;和/或, 為調(diào)用API函數(shù)的應(yīng)用程序設(shè)置訪問權(quán)限。
      10.根據(jù)權(quán)利要求2至8任一項所述的方法,其特征在于,通過棧指針寄存器獲取所述暫緩調(diào)用的API函數(shù)的返回地址,并通過VirtualQuery函數(shù)查詢所述返回地址處是否具有可執(zhí)行屬性。
      11.根據(jù)權(quán)利要求1至8任一項所述的方法,其特征在于,所述在待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序包括: 在待監(jiān)測的應(yīng)用程序中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序的分析以及回調(diào)模塊,利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊; 監(jiān)測到所述待監(jiān)測的應(yīng)用程序啟動,同步啟動注入在所述待監(jiān)測的應(yīng)用程序中的所述分析以及回調(diào)模塊。
      12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊包括: 查找所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊的內(nèi)存變量; 將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量。
      13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量包括: 將分析以及回調(diào)模塊的內(nèi)存變量對應(yīng)的代碼寫入動態(tài)鏈接庫中,利用操作系統(tǒng)中的windows鉤子將寫入動態(tài)鏈接庫中的內(nèi)存變量代碼映射到所述調(diào)用管理模塊。
      14.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述將所述調(diào)用管理模塊的內(nèi)存變量替換為分析以及回調(diào)模塊的內(nèi)存變量包括: 將分析以及回調(diào)模塊的內(nèi)存變量對應(yīng)的代碼寫入動態(tài)鏈接庫中,利用操作系統(tǒng)中的遠(yuǎn)程注入以及動態(tài)加載將寫入動態(tài)鏈接庫中的內(nèi)存變量代碼映射到所述調(diào)用管理模塊。
      15.根據(jù)權(quán)利要求1所述的方法,其特征在于,在注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序之前,所述方法進一步包括: 調(diào)用Windows操作系統(tǒng)的SetWindowsHookEx接口,設(shè)置用于監(jiān)測和處理進程調(diào)用的API函數(shù)的應(yīng)用編程接口函數(shù)監(jiān)測程序,并獲取操作系統(tǒng)的根權(quán)限。
      16.一種檢測面向返程的編程攻擊的裝置,其特征在于,該裝置包括:注入模塊、監(jiān)測模塊以及處理模塊,其中, 注入模塊,用于分別在每一待監(jiān)測的應(yīng)用程序的進程中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序; 監(jiān)測模塊,用于在監(jiān)測到所述待監(jiān)測的應(yīng)用程序的進程調(diào)用預(yù)先設(shè)置的應(yīng)用編程接口API函數(shù)庫中的API函數(shù)后,暫緩所述待監(jiān)測的應(yīng)用程序的進程對所述API函數(shù)的調(diào)用; 處理模塊,用于按照預(yù)先設(shè)置的面向返程的編程ROP防護策略處理暫緩調(diào)用的所述API函數(shù),以確定是否允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:返回地址獲取單元以及屬性判斷處理單元,其中, 返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址; 屬性判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址的屬性是否具有可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      18.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:返回地址獲取單元以及加載地址判斷處理單元,其中, 返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址; 加載地址判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      19.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:返回地址獲取單元以及指令判斷處理單元,其中, 返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址; 指令判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址處的上一條指令是否為CALL指令,如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      20.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:返回地址獲取單元以及??臻g判斷處理單元,其中, 返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址; 棧空間判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址是否在當(dāng)前線程環(huán)境塊中所描述的??臻g范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      21.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:路徑獲取單元以及路徑判斷處理單元,其中, 路徑獲取單元,用于獲取暫緩調(diào)用API函數(shù)的通用命名規(guī)則路徑; 路徑判斷處理單元,用于判斷路徑獲取單元獲取的通用命名規(guī)則路徑是否為遠(yuǎn)程路徑,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      22.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:函數(shù)獲取單元以及屬性修改處理單元,其中, 函數(shù)獲取單兀,用于獲取API函數(shù)NtProtectVirtualMemory ; 屬性修改處理單元,用于在函數(shù)獲取單元獲取的API函數(shù)NtProtectVirtualMemory中,判斷是否可將暫緩調(diào)用的API函數(shù)的屬性修改為??臻g的可執(zhí)行屬性,如果是,不允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      23.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述處理模塊包括:返回地址獲取單元、屬性判斷處理單元以及加載地址判斷處理單元,其中, 返回地址獲取單元,用于獲取暫緩調(diào)用的API函數(shù)的返回地址; 屬性判斷處理單元,用于判斷返回地址獲取單元獲取的返回地址的屬性是否具有可執(zhí)行屬性,如果是,將所述返回地址輸出至加載地址判斷處理單元,如果否,允許調(diào)用暫緩調(diào)用的所述API函數(shù); 加載地址判斷處理單元,用于判斷接收的所述返回地址的屬性是否在所述應(yīng)用程序的進程所加載的系統(tǒng)動態(tài)鏈接庫模塊的加載地址范圍內(nèi),如果是,允許調(diào)用暫緩調(diào)用的所述API函數(shù),如果否,不允許調(diào)用暫緩調(diào)用的所述API函數(shù)。
      24.根據(jù)權(quán)利要求17至23任一項所述的裝置,其特征在于,所述處理模塊進一步包括: ROP攻擊處理單元,用于在確定處理模塊不允許調(diào)用暫緩調(diào)用的所述API函數(shù)之后,發(fā)送消息提醒,以提醒用戶進行處理;和/或, 對調(diào)用API函數(shù)的應(yīng)用程序進行安全掃描,并對掃描結(jié)果為不安全的應(yīng)用程序進行及時處理;和/或, 卸載調(diào)用API函數(shù)的應(yīng)用程序;和/或, 為調(diào)用API函數(shù)的應(yīng)用程序設(shè)置訪問權(quán)限。
      25.根據(jù)權(quán)利要求16至23任一項所述的裝置,其特征在于,所述注入模塊包括:注入單元以及同步單元,其中, 注入單元,用于在待監(jiān)測的應(yīng)用程序中注入預(yù)先設(shè)置的應(yīng)用編程接口函數(shù)監(jiān)測程序的分析以及回調(diào)模塊,利用所述注入的分析以及回調(diào)模塊替換所述待監(jiān)測的應(yīng)用程序的調(diào)用管理模塊; 同步單元,用于在監(jiān)測到所述待監(jiān)測的應(yīng)用程序啟動后,同步啟動注入在所述待監(jiān)測的應(yīng)用程序中的所述分析以及回調(diào)模塊。
      26.根據(jù)權(quán)利要求16至23任一項所述的裝置,其特征在于,進一步包括: 注入設(shè)置模塊,用于調(diào)用Windows操作系統(tǒng)的SetWindowsHookEx接口,設(shè)置用于監(jiān)測和處理進程調(diào)用的API函數(shù)的應(yīng)用編程接口函數(shù)監(jiān)測程序,并獲取操作系統(tǒng)的根權(quán)限。
      【文檔編號】G06F21/56GK104268471SQ201410459638
      【公開日】2015年1月7日 申請日期:2014年9月10日 優(yōu)先權(quán)日:2014年9月10日
      【發(fā)明者】薛小昊, 劉桂峰, 姚輝 申請人:珠海市君天電子科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1