基于插件的漏洞檢測(cè)方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于插件的漏洞檢測(cè)方法。該方法包括主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù)調(diào)度和管理、日志管理、數(shù)據(jù)存取服務(wù)和用戶界面。主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)主要負(fù)責(zé)執(zhí)行漏洞掃描。任務(wù)調(diào)度和管理面向系統(tǒng)內(nèi)部提供服務(wù),負(fù)責(zé)各個(gè)掃描分析任務(wù)的管理和調(diào)度。日志管理負(fù)責(zé)向用戶提供漏洞掃描的報(bào)告,按照用戶的配置,收集和整理掃描任務(wù)產(chǎn)生的數(shù)據(jù)并向用戶提供掃描報(bào)告。在掃描任務(wù)的執(zhí)行過(guò)程中,多個(gè)任務(wù)間需要共享數(shù)據(jù),系統(tǒng)需要提供一個(gè)統(tǒng)一的數(shù)據(jù)訪問(wèn)方式,數(shù)據(jù)存取服務(wù)就是向所有的任務(wù)提供統(tǒng)一對(duì)等的數(shù)據(jù)存儲(chǔ)和訪問(wèn)服務(wù)。用戶界面則提供系統(tǒng)管理和報(bào)告輸出的途徑。本發(fā)明采用了基于插件的結(jié)構(gòu)對(duì)漏洞進(jìn)行掃描,提高了系統(tǒng)的靈活性和可擴(kuò)展性。
【專(zhuān)利說(shuō)明】基于插件的漏洞檢測(cè)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于漏洞檢測(cè)方法,特別是基于插件的漏洞檢測(cè)方法的設(shè)計(jì)與實(shí)現(xiàn)。
【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)的迅猛發(fā)展使得信息化進(jìn)程得到不斷推進(jìn)與深入,與此同時(shí),人們的學(xué)習(xí)、 工作和生活方式也發(fā)生了巨大的變化,信息資源得到更大程度的共享,工作效率也不斷得 到提升。但是,網(wǎng)絡(luò)安全問(wèn)題伴隨著信息化的發(fā)展也隨之而來(lái)并愈演愈烈,已經(jīng)成為全球共 同關(guān)注的重大問(wèn)題之一。尤其是近年來(lái),系統(tǒng)漏洞、網(wǎng)絡(luò)病毒、垃圾郵件、黑客攻擊日益猖 獗;網(wǎng)絡(luò)色情、淫穢、暴力等有害信息充斥網(wǎng)絡(luò);信息系統(tǒng)癱瘓頻繁發(fā)生;由經(jīng)濟(jì)利益驅(qū)動(dòng) 的網(wǎng)絡(luò)犯罪在全球愈演愈烈;個(gè)人信息及國(guó)家敏感信息泄露事件時(shí)有發(fā)生;病毒、木馬的 傳播者肆意進(jìn)行網(wǎng)絡(luò)盜竊、詐騙活動(dòng),通過(guò)網(wǎng)絡(luò)進(jìn)行病毒、木馬等惡意代碼的販賣(mài)。這已經(jīng) 嚴(yán)重威脅了國(guó)家的經(jīng)濟(jì)安全、社會(huì)安全、政治安全,是全世界各國(guó)共同面對(duì)的重大挑戰(zhàn)。
[0003] 目前,在Internet的大量應(yīng)用中,Internet安全面臨著重大挑戰(zhàn),事實(shí)上,資源共 享和安全歷來(lái)是一對(duì)矛盾。在一個(gè)開(kāi)放的網(wǎng)絡(luò)環(huán)境中,大量在網(wǎng)上流動(dòng)的信息為不法分子 提供了攻擊目標(biāo)。而計(jì)算機(jī)網(wǎng)絡(luò)組成形式的多樣性、終端分布的廣泛性以及網(wǎng)絡(luò)的開(kāi)放性、 互聯(lián)性等特征都為攻擊者提供了便利。他們利用各種各樣的攻擊手段,訪問(wèn)或修改網(wǎng)絡(luò)中 的敏感信息,闖入用戶或政府部門(mén)的計(jì)算機(jī)系統(tǒng),進(jìn)行窺視、竊取、篡改數(shù)據(jù)。由于網(wǎng)絡(luò)詐騙 不受時(shí)間、地點(diǎn)、條件所限,其"低成本和高收益"的特性又在一定程度上刺激了犯罪的增 長(zhǎng),針對(duì)計(jì)算機(jī)信息系統(tǒng)的犯罪活動(dòng)因此日益增多。
[0004] 為了提高網(wǎng)絡(luò)與信息系統(tǒng)的保密性、完整性、可用性和可控性,一方面需要普及網(wǎng) 絡(luò)安全常識(shí),來(lái)提高網(wǎng)絡(luò)用戶的安全意識(shí);另一方面,需要進(jìn)一步加強(qiáng)對(duì)網(wǎng)絡(luò)安全的監(jiān)測(cè)與 管理。因此,對(duì)于網(wǎng)站管理者來(lái)講,如何有效檢測(cè)出當(dāng)前網(wǎng)站存在的漏洞,并在惡意攻擊者 發(fā)起攻擊之前及時(shí)修補(bǔ)這些漏洞以及錯(cuò)誤的配置,對(duì)于確保網(wǎng)絡(luò)的安全就顯得至關(guān)重要。 利用本發(fā)明的方法對(duì)網(wǎng)站進(jìn)行掃描,可以檢測(cè)出服務(wù)器的類(lèi)別版本等多方面信息、是否有 不安全的配置以及是否存在潛在危險(xiǎn)的文件CGI等,從而幫助管理員加強(qiáng)網(wǎng)絡(luò)的安全管理 工作,從源頭上對(duì)惡意攻擊起到很好的防范作用?;诓寮穆┒礄z測(cè)系統(tǒng)可以檢測(cè)出服 務(wù)器的類(lèi)型版本,服務(wù)器是否存在不安全的配置,以及是否存在潛在的可能被惡意攻擊者 利用的漏洞,對(duì)于當(dāng)前的惡意攻擊可以起到較好的防御作用。因此,設(shè)計(jì)并開(kāi)發(fā)一個(gè)基于插 件的漏洞檢測(cè)系統(tǒng),對(duì)于加強(qiáng)網(wǎng)絡(luò)安全的監(jiān)測(cè)和管理至關(guān)重要。
【發(fā)明內(nèi)容】
[0005] 1、本發(fā)明的目的。
[0006] 本發(fā)明提供一種基于插件的漏洞檢測(cè)方法,本發(fā)明所采用的技術(shù)方案。該方法是 一種主動(dòng)式的漏洞檢測(cè)工具,可以實(shí)現(xiàn)對(duì)多種平臺(tái)下的主機(jī)進(jìn)行漏洞檢測(cè),能夠比較準(zhǔn)確 地對(duì)目標(biāo)系統(tǒng)存在的漏洞進(jìn)行檢測(cè)。
[0007] 2、本發(fā)明所采用的技術(shù)方案。
[0008] 基于插件的漏洞檢測(cè)方法,包括主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù)調(diào)度和管理、日志 管理、數(shù)據(jù)存取服務(wù)和用戶界面五部分;主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)主要負(fù)責(zé)執(zhí)行漏洞掃描, 任務(wù)調(diào)度和管理是面向系統(tǒng)內(nèi)部提供服務(wù),負(fù)責(zé)各個(gè)掃描分析任務(wù)的管理和調(diào)度,包括任 務(wù)的加載、啟動(dòng)和結(jié)束。采用HTTP協(xié)議作為掃描主機(jī)的方式,并采用了Libwishker系統(tǒng)以 構(gòu)造特定的HTTP請(qǐng)求數(shù)據(jù)包,具體控制方式如下: (1) 、端口掃描 向目標(biāo)主機(jī)的特定端口發(fā)送HTTP請(qǐng)求,如果對(duì)方開(kāi)啟了HTTP服務(wù)則會(huì)返回相應(yīng)的HTTP回應(yīng)或錯(cuò)誤。事先建立一個(gè)port列表然后逐個(gè)訪問(wèn)列表中的端口,并記錄下訪問(wèn)的結(jié) 果,從而獲取了一個(gè)主機(jī)上的開(kāi)啟端口記錄; (2) 、建立漏洞數(shù)據(jù)庫(kù) 即將服務(wù)器的類(lèi)型進(jìn)行md5哈希運(yùn)算,將其哈希值作為一條數(shù)據(jù)項(xiàng)存入漏洞數(shù)據(jù)庫(kù) 中,對(duì)于不同的服務(wù)器是不同的,因此每一段數(shù)據(jù)計(jì)算出來(lái)的哈希值都是唯一的; 啟動(dòng)掃描前,通過(guò)返回的數(shù)據(jù)先判斷目標(biāo)服務(wù)器的類(lèi)型,服務(wù)器類(lèi)型的不同產(chǎn)生的漏 洞也不同;。
[0009] (3)、漏洞掃描,根據(jù)預(yù)先建立服務(wù)器類(lèi)型的漏洞數(shù)據(jù)庫(kù),首先從服務(wù)器根目錄下 請(qǐng)求獲得目標(biāo)系統(tǒng)服務(wù)器類(lèi)型,然后與預(yù)存到漏洞庫(kù)中的數(shù)據(jù)進(jìn)行逐項(xiàng)比對(duì),如果能在漏 洞庫(kù)中找到匹配的數(shù)據(jù),則說(shuō)明發(fā)現(xiàn)當(dāng)前被掃描服務(wù)器的應(yīng)用類(lèi)型,如果無(wú)法找到匹配數(shù) 據(jù),則說(shuō)明被掃描的服務(wù)器類(lèi)型是本系統(tǒng)未知的類(lèi)型,只有進(jìn)一步通過(guò)其他方式的判斷才 能確認(rèn)其類(lèi)型。
[0010] 3、本發(fā)明的有益效果。
[0011] 1)可根據(jù)不同用戶的不同需求,提供可定制的掃描策略; 2) 通過(guò)模擬黑客攻擊的方法,對(duì)目標(biāo)系統(tǒng)可能存在的漏洞進(jìn)行逐項(xiàng)匹配,更具有實(shí)用 性; 3) 采用了基于插件的結(jié)構(gòu)對(duì)漏洞進(jìn)行掃描,有利于提高系統(tǒng)的靈活性和可擴(kuò)展性; 4) 可實(shí)現(xiàn)漏洞庫(kù)的升級(jí)與更新,保證系統(tǒng)的可擴(kuò)展性; 5) 用戶可以根據(jù)自己的需求,在每次掃描開(kāi)始前選擇生成漏洞掃描報(bào)告的格式,更人 性化。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0012] 圖1是系統(tǒng)的組建層次關(guān)系(1)。
[0013] 圖2是系統(tǒng)的組建層次關(guān)系(2)。
[0014] 圖3是主機(jī)端口掃描過(guò)程圖。
[0015] 圖4是目標(biāo)服務(wù)器類(lèi)型判斷流程圖。
[0016] 圖5是執(zhí)行CGI漏洞掃描的基本過(guò)程圖。
[0017] 圖6是動(dòng)態(tài)方式掃描網(wǎng)頁(yè)注入漏洞過(guò)程圖。
[0018] 圖7是用戶名枚舉漏洞檢測(cè)流程圖。
【具體實(shí)施方式】
[0019] 實(shí)施例1 一種基于插件的漏洞檢測(cè)方法,包括主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù)調(diào)度和管理、日志 管理、數(shù)據(jù)存取服務(wù)和用戶界面五部分;主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)主要負(fù)責(zé)執(zhí)行漏洞掃描, 任務(wù)調(diào)度和管理是面向系統(tǒng)內(nèi)部提供服務(wù),負(fù)責(zé)各個(gè)掃描分析任務(wù)的管理和調(diào)度,包括任 務(wù)的加載、啟動(dòng)和結(jié)束。采用HTTP協(xié)議作為掃描主機(jī)的方式,并采用了Libwishker系統(tǒng)以 構(gòu)造特定的HTTP請(qǐng)求數(shù)據(jù)包,具體控制方式如下: (1) 、端口掃描 向目標(biāo)主機(jī)的特定端口發(fā)送HTTP請(qǐng)求,如果對(duì)方開(kāi)啟了HTTP服務(wù)則會(huì)返回相應(yīng)的HTTP回應(yīng)或錯(cuò)誤。事先建立一個(gè)port列表然后逐個(gè)訪問(wèn)列表中的端口,并記錄下訪問(wèn)的結(jié) 果,從而獲取了一個(gè)主機(jī)上的開(kāi)啟端口記錄; (2)、建立漏洞數(shù)據(jù)庫(kù) 即將服務(wù)器的類(lèi)型進(jìn)行md5哈希運(yùn)算,將其哈希值作為一條數(shù)據(jù)項(xiàng)存入漏洞數(shù)據(jù)庫(kù) 中,對(duì)于不同的服務(wù)器是不同的,因此每一段數(shù)據(jù)計(jì)算出來(lái)的哈希值都是唯一的; 啟動(dòng)掃描前,通過(guò)返回的數(shù)據(jù)先判斷目標(biāo)服務(wù)器的類(lèi)型,服務(wù)器類(lèi)型的不同產(chǎn)生的漏 洞也不同;。
[0020] (3)、漏洞掃描,根據(jù)預(yù)先建立服務(wù)器類(lèi)型的漏洞數(shù)據(jù)庫(kù),首先從服務(wù)器根目錄下 請(qǐng)求獲得目標(biāo)系統(tǒng)服務(wù)器類(lèi)型,然后與預(yù)存到漏洞庫(kù)中的數(shù)據(jù)進(jìn)行逐項(xiàng)比對(duì),如果能在漏 洞庫(kù)中找到匹配的數(shù)據(jù),則說(shuō)明發(fā)現(xiàn)當(dāng)前被掃描服務(wù)器的應(yīng)用類(lèi)型,如果無(wú)法找到匹配數(shù) 據(jù),則說(shuō)明被掃描的服務(wù)器類(lèi)型是本系統(tǒng)未知的類(lèi)型,只有進(jìn)一步通過(guò)其他方式的判斷才 能確認(rèn)其類(lèi)型。
[0021] 實(shí)施例2 一種基于插件的漏洞檢測(cè)方法,包括主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù)調(diào)度和管理、日志 管理、數(shù)據(jù)存取服務(wù)和用戶界面、數(shù)據(jù)升級(jí)管理模塊六部分。
[0022] 實(shí)施例3 一種基于插件的漏洞檢測(cè)方法,包括主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù)調(diào)度和管理、日志 管理、數(shù)據(jù)存取服務(wù)和用戶界面五部分;主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)主要負(fù)責(zé)執(zhí)行漏洞掃描, 任務(wù)調(diào)度和管理是面向系統(tǒng)內(nèi)部提供服務(wù),負(fù)責(zé)各個(gè)掃描分析任務(wù)的管理和調(diào)度,包括任 務(wù)的加載、啟動(dòng)和結(jié)束。采用HTTP協(xié)議作為掃描主機(jī)的方式,并采用了Libwishker系統(tǒng)以 構(gòu)造特定的HTTP請(qǐng)求數(shù)據(jù)包,具體控制方式如下: (1) 、端口掃描 向目標(biāo)主機(jī)的特定端口發(fā)送HTTP請(qǐng)求,如果對(duì)方開(kāi)啟了HTTP服務(wù)則會(huì)返回相應(yīng)的HTTP回應(yīng)或錯(cuò)誤。事先建立一個(gè)port列表然后逐個(gè)訪問(wèn)列表中的端口,并記錄下訪問(wèn)的結(jié) 果,從而獲取了一個(gè)主機(jī)上的開(kāi)啟端口記錄,所述的端口掃描,開(kāi)啟端口范圍是0-65535 ; (2) 、建立漏洞數(shù)據(jù)庫(kù) 即將服務(wù)器的類(lèi)型進(jìn)行md5哈希運(yùn)算,將其哈希值作為一條數(shù)據(jù)項(xiàng)存入漏洞數(shù)據(jù)庫(kù) 中,對(duì)于不同的服務(wù)器是不同的,因此每一段數(shù)據(jù)計(jì)算出來(lái)的哈希值都是唯一的; 啟動(dòng)掃描前,通過(guò)返回的數(shù)據(jù)先判斷目標(biāo)服務(wù)器的類(lèi)型,服務(wù)器類(lèi)型的不同產(chǎn)生的漏 洞也不同;。
[0023] (3)、漏洞掃描,根據(jù)預(yù)先建立服務(wù)器類(lèi)型的漏洞數(shù)據(jù)庫(kù),首先從服務(wù)器根目錄下 請(qǐng)求獲得目標(biāo)系統(tǒng)服務(wù)器類(lèi)型,然后與預(yù)存到漏洞庫(kù)中的數(shù)據(jù)進(jìn)行逐項(xiàng)比對(duì),如果能在漏 洞庫(kù)中找到匹配的數(shù)據(jù),則說(shuō)明發(fā)現(xiàn)當(dāng)前被掃描服務(wù)器的應(yīng)用類(lèi)型,如果無(wú)法找到匹配數(shù) 據(jù),則說(shuō)明被掃描的服務(wù)器類(lèi)型是本系統(tǒng)未知的類(lèi)型,只有進(jìn)一步通過(guò)其他方式的判斷才 能確認(rèn)其類(lèi)型。
[0024] 實(shí)施例4 檢測(cè)CGI漏洞方法: a、 首先確定待檢測(cè)服務(wù)器的IP地址; b、 啟動(dòng)檢測(cè)任務(wù),CGI掃描開(kāi)始后,對(duì)于選定的每個(gè)可能的CGI路徑,以HTTPURL請(qǐng)求 方式逐一對(duì)這些路徑發(fā)送請(qǐng)求,如果服務(wù)器返回的狀態(tài)碼表明請(qǐng)求路徑存在,記錄這些路 徑存在潛在的CGI漏洞威脅。
[0025] 實(shí)施例5 檢測(cè)CGI漏洞采用兩種方式選取待掃描的目錄: 1) 用戶設(shè)定目錄:掃描過(guò)程中僅掃描由用戶指定的目錄,發(fā)現(xiàn)并記錄下其中開(kāi)啟訪問(wèn) 的部分; 2) 掃描常用CGI目錄:以常見(jiàn)的CGI目錄為基礎(chǔ)進(jìn)行掃描。
[0026] 實(shí)施例6 在以上實(shí)施例的基礎(chǔ)上,漏洞掃描采取跨站腳本攻擊掃,動(dòng)態(tài)方式進(jìn)行注入漏洞,通過(guò) 構(gòu)造特定的字符串作為URL的參數(shù)發(fā)送給服務(wù)器,得到服務(wù)器端響應(yīng)后分析返回的頁(yè)面數(shù) 據(jù),判斷其中是否含有起始構(gòu)造的字符串。
[0027] 實(shí)施例7 在實(shí)施例1的基礎(chǔ)上,用戶名枚舉漏洞檢測(cè): 第一步是確認(rèn)是否可以進(jìn)行掃描,也就是判斷服務(wù)器是否開(kāi)啟了用戶讀取功能然后選 擇以字典方式或者以暴力方式掃描當(dāng)前存在的用戶。
[0028] 實(shí)施例8 基于插件的漏洞檢測(cè)系統(tǒng)主要由五部分組成:主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù)調(diào)度和 管理、日志管理、數(shù)據(jù)存取服務(wù)和用戶界面五部分。系統(tǒng)組建的層次關(guān)系圖如圖1、圖2所 示。其中: 主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)主要負(fù)責(zé)執(zhí)行漏洞掃描,屬于系統(tǒng)中對(duì)外可見(jiàn)的業(yè)務(wù)過(guò)程, 負(fù)責(zé)系統(tǒng)核心的業(yè)務(wù)功能實(shí)現(xiàn)。此過(guò)程是由多個(gè)獨(dú)立的掃描任務(wù)分步驟獨(dú)立執(zhí)行的,每個(gè) 任務(wù)單獨(dú)完成自己的任務(wù),并記錄運(yùn)行狀態(tài)。每個(gè)任務(wù)都有自己的特定的掃描內(nèi)容,比如 : 共享目錄掃描、CGI漏洞掃描等等。每個(gè)特定的掃描任務(wù)都需要有相應(yīng)的數(shù)據(jù)提供支持,考 慮到掃描任務(wù)的長(zhǎng)期持續(xù)使用,需要對(duì)數(shù)據(jù)基礎(chǔ)提供升級(jí)服務(wù),因此相應(yīng)的系統(tǒng)中需要一 個(gè)數(shù)據(jù)升級(jí)管理模塊。
[0029] 任務(wù)調(diào)度和管理是面向系統(tǒng)內(nèi)部提供服務(wù),是系統(tǒng)內(nèi)部的核心組件,負(fù)責(zé)各個(gè)掃 描分析任務(wù)的管理和調(diào)度,包括:任務(wù)的加載、任務(wù)的啟動(dòng)、任務(wù)的結(jié)束。
[0030] 日志管理負(fù)責(zé)向用戶提供漏洞掃描的報(bào)告。此部分的主要職責(zé)是按照用戶的配 置,收集和整理掃描任務(wù)產(chǎn)生的數(shù)據(jù)并向用戶提供掃描報(bào)告。
[0031] 數(shù)據(jù)存取服務(wù)在掃描任務(wù)的執(zhí)行過(guò)程中,多個(gè)任務(wù)間需要共享數(shù)據(jù),系統(tǒng)需要提 供一個(gè)統(tǒng)一的數(shù)據(jù)訪問(wèn)方式。需要共享的數(shù)據(jù)包括:(1)運(yùn)行數(shù)據(jù)。比如:主機(jī)IP、主機(jī)運(yùn) 行的服務(wù)等等。此類(lèi)數(shù)據(jù)由先行運(yùn)行的任務(wù)產(chǎn)生,后續(xù)運(yùn)行的組件需要讀取并在此基礎(chǔ)上 繼續(xù)執(zhí)行。(2)分析結(jié)果。隨著任務(wù)的執(zhí)行掃描結(jié)果將由各個(gè)任務(wù)分別產(chǎn)生,此部分?jǐn)?shù)據(jù)也 需要統(tǒng)一存儲(chǔ),最后由日志管理模塊負(fù)責(zé)統(tǒng)一處理生成為使用者所需要的掃描報(bào)告。此部 分的主要任務(wù)是向所有的任務(wù)提供統(tǒng)一對(duì)等的數(shù)據(jù)存儲(chǔ)和訪問(wèn)服務(wù)。
[0032] 用戶界面是系統(tǒng)提供的人機(jī)界面,提供系統(tǒng)管理和報(bào)告輸出的途徑。
[0033] 鑒于HTTP的通用性和有效性,本發(fā)明選擇使用HTTP協(xié)議作為掃描主機(jī)的方式。在 漏洞掃描的過(guò)程中客戶端向目標(biāo)主機(jī)發(fā)送特定構(gòu)造的HTTP請(qǐng)求包,然后讀取目標(biāo)主機(jī)的 HTTP響應(yīng),將返回?cái)?shù)據(jù)的內(nèi)容和格式與已知的漏洞信息進(jìn)行比對(duì)從中篩選出與已知信息相 符合的部分,從而進(jìn)行漏洞的檢測(cè)和分析。在本發(fā)明中采用了Libwishker系統(tǒng)以構(gòu)造特定 的HTTP請(qǐng)求數(shù)據(jù)包。Libwishker作為開(kāi)放的程序數(shù)據(jù)庫(kù),它提供了與HTTP協(xié)議交互的函 數(shù)接口,使得用戶能夠方便的調(diào)用函數(shù)從而達(dá)到與HTTP交互的效果。本發(fā)明中主要使用了 Libwishker的發(fā)送、接收HTTP數(shù)據(jù)包的功能。
[0034] 對(duì)目標(biāo)主機(jī)的掃描首先從對(duì)目標(biāo)主機(jī)的端口掃描開(kāi)始,首先需要找到主機(jī)開(kāi)放的 端口才能夠進(jìn)行后續(xù)的HTTP掃描操作。端口掃描的方法是向目標(biāo)主機(jī)的特定端口發(fā)送HTTP請(qǐng)求,如果對(duì)方開(kāi)啟了HTTP服務(wù)則會(huì)返回相應(yīng)的HTTP回應(yīng)或錯(cuò)誤。事先建立一個(gè) port列表然后逐個(gè)訪問(wèn)列表中的端口,并記錄下訪問(wèn)的結(jié)果,從而獲取了一個(gè)主機(jī)上的開(kāi) 啟端口記錄。默認(rèn)情況下主機(jī)可能開(kāi)放的端口范圍是0-65535,但是其中有很多被默認(rèn)用于 操作系統(tǒng)的使用,同時(shí)根據(jù)各個(gè)操作系統(tǒng)的不同定義很多端口是默認(rèn)關(guān)閉的。由此根據(jù)一 些預(yù)定義情況篩選出掃描范圍,從而節(jié)省掃描時(shí)間提高掃描效率。端口掃描的處理過(guò)程如 圖3所示。
[0035] 啟動(dòng)掃描后,第一步需要判斷目標(biāo)服務(wù)器的類(lèi)型。每種不同的服務(wù)器都會(huì)存在自 己特定的漏洞,因此得到服務(wù)器的類(lèi)型可能進(jìn)行更加有針對(duì)性的掃描,一方面可以提高掃 描的準(zhǔn)確性,一方面可以提高掃描的效率。通常,服務(wù)器的廠商都會(huì)在其產(chǎn)品中內(nèi)置一個(gè)廠 商圖標(biāo)或者品牌圖標(biāo) :favic〇n.ico,這一圖標(biāo)對(duì)于不同的服務(wù)器是不同的。因此,將服務(wù)器 廠商的標(biāo)識(shí)作為掃描用例,通過(guò)對(duì)服務(wù)器廠商標(biāo)識(shí)的判斷作為服務(wù)器類(lèi)型掃描的結(jié)果。
[0036] 在系統(tǒng)中,首先需要將已知的多種服務(wù)器產(chǎn)品的favicon,ico預(yù)存到漏洞數(shù)據(jù)庫(kù) 中。掃描開(kāi)始后,首先從服務(wù)器根目錄下請(qǐng)求獲得目標(biāo)系統(tǒng)服務(wù)器類(lèi)型的favicon,ico文 件,然后與預(yù)存到漏洞庫(kù)中的數(shù)據(jù)進(jìn)行逐項(xiàng)比對(duì),如果能在漏洞庫(kù)中找到匹配的數(shù)據(jù),則說(shuō) 明發(fā)現(xiàn)當(dāng)前被掃描服務(wù)器的應(yīng)用類(lèi)型,如果無(wú)法找到匹配數(shù)據(jù),則說(shuō)明被掃描的服務(wù)器類(lèi) 型是本系統(tǒng)未知的類(lèi)型,只有進(jìn)一步通過(guò)其他方式的判斷才能確認(rèn)其類(lèi)型。在系統(tǒng)的實(shí)際 應(yīng)用中,是將favicon,ico進(jìn)行md5哈希運(yùn)算,將其哈希值作為一條數(shù)據(jù)項(xiàng)存入漏洞數(shù)據(jù)庫(kù) 中。每個(gè)產(chǎn)品的favicon,ico都是統(tǒng)一的,而這一標(biāo)識(shí)對(duì)于不同的服務(wù)器是不同的,因此每 一段數(shù)據(jù)計(jì)算出來(lái)的哈希值都是唯一的。具體的流程如圖4所示。
[0037] 檢測(cè)CGI漏洞的流程如圖5所示。首先選取一個(gè)檢測(cè)任務(wù),即需要確定待檢測(cè)服務(wù) 器的IP地址,啟動(dòng)檢測(cè)任務(wù)后,從CGI漏洞庫(kù)列表中提取待檢測(cè)漏洞,根據(jù)不同的CGI漏洞 選用不同的模擬攻擊方法檢測(cè)目標(biāo),根據(jù)目標(biāo)服務(wù)器返回的信息判斷是否存在CGI漏洞。 [0038] 本發(fā)明檢測(cè)CGI漏洞的第一步需要確定待掃描的目錄。系統(tǒng)提供了兩種方式選取 待掃描的目錄。1)用戶設(shè)定目錄:掃描過(guò)程中僅掃描由用戶指定的目錄,發(fā)現(xiàn)并記錄下其中 開(kāi)啟訪問(wèn)的部分。2)掃描常用CGI目錄:以常見(jiàn)的CGI目錄為基礎(chǔ)進(jìn)行掃描。CGI掃描開(kāi) 始后,對(duì)于選定的每個(gè)可能的CGI路徑,以HTTPURL請(qǐng)求方式逐一對(duì)這些路徑發(fā)送請(qǐng)求,如 果服務(wù)器返回表1中的任何狀態(tài)碼,則說(shuō)明請(qǐng)求路徑存在,這些路徑可能會(huì)存在潛在的CGI漏洞威脅,它們將被記錄下來(lái),作為下一步掃描的數(shù)據(jù)基礎(chǔ)。
[0039] 表I HTTP返回狀態(tài)碼
【權(quán)利要求】
1. 一種基于插件的漏洞檢測(cè)方法,其特征在于:包括主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)、任務(wù) 調(diào)度和管理、日志管理、數(shù)據(jù)存取服務(wù)和用戶界面五部分;主機(jī)掃描和數(shù)據(jù)分析業(yè)務(wù)主要 負(fù)責(zé)執(zhí)行漏洞掃描,任務(wù)調(diào)度和管理是面向系統(tǒng)內(nèi)部提供服務(wù),負(fù)責(zé)各個(gè)掃描分析任務(wù)的 管理和調(diào)度,包括任務(wù)的加載、啟動(dòng)和結(jié)束;采用HTTP協(xié)議作為掃描主機(jī)的方式,并采用了 Libwishker系統(tǒng)以構(gòu)造特定的HTTP請(qǐng)求數(shù)據(jù)包,具體檢測(cè)方式如下: (1) 、端口掃描 向目標(biāo)主機(jī)的特定端口發(fā)送HTTP請(qǐng)求,如果對(duì)方開(kāi)啟了 HTTP服務(wù)則會(huì)返回相應(yīng)的 HTTP回應(yīng)或錯(cuò)誤,事先建立一個(gè)port列表然后逐個(gè)訪問(wèn)列表中的端口,并記錄下訪問(wèn)的結(jié) 果,從而獲取了一個(gè)主機(jī)上的開(kāi)啟端口記錄; (2) 、建立漏洞數(shù)據(jù)庫(kù) 即將服務(wù)器的類(lèi)型進(jìn)行md5哈希運(yùn)算,將其哈希值作為一條數(shù)據(jù)項(xiàng)存入漏洞數(shù)據(jù)庫(kù) 中,對(duì)于不同的服務(wù)器是不同的,因此每一段數(shù)據(jù)計(jì)算出來(lái)的哈希值都是唯一的; 啟動(dòng)掃描前,通過(guò)返回的數(shù)據(jù)先判斷目標(biāo)服務(wù)器的類(lèi)型,服務(wù)器類(lèi)型的不同產(chǎn)生的漏 洞也不同; (3) 、漏洞掃描,根據(jù)預(yù)先建立服務(wù)器類(lèi)型的漏洞數(shù)據(jù)庫(kù),首先從服務(wù)器根目錄下請(qǐng)求 獲得目標(biāo)系統(tǒng)服務(wù)器類(lèi)型,然后與預(yù)存到漏洞庫(kù)中的數(shù)據(jù)進(jìn)行逐項(xiàng)比對(duì),如果能在漏洞庫(kù) 中找到匹配的數(shù)據(jù),則說(shuō)明發(fā)現(xiàn)當(dāng)前被掃描服務(wù)器的應(yīng)用類(lèi)型,如果無(wú)法找到匹配數(shù)據(jù),則 說(shuō)明被掃描的服務(wù)器類(lèi)型是本系統(tǒng)未知的類(lèi)型,只有進(jìn)一步通過(guò)其他方式的判斷才能確認(rèn) 其類(lèi)型。
2. 根據(jù)權(quán)利要求1所述的基于插件的漏洞檢測(cè)方法,其特征在于:還包括一個(gè)數(shù)據(jù)升 級(jí)管理模塊。
3. 根據(jù)權(quán)利要求1所述的基于插件的漏洞檢測(cè)方法,其特征在于:所述的端口掃描, 開(kāi)啟端口范圍是0-65535。
4. 根據(jù)權(quán)利要求1所述的基于插件的漏洞檢測(cè)方法,其特征在于:檢測(cè)CGI漏洞方 法: a、 首先確定待檢測(cè)服務(wù)器的IP地址; b、 啟動(dòng)檢測(cè)任務(wù),CGI掃描開(kāi)始后,對(duì)于選定的每個(gè)可能的CGI路徑,以HTTP URL請(qǐng)求 方式逐一對(duì)這些路徑發(fā)送請(qǐng)求,如果服務(wù)器返回的狀態(tài)碼表明請(qǐng)求路徑存在,記錄這些路 徑存在潛在的CGI漏洞威脅。
5. 根據(jù)權(quán)利要求4所述的基于插件的漏洞檢測(cè)方法,其特征在于:檢測(cè)CGI漏洞采用 兩種方式選取待掃描的目錄: 1) 用戶設(shè)定目錄:掃描過(guò)程中僅掃描由用戶指定的目錄,發(fā)現(xiàn)并記錄下其中開(kāi)啟訪問(wèn) 的部分; 2) 掃描常用CGI目錄:以常見(jiàn)的CGI目錄為基礎(chǔ)進(jìn)行掃描。
6. 根據(jù)權(quán)利要求1所述的基于插件的漏洞檢測(cè)方法,其特征在于:漏洞掃描采取跨站 腳本攻擊掃,動(dòng)態(tài)方式進(jìn)行注入漏洞,通過(guò)構(gòu)造特定的字符串作為URL的參數(shù)發(fā)送給服務(wù) 器,得到服務(wù)器端響應(yīng)后分析返回的頁(yè)面數(shù)據(jù),判斷其中是否含有起始構(gòu)造的字符串。
7. 根據(jù)權(quán)利要求5所述的基于插件的漏洞檢測(cè)方法,其特征在于:用戶名枚舉漏洞檢 測(cè): 第一步是確認(rèn)是否可以進(jìn)行掃描,也就是判斷服務(wù)器是否開(kāi)啟了用戶讀取功能然后選 擇以字典方式或者以暴力方式掃描當(dāng)前存在的用戶。
【文檔編號(hào)】H04L29/06GK104426850SQ201310371482
【公開(kāi)日】2015年3月18日 申請(qǐng)日期:2013年8月23日 優(yōu)先權(quán)日:2013年8月23日
【發(fā)明者】李千目, 戚湧, 汪歡, 侯君 申請(qǐng)人:南京理工大學(xué)常熟研究院有限公司