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

圖1中給出了漏洞掃描系統模型的系統結構圖。該漏洞檢測系統主要分成四部分:
(1)主控程序。采用多線(xiàn)程處理方式,它接收多個(gè)客戶(hù)端提交的用戶(hù)指令后,再次利用多線(xiàn)程技術(shù)調用相關(guān)的插件腳本,利用滲透性測試對目標系統進(jìn)行檢測,并將結果和進(jìn)程信息傳回客戶(hù)端顯示并保存在客戶(hù)端本地,以方便用戶(hù)查看詳細信息。
(2)客戶(hù)端,即控制平臺。B/S結構比傳統的C/S結構優(yōu)越的地方在于方便性和與平臺無(wú)關(guān)性,用戶(hù)通過(guò)Web瀏覽器設定掃描參數,提交給服務(wù)器端,控制服務(wù)器端進(jìn)行掃描工作。同時(shí),對服務(wù)器返回的各種檢測結果進(jìn)行相應的顯示、匯總和保存。
(3)插件系統。它保存現在已知各種漏洞檢測方法的插件,合理安排插件之間的執行順序,使掃描按既定的順序進(jìn)行,以加快掃描速度提高掃描的效率與準確性。
(4)數據庫,即探測數據庫,是系統的核心。它保存已知各類(lèi)Web漏洞的滲透性的探測數據即攻擊代碼或信息獲取代碼,比如SQL注入攻擊、跨站點(diǎn)腳本攻擊、會(huì )話(huà)攻擊或輸入驗證編碼信息等,逐條給目標發(fā)送探測數據,通過(guò)把返回信息與預先設定的“返回信息”和狀態(tài)碼進(jìn)行匹配,進(jìn)而獲得目標返回系統的健壯信息。
在規劃系統體系組成部分的基礎上,如何把這些組成模塊有機地集成為一個(gè)系統也是設計本系統的重點(diǎn)。我們要求服務(wù)器端同時(shí)處理多用戶(hù)的連接,因此首先要進(jìn)行多線(xiàn)程處理。在進(jìn)行單用戶(hù)處理中,當用戶(hù)登陸時(shí),檢測服務(wù)器對用戶(hù)的用戶(hù)名和密碼進(jìn)行認證,判斷用戶(hù)是否具有使用權限。用戶(hù)認證通過(guò)后,檢測服務(wù)器給客戶(hù)端發(fā)送可使用的基本檢測信息??蛻?hù)端接收到服務(wù)器的這些信息后,根據具體的使用要求選擇和填寫(xiě)各種檢測腳本要求的參數,或使用默認參數,然后返回給服務(wù)器端。服務(wù)器端建立新的進(jìn)程,開(kāi)始一個(gè)新的漏洞檢測任務(wù),對目標系統進(jìn)行掃描。
2.2客戶(hù)端的實(shí)現
網(wǎng)絡(luò )的發(fā)展要求在任何地點(diǎn)進(jìn)行登陸并進(jìn)行掃描工作,并且漏洞檢測參數繁多、設置掃描參數具有很高的復雜性,所以選擇現在流行的Web頁(yè)面作為客戶(hù)端。這樣就可以在世界的任何地點(diǎn),任何環(huán)境使用客戶(hù)端,用簡(jiǎn)單的圖形化界面進(jìn)行參數設定和系統的控制工作。
客戶(hù)端在認證通過(guò)后,開(kāi)始接收服務(wù)器發(fā)送過(guò)來(lái)的各種待設定的參數及相關(guān)信息以供用戶(hù)選擇。用戶(hù)根據相關(guān)幫助信息及自己相關(guān)的要求設定參數,同時(shí)設定目標系統的IP地址(或主機名)和端口號等參數。根據客戶(hù)端的參數設定,服務(wù)端建立掃描任務(wù),對目標系統進(jìn)行檢測掃描。
檢測過(guò)程中,客戶(hù)可以自行設定是否實(shí)時(shí)顯示服務(wù)端掃描狀態(tài)信息及結果信息,以及在客戶(hù)端是否保存相關(guān)信息,便于用戶(hù)對掃描任務(wù)進(jìn)行實(shí)時(shí)的控制,從而制定相應的安全策略。
評論