文件漏洞挖掘的實(shí)現(xiàn)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全技術(shù),特別是涉及一種文件漏洞挖掘的實(shí)現(xiàn)方法和裝置。
【背景技術(shù)】
[0002]近年來,利用軟件漏洞尤其是文件型漏洞對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行訪問或破壞的現(xiàn)象越來越嚴(yán)重。文件型漏洞是指各種文件由于設(shè)計(jì)上的缺陷,可能對(duì)系統(tǒng)產(chǎn)生的安全隱患。在眾多的隱患發(fā)現(xiàn)技術(shù)中FileFuzz作為一種有效的自動(dòng)化漏洞挖掘技術(shù),越來越受到重視。
[0003]由于FileFuzz具備很少出現(xiàn)誤報(bào)等優(yōu)點(diǎn)而被普遍采用來為目標(biāo)文件進(jìn)行安全測試,以對(duì)文件,例如,軟件潛在的漏洞進(jìn)行提示。
[0004]然而,傳統(tǒng)的FileFuzz大都采用Blind Fuzz (盲測)來實(shí)現(xiàn)目標(biāo)文件的安全測試。其中,盲測是通過隨機(jī)修改數(shù)據(jù)來生成測試用例的,通過監(jiān)控測試用例運(yùn)行狀態(tài)找出目標(biāo)文件的漏洞。
[0005]但是,隨著進(jìn)行盲測的文件所涉及的文件格式變得越來越復(fù)雜,進(jìn)而使得盲測所采用的測試用例無法覆蓋所有文件格式,無法針對(duì)文件格式對(duì)文件漏洞進(jìn)行查找,缺乏針對(duì)性。
【發(fā)明內(nèi)容】
[0006]基于此,有必要針對(duì)盲測無法針對(duì)文件格式對(duì)文件漏洞進(jìn)行查找,缺乏針對(duì)性的技術(shù)問題,提供一種能針對(duì)文件格式對(duì)文件漏洞進(jìn)行查找,針對(duì)性強(qiáng)的文件漏洞挖掘的實(shí)現(xiàn)方法。
[0007]此外,還有必要提供一種能針對(duì)文件格式對(duì)文件漏洞進(jìn)行查找,針對(duì)性強(qiáng)的文件漏洞挖掘的實(shí)現(xiàn)裝置。
[0008]一種文件漏洞挖掘的實(shí)現(xiàn)方法,包括如下步驟:
[0009]獲取目標(biāo)文件的文件格式;
[0010]根據(jù)所述目標(biāo)文件的文件格式獲取對(duì)應(yīng)的測試用例;
[0011]對(duì)運(yùn)行的目標(biāo)文件通過所述測試用例進(jìn)行模糊測試,以捕捉所述目標(biāo)文件的漏洞。
[0012]在其中一個(gè)實(shí)施例中,所述根據(jù)所述目標(biāo)文件的文件格式獲取對(duì)應(yīng)的測試用例的步驟之前,所述方法還包括:
[0013]獲取與目標(biāo)文件的文件格式對(duì)應(yīng)的樣本文件;
[0014]通過預(yù)置的文件格式規(guī)范和所述樣本文件生成所述文件格式對(duì)應(yīng)的測試用例。
[0015]在其中一個(gè)實(shí)施例中,所述通過預(yù)置的文件格式規(guī)范和所述樣本文件生成所述文件格式對(duì)應(yīng)的測試用例的步驟包括:
[0016]根據(jù)所述預(yù)置的文件格式規(guī)范解析樣本文件,對(duì)所述樣本文件中的字段進(jìn)行變異處理得到相應(yīng)的測試用例。
[0017]在其中一個(gè)實(shí)施例中,所述對(duì)運(yùn)行的目標(biāo)文件通過所述測試用例進(jìn)行模糊測試,以捕捉所述目標(biāo)文件的漏洞步驟包括:
[0018]運(yùn)行所述測試用例,通過所述測試用例中的變異數(shù)據(jù)對(duì)所述目標(biāo)文件進(jìn)行漏洞查找,以捕捉得到所述目標(biāo)文件的漏洞。
[0019]在其中一個(gè)實(shí)施例中,所述對(duì)運(yùn)行的目標(biāo)文件通過運(yùn)行所述測試用例進(jìn)行模糊測試,以捕捉所述目標(biāo)文件的漏洞的步驟之后,所述方法還包括:
[0020]記錄所述目標(biāo)文件的漏洞并相應(yīng)保存所述測試用例。
[0021]一種文件漏洞挖掘的實(shí)現(xiàn)裝置,包括:
[0022]格式獲取模塊,用于獲取目標(biāo)文件的文件格式;
[0023]測試用例獲取模塊,用于根據(jù)所述目標(biāo)文件的文件格式獲取對(duì)應(yīng)的測試用例;
[0024]監(jiān)視模塊,用于對(duì)運(yùn)行的目標(biāo)文件通過所述測試用例進(jìn)行模糊測試,以捕捉所述目標(biāo)文件的漏洞。
[0025]在其中一個(gè)實(shí)施例中,所述裝置還包括:
[0026]樣本獲取模塊,用于獲取與目標(biāo)文件的文件格式對(duì)應(yīng)的樣本文件;
[0027]測試用例生成模塊,用于通過預(yù)置的文件格式規(guī)范和樣本文件生成文件格式對(duì)應(yīng)的測試用例。
[0028]在其中一個(gè)實(shí)施例中,所述測試用例生成模塊還用于根據(jù)所述預(yù)置的文件格式規(guī)范解析樣本文件,對(duì)所述樣本文件中的字段進(jìn)行變異處理得到相應(yīng)的測試用例。
[0029]在其中一個(gè)實(shí)施例中,所述監(jiān)視模塊還用于運(yùn)行所述測試用例,通過所述測試用例中的變異數(shù)據(jù)對(duì)所述目標(biāo)文件進(jìn)行漏洞查找,以捕捉得到所述目標(biāo)文件的漏洞。
[0030]在其中一個(gè)實(shí)施例中,所述裝置還包括:
[0031]記錄模塊,用于記錄所述目標(biāo)文件的漏洞并相應(yīng)保存所述測試用例。
[0032]上述文件漏洞挖掘的實(shí)現(xiàn)方法和裝置,獲取目標(biāo)文件的文件格式,根據(jù)該文件格式獲取對(duì)應(yīng)的測試用例,對(duì)運(yùn)行的目標(biāo)文件通過獲取的測試用例進(jìn)行模糊測試,以捕捉得到目標(biāo)文件中存在的漏洞,由于目標(biāo)文件中的漏洞挖掘是通過針對(duì)文件格式得到的測試用例實(shí)現(xiàn)的,因此,能夠針對(duì)不同的文件格式采用不同的測試用例對(duì)文件進(jìn)行漏洞查找,使得文件的漏洞挖掘針對(duì)性強(qiáng)。
【附圖說明】
[0033]圖1為一個(gè)實(shí)施例中文件漏洞挖掘的實(shí)現(xiàn)方法的流程圖;
[0034]圖2為另一個(gè)實(shí)施例中文件漏洞挖掘的實(shí)現(xiàn)方法的流程圖;
[0035]圖3為一個(gè)實(shí)施例中文件漏洞挖掘的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0036]圖4為另一個(gè)實(shí)施例中文件漏洞挖掘的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0037]如圖1所示,在一個(gè)實(shí)施例中,一種文件漏洞挖掘的實(shí)現(xiàn)方法,包括如下步驟:
[0038]步驟S110,獲取目標(biāo)文件的文件格式。
[0039]本實(shí)施例中,目標(biāo)文件將是需要進(jìn)行測試,以查找得到其所存在的漏洞的文件,例如,文件中常常存在系統(tǒng)漏洞Oday,即被攻擊者掌握卻未被軟件廠商修復(fù)的系統(tǒng)漏洞,是未公開且沒有相應(yīng)補(bǔ)丁的漏洞。
[0040]文件格式將用于指示目標(biāo)文件的文件類型,例如,常見的文件格式將包括了 3gp、amv、asf > av1、bmp、emf > exe、flv> gif > ico、iff > mov、pcx、png、psd、qtif > rar、ras、rm、sg1、tga、wav、wmf、wmv、和zip等。每一目標(biāo)文件均有唯一對(duì)應(yīng)的文件格式。
[0041]步驟S130,根據(jù)目標(biāo)文件的文件格式獲取對(duì)應(yīng)的測試用例。
[0042]本實(shí)施例中,預(yù)先設(shè)置與文件格式對(duì)應(yīng)的若干個(gè)測試用例,與文件格式對(duì)應(yīng)的若干個(gè)測試用例將形成與文件格式相對(duì)應(yīng)的測試用例集,進(jìn)而使得不同文件格式的目標(biāo)文件將獲取不同的測試用例,以針對(duì)不同的文件格式進(jìn)行測試用例的獲取,進(jìn)而使得當(dāng)前所進(jìn)行的目標(biāo)文件測試是針對(duì)方件格式進(jìn)行的,實(shí)現(xiàn)了測試用例的動(dòng)態(tài)獲取以及針對(duì)性較強(qiáng)的文件測試。進(jìn)一步的,根據(jù)目標(biāo)文件的文件格式所獲取得到的測試用例可為一個(gè)或者多個(gè),將根據(jù)實(shí)際運(yùn)營過程中的測試需求進(jìn)行設(shè)定和靈活地調(diào)整。
[0043]步驟S150,對(duì)運(yùn)行的目標(biāo)文件通過測試用例進(jìn)行模糊測試,以捕捉目標(biāo)文件的漏洞。
[0044]本實(shí)施例中,所進(jìn)行的模糊測試即為Smart Fuzz。在運(yùn)行的目標(biāo)文件中,將通過這一運(yùn)行的目標(biāo)文件開啟測試用例,并監(jiān)視測試用例的運(yùn)行情況。具體的,所進(jìn)行的模糊測試將通過測試用例對(duì)運(yùn)行的目標(biāo)文件觸發(fā)各種運(yùn)行異常,如內(nèi)存讀寫異常、緩沖區(qū)溢出異常等,進(jìn)而通過發(fā)生的異常獲知目標(biāo)文件中存在的漏洞。。
[0045]如圖2所示,在一個(gè)實(shí)施例中,上述步驟S130之前,該方法還包括如下步驟:
[0046]步驟S210,獲取與目標(biāo)文件的文件格式對(duì)應(yīng)的樣本文件。
[0047]本實(shí)施例中,樣本文件是與文件格式相對(duì)應(yīng)的,對(duì)于目標(biāo)文件而言,所在的文件格式都將有與其所對(duì)應(yīng)的樣本文件,并且該樣本文件將覆蓋相應(yīng)文件格式之下的大部分文件規(guī)則。
[0048]由于樣本文件覆蓋了相應(yīng)文件格式之下的大部分文件規(guī)則,并且是與文件格式相對(duì)應(yīng)的,因此,通過樣本文件的生成的測試用例將有效提高了代碼的覆蓋率,避免了大量無用測試用例的產(chǎn)生,進(jìn)而使得應(yīng)用生成的測試用例所進(jìn)行的文件漏洞挖掘能夠查找出更多的漏洞,提高了文件的安全性。
[0049]步驟S230,通過預(yù)置的文件格式規(guī)范和樣本文件生成文件格式對(duì)應(yīng)的測試用例。
[0050]本實(shí)施例中,根據(jù)目標(biāo)文件的文件格式獲取預(yù)置的文件格式規(guī)范,以通過獲取得到的文件格式規(guī)范和樣本文件生成測試用例,由于文件格式規(guī)范和樣本文件均是針對(duì)文件格式獲取得到的,所生成的測試用例必然也是與該文件格式相對(duì)應(yīng)的。
[0051]需要說明的是,上述用于進(jìn)行樣本文件獲取和預(yù)置的文件格式規(guī)范獲取的目標(biāo)文件并不僅限于當(dāng)前即將進(jìn)行安全測試的文件,也可以是當(dāng)前不需要進(jìn)行安全測試的文件,只需要針對(duì)不同文件格式獲取其對(duì)應(yīng)的樣本文件和預(yù)置的文件格式規(guī)范,進(jìn)而生成不同文件格式所對(duì)應(yīng)的測試用例即可。
[0052]根據(jù)對(duì)目標(biāo)文件的安全測試需求,將得到需要進(jìn)行安全測試的若干個(gè)目標(biāo)文件所對(duì)應(yīng)的文件格式。針對(duì)每一種文件格式獲取對(duì)應(yīng)的樣本文件和文件格式規(guī)范,通過獲取的樣本文件和文件格式規(guī)范生成對(duì)應(yīng)的測試用例,進(jìn)而得到每一種文件格式所對(duì)應(yīng)的測試用例,以使用對(duì)該文件格式的目標(biāo)文件進(jìn)行安全性測試。
[0053]具體的,文件格式規(guī)范是對(duì)文件中數(shù)據(jù)的描述,例如,文件由哪幾部分構(gòu)成等信肩、O
[0054]在一個(gè)實(shí)施例中,上述步驟S230的具體過程為:根據(jù)預(yù)置的文件格式規(guī)范解析樣本文件,對(duì)樣本文件中的字段進(jìn)行變異處理得到相應(yīng)的測試用例。
[0055]本實(shí)施例中,預(yù)先設(shè)置樣本文件的變異規(guī)則。根據(jù)預(yù)置的文件格式規(guī)范解析樣本文件,以得到樣本文件中的字段,此時(shí),將根據(jù)預(yù)先設(shè)置的變異規(guī)則對(duì)解析得到的樣本文件中的字段進(jìn)行變異處理,以生成測試用例,即畸形樣本。樣本文件中進(jìn)行變異處理的字段將是對(duì)應(yīng)文件格式的脆弱點(diǎn),例如,該脆弱點(diǎn)可以是文件頭的大小、文件中某個(gè)結(jié)構(gòu)的大小以及某個(gè)結(jié)構(gòu)的字符串等。
[0056]例如,若樣本文件中的某一字段為字符串,則根據(jù)預(yù)先設(shè)置的變異規(guī)則篡改該字符串為超長字符串;若樣本文件中的某一字段為數(shù)字,則根據(jù)預(yù)先設(shè)置的變異規(guī)則將這一數(shù)字篡改為超大數(shù)字。
[0057]在一個(gè)實(shí)施例中,上述測試用例的生成、目標(biāo)文件的運(yùn)行以及測試用例的打開和監(jiān)視均可通過一定的測試工具實(shí)現(xiàn),在優(yōu)選的實(shí)施例中,該測試工具為Peach工具。
[0058]在一個(gè)實(shí)施例中,上述步驟S150的具體過程為:運(yùn)行測試用例,通過測試用例中的變異數(shù)據(jù)對(duì)目標(biāo)文件進(jìn)行漏洞查找,以捕捉得到目標(biāo)文件的漏洞。
[0059]本實(shí)施例中,測試用例中的變異數(shù)據(jù)即為樣本文件中根據(jù)變異規(guī)則對(duì)字段進(jìn)行變性處理所得到的數(shù)據(jù),測試用例是由變異數(shù)據(jù)形成的。
[0060]通過目標(biāo)文件打開并運(yùn)行對(duì)應(yīng)的測試用例,監(jiān)視目標(biāo)文件采用測試用例中的變異數(shù)據(jù)進(jìn)行運(yùn)行的過程中是否出現(xiàn)異常,若是,則根據(jù)該變異數(shù)據(jù)定位目標(biāo)文件中產(chǎn)生異常的位置,該位置即為目標(biāo)文件的漏洞。
[0061]在另一個(gè)實(shí)施例中,上述步驟S150之后,該方法還