服務(wù)器軟件漏洞測試程序的設(shè)計與實現(xiàn)_第1頁
服務(wù)器軟件漏洞測試程序的設(shè)計與實現(xiàn)_第2頁
服務(wù)器軟件漏洞測試程序的設(shè)計與實現(xiàn)_第3頁
服務(wù)器軟件漏洞測試程序的設(shè)計與實現(xiàn)_第4頁
服務(wù)器軟件漏洞測試程序的設(shè)計與實現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、服務(wù)器軟件漏洞測試程序的設(shè)計與實現(xiàn)    摘要:服務(wù)器軟件漏洞是導(dǎo)致網(wǎng)絡(luò)不安全的重要因素,當前還沒有什么方法能保證服務(wù)器軟件沒有漏洞,因此漏洞測試在網(wǎng)絡(luò)安全方面占有重要地位。本文給出了一個通用漏洞測試程序的設(shè)計與實現(xiàn),設(shè)計方案采用腳本、樣本包及動態(tài)鏈接庫技術(shù),使得測試程序與協(xié)議無關(guān),提高了通用性。關(guān)鍵詞:網(wǎng)絡(luò)安全;  漏洞測試;  樣本包;  動態(tài)鏈接庫網(wǎng)絡(luò)安全是當前的熱門話題,互聯(lián)網(wǎng)安全性差的重要表現(xiàn)是服務(wù)器軟件大多存在漏洞,黑客的入侵行為大多是利用服務(wù)器漏洞實現(xiàn)的?,F(xiàn)在,每天都有新的服務(wù)器軟件出現(xiàn),但這些軟件基本上都存在

2、著漏洞,按照傳統(tǒng)的測試方法,依靠測試人員去分析代碼來完成測試,顯然是滿足不了需求的。網(wǎng)絡(luò)服務(wù)器軟件的漏洞測試是一個十分重要的問題,設(shè)計一個較為自動化、通用的漏洞測試工具是十分必要的。一般漏洞研究方法是先熟悉軟件功能,分析服務(wù)協(xié)議,檢查程序代碼,然后再推測什么情況下會出現(xiàn)漏洞。這是一個工作量很大的過程,而且開發(fā)出來的測試程序也是針對特定軟件,不能通用。我們的測試軟件要做到通用,就要找出網(wǎng)絡(luò)服務(wù)器軟件的共同特性,采用易于配置,易于擴展的結(jié)構(gòu)。1.網(wǎng)絡(luò)服務(wù)的共性及漏洞產(chǎn)生原因網(wǎng)絡(luò)服務(wù)基本上都是基于客戶機-服務(wù)器模型。       

3、                                                請求數(shù)據(jù)包2.測試程序的設(shè)計方案為了通用,測

4、試程序不能過多涉及到具體協(xié)議,而測試數(shù)據(jù)包的格式又要符合具體協(xié)議,這是一個矛盾。我們采用樣本包和動態(tài)鏈接庫的方法來解決這個矛盾。樣本包,即有代表性的數(shù)據(jù)包,依www服務(wù)為例,請求數(shù)據(jù)包“GET /pub/index.htm HTTP/1.1”可以很好的代表一類請求,就可以作為一個樣本包。如果只對這個樣本包中的某個數(shù)據(jù)域進行變換,則生成數(shù)據(jù)包的格式一般也是滿足www服務(wù)通信協(xié)議的。對于一個具體服務(wù),它的協(xié)議體現(xiàn)在通信所用的數(shù)據(jù)包中,我們可以收集一個足以體現(xiàn)該服務(wù)協(xié)議的樣本包集,采用一個腳本來描述這些樣本包,要測試不同的服務(wù)軟件,只須編寫與之對應(yīng)的腳本即可。測試程序只對腳本進行處理,不必與具體協(xié)議

5、相關(guān),也就實現(xiàn)了通用性。整個測試程序的系統(tǒng)框圖如圖2所示,測試數(shù)據(jù)包生成模塊處理腳本,生成測試數(shù)據(jù)包,發(fā)送給服務(wù)器;響應(yīng)信息分析模塊分析返回信息,并將分析結(jié)果保存在記錄文件中。    腳本           記錄文件                     

6、           圖22.1腳本腳本是對樣本包集的描述,服務(wù)器軟件的協(xié)議體現(xiàn)在腳本中。測試數(shù)據(jù)包就是對樣本包的某個域進行變換后得到的數(shù)據(jù)包。為了便于程序處理,定義了幾個關(guān)鍵字:SAMPS , 樣本包開始;ITEM , 數(shù)據(jù)項;  SAMPE ,樣本包結(jié)束; RESULT ,返回結(jié)果特征串;“ ; ”,注釋,如果一行以 “;” 打頭,則這一行是注釋行。腳本中依次列出各個樣本包,每個樣本包分成幾個數(shù)據(jù)域,每個數(shù)據(jù)域用一個數(shù)據(jù)項來表示。GET /pub/index.htm HTTP/1.

7、1的腳本描述為:SAMPSITEM COMM GET    ITEM  PATH  /pub/    ITEM  FILE  index.htmITEM  VER  HTTP/1.1RESULT   SAMPE每個數(shù)據(jù)項由三部分組成,以第一個數(shù)據(jù)項ITEMS COMMI GET 為例: ITEMS,關(guān)鍵字,標識數(shù)據(jù)項開始(每個數(shù)據(jù)項占一行,因此無須關(guān)鍵字標識數(shù)據(jù)項結(jié)束);COMM:數(shù)據(jù)項類型名,數(shù)據(jù)項類型名決定了它的變換處理函數(shù);GET: 數(shù)據(jù)項的內(nèi)容。2.2測試數(shù)

8、據(jù)包生成模塊 測試數(shù)據(jù)包生成模塊是整個測試工具的關(guān)鍵所在,只有生成最可能導(dǎo)致服務(wù)器出問題的請求數(shù)據(jù)包,才能發(fā)現(xiàn)服務(wù)器軟件的漏洞所在。但又不能產(chǎn)生過多的數(shù)據(jù)包,使得測試效率太低。從統(tǒng)計測試的角度來說,就是要生成最可能導(dǎo)致服務(wù)器出錯的數(shù)據(jù)包的樣本集。 測試數(shù)據(jù)包生成模塊對腳本的處理過程為:從腳本中讀出一個樣本包,腳本處理函數(shù)構(gòu)造描述樣本包的鏈表,鏈表的結(jié)構(gòu)為:typedef struct RULELIST     rulenode* rulelisthead;     rulenode* rulelisten

9、d;RULELIST;樣本包中的每一項為鏈表中的一個節(jié)點rulenode;結(jié)點rulenode的定義為   typedef struct _rulenod     char  type8;        /數(shù)據(jù)項類型名char item128;       /數(shù)據(jù)項內(nèi)容  _rulenode *nextnode;  /指向下一個結(jié)點的指針rulenode;構(gòu)造好鏈表后,對該樣本包里一個數(shù)

10、據(jù)項的內(nèi)容進行變換,而保持其它數(shù)據(jù)項不變,生成測試數(shù)據(jù)包,發(fā)送給服務(wù)器,分析返回信息,將測試結(jié)果寫入記錄文件,處理完該樣本包的所有數(shù)據(jù)項后,釋放鏈表,讀出下一樣本包,重復(fù)上面的處理過程,直至腳本結(jié)束。模塊中對數(shù)據(jù)項內(nèi)容進行變換的處理函數(shù)做成DLL動態(tài)鏈接庫,調(diào)用時根據(jù)數(shù)據(jù)項類型名進行調(diào)用。這樣使得該測試程序易于擴展,如果被測試軟件的數(shù)據(jù)包中有原測試程序未定義的數(shù)據(jù)項類型,只需在腳本中加入新的數(shù)據(jù)項類型, 同時將對應(yīng)的處理函數(shù)做成DLL動態(tài)鏈接庫的形式,拷貝至測試程序目錄下即可,而原有的程序一點也不必改動。2.3響應(yīng)信息分析模塊   響應(yīng)信息分析模塊主要對返回信息進行特征串搜

11、索,記錄下服務(wù)器軟件出現(xiàn)異常時的情況。特征串定義在腳本中,特征串搜索采用Boyer-Moore字符串匹配算法.如果返回信息中有匹配的字符串,就意味著服務(wù)器可能出錯.例如,IIS 返回 “The remote procedure call failed ” ,就是RPC 服務(wù)出現(xiàn)錯誤。由于很多情況下返回信息很難預(yù)料,即便采用人工智能的方法也難判斷服務(wù)器到底出了什么問題。所以響應(yīng)信息分析模塊只是檢測異常,將異常記錄下來,進一步的分析判斷還需要人工介入。    3.實現(xiàn)中的關(guān)鍵問題測試程序用vc+6.0寫成,在實現(xiàn)中有幾個關(guān)鍵問題:3.1 樣本包的獲取樣本包可

12、以通過分析網(wǎng)絡(luò)服務(wù)器軟件的協(xié)議,手工設(shè)置;也可以通過截包程序來獲得樣本包。要想得到好的測試效果,這兩種方法要綜合應(yīng)用。另一個問題是特殊字符的處理,如“r”,”n”等,測試程序利用它們作為分隔符,但樣本包中也可能包含這些字符。對于這類字符,在腳本中用“%”后加特殊字符的ASCII碼來表示,”r”即為“%0D”。從腳本中讀取特殊字符后的轉(zhuǎn)換函數(shù)為    .if(s= = '% ' )  /字符串s 中s為%,si+1,si+2為特殊字符的ASCII碼       strj=(isdigit(s

13、i+1) ? (si+1-'0'):(toupper(si+1)-'A'+10)*16            +(isdigit(si+2) ? (si+2-'0'):(toupper(si+2)-'A'+10); /轉(zhuǎn)換后存入strj     i+=2;     j+;3.2數(shù)據(jù)項的變換函數(shù)這是影響測試工具效果最重要的因素,在某種程度上也是與

14、協(xié)議相關(guān)的,具體的實現(xiàn)要根據(jù)經(jīng)驗,甚至分析協(xié)議,一定要變換出各種特殊情況。例如,對文件名,需要測試文件名過長、文件名為空、文件名中包含特殊字符等,對基于 Windows的系統(tǒng),尤其要測試系統(tǒng)對不同類型文件(如有 .exe , .asp , .php, .htr等擴展名的文件)的響應(yīng)情況,IIS服務(wù)器的許多漏洞都與此有關(guān)。變換函數(shù)的原型為 int TEANSER(FILE* fp,char* item);一個數(shù)據(jù)項有很多種變換結(jié)果,為了實現(xiàn)方便,處理時,一次得出一個數(shù)據(jù)項的所有變換結(jié)果,寫入臨時文件,再從臨時文件中讀出變換后所得的數(shù)據(jù)項內(nèi)容,組包后發(fā)送給服務(wù)器。這樣變換函數(shù)不需要保持狀態(tài),編程起

15、來就容易多了。變換函數(shù)做成DLL動態(tài)連接庫形式,如果有新的數(shù)據(jù)項類型,只需在腳本中定義新的數(shù)據(jù)項類型名,編寫對應(yīng)的DLL庫,處理時,處理函數(shù)會自動調(diào)用它來進行變換處理。實現(xiàn)自動調(diào)用的主要代碼如下:.typedef  VOID  (*MYPROC)(FILE*,char*);  /函數(shù)原型FILE*  fp            /臨時文件指針;.     if (!deffunc(idx->type)

16、   / idx為指向當前結(jié)點的指針,deffunc判斷當前數(shù)據(jù)項類型是否                         / 已在測試工具中定義,如已定義,返回真。     / 如果數(shù)據(jù)類型未定義        

17、60;  HINSTANCE  h;              CString str;MYPROC proc;          If (h=LoadLibrary(idx->type) = = NULL)  / 裝入對應(yīng)的動態(tài)鏈接庫CString str;        

18、;    str.Format("cant load the library %s.dll",  idx->type);            MessageBox(str, "ERROR");           proc=(MYPROC)GetProcAddress(h, idx->type);  /取得變換函數(shù)地址(proc)(fp, idx->item);                 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論