一種基于滲透性測(cè)試的Web漏洞掃描系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
CNCERT/CC 2006年的工作報(bào)告中顯示,隨著互聯(lián)網(wǎng)的快速發(fā)展,我國(guó)公共互聯(lián)網(wǎng)用戶(hù)數(shù)量已超過(guò)1.37億。在網(wǎng)絡(luò)發(fā)展的同時(shí),互聯(lián)網(wǎng)作為一個(gè)運(yùn)行系統(tǒng)和一個(gè)社會(huì)公共環(huán)境,所面對(duì)的和隱藏的安全威脅也越來(lái)越復(fù)雜,越來(lái)越嚴(yán)重。報(bào)告顯示,2006年CNCERT/CC接收國(guó)內(nèi)26 476件非掃描類(lèi)網(wǎng)絡(luò)安全事件報(bào)告中有24 477件是由于Web引起的。從2003年~2006年中國(guó)Web攻擊事件統(tǒng)計(jì)中不難發(fā)現(xiàn),通過(guò)Web漏洞進(jìn)行攻擊事件正在逐年迅速的增長(zhǎng)。通過(guò)Web漏洞進(jìn)行攻擊成了網(wǎng)絡(luò)漏洞攻擊的主要方式與手段。
國(guó)內(nèi)外的許多學(xué)術(shù)機(jī)構(gòu)、企業(yè)和標(biāo)準(zhǔn)化組織在Web漏洞探測(cè)方面做了大量的工作。Web漏洞探測(cè)系統(tǒng)日趨成熟,當(dāng)前,比較成熟的漏洞掃描工具有Whisker及Nikto和Nessus。但由于安全產(chǎn)品特殊應(yīng)用需求以及各個(gè)組織的工具自身的技術(shù)與安全防護(hù)問(wèn)題,使得這些產(chǎn)品不能很好地被推廣或普及。對(duì)具體項(xiàng)目需求,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)Web漏洞掃描系統(tǒng)是非常必要的。
1 Web漏洞掃描原理
Web漏洞掃描方法主要有兩類(lèi):信息獲取和模擬攻擊。信息獲取就是通過(guò)與目標(biāo)主機(jī)TCP/IP的Http服務(wù)端口發(fā)送連接請(qǐng)求,記錄目標(biāo)主機(jī)的應(yīng)答。通過(guò)目標(biāo)主機(jī)應(yīng)答信息中狀態(tài)碼和返回?cái)?shù)據(jù)與Http協(xié)議相關(guān)狀態(tài)碼和預(yù)定義返回信息做匹配,如果匹配條件則視為漏洞存在。模擬攻擊就是通過(guò)使用模擬黑客攻擊的方法,對(duì)目標(biāo)主機(jī)Web系統(tǒng)進(jìn)行攻擊性的安全漏洞掃描,比如認(rèn)證與授權(quán)攻擊、支持文件攻擊、包含文件攻擊、SQL注入攻擊和利用編碼技術(shù)攻擊等對(duì)目標(biāo)系統(tǒng)可能存在的已知漏洞進(jìn)行逐項(xiàng)進(jìn)行檢查,從而發(fā)現(xiàn)系統(tǒng)的漏洞。遠(yuǎn)程字典攻擊也是漏洞掃描中模擬攻擊的一種,其原理與其他攻擊相差較大,若攻擊成功,可以直接得到登陸目標(biāo)主機(jī)系統(tǒng)的用戶(hù)名和口令。
Web漏洞掃描原理就是利用上面的掃描方法,通過(guò)分析掃描返回信息,來(lái)判斷在目標(biāo)系統(tǒng)上與測(cè)試代碼相關(guān)的漏洞是否存在或者相關(guān)文件是否可以在某種程度上得以改進(jìn),然后把結(jié)果反饋給用戶(hù)端(即瀏覽端),并給出相關(guān)的改進(jìn)意見(jiàn)。
2 Web漏洞掃描系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
Web漏洞掃描系統(tǒng)設(shè)計(jì)的基本要求是能夠找到Web應(yīng)用程序的錯(cuò)誤以及檢測(cè)Web服務(wù)器以及CGI的安全性,其中也包括認(rèn)證機(jī)制、邏輯錯(cuò)誤、無(wú)意泄露Web內(nèi)容以及其環(huán)境信息以及傳統(tǒng)的二進(jìn)制應(yīng)用漏洞(例:緩沖區(qū)溢出等)。同時(shí)要求漏洞掃描功能能夠更新及時(shí)。本系統(tǒng)結(jié)合國(guó)內(nèi)外其他Web漏洞掃描系統(tǒng)設(shè)計(jì)思想的優(yōu)點(diǎn),采用Browser/Server/Database(瀏覽器/服務(wù)器/數(shù)據(jù)庫(kù))和模塊化的軟件開(kāi)發(fā)思路,通過(guò)滲透性檢測(cè)的方法對(duì)目標(biāo)系統(tǒng)進(jìn)行掃描。
2.1 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
本文設(shè)計(jì)開(kāi)發(fā)的是一個(gè)B/S模式的Web漏洞掃描系統(tǒng)。它包括客戶(hù)端及服務(wù)端兩個(gè)部分,運(yùn)行環(huán)境為L(zhǎng)inux系統(tǒng)。首先:使用B/S結(jié)構(gòu)使得用戶(hù)的操作不再與系統(tǒng)平臺(tái)相關(guān),同時(shí)使得客戶(hù)操作更方便、直觀。其次,系統(tǒng)把漏洞掃描檢測(cè)部分從整個(gè)系統(tǒng)中分離出來(lái),使用專(zhuān)門(mén)的文件庫(kù)進(jìn)行存放(稱(chēng)為插件)。如果發(fā)現(xiàn)新的漏洞并找到了新的檢測(cè)方法,只要在相關(guān)文件夾中增加一個(gè)相應(yīng)的新的攻擊腳本記錄,即可以實(shí)現(xiàn)對(duì)漏洞的滲透性測(cè)試,同時(shí)也實(shí)現(xiàn)了及時(shí)的升級(jí)功能。最后,系統(tǒng)從多個(gè)角度來(lái)提高漏洞掃描系統(tǒng)的掃描速度以及減少在用客戶(hù)端與服務(wù)端之間的信息傳輸量,以提高系統(tǒng)的運(yùn)行效率。其總體結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1中給出了漏洞掃描系統(tǒng)模型的系統(tǒng)結(jié)構(gòu)圖。該漏洞檢測(cè)系統(tǒng)主要分成四部分:
(1)主控程序。采用多線(xiàn)程處理方式,它接收多個(gè)客戶(hù)端提交的用戶(hù)指令后,再次利用多線(xiàn)程技術(shù)調(diào)用相關(guān)的插件腳本,利用滲透性測(cè)試對(duì)目標(biāo)系統(tǒng)進(jìn)行檢測(cè),并將結(jié)果和進(jìn)程信息傳回客戶(hù)端顯示并保存在客戶(hù)端本地,以方便用戶(hù)查看詳細(xì)信息。
(2)客戶(hù)端,即控制平臺(tái)。B/S結(jié)構(gòu)比傳統(tǒng)的C/S結(jié)構(gòu)優(yōu)越的地方在于方便性和與平臺(tái)無(wú)關(guān)性,用戶(hù)通過(guò)Web瀏覽器設(shè)定掃描參數(shù),提交給服務(wù)器端,控制服務(wù)器端進(jìn)行掃描工作。同時(shí),對(duì)服務(wù)器返回的各種檢測(cè)結(jié)果進(jìn)行相應(yīng)的顯示、匯總和保存。
(3)插件系統(tǒng)。它保存現(xiàn)在已知各種漏洞檢測(cè)方法的插件,合理安排插件之間的執(zhí)行順序,使掃描按既定的順序進(jìn)行,以加快掃描速度提高掃描的效率與準(zhǔn)確性。
(4)數(shù)據(jù)庫(kù),即探測(cè)數(shù)據(jù)庫(kù),是系統(tǒng)的核心。它保存已知各類(lèi)Web漏洞的滲透性的探測(cè)數(shù)據(jù)即攻擊代碼或信息獲取代碼,比如SQL注入攻擊、跨站點(diǎn)腳本攻擊、會(huì)話(huà)攻擊或輸入驗(yàn)證編碼信息等,逐條給目標(biāo)發(fā)送探測(cè)數(shù)據(jù),通過(guò)把返回信息與預(yù)先設(shè)定的“返回信息”和狀態(tài)碼進(jìn)行匹配,進(jìn)而獲得目標(biāo)返回系統(tǒng)的健壯信息。
在規(guī)劃系統(tǒng)體系組成部分的基礎(chǔ)上,如何把這些組成模塊有機(jī)地集成為一個(gè)系統(tǒng)也是設(shè)計(jì)本系統(tǒng)的重點(diǎn)。我們要求服務(wù)器端同時(shí)處理多用戶(hù)的連接,因此首先要進(jìn)行多線(xiàn)程處理。在進(jìn)行單用戶(hù)處理中,當(dāng)用戶(hù)登陸時(shí),檢測(cè)服務(wù)器對(duì)用戶(hù)的用戶(hù)名和密碼進(jìn)行認(rèn)證,判斷用戶(hù)是否具有使用權(quán)限。用戶(hù)認(rèn)證通過(guò)后,檢測(cè)服務(wù)器給客戶(hù)端發(fā)送可使用的基本檢測(cè)信息??蛻?hù)端接收到服務(wù)器的這些信息后,根據(jù)具體的使用要求選擇和填寫(xiě)各種檢測(cè)腳本要求的參數(shù),或使用默認(rèn)參數(shù),然后返回給服務(wù)器端。服務(wù)器端建立新的進(jìn)程,開(kāi)始一個(gè)新的漏洞檢測(cè)任務(wù),對(duì)目標(biāo)系統(tǒng)進(jìn)行掃描。
2.2客戶(hù)端的實(shí)現(xiàn)
網(wǎng)絡(luò)的發(fā)展要求在任何地點(diǎn)進(jìn)行登陸并進(jìn)行掃描工作,并且漏洞檢測(cè)參數(shù)繁多、設(shè)置掃描參數(shù)具有很高的復(fù)雜性,所以選擇現(xiàn)在流行的Web頁(yè)面作為客戶(hù)端。這樣就可以在世界的任何地點(diǎn),任何環(huán)境使用客戶(hù)端,用簡(jiǎn)單的圖形化界面進(jìn)行參數(shù)設(shè)定和系統(tǒng)的控制工作。
客戶(hù)端在認(rèn)證通過(guò)后,開(kāi)始接收服務(wù)器發(fā)送過(guò)來(lái)的各種待設(shè)定的參數(shù)及相關(guān)信息以供用戶(hù)選擇。用戶(hù)根據(jù)相關(guān)幫助信息及自己相關(guān)的要求設(shè)定參數(shù),同時(shí)設(shè)定目標(biāo)系統(tǒng)的IP地址(或主機(jī)名)和端口號(hào)等參數(shù)。根據(jù)客戶(hù)端的參數(shù)設(shè)定,服務(wù)端建立掃描任務(wù),對(duì)目標(biāo)系統(tǒng)進(jìn)行檢測(cè)掃描。
檢測(cè)過(guò)程中,客戶(hù)可以自行設(shè)定是否實(shí)時(shí)顯示服務(wù)端掃描狀態(tài)信息及結(jié)果信息,以及在客戶(hù)端是否保存相關(guān)信息,便于用戶(hù)對(duì)掃描任務(wù)進(jìn)行實(shí)時(shí)的控制,從而制定相應(yīng)的安全策略。
評(píng)論