亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種ShellCode檢測方法和裝置制造方法

文檔序號(hào):6545849閱讀:178來源:國知局
一種ShellCode檢測方法和裝置制造方法
【專利摘要】本發(fā)明提供一種ShellCode檢測方法和裝置,包括:建立包含ShellCode特征序列的ShellCode指令序列特征庫;載入待檢測文件,對(duì)所述待檢測文件進(jìn)行解析,形成解析文件;對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode;輸出檢測結(jié)果。本發(fā)明能夠在ShellCode執(zhí)行之前即進(jìn)行檢測,防止了ShellCode對(duì)系統(tǒng)造成的影響,及時(shí)阻止了其進(jìn)行惡意篡改的可能性。
【專利說明】—種Shel ICode檢測方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,尤其涉及一種ShellCode檢測方法和裝置。
【背景技術(shù)】
[0002]當(dāng)前,緩沖區(qū)溢出是多種系統(tǒng)攻擊、獲取系統(tǒng)控制權(quán)的一個(gè)主要跳板,而具體實(shí)施緩沖區(qū)溢出攻擊,必須要通過ShellCode來進(jìn)行,進(jìn)行攻擊的數(shù)據(jù)中一定包含相應(yīng)的ShellCode。因此,加強(qiáng)對(duì)緩沖區(qū)溢出等攻擊的檢測是信息安全領(lǐng)域的一個(gè)重要研究內(nèi)容。同時(shí),當(dāng)前廣泛使用的軟件如Office、Adobe Reader等文檔處理軟件成為很多ShellCode的攻擊跳板,許多攻擊者將ShellCode隱藏在DOC和PDF等這些常用文檔中進(jìn)行攻擊。
[0003]當(dāng)前對(duì)ShellCode的檢測,主要分為靜態(tài)檢測和動(dòng)態(tài)檢測,靜態(tài)ShellCode檢測技術(shù)一般采用模式匹配和靜態(tài)反匯編技術(shù),通過對(duì)數(shù)據(jù)進(jìn)行掃描和分析,根據(jù)ShellCode知識(shí)庫中的特征碼,識(shí)別出可能存在的ShellCode。其特點(diǎn)是檢測速度快,但存在針對(duì)性不強(qiáng),無法檢測未知ShellCode的問題。同時(shí),靜態(tài)二進(jìn)制分析沒有實(shí)際執(zhí)行指令,無法自動(dòng)捕獲指令的控制轉(zhuǎn)移,完全依賴人工分析程序的控制流圖。
[0004]動(dòng)態(tài)的ShellCode檢測技術(shù)是將數(shù)據(jù)流當(dāng)作可執(zhí)行代碼模擬執(zhí)行,其通過實(shí)際運(yùn)行程序,可以自動(dòng)捕獲程序指令的控制轉(zhuǎn)移,可以對(duì)程序的運(yùn)行數(shù)據(jù)訪問進(jìn)行監(jiān)控和分析,不受代碼混淆技術(shù)的影響。但現(xiàn)有的基于內(nèi)存搜索的ShellCode檢測技術(shù),是在ShellCode已載入內(nèi)存后才進(jìn)行檢測,難以防止ShellCode所做的更改,并且在數(shù)據(jù)量大的情況下難以對(duì)內(nèi)存進(jìn)行準(zhǔn)確有效的搜索;基于虛擬執(zhí)行的ShellCode檢測技術(shù),需要相應(yīng)虛擬機(jī)技術(shù)的支持,在數(shù)據(jù)量大的情況下,需要部署大量的虛擬機(jī),并且當(dāng)前眾多ShellCode代碼都具有虛擬機(jī)對(duì)抗功能。
[0005]另外,當(dāng)前已經(jīng)實(shí)現(xiàn)的技術(shù)大多是針對(duì)網(wǎng)絡(luò)數(shù)據(jù)流的分析,但對(duì)攻擊本地程序的ShellCode的檢測方面支持不足,并且無法避免ShellCode已經(jīng)對(duì)系統(tǒng)造成的傷害。

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

[0006](一 )要解決的技術(shù)問題
[0007]本發(fā)明提供一種ShellCode檢測方法和裝置,以解決現(xiàn)有技術(shù)僅能在ShellCode運(yùn)行之后進(jìn)行檢測,無法避免對(duì)系統(tǒng)造成既成傷害的技術(shù)問題和混淆技術(shù)導(dǎo)致難以靜態(tài)檢測ShellCode的問題。
[0008]( 二 )技術(shù)方案
[0009]為解決上述技術(shù)問題,本發(fā)明提供一種ShellCode檢測方法,包括:
[0010]建立包含ShellCode特征序列的ShellCode指令序列特征庫;
[0011]載入待檢測文件,對(duì)所述待檢測文件進(jìn)行解析,形成解析文件;
[0012]對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含 ShellCode ;[0013]輸出檢測結(jié)果。
[0014]進(jìn)一步地,所述對(duì)所述待檢測文件進(jìn)行解析,形成解析文件包括:
[0015]根據(jù)待檢測文件的類型進(jìn)行解析,轉(zhuǎn)換為統(tǒng)一格式的解析文件。
[0016]進(jìn)一步地,所述文檔類型包括:
[0017]DOC、DOCX、XLS、XLSX、PPT、PPTX、PDF 中的一種或多種。
[0018]進(jìn)一步地,所述對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode,包括:
[0019]步驟S1:初始化可疑指令序列步長;
[0020]步驟S2:將所述解析文件作為二進(jìn)制串進(jìn)行指令的模擬執(zhí)行和分析,當(dāng)檢測到可疑指令時(shí),執(zhí)行步驟S3,否則,執(zhí)行步驟S6 ;
[0021]步驟S3:將所述可疑指令序列步長加I ;
[0022]步驟S4:比較所述可疑指令序列步長是否達(dá)到所述ShellCode指令序列特征庫中的ShellCode特征序列的閥值,如果達(dá)到閥值,執(zhí)行步驟S5,否則,執(zhí)行步驟S6 ;
[0023]步驟S5:判定所述解析文件數(shù)據(jù)中包含ShellCode,記錄告警信息;
[0024]步驟S6:判斷是否對(duì)所述解析文件中的所有數(shù)據(jù)完成檢測,如果完成了所有數(shù)據(jù)檢測,判定所述解析文件中不包含ShellCode,否則,回到步驟S2。
[0025]進(jìn)一步地,所述方法還包括:
[0026]利用ShellCode檢測結(jié)果對(duì)所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行更新。
[0027]另一方面,本發(fā)明還提供一種ShellCode檢測裝置,包括:特征庫模塊、調(diào)度模塊、文件解析模塊、模擬分析模塊和結(jié)果輸出模塊,所述調(diào)度模塊與所述文件解析模塊相連,所述模擬分析模塊分別與所述特征庫模塊、文件解析模塊和結(jié)果輸出模塊相連,其中:
[0028]特征庫模塊,用于建立包含ShellCode特征序列的ShellCode指令序列特征庫;
[0029]調(diào)度模塊,用于載入待檢測文件;
[0030]文件解析模塊,用于對(duì)所述待檢測文件進(jìn)行解析,形成解析文件;
[0031]模擬分析模塊,用于對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode ;
[0032]結(jié)果輸出模塊,用于輸出檢測結(jié)果。
[0033]進(jìn)一步地,所述文件解析模塊還用于:
[0034]根據(jù)待檢測文件的類型進(jìn)行解析,轉(zhuǎn)換為統(tǒng)一格式的解析文件。
[0035]進(jìn)一步地,所述模擬分析模塊還用于執(zhí)行以下步驟:
[0036]步驟S1:初始化可疑指令序列步長;
[0037]步驟S2:將所述解析文件作為二進(jìn)制串進(jìn)行指令的模擬執(zhí)行和分析,當(dāng)檢測到可疑指令時(shí),執(zhí)行步驟S3,否則,執(zhí)行步驟S6 ;
[0038]步驟S3:將所述可疑指令序列步長加I ;
[0039]步驟S4:比較所述可疑指令序列步長是否達(dá)到所述ShellCode指令序列特征庫中的ShellCode特征序列的閥值,如果是,執(zhí)行步驟S5,否則,執(zhí)行步驟S6 ;[0040]步驟S5:判定所述解析文件數(shù)據(jù)中包含ShellCode,記錄告警信息;
[0041]步驟S6:判斷是否對(duì)所述解析文件中的所有數(shù)據(jù)完成檢測,如果完成了所有數(shù)據(jù)檢測,判定所述解析文件中不包含ShellCode,否則,回到步驟S2。
[0042]進(jìn)一步地,所述模擬分析模塊為:
[0043]一種可執(zhí)行指定步長的指令模擬器,其可以模擬寄存器和/或FPU指令執(zhí)行所需的關(guān)鍵部件。
[0044]進(jìn)一步地,所述裝置還包括:
[0045]更新模塊,與所述特征庫模塊和所述結(jié)果輸出模塊相連,用于利用ShellCode檢測結(jié)果對(duì)所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行更新。
[0046](三)有益效果
[0047]可見,在本發(fā)明實(shí)施例提供的一種ShellCode檢測方法和裝置中,能夠采用文檔分析和指令模擬技術(shù),對(duì)待檢測文件進(jìn)行解析,然后用模擬指令判斷是否存在可疑指令序列,并與預(yù)先建立的指令序列特征庫進(jìn)行對(duì)比,以判斷是否包含ShellCode。本發(fā)明實(shí)施例的ShellCode檢測方法能夠在ShellCode執(zhí)行之前即進(jìn)行檢測,防止了 ShellCode對(duì)系統(tǒng)造成的影響,及時(shí)阻止了其進(jìn)行惡意篡改的可能性。并且,本發(fā)明實(shí)施例可針對(duì)指令序列,在無需部署完整的虛擬機(jī)的情況下解析指令,降低了部署的要求和成本。
【專利附圖】

【附圖說明】
[0048]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0049]圖1是本發(fā)明實(shí)施例ShellCode檢測方法的基本流程示意圖;
[0050]圖2是本發(fā)明實(shí)施例ShellCode檢測方法的一個(gè)優(yōu)選流程示意圖;
[0051]圖3是本發(fā)明實(shí)施例ShellCode判斷過程示意圖;
[0052]圖4是本發(fā)明實(shí)施例ShellCode檢測裝置的基本結(jié)構(gòu)示意圖;
[0053]圖5是本發(fā)明實(shí)施例ShellCode檢測裝置的一個(gè)優(yōu)選結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0054]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0055]ShellCode是漏洞攻擊的執(zhí)行載體,一次完整的漏洞攻擊需要漏洞利用技術(shù)和ShellCode的配合才能達(dá)到理想的攻擊效果,針對(duì)此問題,本發(fā)明實(shí)施例首先提供一種ShellCode檢測方法,參見圖1,包括:
[0056]步驟101:建立包含ShellCode特征序列的ShellCode指令序列特征庫。
[0057]步驟102:載入待檢測文件,對(duì)所述待檢測文件進(jìn)行解析,形成解析文件。
[0058]步驟103:對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode。
[0059]步驟104:輸出檢測結(jié)果。
[0060]可見,在本發(fā)明實(shí)施例提供的一種ShellCode檢測方法中,能夠采用文檔分析和指令模擬技術(shù),對(duì)待檢測文件進(jìn)行解析,然后用模擬指令判斷是否存在可疑指令序列,并與預(yù)先建立的指令序列特征庫進(jìn)行對(duì)比,以判斷是否包含ShellCode。本發(fā)明實(shí)施例的ShellCode檢測方法能夠在ShelICode執(zhí)行之前即進(jìn)行檢測,防止了 ShellCode對(duì)系統(tǒng)造成的影響,及時(shí)阻止了其進(jìn)行惡意篡改的可能性。并且,本發(fā)明實(shí)施例可針對(duì)指令序列,在無需部署完整的虛擬機(jī)的情況下解析指令,降低了部署的要求和成本。
[0061]本發(fā)明實(shí)施例可以針對(duì)各種文件類型進(jìn)行識(shí)別,優(yōu)選地,對(duì)所述待檢測文件進(jìn)行解析,形成解析文件可以包括:根據(jù)待檢測文件的類型進(jìn)行解析,轉(zhuǎn)換為統(tǒng)一格式的解析文件。
[0062]優(yōu)選地,文檔類型可以包括:D0C、DOCX, XLS、XLSX、PPT、PPTX, PDF中的一種或多種。
[0063]優(yōu)選地,對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode可以具體包括如下步驟:
[0064]步驟S1:初始化可疑指令序列步長;
[0065]步驟S2:將所述解析文件作為二進(jìn)制串進(jìn)行指令的模擬執(zhí)行和分析,當(dāng)檢測到可疑指令時(shí),執(zhí)行步驟S3,否則,執(zhí)行步驟S6 ;
[0066]步驟S3:將所述可疑指令序列步長加I ;
[0067]步驟S4:比較所述可疑指令序列步長是否達(dá)到所述ShellCode指令序列特征庫中的ShellCode特征序列的閥值,如果達(dá)到閥值,執(zhí)行步驟S5,否則,執(zhí)行步驟S6 ;
[0068]步驟S5:判定所述解析文件數(shù)據(jù)中包含ShellCode,記錄告警信息;
[0069]步驟S6:判斷是否對(duì)所述解析文件中的所有數(shù)據(jù)完成檢測,如果完成了所有數(shù)據(jù)檢測,判定所述解析文件中不包含ShellCode,否則,回到步驟S2。
[0070]本發(fā)明實(shí)施例方法還可以及時(shí)對(duì)ShellCode指令序列特征庫進(jìn)行更新,并能夠?qū)ζ溥M(jìn)行不斷的調(diào)整和錯(cuò)誤糾正,以避免下次誤判,優(yōu)選地,方法還可以包括:利用ShellCode檢測結(jié)果對(duì)所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行更新。
[0071]下面以具體的ShellCode檢測過程為例,以詳細(xì)說明本發(fā)明實(shí)施例的具體實(shí)現(xiàn)過程,參見圖2:
[0072]步驟201:建立包含ShellCode特征序列的ShellCode指令序列特征庫。
[0073]本步驟中,首先需要建立一個(gè)ShellCode指令序列特征庫,其中包含已知的ShellCode特征序列。
[0074]步驟202:載入待檢測文件,對(duì)所述待檢測文件進(jìn)行解析,形成解析文件。
[0075]本步驟中,首先載入待檢測文件,然后對(duì)文件類型進(jìn)行識(shí)別,根據(jù)識(shí)別結(jié)果進(jìn)行解析,形成統(tǒng)一格式的解析文件。
[0076]步驟203:對(duì)解析文件進(jìn)行指令模擬執(zhí)行和分析,判斷其中是否包含ShellCode。
[0077]本步驟中,調(diào)用類似LibEmu的指令模擬器,通過模擬匯編指令的執(zhí)行,記錄可疑指令序列并與ShellCode指令序列特征庫中的特征序列進(jìn)行對(duì)比,分析文件中是否包含ShellCode。
[0078]具體步驟如圖3所示,其中,初始化狀態(tài)機(jī)時(shí),將記錄的可疑指令序列步長置為O ;在判斷是否為可疑指令時(shí),將解析后的文檔數(shù)據(jù)看作二進(jìn)制串,用指令模擬器模擬寄存器、FPU等進(jìn)行指令的模擬執(zhí)行以分析指令,查找其中是否包含有可疑的ShellCode ;當(dāng)檢測到可疑指令時(shí),將狀態(tài)機(jī)狀態(tài)更新,狀態(tài)機(jī)的可疑指令步長加I。
[0079]步驟204:輸出檢測結(jié)果并對(duì)ShellCode指令序列特征庫進(jìn)行更新。
[0080]本步驟中,輸出最終檢測結(jié)果,并根據(jù)結(jié)果對(duì)ShellCode指令序列特征庫進(jìn)行更新和調(diào)整,以避免下次誤判。
[0081]至此,則完成了本發(fā)明實(shí)施例ShellCode檢測方法的全過程。
[0082]本發(fā)明實(shí)施例還提供一種ShellCode檢測裝置,參見圖4,包括:特征庫模塊401、調(diào)度模塊402、文件解析模塊403、模擬分析模塊404和結(jié)果輸出模塊405,其中:
[0083]特征庫模塊401,用于建立包含ShellCode特征序列的ShellCode指令序列特征庫;
[0084]調(diào)度模塊402,用于載入待檢測文件;
[0085]文件解析模塊403,用于對(duì)所述待檢測文件進(jìn)行解析,形成解析文件;
[0086]模擬分析模塊404,用于對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode ;
[0087]結(jié)果輸出t旲塊405,用于輸出檢測結(jié)果。
[0088]優(yōu)選地,文件解析模塊403還可以用于根據(jù)待檢測文件的類型進(jìn)行解析,轉(zhuǎn)換為統(tǒng)一格式的解析文件。
[0089]優(yōu)選地,模擬分析模塊404還用于執(zhí)行以下步驟:
[0090]步驟S1:初始化可疑指令序列步長;
[0091]步驟S2:將所述解析文件作為二進(jìn)制串進(jìn)行指令的模擬執(zhí)行和分析,當(dāng)檢測到可疑指令時(shí),執(zhí)行步驟S3,否則,執(zhí)行步驟S6 ;
[0092]步驟S3:將所述可疑指令序列步長加I ;
[0093]步驟S4:比較所述可疑指令序列步長是否達(dá)到所述ShellCode指令序列特征庫中的ShellCode特征序列的閥值,如果是,執(zhí)行步驟S5,否則,執(zhí)行步驟S6 ;
[0094]步驟S5:判定所述解析文件數(shù)據(jù)中包含ShellCode,記錄告警信息;
[0095]步驟S6:判斷是否對(duì)所述解析文件中的所有數(shù)據(jù)完成檢測,如果完成了所有數(shù)據(jù)檢測,判定所述解析文件中不包含ShellCode,否則,回到步驟S2。
[0096]優(yōu)選地,模擬分析模塊303可以為:可模擬寄存器、FPU等部件,并可模擬執(zhí)行指定步長的指令模擬器。
[0097]優(yōu)選地,裝置還可以包括:更新模塊501,見圖5,與特征庫模塊401和結(jié)果輸出模塊405分別相連,用于利用ShellCode檢測結(jié)果對(duì)所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行更新。
[0098]可見,本發(fā)明實(shí)施例具有如下有益效果:
[0099]在本發(fā)明實(shí)施例提供的一種ShellCode檢測方法和裝置中,能夠采用文檔分析和指令模擬技術(shù),對(duì)待檢測文件進(jìn)行解析,然后用模擬指令判斷是否存在可疑指令序列,并與預(yù)先建立的指令序列特征庫進(jìn)行對(duì)比,以判斷是否包含ShellCode。本發(fā)明實(shí)施例的ShellCode檢測方法能夠在ShellCode執(zhí)行之前即進(jìn)行檢測,防止了 ShelICode對(duì)系統(tǒng)造成的影響,及時(shí)阻止了其進(jìn)行惡意篡改的可能性。并且,本發(fā)明實(shí)施例可針對(duì)指令序列,在無需部署完整的虛擬機(jī)的情況下解析指令,降低了部署的要求和成本。
[0100] 最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種ShellCode檢測方法,其特征在于,包括: 建立包含ShellCode特征序列的ShellCode指令序列特征庫; 載入待檢測文件,對(duì)所述待檢測文件進(jìn)行解析,形成解析文件; 對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode ; 輸出檢測結(jié)果。
2.根據(jù)權(quán)利要求1所述的ShellCode檢測方法,其特征在于,所述對(duì)所述待檢測文件進(jìn)行解析,形成解析文件包括: 根據(jù)待檢測文件的類型進(jìn)行解析,轉(zhuǎn)換為統(tǒng)一格式的解析文件。
3.根據(jù)權(quán)利要求2所述的ShellCode檢測方法,其特征在于,所述文檔類型包括: DOC、DOCX、XLS、XLSX、PPT、PPTX、PDF 中的一種或多種。
4.根據(jù)權(quán)利要求1所述的ShellCode檢測方法,其特征在于,所述對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode,包括: 步驟S1:初始化可疑指令序列步長; 步驟S2:將所述解析文件作為二進(jìn)制串進(jìn)行指令的模擬執(zhí)行和分析,當(dāng)檢測到可疑指令時(shí),執(zhí)行步驟S3,否則,執(zhí)行步驟S6 ; 步驟S3:將所述可疑指令序列步長加I ; 步驟S4:比較所述可疑指令序列步長是否達(dá)到所述ShellCode指令序列特征庫中的ShellCode特征序列的閥值,如果達(dá)到閥值,執(zhí)行步驟S5,否則,執(zhí)行步驟S6 ; 步驟S5:判定所述解析文件數(shù)據(jù)中包含ShellCode,記錄告警信息; 步驟S6:判斷是否對(duì)所述解析文件中的所有數(shù)據(jù)完成檢測,如果完成了所有數(shù)據(jù)檢測,判定所述解析文件中不包含ShellCode,否則,回到步驟S2。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的ShellCode檢測方法,其特征在于,所述方法還包括: 利用ShellCode檢測結(jié)果對(duì)所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行更新。
6.一種ShellCode檢測裝置,其特征在于,包括:特征庫模塊、調(diào)度模塊、文件解析模塊、模擬分析模塊和結(jié)果輸出模塊,所述調(diào)度模塊與所述文件解析模塊相連,所述模擬分析模塊分別與所述特征庫模塊、文件解析模塊和結(jié)果輸出模塊相連,其中: 特征庫模塊,用于建立包含ShellCode特征序列的ShellCode指令序列特征庫; 調(diào)度模塊,用于載入待檢測文件; 文件解析模塊,用于對(duì)所述待檢測文件進(jìn)行解析,形成解析文件; 模擬分析模塊,用于對(duì)所述解析文件進(jìn)行指令的模擬執(zhí)行和分析,記錄可疑指令序列并與所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行對(duì)比,判斷所述解析文件中是否包含ShellCode ; 結(jié)果輸出模塊,用于輸出檢測結(jié)果。
7.根據(jù)權(quán)利要求6所述的ShellCode檢測裝置,其特征在于,所述文件解析模塊還用于: 根據(jù)待檢測文件的類型進(jìn)行解析,轉(zhuǎn)換為統(tǒng)一格式的解析文件。
8.根據(jù)權(quán)利要求6所述的ShellCode檢測裝置,其特征在于,所述模擬分析模塊還用于執(zhí)行以下步驟: 步驟S1:初始化可疑指令序列步長; 步驟S2:將所述解析文件作為二進(jìn)制串進(jìn)行指令的模擬執(zhí)行和分析,當(dāng)檢測到可疑指令時(shí),執(zhí)行步驟S3,否則,執(zhí)行步驟S6 ; 步驟S3:將所述可疑指令序列步長加I ; 步驟S4:比較所述可疑指令序列步長是否達(dá)到所述ShellCode指令序列特征庫中的ShellCode特征序列的閥值,如果是,執(zhí)行步驟S5,否則,執(zhí)行步驟S6 ; 步驟S5:判定所述解析文件數(shù)據(jù)中包含ShellCode,記錄告警信息; 步驟S6:判斷是否對(duì)所述解析文件中的所有數(shù)據(jù)完成檢測,如果完成了所有數(shù)據(jù)檢測,判定所述解析文件中不包含ShellCode,否則,回到步驟S2。
9.根據(jù)權(quán)利要求8所述的ShellCode檢測裝置,其特征在于,所述模擬分析模塊為: 一種可執(zhí)行指定步長的指令模擬器,其可以模擬寄存器和/或FPU指令執(zhí)行所需的關(guān)鍵部件。
10.根據(jù)權(quán)利要求 6至9中任一項(xiàng)所述的ShellCode檢測裝置,其特征在于,所述裝置還包括: 更新模塊,與所述特征庫模塊和所述結(jié)果輸出模塊相連,用于利用ShellCode檢測結(jié)果對(duì)所述ShellCode指令序列特征庫中的ShellCode特征序列進(jìn)行更新。
【文檔編號(hào)】G06F21/56GK104008336SQ201410191246
【公開日】2014年8月27日 申請(qǐng)日期:2014年5月7日 優(yōu)先權(quán)日:2014年5月7日
【發(fā)明者】喻民, 姜建國, 李敏, 劉超, 仇新梁, 黃超, 王菲飛, 王冉晴, 趙雙, 劉坤穎, 高翔, 胡波 申請(qǐng)人:中國科學(xué)院信息工程研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1