王希忠+++黃俊強(qiáng)
【摘要】漏洞挖掘是網(wǎng)絡(luò)攻防技術(shù)的重要組成部分。首先介紹了漏洞的概念、漏洞的成因、漏洞的主要分類以及漏洞挖掘一般流程,然后研究了補(bǔ)丁分析和測(cè)試技術(shù)兩種漏洞挖掘方法,重點(diǎn)對(duì)二進(jìn)制補(bǔ)丁比較、白盒測(cè)試、黑盒測(cè)試等具體漏洞挖掘技術(shù)進(jìn)行了分析,比較了各種漏洞挖掘技術(shù)的優(yōu)缺點(diǎn)。
【關(guān)鍵詞】漏洞;漏洞挖掘;測(cè)試技術(shù)
1引言
目前,無論從國(guó)家層面的網(wǎng)絡(luò)安全戰(zhàn)略還是社會(huì)層面的信息安全防護(hù),安全漏洞已成為信息對(duì)抗雙方博弈的核心問題之一。然而,針對(duì)具體安全漏洞, 安全研究者往往進(jìn)行大量的重復(fù)工作, 研究效率和效果上也有相當(dāng)?shù)木窒扌浴R虼?,?yīng)該加大對(duì)漏洞挖掘的研究力度,以便對(duì)各類漏洞采取更為主動(dòng)合理的處理方式。
2漏洞的概念及分類
2.1什么是漏洞
任何系統(tǒng)和軟件的運(yùn)行都會(huì)假定一個(gè)安全域,這個(gè)安全域是由安全策略規(guī)定的,在該域內(nèi)的任何操作都是安全的、可控的,一旦超出了該域或者違反了安全策略,系統(tǒng)或者軟件的運(yùn)行就是不可控的、未知的。漏洞是由安全域切換到非安全域的觸發(fā)點(diǎn),即在計(jì)算機(jī)安全領(lǐng)域因設(shè)計(jì)不周而導(dǎo)致的系統(tǒng)或軟件存在的缺陷,從而可以使攻擊者在非授權(quán)的情況下訪問或者破壞系統(tǒng)。漏洞是靜態(tài)的、被動(dòng)的,但是可觸發(fā)的。
2.2漏洞的分類
每一個(gè)漏洞都有多個(gè)特征,而根據(jù)不同的特征可以將漏洞按照不同的方式分類。一般情況下,漏洞信息應(yīng)包括漏洞名稱、漏洞成因、漏洞級(jí)別、漏洞影響、受影響的系統(tǒng)、漏洞解決方案、漏洞利用類型和漏洞利用方法等。本文根據(jù)漏洞的成因?qū)β┒催M(jìn)行分類,具體可分為:
緩沖區(qū)溢出錯(cuò)誤(Buffer Overflow),未對(duì)輸入緩沖區(qū)的數(shù)據(jù)進(jìn)行長(zhǎng)度和格式的驗(yàn)證;
輸入驗(yàn)證錯(cuò)誤(Input Validation Error),未對(duì)用戶輸入的數(shù)據(jù)進(jìn)行合法性驗(yàn)證;
邊界條件錯(cuò)誤(Boundary Condition Error),未對(duì)邊界條件進(jìn)行有效性驗(yàn)證;
訪問驗(yàn)證錯(cuò)誤(Access Validation Error),訪問驗(yàn)證存在邏輯上的錯(cuò)誤;
意外條件錯(cuò)誤(Exceptional Condition Error),程序邏輯未考慮意外和特例;
配置錯(cuò)誤(Configuration Error),系統(tǒng)或軟件的參數(shù)或策略配置錯(cuò)誤;
其他錯(cuò)誤(Others)。
3漏洞挖掘技術(shù)的概念及分類
漏洞的研究主要分為漏洞挖掘與漏洞分析兩部分。漏洞挖掘技術(shù)是指對(duì)未知漏洞的探索,綜合應(yīng)用各種技術(shù)和工具,盡可能地找出軟件中的潛在漏洞。然而這并非一件很容易的事情,在很大程度上依賴于個(gè)人經(jīng)驗(yàn)。根據(jù)分析對(duì)象的不同,漏洞挖掘技術(shù)可以分為基于源碼的漏洞挖掘技術(shù)和基于目標(biāo)代碼的漏洞挖掘技術(shù)。
基于源碼的漏洞挖掘的前提是必須能獲取源代碼,對(duì)于一些開源項(xiàng)目,通過分析其公布的源代碼,就可能找到存在的漏洞。例如對(duì)Linux系統(tǒng)的漏洞挖掘就可采用這種方法。使用源碼審核技術(shù),對(duì)軟件的源代碼進(jìn)行掃描,針對(duì)不安全的庫(kù)函數(shù)使用以及內(nèi)存操作進(jìn)行語義上的檢查,從而發(fā)現(xiàn)安全漏洞,靜態(tài)分析技術(shù)是其中的典型技術(shù)。
然而大多數(shù)的商業(yè)軟件其源碼很難獲得,不能從源碼的角度進(jìn)行漏洞挖掘,只能采用基于目標(biāo)代碼的漏洞挖掘技術(shù)。對(duì)目標(biāo)碼進(jìn)行分析涉及編譯器、指令系統(tǒng)、可執(zhí)行文件格式等多方面的知識(shí),難度較大?;谀繕?biāo)代碼的漏洞挖掘首先將要分析的二進(jìn)制目標(biāo)代碼反匯編,得到匯編代碼;然后對(duì)匯編代碼進(jìn)行切片,即對(duì)某些上下文關(guān)聯(lián)密切有意義的代碼進(jìn)行匯聚,降低其復(fù)雜性;最后通過分析功能模塊來判斷是否存在漏洞。
4漏洞挖掘一般流程
M. Sutton 等提出了模糊(Fuzzing)測(cè)試的一般流程,他將模糊測(cè)試的流程劃分為識(shí)別目標(biāo)、識(shí)別輸入、生成模糊測(cè)試數(shù)據(jù)、執(zhí)行模糊測(cè)試數(shù)據(jù)、監(jiān)視異常、確定可利用性等六個(gè)流程,如圖 1左側(cè)所示。文獻(xiàn)[4]提出的漏洞挖掘流程如圖1右側(cè)所示。
5常見的漏洞挖掘方法
目前,還不存在漏洞自動(dòng)挖掘的解決方案,更沒有漏洞自動(dòng)挖掘程序,只有一些漏洞挖掘的思路、方法和漏洞挖掘的輔助工具,主要以人工分析為主,漏洞挖掘在很大程度上是個(gè)人行為,漏洞挖掘的思路和方法因人而異,但漏洞挖掘的方法還是有跡可尋的,歸納起來,漏洞挖掘方法主要有二進(jìn)制比對(duì)技術(shù)即補(bǔ)丁比較和測(cè)試技術(shù)兩種。
5.1二進(jìn)制比對(duì)技術(shù)
二進(jìn)制比對(duì)技術(shù)又可稱為補(bǔ)丁比對(duì)技術(shù),它主要是被用以挖掘已經(jīng)發(fā)現(xiàn)的漏洞,因此在一定意義上也可被認(rèn)為是一種漏洞分析技術(shù)。由于安全公告中一般都不指明漏洞的確切位置和成因,使得漏洞的有效利用比較困難。但漏洞一般都有相應(yīng)的補(bǔ)丁,所以可以通過比較補(bǔ)丁前后的二進(jìn)制文件,確定漏洞的位置和成因。補(bǔ)丁比較主要包括源碼補(bǔ)丁比較和二進(jìn)制補(bǔ)丁比較兩種。
5.1.1 源碼補(bǔ)丁比較
源碼補(bǔ)丁比較主要是針對(duì)開源軟件或系統(tǒng),例如Linux等。當(dāng)有漏洞出現(xiàn)后官方會(huì)發(fā)布源碼補(bǔ)丁文件。采取逐行對(duì)比的方式,比較補(bǔ)丁前和補(bǔ)丁后的文本文件的異同處,以發(fā)現(xiàn)源碼的不同處,進(jìn)而找到漏洞產(chǎn)生的原因。以下是一個(gè)有漏洞的程序:
#include
Int main(int argc, char*argv[])
{char buff[16];
if(argc>1)
{ Strcpy(buff, argv[1]);
}
printf(“buff is %s\n”, buff)
return();
}
下面是對(duì)上述程序修補(bǔ)漏洞后的版本:
#include
Int main(int argc, char*argv[])
{char buff[16];
if(argc>1)
{if(,strlen(argv[1]>15);
return();
strcpy(buff, argv[1]);
}
printf(“buff is %s\n”, buff);
return();
}
將兩個(gè)源程序進(jìn)行對(duì)比以后可以得出如下結(jié)果:
If(strlen(argv[1])>15);
return();
可以看出,在程序的原版本中沒有判斷而直接進(jìn)行字符串拷貝, 這就存在緩沖區(qū)溢出漏洞,而修補(bǔ)漏洞后的版本中增加的代碼是判斷傳入?yún)?shù)的字符長(zhǎng)度,這就避免了此類緩沖區(qū)溢出漏洞。
由此可以看出,只要找到程序的不同之處,并代人源程序分析,就可以定位漏洞的位置并查明漏洞的機(jī)理。
5.1.2 二進(jìn)制補(bǔ)丁比較
目前常用的二進(jìn)制補(bǔ)丁比對(duì)方法主要分為三類。
(1) 基于文本的比對(duì)。基于文本的比對(duì)是最為簡(jiǎn)單的一種補(bǔ)丁比對(duì)方式,通過對(duì)兩個(gè)二進(jìn)制文件(補(bǔ)丁前和補(bǔ)丁后)進(jìn)行對(duì)比,對(duì)文件比對(duì)中出現(xiàn)的任何一點(diǎn)差異,都不做處理地寫人結(jié)果之中。這種方法的后果是最后輸出的結(jié)果范圍很大,容易出現(xiàn)極多的誤報(bào)情況,漏洞定位精度極差,且結(jié)果不容易被漏洞分析人員理解,因此僅適用于文件中產(chǎn)生變化較少的情況。
(2) 基于匯編指令的比對(duì)?;趨R編指令的二進(jìn)制文件比對(duì)是先對(duì)二進(jìn)制文件進(jìn)行反匯編,然后將兩個(gè)反匯編之后的文件進(jìn)行對(duì)比,具有代表性的工具如eEye發(fā)布的EBDS (eEye Binary Diffing Suite)軟件工具中的Binary Diffing Starter。這種方式雖然較直接的二進(jìn)制文本比對(duì)要進(jìn)步,比對(duì)結(jié)果更容易被分析人員理解, 但是仍然存在輸出結(jié)果范圍大,誤報(bào)情況多和漏洞定位不精確的缺點(diǎn)。更重要的是基于匯編指令的補(bǔ)丁比對(duì)方法很容易受編譯器編譯優(yōu)化的影響,結(jié)果會(huì)變得非常復(fù)雜。
(3)基于結(jié)構(gòu)化的比對(duì)。基于結(jié)構(gòu)化比對(duì)的方法是Halva Flake在2004年提出的,這種方法的基本思想是:給定兩個(gè)待比對(duì)的文件A1和A2, 將A1和A2的所有函數(shù)用控制流圖來表示,通過比對(duì)兩個(gè)圖是否同構(gòu)來建立函數(shù)之間一對(duì)一的映射。該方法從邏輯結(jié)構(gòu)的層次上對(duì)補(bǔ)丁文件進(jìn)行了分析,但當(dāng)待比對(duì)兩個(gè)二進(jìn)制文件較大時(shí),由于提取簽名信息、進(jìn)行結(jié)構(gòu)化比對(duì)的運(yùn)算量和存儲(chǔ)量非常巨大,程序的執(zhí)行效率非常低。D.Brumley等人在此基礎(chǔ)上,提出了基于程序控制流程圖(CFG )的約束規(guī)約分析方法,一定程度上提高了漏洞定位精度??傊壳盎诮Y(jié)構(gòu)化的補(bǔ)丁比對(duì)在執(zhí)行效率和漏洞定位的精確性方面還存在很大的發(fā)展空間。
5.2測(cè)試技術(shù)
5.2.1 白盒測(cè)試
白盒測(cè)試是基于源碼的測(cè)試技術(shù),直接面對(duì)程序中的數(shù)據(jù)和算法,進(jìn)行控制流分析和數(shù)據(jù)流分析。在此需要說明的是,很多漏洞都是數(shù)據(jù)和算法共同造成的,并非單是數(shù)據(jù)或者算法的原因??刂屏鞣治鲆话阋贸龀绦虻目刂屏鲌D,就是程序的調(diào)用、跳轉(zhuǎn)結(jié)構(gòu),是程序從入口到出口的路徑圖。數(shù)據(jù)流分析一般是跟蹤數(shù)據(jù)的產(chǎn)生、傳輸、處理和存儲(chǔ)等。在安全性測(cè)試的應(yīng)用中,這兩種分析方法應(yīng)該結(jié)合。下面以針對(duì)數(shù)組越界的測(cè)試進(jìn)行分析。
數(shù)組是程序語言中一種數(shù)據(jù)類型,它的數(shù)據(jù)在內(nèi)存中連續(xù)存放。數(shù)組變量所擁有的內(nèi)存空間可以在程序運(yùn)行前確定,也可以在程序運(yùn)行時(shí)動(dòng)態(tài)決定。然而如果數(shù)組的賦值或引用長(zhǎng)度超出分配長(zhǎng)度,就會(huì)導(dǎo)致程序異常。這種異常一方面是由于程序員的錯(cuò)誤編碼造成的,另一方面是由于一些弱函數(shù),例如strcpy、strcat、memcpy等造成的。這種情況下,要跟蹤數(shù)組變量的定義、賦值、引用等,此外還要考慮這些變量所在的環(huán)境和上下文,例如在strcpy之前,如果已經(jīng)作了長(zhǎng)度檢測(cè)(比如調(diào)用了strlen), 就不會(huì)出現(xiàn)數(shù)組越界的情況。如果說針對(duì)C/C++的源碼對(duì)strcpy或strlen作跟蹤是屬于數(shù)據(jù)流分析的話,那么為了處理數(shù)組變量程序的各種調(diào)用和跳轉(zhuǎn)就屬于控制流分析了。如果源碼是C/ C++語言,需要進(jìn)行預(yù)編譯、詞法分析和語法分析,得出控制流圖,然后在每個(gè)分支上跟蹤數(shù)組變量。
總之, 白盒測(cè)試是基于源碼的,也就是在人可以理解程序或者測(cè)試工具可以理解程序的條件下,對(duì)程序安全性進(jìn)行測(cè)試。這種測(cè)試其實(shí)是一種對(duì)已有漏洞模式的匹配,只可能發(fā)現(xiàn)已知模式的漏洞,而對(duì)于未知模式無能為力。同時(shí),這種測(cè)試還會(huì)產(chǎn)生誤報(bào)。對(duì)這種測(cè)試而言,了解的程序細(xì)節(jié)越詳細(xì)測(cè)試的結(jié)果也就越準(zhǔn)確。本文認(rèn)為,基于白盒測(cè)試技術(shù)的安全性測(cè)試關(guān)注的是數(shù)據(jù)操作和算法邏輯,對(duì)這兩方面進(jìn)行跟蹤、抽象和分析,然后去匹配已知的不安全模式,而得出結(jié)論。
5.2.2 黑盒測(cè)試
在軟件的設(shè)計(jì)和開發(fā)過程中,無論是設(shè)計(jì)者還是開發(fā)者都會(huì)作一個(gè)隱含假設(shè),即軟件存在輸入域,用戶的輸入會(huì)限定在該輸入域中。然而在軟件的實(shí)際應(yīng)用中,沒有可以將用戶的輸入限制在一定范圍內(nèi)的機(jī)制,特別是一些惡意用戶,他們會(huì)通過各種方法尋找輸入域之外值,以期發(fā)現(xiàn)軟件的漏洞。黑盒測(cè)試就是利用各種輸入對(duì)程序進(jìn)行探測(cè),并對(duì)運(yùn)行程序進(jìn)行分析,以期發(fā)現(xiàn)系統(tǒng)漏洞的測(cè)試技術(shù)。這種測(cè)試技術(shù)僅僅需要運(yùn)行的程序而不需要分析任何源代碼,測(cè)試者對(duì)軟件內(nèi)部一無所知,但是清楚地知道軟件能做什么,能夠?qū)Τ绦蚧谳斎牒洼敵龅年P(guān)聯(lián)性進(jìn)行分析。
黑盒測(cè)試最關(guān)鍵的問題是測(cè)試數(shù)據(jù)的選取。既然知道軟件能做什么,那么也就大概知道該軟件的安全輸入域的范圍。所以測(cè)試最好是選擇軟件安全輸入域之外的數(shù)據(jù)。當(dāng)然這還是不夠的,測(cè)試人員必須有知識(shí)和經(jīng)驗(yàn)的積累,例如,溢出漏洞在漏洞總量中占了很大比例,并且這類漏洞多是由特殊字符或者超長(zhǎng)字符串導(dǎo)致的,如果分析總結(jié)以往溢出漏洞的利用方法,研究這些超長(zhǎng)字符或者特殊字符串的構(gòu)造方式,同樣有利于測(cè)試數(shù)據(jù)的選取。endprint
黑盒測(cè)試的步驟是這樣的:首先,分析相同領(lǐng)域或者相似軟件的安全問題,歸納總結(jié)出一些規(guī)則或者模板;其次根據(jù)規(guī)則或模板構(gòu)造測(cè)試數(shù)據(jù)對(duì)軟件進(jìn)行測(cè)試;再次驗(yàn)證軟件輸出的正確性;最后確定一些疑似的漏洞點(diǎn)??傊?,黑盒測(cè)試屬于功能測(cè)試,對(duì)程序內(nèi)部不予考慮。這種測(cè)試更像是一次攻擊,也可以較直接地測(cè)出一些問題,但缺點(diǎn)是測(cè)試數(shù)據(jù)不好選擇,很難窮盡軟件的所有可能輸人。
5.2.3 灰盒測(cè)試
灰盒測(cè)試綜合了白盒測(cè)試和黑盒測(cè)試的優(yōu)點(diǎn)?;液袦y(cè)試表現(xiàn)為與黑盒測(cè)試相似的形式,然而測(cè)試者具有程序的先驗(yàn)知識(shí),它對(duì)于程序的結(jié)構(gòu)和數(shù)據(jù)流都有一定的認(rèn)識(shí)。這種測(cè)試可以直接針對(duì)數(shù)據(jù)流中感興趣的邊界情況進(jìn)行測(cè)試,從而比黑盒測(cè)試更高效。典型的灰盒測(cè)試有二進(jìn)制分析,二進(jìn)制分析往往首先通過逆向過程(ReversEngineering,RE )來獲得程序的先驗(yàn)知識(shí),然后通過反編譯器、反匯編器等輔助工具確定有可能出現(xiàn)漏洞的行,反向追蹤以確定是否有利用的可能性。常用的反匯編器有IDA Pro,反編譯器有Boomerang,調(diào)試器有OllyDbg、WinDbg等?;液袦y(cè)試具有比黑盒測(cè)試更好的覆蓋性,然而逆向工程非常復(fù)雜, 要求熟悉匯編語言、可執(zhí)行文件格式、編譯器操作、操作系統(tǒng)內(nèi)部原理以及其他各種各樣的底層技巧。
5.2.4結(jié)束語
無論是黑盒測(cè)試、白盒測(cè)試還是灰盒測(cè)試得到的都是一些漏洞的疑似點(diǎn),至于這些疑似點(diǎn)是否是漏洞,還需要人工分析。但是使用這些技術(shù)來輔助發(fā)現(xiàn)漏洞是必要的,節(jié)省了大量的人力,將人員的精力轉(zhuǎn)移到分析幾個(gè)疑似漏洞點(diǎn)上。白盒測(cè)試的難點(diǎn)是如何有效分析軟件的數(shù)據(jù)操作和算法邏輯,如何判定一個(gè)漏洞; 黑盒測(cè)試的難點(diǎn)是測(cè)試數(shù)據(jù)的選取,這一部分需要經(jīng)驗(yàn)和知識(shí)積累;灰盒測(cè)試的難度在于逆向工程非常復(fù)雜,對(duì)測(cè)試人員的專業(yè)水平要求較高。
6結(jié)束語
漏洞挖掘是網(wǎng)絡(luò)攻防技術(shù)的重要組成部分。本文介紹了漏洞的概念、漏洞的成因、漏洞挖掘流程等,重點(diǎn)研究了幾種常見的漏洞挖掘方法,各種方法都有其優(yōu)缺點(diǎn),在實(shí)際的工作中,漏洞挖掘并不單純的只使用一種方法,而是多種分析技術(shù)相互結(jié)合、優(yōu)勢(shì)互補(bǔ)的綜合運(yùn)用過程。
參考文獻(xiàn)
[1] 王豐輝. 漏洞相關(guān)技術(shù)研究[D]. 北京: 北京郵電大學(xué), 2009.
[2] 袁江. 基于CVE 知識(shí)庫(kù)的危急漏洞挖掘與分析技術(shù)研究[D]. 哈爾濱: 哈爾濱理工大學(xué), 2008.
[3] 遲強(qiáng), 羅紅, 喬向東. 漏洞挖掘分析技術(shù)綜述[J]. 計(jì)算機(jī)與信息技術(shù), 2009(07).
[4] 徐良華, 孫玉龍,高豐等. 基于逆向工程的軟件漏洞挖掘技術(shù)[J]. 微計(jì)算機(jī)信息, 2006, 22(8-3).
[5] SUTTON M, GREEN A, AMINI P. Fuzzing: Bruce Force Vulnerability Discovery[M]. Addison-Wesley Professional, 2007.8-15.
[6] 文偉平, 吳興麗. 軟件安全漏洞挖掘的研究思路與發(fā)展趨勢(shì)[J]. 信息網(wǎng)絡(luò)安全, 2009, 27(10)78-81.
作者簡(jiǎn)介:
王希忠(1968-),男,漢族,哈爾濱工程大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)專業(yè),碩士研究生,現(xiàn)任黑龍江省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院院長(zhǎng),研究員級(jí)高工,黑龍江省“數(shù)據(jù)安全與計(jì)算機(jī)安全”領(lǐng)軍人才梯隊(duì)帶頭人;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)與信息安全、物聯(lián)網(wǎng)、信息系統(tǒng)風(fēng)險(xiǎn)評(píng)估等。
黃俊強(qiáng)(1974-),男,漢族,沈陽工業(yè)學(xué)院,本科,黑龍江省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院,信息安全測(cè)評(píng)中心主任,高級(jí)工程師;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)與信息安全、風(fēng)險(xiǎn)評(píng)估與等級(jí)保護(hù)測(cè)評(píng)。endprint
黑盒測(cè)試的步驟是這樣的:首先,分析相同領(lǐng)域或者相似軟件的安全問題,歸納總結(jié)出一些規(guī)則或者模板;其次根據(jù)規(guī)則或模板構(gòu)造測(cè)試數(shù)據(jù)對(duì)軟件進(jìn)行測(cè)試;再次驗(yàn)證軟件輸出的正確性;最后確定一些疑似的漏洞點(diǎn)??傊诤袦y(cè)試屬于功能測(cè)試,對(duì)程序內(nèi)部不予考慮。這種測(cè)試更像是一次攻擊,也可以較直接地測(cè)出一些問題,但缺點(diǎn)是測(cè)試數(shù)據(jù)不好選擇,很難窮盡軟件的所有可能輸人。
5.2.3 灰盒測(cè)試
灰盒測(cè)試綜合了白盒測(cè)試和黑盒測(cè)試的優(yōu)點(diǎn)。灰盒測(cè)試表現(xiàn)為與黑盒測(cè)試相似的形式,然而測(cè)試者具有程序的先驗(yàn)知識(shí),它對(duì)于程序的結(jié)構(gòu)和數(shù)據(jù)流都有一定的認(rèn)識(shí)。這種測(cè)試可以直接針對(duì)數(shù)據(jù)流中感興趣的邊界情況進(jìn)行測(cè)試,從而比黑盒測(cè)試更高效。典型的灰盒測(cè)試有二進(jìn)制分析,二進(jìn)制分析往往首先通過逆向過程(ReversEngineering,RE )來獲得程序的先驗(yàn)知識(shí),然后通過反編譯器、反匯編器等輔助工具確定有可能出現(xiàn)漏洞的行,反向追蹤以確定是否有利用的可能性。常用的反匯編器有IDA Pro,反編譯器有Boomerang,調(diào)試器有OllyDbg、WinDbg等?;液袦y(cè)試具有比黑盒測(cè)試更好的覆蓋性,然而逆向工程非常復(fù)雜, 要求熟悉匯編語言、可執(zhí)行文件格式、編譯器操作、操作系統(tǒng)內(nèi)部原理以及其他各種各樣的底層技巧。
5.2.4結(jié)束語
無論是黑盒測(cè)試、白盒測(cè)試還是灰盒測(cè)試得到的都是一些漏洞的疑似點(diǎn),至于這些疑似點(diǎn)是否是漏洞,還需要人工分析。但是使用這些技術(shù)來輔助發(fā)現(xiàn)漏洞是必要的,節(jié)省了大量的人力,將人員的精力轉(zhuǎn)移到分析幾個(gè)疑似漏洞點(diǎn)上。白盒測(cè)試的難點(diǎn)是如何有效分析軟件的數(shù)據(jù)操作和算法邏輯,如何判定一個(gè)漏洞; 黑盒測(cè)試的難點(diǎn)是測(cè)試數(shù)據(jù)的選取,這一部分需要經(jīng)驗(yàn)和知識(shí)積累;灰盒測(cè)試的難度在于逆向工程非常復(fù)雜,對(duì)測(cè)試人員的專業(yè)水平要求較高。
6結(jié)束語
漏洞挖掘是網(wǎng)絡(luò)攻防技術(shù)的重要組成部分。本文介紹了漏洞的概念、漏洞的成因、漏洞挖掘流程等,重點(diǎn)研究了幾種常見的漏洞挖掘方法,各種方法都有其優(yōu)缺點(diǎn),在實(shí)際的工作中,漏洞挖掘并不單純的只使用一種方法,而是多種分析技術(shù)相互結(jié)合、優(yōu)勢(shì)互補(bǔ)的綜合運(yùn)用過程。
參考文獻(xiàn)
[1] 王豐輝. 漏洞相關(guān)技術(shù)研究[D]. 北京: 北京郵電大學(xué), 2009.
[2] 袁江. 基于CVE 知識(shí)庫(kù)的危急漏洞挖掘與分析技術(shù)研究[D]. 哈爾濱: 哈爾濱理工大學(xué), 2008.
[3] 遲強(qiáng), 羅紅, 喬向東. 漏洞挖掘分析技術(shù)綜述[J]. 計(jì)算機(jī)與信息技術(shù), 2009(07).
[4] 徐良華, 孫玉龍,高豐等. 基于逆向工程的軟件漏洞挖掘技術(shù)[J]. 微計(jì)算機(jī)信息, 2006, 22(8-3).
[5] SUTTON M, GREEN A, AMINI P. Fuzzing: Bruce Force Vulnerability Discovery[M]. Addison-Wesley Professional, 2007.8-15.
[6] 文偉平, 吳興麗. 軟件安全漏洞挖掘的研究思路與發(fā)展趨勢(shì)[J]. 信息網(wǎng)絡(luò)安全, 2009, 27(10)78-81.
作者簡(jiǎn)介:
王希忠(1968-),男,漢族,哈爾濱工程大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)專業(yè),碩士研究生,現(xiàn)任黑龍江省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院院長(zhǎng),研究員級(jí)高工,黑龍江省“數(shù)據(jù)安全與計(jì)算機(jī)安全”領(lǐng)軍人才梯隊(duì)帶頭人;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)與信息安全、物聯(lián)網(wǎng)、信息系統(tǒng)風(fēng)險(xiǎn)評(píng)估等。
黃俊強(qiáng)(1974-),男,漢族,沈陽工業(yè)學(xué)院,本科,黑龍江省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院,信息安全測(cè)評(píng)中心主任,高級(jí)工程師;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)與信息安全、風(fēng)險(xiǎn)評(píng)估與等級(jí)保護(hù)測(cè)評(píng)。endprint
黑盒測(cè)試的步驟是這樣的:首先,分析相同領(lǐng)域或者相似軟件的安全問題,歸納總結(jié)出一些規(guī)則或者模板;其次根據(jù)規(guī)則或模板構(gòu)造測(cè)試數(shù)據(jù)對(duì)軟件進(jìn)行測(cè)試;再次驗(yàn)證軟件輸出的正確性;最后確定一些疑似的漏洞點(diǎn)??傊诤袦y(cè)試屬于功能測(cè)試,對(duì)程序內(nèi)部不予考慮。這種測(cè)試更像是一次攻擊,也可以較直接地測(cè)出一些問題,但缺點(diǎn)是測(cè)試數(shù)據(jù)不好選擇,很難窮盡軟件的所有可能輸人。
5.2.3 灰盒測(cè)試
灰盒測(cè)試綜合了白盒測(cè)試和黑盒測(cè)試的優(yōu)點(diǎn)?;液袦y(cè)試表現(xiàn)為與黑盒測(cè)試相似的形式,然而測(cè)試者具有程序的先驗(yàn)知識(shí),它對(duì)于程序的結(jié)構(gòu)和數(shù)據(jù)流都有一定的認(rèn)識(shí)。這種測(cè)試可以直接針對(duì)數(shù)據(jù)流中感興趣的邊界情況進(jìn)行測(cè)試,從而比黑盒測(cè)試更高效。典型的灰盒測(cè)試有二進(jìn)制分析,二進(jìn)制分析往往首先通過逆向過程(ReversEngineering,RE )來獲得程序的先驗(yàn)知識(shí),然后通過反編譯器、反匯編器等輔助工具確定有可能出現(xiàn)漏洞的行,反向追蹤以確定是否有利用的可能性。常用的反匯編器有IDA Pro,反編譯器有Boomerang,調(diào)試器有OllyDbg、WinDbg等?;液袦y(cè)試具有比黑盒測(cè)試更好的覆蓋性,然而逆向工程非常復(fù)雜, 要求熟悉匯編語言、可執(zhí)行文件格式、編譯器操作、操作系統(tǒng)內(nèi)部原理以及其他各種各樣的底層技巧。
5.2.4結(jié)束語
無論是黑盒測(cè)試、白盒測(cè)試還是灰盒測(cè)試得到的都是一些漏洞的疑似點(diǎn),至于這些疑似點(diǎn)是否是漏洞,還需要人工分析。但是使用這些技術(shù)來輔助發(fā)現(xiàn)漏洞是必要的,節(jié)省了大量的人力,將人員的精力轉(zhuǎn)移到分析幾個(gè)疑似漏洞點(diǎn)上。白盒測(cè)試的難點(diǎn)是如何有效分析軟件的數(shù)據(jù)操作和算法邏輯,如何判定一個(gè)漏洞; 黑盒測(cè)試的難點(diǎn)是測(cè)試數(shù)據(jù)的選取,這一部分需要經(jīng)驗(yàn)和知識(shí)積累;灰盒測(cè)試的難度在于逆向工程非常復(fù)雜,對(duì)測(cè)試人員的專業(yè)水平要求較高。
6結(jié)束語
漏洞挖掘是網(wǎng)絡(luò)攻防技術(shù)的重要組成部分。本文介紹了漏洞的概念、漏洞的成因、漏洞挖掘流程等,重點(diǎn)研究了幾種常見的漏洞挖掘方法,各種方法都有其優(yōu)缺點(diǎn),在實(shí)際的工作中,漏洞挖掘并不單純的只使用一種方法,而是多種分析技術(shù)相互結(jié)合、優(yōu)勢(shì)互補(bǔ)的綜合運(yùn)用過程。
參考文獻(xiàn)
[1] 王豐輝. 漏洞相關(guān)技術(shù)研究[D]. 北京: 北京郵電大學(xué), 2009.
[2] 袁江. 基于CVE 知識(shí)庫(kù)的危急漏洞挖掘與分析技術(shù)研究[D]. 哈爾濱: 哈爾濱理工大學(xué), 2008.
[3] 遲強(qiáng), 羅紅, 喬向東. 漏洞挖掘分析技術(shù)綜述[J]. 計(jì)算機(jī)與信息技術(shù), 2009(07).
[4] 徐良華, 孫玉龍,高豐等. 基于逆向工程的軟件漏洞挖掘技術(shù)[J]. 微計(jì)算機(jī)信息, 2006, 22(8-3).
[5] SUTTON M, GREEN A, AMINI P. Fuzzing: Bruce Force Vulnerability Discovery[M]. Addison-Wesley Professional, 2007.8-15.
[6] 文偉平, 吳興麗. 軟件安全漏洞挖掘的研究思路與發(fā)展趨勢(shì)[J]. 信息網(wǎng)絡(luò)安全, 2009, 27(10)78-81.
作者簡(jiǎn)介:
王希忠(1968-),男,漢族,哈爾濱工程大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)專業(yè),碩士研究生,現(xiàn)任黑龍江省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院院長(zhǎng),研究員級(jí)高工,黑龍江省“數(shù)據(jù)安全與計(jì)算機(jī)安全”領(lǐng)軍人才梯隊(duì)帶頭人;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)與信息安全、物聯(lián)網(wǎng)、信息系統(tǒng)風(fēng)險(xiǎn)評(píng)估等。
黃俊強(qiáng)(1974-),男,漢族,沈陽工業(yè)學(xué)院,本科,黑龍江省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院,信息安全測(cè)評(píng)中心主任,高級(jí)工程師;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)與信息安全、風(fēng)險(xiǎn)評(píng)估與等級(jí)保護(hù)測(cè)評(píng)。endprint