基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)畢業(yè)論文_第1頁
基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)畢業(yè)論文_第2頁
基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)畢業(yè)論文_第3頁
基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)畢業(yè)論文_第4頁
基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)畢業(yè)論文_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

百度文庫-讓每個人平等地提升自我百度文庫-讓每個人平等地提升自我PAGEPAGE40百度文庫-讓每個人平等地提升自我PAGE

本科畢業(yè)論文基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)VulnerabilityScanSystemBasedonNetwork姓名:學(xué)號:學(xué)院:軟件學(xué)院系:軟件工程專業(yè):軟件工程年級:指導(dǎo)教師:年月摘要隨著互聯(lián)網(wǎng)的日益普及,網(wǎng)絡(luò)的安全問題越來越成為人們關(guān)注的焦點之一。而在所有安全事件中,99%的網(wǎng)絡(luò)入侵都是基于已知的漏洞而產(chǎn)生的,因此檢測并修補已知的安全漏洞對保證網(wǎng)絡(luò)的安全起著非常重要的意義?;诰W(wǎng)絡(luò)的漏洞掃描系統(tǒng)是一種主動式的安全檢測系統(tǒng)。它能夠根據(jù)漏洞庫中不同漏洞的特征,模擬黑客攻擊的方式,向本地或遠程主機發(fā)送一個或多個經(jīng)過特殊構(gòu)造的數(shù)據(jù)包,捕獲并記錄目標(biāo)主機發(fā)回的應(yīng)答數(shù)據(jù)包。通過這種方法,收集到目標(biāo)主機的各種信息,并將這些信息與已有漏洞的特征進行匹配,從而發(fā)現(xiàn)目標(biāo)主機上的各種安全漏洞。本文首先介紹了課題研究的背景和意義,以及安全漏洞的概念、產(chǎn)生的原因,并對幾種常見的漏洞進行了分析。接下來研究了安全漏洞掃描中使用的一些關(guān)鍵技術(shù),例如協(xié)議棧指紋識別技術(shù)、ICMP掃描技術(shù)、TCP掃描技術(shù)等,并在此基礎(chǔ)上設(shè)計和實現(xiàn)了一個基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng)。該系統(tǒng)首先檢測目標(biāo)主機的存活狀況,然后對遠程主機操作系統(tǒng)版本進行識別,緊接著掃描該主機所開放的服務(wù)端口,在得到這些信息的基礎(chǔ)上對目標(biāo)可能存在的已知安全漏洞進行逐項檢測,發(fā)現(xiàn)目標(biāo)系統(tǒng)中存在的漏洞。在掃描結(jié)束時,給出掃描報告,從而讓管理員及時發(fā)現(xiàn)當(dāng)前網(wǎng)絡(luò)中的安全隱患,修補系統(tǒng)中的漏洞,提高網(wǎng)絡(luò)的安全性與抵御攻擊的能力。關(guān)鍵詞:漏洞;網(wǎng)絡(luò)安全;漏洞掃描AbstractWiththeincreasingpopularityoftheInternet,networksecurityisdrawingmoreandmorepeople'sattention.Forallthesecurityincidents,99%ofthenetworkinstrusionsarebasedontheknownvulnerabilities,soitissignificantfornetworksecuritythattheknownvulnerabilitiesshouldbedetectedandrepaired.VulnerabilityScanSystemBasedonNetworkisatypeofactivesecuritydetectionsystem.Itcanimmatatethewayofhackers'attackingtosendoneormorespeciallyconstructeddatapacketsaccourdingtothefeauresofdifferentvulnerability,andthencaptureandrecordtheechoingpacketsfromtargethost.Bythisway,theinformationoftargethostiscollected,thensystemcomparesthemwiththefeaturesofexistingvulnerabilities,thusvulnerabilitiesofthetargethostwillbefoundout.Thisarticlefirstlyintroducesthebackgroundandsignificanceoftheresearch,andthedefinitionofvulnerability,thecauseofthevulnerabilityaswellastheanalysisofseveralcommontypeofvulnerabilities.Thensomekeytechnologiesarestudiedysuchasidentificationofprotocolstack,ICMPscaningtechnology,TCPscaningtechnology,etc,basedonwhichasystemcalled"VulnerabilityScanSystemBasedonNetwork"isdesignedandimplemented.Thesystemfirstlydetectthelivenessofthetargethost,thenitsoperationsystemversionisdetected,andnext,theopeningserviceportsisscaned,afterthecollectionoftheseinformation,thesystemwillcheckthehost'svulnerabilitiesonebyone,finditsexistingvulnerabilities.Afterthescaning,areportisgivenwhichallowstheadministratortofindnetworksercurityvulnerabilitiesintimeandfixthem,whichwillrisethesecuritylevelandtheabilitytodefensenetworkattacking.Keywords:vulnerability;networksecurity;vulnerabilitiesscan.目錄研究背景 2漏洞掃描技術(shù)的現(xiàn)狀 2本文的內(nèi)容及安排 3相關(guān)理論介紹 52.1.1漏洞概念 52.1.2漏洞成因 62.1.3常見漏洞類型 7相關(guān)技術(shù)介紹 92.2.1Winsock與原始套接字 92.2.2操作系統(tǒng)嗅探技術(shù) 112.2.3ICMP掃描技術(shù) 122.2.4TCP掃描技術(shù) 14開發(fā)環(huán)境簡介 18本章小結(jié) 18第三章系統(tǒng)分析與設(shè)計 19整體設(shè)計 193.1.1設(shè)計目標(biāo) 193.1.2系統(tǒng)結(jié)構(gòu) 193.1.3數(shù)據(jù)庫設(shè)計 21功能模塊設(shè)計 223.2.1存活主機檢測 223.2.2操作系統(tǒng)嗅探 233.2.3端口掃描 243.2.4漏洞掃描 24本章小結(jié) 26第四章系統(tǒng)實現(xiàn) 27存活主機檢測模塊的實現(xiàn) 27端口掃描模塊實現(xiàn) 28本章小結(jié) 32演示環(huán)境 33演示結(jié)果 335.2.1主機檢測 345.2.2操作系統(tǒng)嗅探 345.2.3端口探測 345.2.4漏洞掃描 36本章小結(jié) 36第六章總結(jié)與展望 37總結(jié) 37展望 37Content研究背景 2漏洞掃描技術(shù)的現(xiàn)狀 2本文的內(nèi)容及安排 3相關(guān)理論介紹 52.1.1漏洞概念 52.1.2漏洞成因 62.1.3常見漏洞類型 7相關(guān)技術(shù)介紹 92.2.1Winsock與原始套接字 92.2.2操作系統(tǒng)嗅探技術(shù) 112.2.3ICMP掃描技術(shù) 122.2.4TCP掃描技術(shù) 14開發(fā)環(huán)境簡介 18本章小結(jié) 18第三章系統(tǒng)分析與設(shè)計 19整體設(shè)計 193.1.1設(shè)計目標(biāo) 193.1.2系統(tǒng)結(jié)構(gòu) 193.1.3數(shù)據(jù)庫設(shè)計 21功能模塊設(shè)計 223.2.1存活主機檢測 223.2.2操作系統(tǒng)嗅探 233.2.3端口掃描 243.2.4漏洞掃描 24本章小結(jié) 26第四章系統(tǒng)實現(xiàn) 27存活主機檢測模塊的實現(xiàn) 27端口掃描模塊實現(xiàn) 28本章小結(jié) 32演示環(huán)境 33演示結(jié)果 335.2.1主機檢測 345.2.2操作系統(tǒng)嗅探 345.2.3端口探測 345.2.4漏洞掃描 36本章小結(jié) 36第六章總結(jié)與展望 37總結(jié) 37展望 37第一章引言研究背景現(xiàn)代社會中,計算機網(wǎng)絡(luò)已經(jīng)成為人們生活中不可缺少的組成部分,但是網(wǎng)絡(luò)技術(shù)在給我們帶來方便的同時也帶來了巨大的安全隱患。特別是近些年來,計算機網(wǎng)絡(luò)犯罪日益猖獗,從上世紀(jì)的蠕蟲、CHI到最近幾年的灰鴿子、熊貓燒香以及最近出來的鬼影,安全問題給人們帶來一次又一次沉重的教訓(xùn)。據(jù)美國聯(lián)邦調(diào)查局調(diào)查顯示,全美大約有280萬個公司和組織都至少遇到過一次計算機安全問題,平均每一家遭受到了萬美元的損失,如此,一年內(nèi)的損失總額可能會達到672億美元。[1]我們網(wǎng)絡(luò)環(huán)境之所以不安全,是因為它存在著漏洞,每一個網(wǎng)絡(luò)系統(tǒng)都有已被發(fā)掘的或潛在的尚未被發(fā)掘的各種安全漏洞,漏洞是無法避免的,不存在絕對安全的網(wǎng)絡(luò)系統(tǒng)。對于安全漏洞引起的問題,采用事先檢測系統(tǒng)的脆弱點防患于未然,是減少損失的有效辦法。通常黑客進行攻擊前,會首先收集目標(biāo)網(wǎng)絡(luò)系統(tǒng)的信息,確定目標(biāo)網(wǎng)絡(luò)的狀態(tài),如操作系統(tǒng)版本類型、開放端口、運行服務(wù)等,然后再實施具有針對性的攻擊。對目標(biāo)網(wǎng)絡(luò)系統(tǒng)信息的獲取,主要是通過漏洞掃描完成的。我們可以通過同樣的方式來評估網(wǎng)絡(luò)的安全性能。漏洞掃描器是一種自動檢測遠程或本地主機安全性弱點的程序。通過使用漏洞掃描器,系統(tǒng)管理員能夠發(fā)現(xiàn)所維護的服務(wù)器的各種TCP端口的分配、提供的服務(wù)、Web服務(wù)軟件版本和這些服務(wù)及軟件呈現(xiàn)在Internet上的安全漏洞。從而在計算機網(wǎng)絡(luò)系統(tǒng)安全防護中做到有的放矢,及時修補漏洞,構(gòu)筑安全的網(wǎng)絡(luò)體系。[2]漏洞掃描是一把雙刃劍,它作為網(wǎng)絡(luò)安全評測的重要工具,可以幫助系統(tǒng)管理員評估主機和網(wǎng)絡(luò)的安全性能,發(fā)現(xiàn)網(wǎng)絡(luò)中潛在的安全漏洞,提高網(wǎng)絡(luò)的抗攻擊能力;但是也可能被網(wǎng)絡(luò)入侵者所利用,作為收集網(wǎng)絡(luò)主機信息的重要手段。[2]漏洞掃描技術(shù)的現(xiàn)狀目前,在網(wǎng)絡(luò)安全領(lǐng)域,安全掃描技術(shù)、入侵檢測技術(shù)、防火墻技術(shù)和病毒檢測技術(shù)構(gòu)成網(wǎng)絡(luò)安全4種主要技術(shù)。后3種技術(shù)都是在攻擊進行中或者進行后的被動檢側(cè),而安全掃描技術(shù)則是在攻擊進行前的主動檢測。[3]安全掃描通常采用兩種策略,第一種是被動式策略,第二種是主動式策略。所謂被動式策略就是基于主機之上,對系統(tǒng)中不合適的設(shè)置,脆弱的口令以及其他同安全規(guī)則抵觸的對象進行檢查;而主動式策略是基于網(wǎng)絡(luò)的,它通過執(zhí)行一些腳本文件模擬對系統(tǒng)進行攻擊的行為并記錄系統(tǒng)的反應(yīng),從而發(fā)現(xiàn)其中的漏洞。利用被動式策略掃描稱為系統(tǒng)安全掃描,利用主動式策略掃描稱為網(wǎng)絡(luò)安全掃描。目前安全漏洞掃描主要使用的檢測方案[4]:(1)基于應(yīng)用的檢測技術(shù)它采用被動的、非破壞性的辦法檢查應(yīng)用軟件包的設(shè)置,發(fā)現(xiàn)安全漏洞。(2)基于主機的檢測技術(shù)它采用被動的、非破壞性的辦法對系統(tǒng)進行檢測。通常,它涉及到系統(tǒng)的內(nèi)核,文件的屬性,操作系統(tǒng)的補丁等問題。這種技術(shù)還包括口令解密,把一些簡單的口令剔除。因此,這種技術(shù)可以非常準(zhǔn)確地定位系統(tǒng)的問題,發(fā)現(xiàn)系統(tǒng)的漏洞。它的缺點是與平臺相關(guān),升級復(fù)雜。(3)基于目標(biāo)的漏洞檢測技術(shù)它采用被動的、非破壞性的辦法檢查系統(tǒng)屬性和文件屬性,如數(shù)據(jù)庫,注冊號等。通過消息文摘算法,對文件的加密數(shù)進行檢驗。這種技術(shù)的實現(xiàn)是運行在一個閉環(huán)上,不斷地處理文件,系統(tǒng)目標(biāo),系統(tǒng)目標(biāo)屬性,然后產(chǎn)生檢驗數(shù),把這些檢驗數(shù)同原來的檢驗數(shù)相比較。一旦發(fā)現(xiàn)改變就通知管理員。(4)基于網(wǎng)絡(luò)的檢測技術(shù)它采用積極的、非破壞性的辦法來檢驗系統(tǒng)是否有可能被攻擊崩潰。它利用了一系列的腳本模擬對系統(tǒng)進行攻擊的行為,然后對結(jié)果進行分析。它還針對已知的網(wǎng)絡(luò)漏洞進行檢驗。網(wǎng)絡(luò)檢測技術(shù)常被用來進行穿透實驗和安全審記。這種技術(shù)可以發(fā)現(xiàn)一系列平臺的漏洞,也容易安裝。但是,它可能會影響網(wǎng)絡(luò)的性能。本文的內(nèi)容及安排本文詳細介紹了安全漏洞的基本知識,漏洞掃描的核心技術(shù)與方法,如存活主機檢測、基于協(xié)議棧指紋識別技術(shù)的操作系統(tǒng)嗅探,端口掃描及一些常見漏洞的掃描。在此基礎(chǔ)上設(shè)計并實現(xiàn)了一個簡單的漏洞掃描系統(tǒng)。 全文共六章,章節(jié)安排如下:第一章:引言。介紹課題背景,漏洞掃描技術(shù)的現(xiàn)狀以及本文的研究內(nèi)容和組織結(jié)構(gòu)。第二章:相關(guān)理論及技術(shù)概述。介紹了安全漏洞的概念、成因及一些常見漏洞分析。闡述了Winsock與原始數(shù)據(jù)包、存活主機檢測、操作系統(tǒng)嗅探、ICPM掃描、TCP掃描等相關(guān)技術(shù)。另外還介紹了本系統(tǒng)的開發(fā)環(huán)境。第三章:系統(tǒng)分析與設(shè)計。闡述系統(tǒng)的整體結(jié)構(gòu),工作原理、各模塊的設(shè)計及模塊之間的聯(lián)系,數(shù)據(jù)庫的設(shè)計等。第四章:系統(tǒng)的實現(xiàn)。根據(jù)第三章的設(shè)計,將本系統(tǒng)各個功能模塊的實現(xiàn)作了詳細的介紹。第五章:系統(tǒng)演示。簡單演示了各個模塊的功能。第六章:總結(jié)與展望??偨Y(jié)了本文的工作與本系統(tǒng)的特點,并提出了一些改進措施。第二章相關(guān)理論及技術(shù)概述這一章將介紹相關(guān)理論及技術(shù),包括漏洞的概念、成因及常見漏洞的分析,Winsock與原屬數(shù)據(jù)包的相關(guān)知識,基于協(xié)議棧指紋識別技術(shù)的操作系統(tǒng)嗅探原理和TCP、ICMP掃描等技術(shù)。最后簡要介紹了一下系統(tǒng)的開發(fā)環(huán)境。相關(guān)理論介紹2.1.1漏洞概念漏洞(Vulnerability):也稱脆弱性,是在硬件、軟件、協(xié)議的具體實現(xiàn)或系統(tǒng)安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng)。[5]具體舉例來說,比如在IntelPentium芯片中存在的邏輯錯誤,在Sendmail早期版本中的編程錯誤,在NFS協(xié)議中認證方式上的弱點,在Unix系統(tǒng)管理員設(shè)置匿名Ftp服務(wù)時配置不當(dāng)?shù)膯栴}都可能被攻擊者使用,威脅到系統(tǒng)的安全。因而這些都可以認為是系統(tǒng)中存在的安全漏洞。[6]系統(tǒng)安全漏洞是在系統(tǒng)具體實現(xiàn)和具體使用中產(chǎn)生的錯誤,但并不是系統(tǒng)中存在的錯誤都是安全漏洞。只有能威脅到系統(tǒng)安全的錯誤才是漏洞。許多錯誤在通常情況下并不會對系統(tǒng)安全造成危害,只有被人在某些條件下故意使用時才會影響系統(tǒng)安全。漏洞會影響到很大范圍的軟硬件設(shè)備,包括作系統(tǒng)本身及其支撐軟件,網(wǎng)絡(luò)客戶和服務(wù)器軟件,網(wǎng)絡(luò)路由器和安全防火墻等。換而言之,在這些不同的軟硬件設(shè)備中都可能存在不同的安全漏洞問題。在不同種類的軟、硬件設(shè)備,同種設(shè)備的不同版本之間,由不同設(shè)備構(gòu)成的不同系統(tǒng)之間,以及同種系統(tǒng)在不同的設(shè)置條件下,都會存在各自不同的安全漏洞問題。[6]漏洞問題是與時間緊密相關(guān)的。一個系統(tǒng)從發(fā)布的那一天起,隨著用戶的深入使用,系統(tǒng)中存在的漏洞會被不斷暴露出來,這些早先被發(fā)現(xiàn)的漏洞也會不斷被系統(tǒng)供應(yīng)商發(fā)布的補丁軟件修補,或在以后發(fā)布的新版系統(tǒng)中得以糾正。而在新版系統(tǒng)糾正了舊版本中具有漏洞的同時,也會引入一些新的漏洞和錯誤。因而隨著時間的推移,舊的漏洞會不斷消失,新的漏洞會不斷出現(xiàn)。漏洞問題也會長期存在。因而脫離具體的時間和具體的系統(tǒng)環(huán)境來討論漏洞問題是毫無意義的。只能針對目標(biāo)系統(tǒng)的作系統(tǒng)版本、其上運行的軟件版本以及服務(wù)運行設(shè)置等實際環(huán)境來具體談?wù)撈渲锌赡艽嬖诘穆┒醇捌淇尚械慕鉀Q辦法。2.1.2漏洞成因網(wǎng)絡(luò)的安全符合木桶原理,入侵者只要找到復(fù)雜計算機網(wǎng)絡(luò)中的一個縫隙,就能輕而易舉地闖入系統(tǒng)。所以,了解這些縫隙可能存在的地方以及產(chǎn)生的原因,對檢測及修補他們起著至關(guān)重要的意義。通常產(chǎn)生這些缺陷的方面主要表現(xiàn)在系統(tǒng)設(shè)計、口令設(shè)置、數(shù)據(jù)未加密、軟件bug等。[6]設(shè)計上的缺陷:TCP/IP協(xié)議在設(shè)計之初首先考慮的是網(wǎng)絡(luò)互連而不是網(wǎng)絡(luò)安全,它是假定工作在可信環(huán)境下的,而且由于TCP/IP協(xié)議是完全公開的,入侵者可以隨意地偽造或修改數(shù)據(jù)包而不被發(fā)現(xiàn),從而達到一些不正當(dāng)?shù)哪康摹_@使得我們的網(wǎng)絡(luò)環(huán)境變得很不安全、很不可靠??诹钤O(shè)置過于簡單:(1)口令被猜測:很多人經(jīng)常使用自己的電話號碼,生日等作為登陸口令,有的人甚至采用像“abc”、“111111”、“123456(2)字典攻擊:入侵者使用一個程序,該程序借助一個包含用戶名和口令的字典數(shù)據(jù)庫,不斷地嘗試登錄系統(tǒng),直到成功進入。毋庸置疑,這種方式的關(guān)鍵在于有一個好的字典。 (3)暴力破解:與字典攻擊類似,不同的是暴力破解會把所有的字符串組合都試一遍。例如包含6個數(shù)字的口令有一百萬種組合,1個包含大小寫且標(biāo)點符號的7字符口令大約有10萬億種組合。對于后者,一般的計算機要花費大約幾個月的時間才能試驗一遍??梢?,長口令是保證系統(tǒng)安全的有效措施。數(shù)據(jù)未加密:抓包程序輕而易舉的就能夠抓到所有經(jīng)過該節(jié)點的數(shù)據(jù)流,若我們的數(shù)據(jù)未加密,那么它就會完全暴露在入侵者面前,系統(tǒng)就毫無安全性可言。(1)共享介質(zhì):傳統(tǒng)的以太網(wǎng)結(jié)構(gòu)很便于入侵者在網(wǎng)絡(luò)上放置一個嗅探器就可以查看該網(wǎng)段上的通訊數(shù)據(jù),但是如果采用交換型以太網(wǎng)結(jié)構(gòu),嗅探行為將變得非常困難。(2)服務(wù)器嗅探:交換型網(wǎng)絡(luò)也有一個明顯的不足,入侵者可以在服務(wù)器上特別是充當(dāng)路由功能的服務(wù)器上安裝一個嗅探器軟件,然后就可以通過它收集到的信息闖進客戶端機器以及新任的機器。例如,雖然不知道用戶的口令,但當(dāng)用戶使用Telnet軟件登錄時就可以嗅探到他輸入的口令了。(3)遠程嗅探:許多設(shè)備都具有RMON(Remotemonitor,遠程監(jiān)控)功能以便管理者使用公共體字符串(publiccommunitystrings)進行遠程調(diào)試。隨著寬帶的不斷普及,入侵者對這個后門越來越感興趣了。編寫軟件存在bug:無論是服務(wù)器程序、客戶端軟件還是操作系統(tǒng),只要是用代碼編寫的東西,都會存在不同程度的bug,常見的主要有以下幾類:(1)緩沖區(qū)溢出:指入侵者在程序的有關(guān)輸入項目中了輸入了超過規(guī)定長度的字符串,超過的部分通常就是入侵者想要執(zhí)行的攻擊代碼,而程序編寫者又沒有進行輸入長度的檢查,最終導(dǎo)致多出的攻擊代碼占據(jù)了輸入緩沖區(qū)后的內(nèi)存而執(zhí)行。(2)意料外的聯(lián)合使用問題:一個程序經(jīng)常由功能不同的多層代碼組成,甚至?xí)婕暗阶畹讓拥牟僮飨到y(tǒng)級別。入侵者通常會利用這個特點為不同的層輸入不同的內(nèi)容,以達到竊取信息的目的。例如:對于由Perl編寫的程序,入侵者可以在程序的輸入項目中輸入類似“mail</etc/password”的字符串,從而使Perl讓操作系統(tǒng)調(diào)用郵件程序,并發(fā)送出重要的密碼文件給入侵者。(3)不對輸入內(nèi)容進行預(yù)期檢查:有些編程人員怕麻煩,對輸入內(nèi)容不進行預(yù)期的匹配檢查,使入侵者輸送炸彈的工作輕松簡單。(4)Raceconditions:多任務(wù)多線程的程序越來越多,在提高運行效率的同時,也要注意Raceconditions的問題。比如說:程序A和程序B都按照“讀/改/寫”的順序操作一個文件,當(dāng)A進行完讀和改的工作時,B啟動立即執(zhí)行完“讀/改/寫”的全部工作,這時A繼續(xù)執(zhí)行寫工作,結(jié)果是A的操作沒有了表現(xiàn)!入侵者就可能利用這個處理順序上的漏洞改寫某些重要文件從而達到闖入系統(tǒng)的目的。2.1.3常見漏洞類型漏洞的種類很多,據(jù)CVE(通用漏洞披露)的統(tǒng)計資料現(xiàn)在已經(jīng)有幾千種,其中以CGI漏洞最多,而SMTP漏洞以及緩沖區(qū)溢出漏洞的出現(xiàn)頻率最高,以下針對幾種比較常見的漏洞加以介紹。 CGI漏洞:CGI(CommonGatewayInterface)即公共網(wǎng)關(guān)接口,它是一種與Web服務(wù)器通信的標(biāo)準(zhǔn)接口。CGI主要有兩項功能:1.用于收集從瀏覽器發(fā)送給Web服務(wù)器的信息,并使這些信息能供其他程序使用;2.對提出請求的瀏覽器回送服務(wù)器處理的結(jié)果。[7]由于CGI程序開發(fā)者的疏忽,許多CGI程序存在各種危險程度的漏洞。例如有的CGI程序允許遠程攻擊者在WEB服務(wù)器上執(zhí)行任意的命令,可能對服務(wù)器造成破壞;有些CGI程序本身、或者被其調(diào)用的函數(shù)缺乏對用戶輸入數(shù)據(jù)的合法性檢查,未能濾除一些特殊字符,使得入侵者可以通過構(gòu)造請求來達到入侵的目的。比如,缺乏對“../”的過濾,可能導(dǎo)致入侵者讀取系統(tǒng)的任意文件;有些CGI程序會向客戶端瀏覽器返回某些敏感信息,比如腳本所在路徑、HTTP根目錄所在路徑、Perl版本、server_admin、server_name、PATH環(huán)境變量等,這些都為黑客的攻擊提供了便利。[7] 目前,大多數(shù)網(wǎng)站都使用免費的公共CGI腳本程序去驅(qū)動各自的Web服務(wù),從而導(dǎo)致有缺陷的CGI腳本在Internet上泛濫開來。因此,對CGI腳本的安全性應(yīng)高度重視。SMTP漏洞:SMTP(SimpleMailTransferProtocol)是簡單郵件傳輸協(xié)議的簡稱。SMTP協(xié)議出于TCP/IP協(xié)議的應(yīng)用層包,但事實上它與傳輸系統(tǒng)和機制無關(guān),僅要求一個可靠的數(shù)據(jù)流通道。盡管SMTP服務(wù)已經(jīng)在RFC中被詳細的定義,但在具體實現(xiàn)中各個軟件開發(fā)商并沒有很好的遵循RFC的規(guī)定,因此我們可以通過實現(xiàn)上的細小差異來進行探測活動。通過發(fā)送特定的、非標(biāo)準(zhǔn)的數(shù)據(jù)包來獲得指紋信息,可以進而判斷出目標(biāo)主機使用的軟件版本信息。FTP漏洞:FTP是FileTransferProtocol(文件傳輸協(xié)議)的英文簡稱,用于Internet上的控制文件的雙向傳輸。用戶可以通過它把自己的PC機與世界各地所有運行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的大量程序和信息。FTP服務(wù)也存在多種漏洞,包括拒絕服務(wù)攻擊漏洞、緩沖區(qū)溢出漏洞等等,以FTP弱口令為例,因為ftp服務(wù)器上可能存在匿名用戶或者弱勢密碼用戶,所以黑客常利用該缺陷進行攻擊。例如發(fā)現(xiàn)ftp匿名用戶后,可以再借助系統(tǒng)的其他漏洞通過匿名用戶提升權(quán)限。開放匿名用戶經(jīng)常會給系統(tǒng)帶來一些安全隱患。DOS漏洞:DOS是DenialofService的簡稱,即拒絕服務(wù)。任何對服務(wù)的干涉如果使得其可用性降低或者失去可用性均成為拒絕服務(wù)。如果一個計算機系統(tǒng)崩潰或其帶寬耗盡或其硬盤被填滿,導(dǎo)致其不能提供正常的服務(wù),就構(gòu)成拒絕服務(wù)。造成DOS的攻擊行為被稱為DOS攻擊,其目的是使計算機或網(wǎng)絡(luò)無法提供正常的服務(wù)。最常見的DOS攻擊有計算機網(wǎng)絡(luò)帶寬攻擊和連通性攻擊。帶寬攻擊指以極大的通信量沖擊網(wǎng)絡(luò),使得所有可用網(wǎng)絡(luò)資源都被消耗殆盡,最后導(dǎo)致合法的用戶請求就無法通過。連通性攻擊指用大量的連接請求沖擊計算機,使得所有可用的操作系統(tǒng)資源都被消耗殆盡,最終計算機無法再處理合法用戶的請求。Finger漏洞:Finger是UNIX系統(tǒng)中用于查詢用戶情況的實用程序。UNIX系統(tǒng)保存了每個用戶的詳細資料,包括E-mail地址、賬號,在現(xiàn)實生活中的真實姓名、登錄時間、有沒有未閱讀的信件,最后一次閱讀E-mail的時間以及外出時的留言等資料。當(dāng)用Finger命令查詢時,系統(tǒng)會將上述資料一一顯示在終端計算機上。使用Finger可以查詢Internet主機內(nèi)任意用戶的某些公開信息,因此,它為黑客提供了大量有用的信息:如用戶名列表、用戶登錄信息和一些能夠用來猜測密碼的信息等。特別要指出的是,79端口是專為Finger服務(wù)開放的,主要用于查詢遠程主機在線用戶、操作系統(tǒng)類型以及是否緩沖區(qū)溢出等用戶的詳細信息.相關(guān)技術(shù)介紹2.2.1Winsock與原始套接字WindowsSockets簡稱WinSock,是Windows下的網(wǎng)絡(luò)編程規(guī)范,為應(yīng)用程序提供了開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。它定義了如何通過API實現(xiàn)與internet協(xié)議族的連接。應(yīng)用程序通過調(diào)用WindowsSockets的API實現(xiàn)相互之間的通信,而實際的工作是通過下層的網(wǎng)絡(luò)通信協(xié)議和操作系統(tǒng)實現(xiàn)的。在七層網(wǎng)絡(luò)協(xié)議中,WinSock主要控制數(shù)據(jù)的輸入和輸出,也就是傳輸層和網(wǎng)絡(luò)層,屏蔽了數(shù)據(jù)鏈路層和物理層。WinsockAPI函數(shù)有版本和版本。經(jīng)過不斷完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成為Windows網(wǎng)絡(luò)編程的事實上的標(biāo)準(zhǔn)。[8]Winsock為上層應(yīng)用程序提供的一種標(biāo)準(zhǔn)網(wǎng)絡(luò)接口,而不是協(xié)議,所以它可以用于發(fā)現(xiàn)和使用任意數(shù)量的底層傳輸協(xié)議所提供的通信能力。上層應(yīng)用程序不用關(guān)心Winsock實現(xiàn)的細節(jié),它為上層應(yīng)用程序提供透明的服務(wù)最開始的Winsock是圍繞著TCP/IP協(xié)議運行的,但是在Winsock2.0中卻增加了對更多傳輸協(xié)議的支持.不僅提供了一個供應(yīng)用程序訪問網(wǎng)絡(luò)服務(wù)的Windowsocket應(yīng)用程序編程接口(API:ApplicationProgrammingInterface),還包含了由傳輸服務(wù)提供者和名字解析服務(wù)提供者實現(xiàn)的Winsock服務(wù)提供者接口(SPI:ServiceProviderInterface)和ws2_32.d11。Winsock2.0引人的這個新功能(SPI技術(shù))打破了服務(wù)提供者的透明,讓開發(fā)者可以編寫自己的服務(wù)提供程序,SPI以動態(tài)鏈接庫(DLL)的形式存在,它工作在應(yīng)用層,為上層API調(diào)用提供接口函數(shù)。在網(wǎng)絡(luò)安全掃描中要構(gòu)造各種不同的數(shù)據(jù)報,如TCP數(shù)據(jù)包,UDP數(shù)據(jù)包及ICMP數(shù)據(jù)包,可以利用Winsock的原始套接字來實現(xiàn)。并且在分析返回數(shù)據(jù)時要捕獲網(wǎng)絡(luò)數(shù)據(jù)包,此時也可以使用Winsock的原始套接字。原始套接字能夠根據(jù)需要生成用戶想要的數(shù)據(jù)報文,包括報頭和數(shù)據(jù)報本身的內(nèi)容,而且能夠?qū)W(wǎng)絡(luò)底層的傳輸制進行控制。對于一般的流套接字或數(shù)據(jù)報套接字,開發(fā)人員只能處理封裝在TCP或UDP協(xié)議中的數(shù)據(jù)。而原始套接字則提供了一種直接訪問底層IP協(xié)議的方法。它主要提供了以下幾種TCP及UDP套接字所不能提供的功能:[8](1)使用原始套接字可以讀寫包含在IP包中的其它協(xié)議數(shù)據(jù)報,如ICMP、IGMP、OSPF等。(2)利用原始套接字,使用IP_HDRINCL套接字選項可以構(gòu)造IP包頭部。(3)利用原始套接字,使用I/O控制命令SIO_RCVALL可以捕獲網(wǎng)上所有的IP在構(gòu)造數(shù)據(jù)包的時候,要按照協(xié)議規(guī)定封裝數(shù)據(jù),入棧的封裝過程如圖2-1所示。圖2-1:數(shù)據(jù)進入?yún)f(xié)議棧時的封裝過程要注意的是由于TCP、UDP、ICMP、和IGMP都要向IP傳送數(shù)據(jù),因此IP必須在生成的IP首部中加入某種標(biāo)示,以表明數(shù)據(jù)屬于哪一層。為此,IP在首部存入一個長度為8bit的數(shù)值,稱作協(xié)議域。1表示ICMP協(xié)議,2表示IGMP協(xié)議,6表示TCP協(xié)議,17表示UDP協(xié)議。[9]2.2.2操作系統(tǒng)嗅探技術(shù)在網(wǎng)絡(luò)信息安全系統(tǒng),尤其是安全評估系統(tǒng)中,信息的收集和分析至關(guān)重要,對操作系統(tǒng)進行踩點,識別目標(biāo)操作系統(tǒng)則是其中不可獲取的一個組成部分。因為各種各樣的漏洞依附于不同的操作系統(tǒng)之上,只有精確地識別出目標(biāo)主機操作系統(tǒng)的類型,才能更有目的性地發(fā)掘漏洞和弱點所在,準(zhǔn)確地對目標(biāo)主機進行評估。當(dāng)前流行的主動操作系統(tǒng)探測方法主要分為TCP/IP棧指紋識別和ICMP棧指紋識別。在TCP/IP棧指紋識別中,通過設(shè)置IP頭部和TCP頭部標(biāo)志位的不同值,觀察回復(fù)報文標(biāo)志位的設(shè)置等諸多情況,分析操作系統(tǒng)類型;ICMP棧指紋識別探測主要通過發(fā)送ICMPEchoRequest、TimestampRequest和InformationRequest等報文進行探測,通過分折回復(fù)報文的IP頭、ICMP頭部的相關(guān)標(biāo)志位的設(shè)置情況來區(qū)分操作系統(tǒng)類型。 以下舉例說明不同系統(tǒng)對ICMP響應(yīng)的差別[8]。IP總長度:一些系統(tǒng)會正常響應(yīng)該域的值,而某些操作系統(tǒng)(如BSD家族系列)會在原始IP總長度域上增加20字節(jié)(sizeof(ipheader)),這是因為其內(nèi)部錯誤處理數(shù)據(jù)包的結(jié)果。(注意:同樣的數(shù)據(jù)包如果從SOCK_RAW讀取的話,返回的數(shù)據(jù)包ip_len字段將會減掉20字節(jié)).IP/UPD頭校驗和:一些操作系統(tǒng)會錯誤計算這個域,某些系統(tǒng)會填充0值,而有些系統(tǒng)能正確響應(yīng)這個值。DF位響應(yīng):些TCP/IP堆棧會在ICMP錯誤數(shù)據(jù)包中響應(yīng)DF位,其他的(如Linux)會拷貝全部八位位組,并部分位清零,再有的是會忽略這個位而設(shè)置其自身相關(guān)的值。IPID字段:基于Linux2.4.0-內(nèi)核的Linux機器會在ICMP查詢請求和應(yīng)答信息中設(shè)置IP標(biāo)識為零值。而在和以上版本中得到改正。ICMP回顯請求code字段:ICMP回顯請求信息(類型8)中ICMP代碼段的值不等于0時,操作系統(tǒng)會使用ICMP回顯應(yīng)答對發(fā)送方的查詢進行回答,基于Microsoft的操作系統(tǒng)會發(fā)回在ICMP回顯應(yīng)答中ICMP代碼類型設(shè)置為0的數(shù)據(jù)包,而其他操作系統(tǒng)和網(wǎng)絡(luò)設(shè)備則會使用ICMP回顯請求中相同的ICMP代碼段值。以上列舉了幾種不同系統(tǒng)對發(fā)送方區(qū)別響應(yīng)的情況。當(dāng)我們收集到足夠的信息之后,就可以判斷出目標(biāo)主機所使用的操作系統(tǒng)。信息越詳細,探測的結(jié)果就越準(zhǔn)確,能夠辨別的操作系統(tǒng)也就越多。2.2.3ICMP掃描技術(shù) ICMP是(InternetControlMessageProtocol)Internet控制報文協(xié)議。它是TCP/IP協(xié)議族的子協(xié)議,用于在IP主機、路由器之間傳遞控制消息。一般來說,ICMP報文提供針對網(wǎng)絡(luò)層的錯誤診斷、擁塞控制、路徑控制和查詢服務(wù)四項功能。例如,當(dāng)一個分組無法到達目的站點或TTL超時后,路由器就會丟棄此分組,并向源站點返回一個目的不可達的ICMP報文。[11]ICMP報文大體上可以分為兩種類型,即:ICMP差錯報文和ICMP查詢報文。常用的ICMP報文有ICMP回顯請求、ICMP地址掩碼請求、ICMP時間戳請求和ICMP端口不可達報文。格式如圖2-1所示。圖2-2:ICMP協(xié)議報文格式ICMP回顯請求/應(yīng)答報文是一種雙向信息查詢報文,用于獲取某些有用信息,以便進行網(wǎng)路故障診斷和網(wǎng)絡(luò)控制。常用的ping程序就是基于ICMP回顯請求實現(xiàn)的。ICMP地址掩碼請求用于無盤系統(tǒng)在引導(dǎo)過程中獲取自己的子網(wǎng)掩碼,系統(tǒng)將廣播它的ICMP請求報文。ICMP端口不可達報文是ICMP目的不可達報文中的一種,可以從ICMP差錯報文中所附加的數(shù)據(jù)中查看錯誤信息。ICMP時間戳請求允許系統(tǒng)向另一個系統(tǒng)查詢當(dāng)前的時間。返回的建議值是自午夜開始計算的毫秒數(shù),是協(xié)調(diào)的統(tǒng)一時間(CoordinatedUniversalTime,UTC),它是世界各地通用標(biāo)準(zhǔn)時間,也叫世界時。這種ICMP報文的好處是它提供了毫秒級的分辨率,而利用其他方法從別的主機獲取的時間只能提供秒級的分辨率。最常用的ICMP掃描方法就是利用PING的原理,發(fā)送ICMP回顯請求報文,然后監(jiān)聽是否有ICMP回顯應(yīng)答報文返回,如果沒有就證明目標(biāo)主機不存在或者已經(jīng)停機,如果能夠返回ICMP回顯應(yīng)答報文,就證明主機正在運行[6]。其過程如圖2-3所示。圖2-3:ICMP回顯請求2.2.4TCP掃描技術(shù) 利用TCP協(xié)議來進行端口掃描是常見的掃描方法,因為現(xiàn)在的很多網(wǎng)絡(luò)應(yīng)用程序都是基于TCP協(xié)議來實現(xiàn)的,例如Web服務(wù)器就是基于TCP的80號端口[6]。 TCP是一個面向連接的協(xié)議,格式如圖2-4所示:圖2-4:TCP協(xié)議格式端口號對應(yīng)服務(wù)類型,也是TCP通信與應(yīng)用程序的接口,每個TCP通信程序都有一個TCP端口,或者是臨時的端口或者是固定的端口。一個四元組(客戶機IP,客戶端口,服務(wù)器IP,服務(wù)器端口)對應(yīng)一個完整的TCP連接。TCP協(xié)議提供完全可靠的、面向連接的、全雙工的、流傳輸服務(wù)。它與IP協(xié)議同時使用,保證了網(wǎng)絡(luò)上不同主機在通信時數(shù)據(jù)傳輸?shù)目煽?、高效。TCP的可靠傳輸是通過三次握手過程實現(xiàn)的。TCP中有六個標(biāo)志位,其中URG表示緊急指針,ACK表示確認號,RSH置1時請求的數(shù)據(jù)段在接收方得到后就可直接送到應(yīng)用程序,而不必等到緩沖區(qū)滿時才傳送。RST置1時重建連接,如果接收到RST位,通常表明發(fā)生了某些錯誤。SYN置1時用來發(fā)起一個連接。FIN置1時表示發(fā)送端完成發(fā)送任務(wù),用來釋放連接,表明發(fā)送方已經(jīng)沒有數(shù)據(jù)發(fā)送了。TCP正常連接也稱為三次握手過程,在這個過程中的第一個報文的代碼類型設(shè)置為SYN,序列號為m,表示開始一次握手。接收方接收后,向發(fā)送者發(fā)回一個報文。代碼類型設(shè)置為SYN和ACK,序列號設(shè)置為n,確認序列號設(shè)置為m+1。發(fā)送者在收到這個報文后,就可以進行TCP數(shù)據(jù)發(fā)送,于是,它又向接收者發(fā)送一個ACK段,表示雙方的連接已經(jīng)建立。在完成握手之后,就開始正式的數(shù)據(jù)傳輸。上面握手段中的序列號都是隨機產(chǎn)生的。一個正常的TCP連接過程如圖2-5所示。[9]圖2-5:TCP建立連接的三次握手 TCP用三個報文建立一個鏈接,而終止連接時需要四個報文。原因在于被動關(guān)閉鏈接一方需要關(guān)閉處理時間,因此ACK和FIN不能同時發(fā)給主動關(guān)閉一方[7]。如圖2-6所以。圖2-6:TCP終止連接的四次握手TCP掃描技術(shù)主要有TCPFIN掃描、TCPACK掃描、TCPSYN掃描。TCPFIN掃描:TCPFIN掃描使用的是FIN標(biāo)志,如果發(fā)送一個FIN標(biāo)志的TCP報文到一個關(guān)閉的端口,那么應(yīng)該返回一個RST報文,如果發(fā)送到一個開放的端口,那么端口可能沒有任何反應(yīng)。如果收到ICMP端口不可達錯誤數(shù)據(jù)包,則不能確認是否開放或者關(guān)閉,稱為狀態(tài)未知端口。[8]TCPFIN掃描的過程如圖2-7所示。圖2-7:TCPFIN掃描過程構(gòu)造含有FIN標(biāo)志的TCP數(shù)據(jù)包到目標(biāo)主機B的某一個端口,如果返回含有RST的TCP報文,那么表示端口關(guān)閉,如果沒有任何反應(yīng),則有可能表示端口打開,如果產(chǎn)生ICMP差錯報文,則端口的狀態(tài)是未知。由于網(wǎng)絡(luò)環(huán)境的復(fù)雜性,或者由于有防火墻或存在其他網(wǎng)絡(luò)過濾設(shè)備,阻礙了正常的數(shù)據(jù)流程,TCPFIN掃描將無法明確判斷端口是否打開。另外,對Windows系統(tǒng)而言,TCPFIN掃描是無效的。TCPACK掃描:TCPACK掃描是利用標(biāo)志位ACK,而ACK標(biāo)志在TCP協(xié)議中表示確認序號有效,它表示確認一個正常的TCP連接。但是在TCPACK掃描中沒有進行正常的TCP連接過程,實際上是沒有真正的TCP連接。使用TCPACK掃描不能夠確定端口的關(guān)閉或者開放,因為當(dāng)發(fā)送給對方一個含有ACK表示的TCP報文的時候,都返回含有RST標(biāo)志的報文,無論端口是開放或者關(guān)閉。所以,不能使用TCPACK掃描來確定端口是否開放或者關(guān)閉。但是可以利用它來掃描防火墻的配置,用它來發(fā)現(xiàn)防火墻規(guī)則,確定它們是有狀態(tài)的還是無狀態(tài)的,哪些端口是被過濾的。[8]TCPSYN掃描:TCPSYN掃描是一個半開放掃描形式,它利用了TCP三次握手中的一個步驟,也就是傳送SYN標(biāo)志這個步驟,其他的后續(xù)步驟沒有發(fā)生。而SYN標(biāo)志在TCP協(xié)議中表示發(fā)起一個新的連接,但如果只是發(fā)送了一個SYN標(biāo)志,后續(xù)的三次握手過程沒有。[8]不同的端口狀態(tài)會返回不同的響應(yīng)數(shù)據(jù)包,如果是開放的端口,那么會返回一個含有SYN+ACK標(biāo)志的TCP報文,如果端口是關(guān)閉的,那么會反饋一個含有RST標(biāo)志的報文。其過程如圖2-8所示。圖2-8:TCPSYN掃描過程主機A掃描主機B,構(gòu)造一個帶有ACK標(biāo)志的TCP數(shù)據(jù)包發(fā)送給主機B的一個端口,如果對方返回一個帶有SYN和ACK的TCP數(shù)據(jù)包,那么就表示端口是開放的,如果返回一個帶有RST的TCP數(shù)據(jù)包,那么就表示端口關(guān)閉。開發(fā)環(huán)境簡介操作系統(tǒng):Windows2000Professional開發(fā)工具:MicrosoftVisualC++;數(shù)據(jù)庫:MySQL5.0.18本系統(tǒng)涉及到原始數(shù)據(jù)包的構(gòu)造和發(fā)送,Windows2000系統(tǒng)提供了對原始數(shù)據(jù)包的有效支持,因此本系統(tǒng)選擇了Windows2000Professional操作系統(tǒng)作為開發(fā)平臺。本系統(tǒng)后臺部分主要使用C語言開發(fā),在Windows平臺下,VC++是最強大的C語言開發(fā)工具,而前臺部分則是使用java開發(fā)的,因此選用了Eclipse。MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。作為試驗性項目,為了降低開發(fā)成本,加快開發(fā)靈活性與開發(fā)速度,本系統(tǒng)采用MySQL最新版5.0.18版本。本章小結(jié)本章第一節(jié)介紹了有關(guān)漏洞的相關(guān)知識,漏洞的概念、形成的原因等,并詳細介紹了CGI漏洞、SMTP漏洞、FTP漏洞、DOS漏洞及Finger漏洞。第二節(jié)分析了漏洞掃描的一系列相關(guān)技術(shù)。最后在第三節(jié)簡要介紹了一下系統(tǒng)的開發(fā)環(huán)境。第三章系統(tǒng)分析與設(shè)計通過前面對漏洞相關(guān)概念及技術(shù)的討論,本章設(shè)計了一個基于網(wǎng)絡(luò)的漏洞掃描系統(tǒng),明確了設(shè)計目標(biāo),給出了整體架構(gòu)和系統(tǒng)流程,并簡單介紹了各個模塊的設(shè)計及數(shù)據(jù)庫的設(shè)計。整體設(shè)計3.1.1設(shè)計目標(biāo)此系統(tǒng)作為一個網(wǎng)絡(luò)安全體系的評估工具,應(yīng)為網(wǎng)絡(luò)管理員、普通個人等不同用戶提供友好的操作界面,應(yīng)具備快速、準(zhǔn)確的掃描能力。具體如下:(1)針對普通非專業(yè)用戶,提供圖形化界面,友好的操作方式。(2)針對專業(yè)用戶,如網(wǎng)絡(luò)管理員,提供命令行操作方式,使之能夠方便地使用各個模塊的功能。(3)接受用戶的掃描任務(wù),允許用戶設(shè)置掃描參數(shù),如IP地址段,端口號等。(4)在一定時間內(nèi)完成掃描任務(wù)并將生成的報告整理成報告文檔提交給用戶。3.1.2系統(tǒng)結(jié)構(gòu)系統(tǒng)的功能性模塊主要有遠程主機檢測模塊、端口掃描模塊、操作系統(tǒng)嗅探模塊、漏洞掃描模塊。功能性模塊將在下文中詳細介紹。用戶配置模塊是系統(tǒng)為用戶提供的操作界面;配置文件是系統(tǒng)運行時需要讀取的一些參數(shù),比如默認的端口列表等。多線程處理則應(yīng)用于各模塊當(dāng)中。掃描過程中得出的結(jié)果將會被存放在臨時文件中,待掃描結(jié)束后,系統(tǒng)將會整理這些結(jié)果并生成一份掃描報告提供給用戶。如圖3-1所示。遠程主機探測模塊接收用戶設(shè)置的IP段參數(shù),該模塊將會對該IP段中的遠程主機進行逐一掃描,以確定主機是否處于活躍狀態(tài)。如果處于活躍狀態(tài),則調(diào)用端口掃描模塊對目標(biāo)主機進行端口掃描,否則跳過該IP。端口掃描模塊在接到掃描任務(wù)后,立刻讀取默認的或者是用戶設(shè)置的端口掃描參數(shù),然后開辟端口掃描線程對遠程主機端口進行一一掃描。在端口掃描過程中,如果發(fā)現(xiàn)開放的服務(wù)端口有對應(yīng)于該服務(wù)的漏洞掃描模塊,則調(diào)用相應(yīng)的漏洞掃描模塊進行漏洞掃描。否則跳過該端口。漏洞掃描模塊在接到掃描任務(wù)后,則開辟漏洞掃描線程執(zhí)行漏洞掃描任務(wù)。至此,掃描任務(wù)完成。如圖3-2所示。圖3-1:系統(tǒng)整體模式圖 圖3-2:系統(tǒng)流程圖3.1.3數(shù)據(jù)庫設(shè)計本系統(tǒng)的數(shù)據(jù)庫用來存放掃描時所用到的數(shù)據(jù)信息,系統(tǒng)中各模塊獨立性較強,因此本數(shù)據(jù)庫中的各表之間的獨立性也很高,表與表之間聯(lián)系很小。系統(tǒng)中主要使用表有存放操作系統(tǒng)版本特征信息的OSFeature表,存放CGI漏洞特征字符串信息的CGI表以及FTP弱口令探測用的賬戶密碼信息。 OSFeature表用來記錄操作系統(tǒng)版本特征信息,這些信息主要記錄了在使用棧指紋技術(shù)檢測目標(biāo)主機時的應(yīng)答數(shù)據(jù)特征。比如TTL是目標(biāo)主機數(shù)據(jù)包的生存時間值,IP_Len_Vary是目標(biāo)主機響應(yīng)數(shù)據(jù)包中IP頭部長度的變化。見表。表:OSFeature屬性表字段含義字段名字段類型長度備注IDIDINT主鍵生存時間TTLTINYINTIP長度變化IP_Len_Vary;INT響應(yīng)類型Echo_TosTINYINTDF位IP_DFTINYINT響應(yīng)代碼Echo_Code;TINYINT子網(wǎng)掩碼Sub_MaskLONG校驗值IP_ChecksumINT操作系統(tǒng)OSTypeVARCHAR128 CGI表記錄了CGI漏洞的特征信息,漏洞特征是掃描時所用到的特征字符串,漏洞描述是對該漏洞的解釋信息,漏洞等級是該漏洞的危險指數(shù),分為1~9共9個級別,級別越高,危險指數(shù)越高。見表。表:CGI屬性表字段含義字段名字段類型長度備注漏洞IDIDINT主鍵漏洞名稱TITLEVARCHAR128漏洞特征FEATUREVARCHAR512漏洞描述DESCRIPTIONVARCHAR512漏洞等級DANGEROUSNESSTINYINT20解決方案SOLUTIONVARCHAR512 FTP弱口令賬戶密碼表相當(dāng)于暴力破解密碼時用的密碼字典,不同的是這里只收集了一些網(wǎng)絡(luò)上最常用的弱口令密碼賬戶。見表。表:FTP弱口令賬戶密碼屬性表字段含義字段名字段類型長度備注用戶IDIDINT主鍵賬戶名USERNAMEVARCHAR20賬戶密碼PASSWORDVARCHAR20功能模塊設(shè)計3.2.1存活主機檢測在TCP/IP協(xié)議體系中,負責(zé)將數(shù)據(jù)包發(fā)送到指定目的地的是IP協(xié)議,網(wǎng)關(guān)必須自己處理數(shù)據(jù)報傳輸工作,如果目的IP無效,數(shù)據(jù)包將無法送達目的地,但是這并不代表遠程主機不在線,因為數(shù)據(jù)傳輸是不可靠的,很多因素都可以造成數(shù)據(jù)包的丟失或出現(xiàn)差錯。IP協(xié)議自身沒有內(nèi)在的機制來獲取并處理這些差錯,為了處理錯誤信息,ICP/IP設(shè)計了ICMP協(xié)議,它是一種差錯和控制報文協(xié)議,這也正是我們要利用的地方。[11] 利用ICMP回顯請求掃描遠程主機的過程如圖3-3所示。圖3-3:利用ICMP請求/應(yīng)答數(shù)據(jù)報檢測主機狀態(tài)本系統(tǒng)中存活主機檢測主要使用了ICMP回顯請求與應(yīng)答報文。在主機沒有被設(shè)置為過濾ICMP數(shù)據(jù)包的情況下,我們可以向目標(biāo)IP發(fā)送一個ICMP回顯請求數(shù)據(jù)包,如果目標(biāo)主機收到該信息,那么它就會發(fā)送一個ICMP相應(yīng)數(shù)據(jù)包給發(fā)送方主機,發(fā)送方拆包并檢測接受到的數(shù)據(jù),有三個條件可以說明目標(biāo)主機是存活的:一是接收到的數(shù)據(jù)包IP地址是發(fā)送方所發(fā)送的目標(biāo)IP地址;二是type屬性為0,也就是說該數(shù)據(jù)包的確是回顯請求應(yīng)答數(shù)據(jù)包;三是標(biāo)識符與所發(fā)送數(shù)據(jù)包的標(biāo)識符一致。這樣我們就能夠確定目標(biāo)主機在線,其余所有情況都表明目標(biāo)主機不在線。3.2.2操作系統(tǒng)嗅探系統(tǒng)主要使用ICMP棧指紋識別的方式來探測目標(biāo)主機操作系統(tǒng)類型及版本號。其方法是向目標(biāo)主機發(fā)送一組ICMP數(shù)據(jù)包,根據(jù)目標(biāo)主機對數(shù)據(jù)包響應(yīng)的差異來區(qū)分不同的操作系統(tǒng)。利用ICMP探測一個系統(tǒng)的操作系統(tǒng)版本類型最多需要發(fā)送四個ICMP數(shù)據(jù)包,即:ICMP回顯請求數(shù)據(jù)包、ICMP時間戳請求數(shù)據(jù)包、ICMP端口不可達數(shù)據(jù)包和ICMP地址掩碼請求數(shù)據(jù)包。圖3-4:利用ICMP數(shù)據(jù)報收集目標(biāo)主機信息 如圖3-4所示,掃描引擎向目標(biāo)主機發(fā)送一系列ICMP數(shù)據(jù)包進行探測,在完成響應(yīng)數(shù)據(jù)包信息的手機后,將所得到的特征存入一個數(shù)據(jù)結(jié)構(gòu)中。掃描引擎會讀取數(shù)據(jù)庫中記錄的操作系統(tǒng)特征信息與數(shù)據(jù)庫中所記錄的各種操作系統(tǒng)的版本特征信息相匹配,如果匹配成功,則認為該條記錄所描述的的操作系統(tǒng)版本是目標(biāo)系統(tǒng)所使用的操作系統(tǒng)版本。3.2.3端口掃描端口掃描可以有多種方法,本系統(tǒng)主要采用半開放掃描,即TCPSYN掃描。TCPSYN掃描應(yīng)用非常廣泛,是最好的TCP掃描形式,其速度快,效率高,而且比較安全隱蔽。該掃描方法的步驟如下:(1)建立套接字(2)構(gòu)造TCP數(shù)據(jù)報,將TCP首部中的標(biāo)志位設(shè)為SYN,端口設(shè)置為想要探測的端口。(3)發(fā)送步驟2種構(gòu)造的數(shù)據(jù)報(4)接收目標(biāo)主機響應(yīng)的數(shù)據(jù)報,對其拆包,并進行過濾,找到針對所發(fā)送數(shù)據(jù)報而響應(yīng)的數(shù)據(jù)報。(5)檢查并分析該數(shù)據(jù),如果返回值是SYN/ACK,則說明目標(biāo)端口是打開的,否則該端口關(guān)閉。這樣,我們就完成了對目標(biāo)主機特定端口狀態(tài)的掃描。3.2.4漏洞掃描在收集到目標(biāo)主機的操作系統(tǒng)、開放端口等信息之后,我們就可以針對端口服務(wù)進行相關(guān)的漏洞掃描了。不同的服務(wù)所對應(yīng)的漏洞種類也不盡相同,但無論何種漏洞,都可以采用模擬攻擊的方法進行探測,即向目標(biāo)主機的目標(biāo)端口發(fā)送一組精心構(gòu)造的數(shù)據(jù)報,檢測目標(biāo)主機的反應(yīng)情況并分析結(jié)果。漏洞掃描的流程如圖3-5所示。圖3-5:漏洞掃描示意圖以下簡要分析幾種常見的漏洞掃描設(shè)計。CGI漏洞掃描的流程:[12](1)建立套接字,并連接到遠程主機。(2)從數(shù)據(jù)庫中讀取CGI字符串并構(gòu)造數(shù)據(jù)包發(fā)送至遠程主機(3)捕獲遠程主機的響應(yīng)數(shù)據(jù)包(4)對捕獲到的數(shù)據(jù)包拆包并檢查是否和關(guān)鍵字匹配,如果匹配,則說明存在漏洞,否則不存在(5)返回步驟2,繼續(xù)掃描下一個CGI漏洞。FTP弱口令漏洞掃描:[12][13]FTP弱口令是指FTP服務(wù)器是否存在匿名用戶或過于簡單的用戶名和密碼。其掃描策略是首先探測是否存在匿名用戶,其次是用常見的用戶名和密碼嘗試登陸,如果登陸成功,則存在弱口令漏洞。毫無疑問,探測的準(zhǔn)確率取決于探測所用的用戶名和密碼庫,也稱為密碼字典。本系統(tǒng)收集了網(wǎng)絡(luò)上使用概率最高的一部分用戶名和密碼,并存儲到數(shù)據(jù)庫中供掃描程序讀取。系統(tǒng)首先驗證是否有匿名賬戶,具體做法是向服務(wù)器發(fā)送“USERanonymous\r\n”字符串,如果服務(wù)器響應(yīng)代碼包含“331”說明需要密碼,這說明不存在匿名賬戶,否則說明存在。接下來掃描引擎從數(shù)據(jù)庫中加載常用用戶名和密碼,逐個對服務(wù)器進行嘗試登陸,期間如果有登陸成功的,則說明存在FTP弱口令漏洞。SMTP漏洞掃描:SMTP協(xié)議的設(shè)計缺陷使攻擊者可以使用RCPT、VRFY、EXPN等命令獲取到服務(wù)器上的用戶名列表。 本系統(tǒng)通過發(fā)送特定的SMTP命令和接收目標(biāo)主機SMTP服務(wù)器響應(yīng)的應(yīng)答數(shù)據(jù)來完成的。首先發(fā)送HELD命令,表示進入到對方的郵件服務(wù)系統(tǒng),然后輸入向郵件服務(wù)系統(tǒng)提供發(fā)件人信箱,服務(wù)器返回“250OK”,這時候用RCPT命令向服務(wù)器提供目標(biāo)信箱,服務(wù)器會檢查是否有該用戶存在。如果用戶存在,則返回“250OK”表示通過,否則將提示“550”錯誤信息。這樣攻擊者就可以通過RCPT來猜測服務(wù)器上用戶名列表[14]。本章小結(jié)本章主要介紹了系統(tǒng)的整體設(shè)計方案和各個功能模塊的設(shè)計。系統(tǒng)共包括五個模塊:用戶配置模塊,遠程主機檢測模塊,操作系統(tǒng)嗅探模塊,端口掃描模塊及漏洞掃描模塊。用戶配置模塊在界面程序中實現(xiàn),允許用戶對IP地址段,掃描端口及漏洞種類等參數(shù)進行設(shè)置;遠程主機檢測模塊根據(jù)用戶設(shè)定的IP段對該段內(nèi)的主機逐一進行檢測,判斷主機的在線情況;操作系統(tǒng)嗅探模塊則針對存活的主機進行操作系統(tǒng)版本的檢測;端口探測模塊允許用戶對設(shè)定的端口進行掃描,判斷端口的開放情況;漏洞掃描模塊則針對用戶選中的漏洞類型對遠程主機進行漏洞掃描。各個模塊的功能是相互獨立的,但模塊間存在著一定的依賴關(guān)系。各功能模塊的運行需要來自界面的參數(shù)配置,而漏洞掃描又需要得到遠程主機的在線情況,服務(wù)端口開放情況和操作系統(tǒng)版本等信息。第四章系統(tǒng)實現(xiàn)根據(jù)第三章的設(shè)計及各個功能模塊的分析,本章將對系統(tǒng)中的各個功能模塊的實現(xiàn)情況作出較為詳細的介紹。在每個模塊的實現(xiàn)中,本文將給出程序設(shè)計流程及相關(guān)解釋,比較關(guān)鍵的部分本文將給出部分核心代碼。存活主機檢測模塊的實現(xiàn)本模塊使用了ICMP的回顯請求和應(yīng)答報文來實現(xiàn)。系統(tǒng)首先初始化Winsock環(huán)境,然后創(chuàng)建套接字并設(shè)置超時,接下來構(gòu)造ICMP回顯請求數(shù)據(jù)包并發(fā)送。在接收到主機返回的數(shù)據(jù)包時,必須對數(shù)據(jù)包的內(nèi)容進行正確分析,把指針定位到ICMP報文頭部,檢查類型字段,此字段應(yīng)該為0,然后檢查標(biāo)識符,該字段應(yīng)該與所發(fā)送的ICMP數(shù)據(jù)包中的標(biāo)識符一致。如果是這樣,說明接收到的數(shù)據(jù)包的確是遠程主機所發(fā)回的數(shù)據(jù)包。否則,說明遠程主機不在線[13]。程序流程如圖4-1所示。圖4-1:主機檢測流程圖該部分核心代碼:.......pRst->MoveNext();}.........端口掃描模塊實現(xiàn)本模塊利用TCPSYN掃描技術(shù),只執(zhí)行了TCP連接中三次握手的第一個步驟,也就是只向目標(biāo)主機發(fā)送SYN數(shù)據(jù)包,表示要建立一個新的連接。在目標(biāo)端口閉合和開放兩種不同的狀態(tài)下,會返回不同的響應(yīng)數(shù)據(jù)包。如果端口是開放的,則會返回一個SYN+ACK標(biāo)志的TCP報文,如果端口是關(guān)閉的,則會返回一個含有RST標(biāo)志的報文。該部分流程如圖4-3所示: 圖4-3:端口掃描流程圖該部分核心代碼:0f....SMTP漏洞:SMTP掃描中要用到一些常用的SMTP命令,表是常見的SMTP命令列表。表:常見SMTP命令SMTP命令命令說明HELLO(HELO)用于向接收SMTP確認發(fā)送SMTP。MAIL用于開始將郵件發(fā)送到一個或多個郵箱中。RECIPIENT用于確定郵件內(nèi)容的唯一接收者;多個接收者將由多個此命令指定。DATA接收SMTP將把其后的行為看做郵件數(shù)據(jù)處理。SEND此命令用于開始一個發(fā)送命令,將郵件發(fā)送到一個或多個終端上。RESET此命令指示當(dāng)送郵件操作將被放棄。VERIFY此命令要求接收者確認參數(shù)是一個用戶。EXPAND(EXPN)此命令要求接收者確認參數(shù)指定了一個郵件發(fā)送列表,如果是一個郵件發(fā)送列表,就返回表中的成員。TURN此命令指定接收方要么發(fā)送OK應(yīng)答并改變角色為發(fā)送SMTP,要么發(fā)送拒絕信息并保持自己的角色。QUIT此命令指示接收方必須發(fā)送OK應(yīng)答然后關(guān)閉傳送信道。常見的SMTP應(yīng)答碼及其含義211:系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)250:要求的郵件操作完成251:用戶非本地,將轉(zhuǎn)發(fā)向<forward-path>550:要求的郵件操作未完成,郵箱不可用551:用戶非本地,請嘗試<forward-path>553:郵箱名不可用,要求的操作未執(zhí)行554:操作失敗SMTP服務(wù)在RFC中被詳細的定義(RFC821,RFC1425和RFC1985),但是在具體實現(xiàn)中各個軟件開發(fā)商并沒有很好的遵循RFC的規(guī)定,因此可以通過實現(xiàn)上的細小差異來進行探測活動。通過發(fā)送特定的、非標(biāo)準(zhǔn)的數(shù)據(jù)包來獲得指紋信息,可以進而判斷出目標(biāo)主機所使用的軟件版本信息。采用錯誤信息來進行辨別的方法有如下幾種。(1)發(fā)送沒有“HELO”命令的郵件:一些服務(wù)器允許客戶這樣做,而且會發(fā)送一個220的錯誤代碼。如果服務(wù)器拒絕就會發(fā)送一個501或503的錯誤代碼。(2)發(fā)送一個沒有域名的“HELO”信息,在RFC中沒有強制需要這個信息,但是一些服務(wù)器會接受,而另一些會拒絕。(3)使用一個簡單的“test”:這通常被本地用戶使用。(4)利用可能再某些服務(wù)器上成功實現(xiàn)的命令:如HELP命令、VRFY命令、EXPN命令、TURN命令、SOML命令、SAML命令、NOOP命令和EHLO命令。本章小結(jié) 本章給出了系統(tǒng)各個功能模塊的實現(xiàn)過程。第一節(jié)講述了利用ICMP回顯請求判斷遠程主機在線情況的流程和實現(xiàn);第二節(jié)講述了利用棧指紋識別技術(shù)來探測遠程主機所使用操作系統(tǒng)版本的過程;第三節(jié)講述了利用TCPSYN掃描技術(shù)來掃描目標(biāo)主機TCP端口的流程和實現(xiàn);第四節(jié)則講述了CGI漏洞、FTP漏洞和SM

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論