ARP協(xié)議深入解析實(shí)例-偽造ARP_第1頁
ARP協(xié)議深入解析實(shí)例-偽造ARP_第2頁
ARP協(xié)議深入解析實(shí)例-偽造ARP_第3頁
ARP協(xié)議深入解析實(shí)例-偽造ARP_第4頁
ARP協(xié)議深入解析實(shí)例-偽造ARP_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、ARP協(xié)議深入解析此文預(yù)備知識:OSI七層模型及數(shù)據(jù)封裝和解封裝的過程。相信用過以太網(wǎng)的人都聽說過ARP這個協(xié)議吧?(沒有聽過?&*%$*#名詞解釋我就略過了,不知道ARP的中文名字的人自己查字典(好像字典里也沒有?。好了,廢話講完了,進(jìn)入正題吧。熱身:ARP協(xié)議是用在已知三層地址但不知二層地址(知道IP不知道MAC地址的情況下用來查詢目的IP地址所對應(yīng)的MAC地址的一種輔助類協(xié)議。什么時候需要用到ARP協(xié)議?每臺三層或三層以上的設(shè)備都會維護(hù)一張ARP表(WINDOWS用戶在命令行下輸入arp-a命令就能看到ARP表了,這個表記錄了三層地址和二層地址的對應(yīng)情況,以便實(shí)現(xiàn)以太網(wǎng)的點(diǎn)到點(diǎn)通

2、信。如果要發(fā)起一個三層或以上的通信,那么源設(shè)備首先會查詢自己的ARP表有沒有符合的條目,如果沒有,這時就要用到ARP協(xié)議來創(chuàng)建這個條目了。在介紹實(shí)例前先介紹一下我們實(shí)驗(yàn)用的拓?fù)? 以后的實(shí)驗(yàn)都是基于這個拓?fù)?。我們用的?92.168.1.100這臺,MAC地址是00-60-6e-30-15-55。下面是我用SNIFFER抓的ARP包,一共有四個,我們只看前兩個,第一個是從本機(jī)向路由器發(fā)起的一個ARP請求,第二個是路由器收到請求后做出的響應(yīng):. 在分析ARP 報文之前,有必要先對ARP 報文的結(jié)構(gòu)給大家介紹一下,參照下表:前面紅色部分屬于二層幀頭的內(nèi)容,黑色部分屬于三層IP 頭內(nèi)容(不知道二層和

3、三層是什么?趕快去翻OSI 分層模型!現(xiàn)在知道OSI 的重要了吧!各字段作用:1.目的MAC :該ARP 幀將要到達(dá)的目的MAC 地址2.源MAC :發(fā)起該ARP 幀的源主機(jī)接口的MAC 地址3.協(xié)議類型:用來描述該幀將用什么協(xié)議來處理。如果值為806,則表示是將該幀交給ARP 協(xié)議處理,也就是說這個幀是一個ARP 幀4.硬件類型:用來描述二層協(xié)議,當(dāng)值為1時表示是10M 以太網(wǎng)(100M 的幀結(jié)構(gòu)和10M 一樣,所以也是15.協(xié)議類型:用來描述多種三層協(xié)議,比如IP 、IPX 、Apple Talk 等等(IP 為8006.硬件地址長度:指定二層地址的長度,MAC 地址為6字節(jié),所以值為67

4、.協(xié)議地址長度:指定三層地址的長度,IP 地址為4字節(jié),所以值為41234567891011126字節(jié)6字節(jié)2字節(jié)2字節(jié)2字節(jié)1字節(jié)1字節(jié)2字節(jié)6字節(jié)4字節(jié)6字節(jié)4字節(jié)目的MAC源MAC協(xié)議類型硬件類型協(xié)議類型硬件地址長度協(xié)議地址長度操作類型發(fā)送者M(jìn)AC發(fā)送者IP接收者M(jìn)AC接收者IP8.操作類型:描述該數(shù)據(jù)包所做的ARP動作(請求為1、響應(yīng)為29.發(fā)送者M(jìn)AC:告訴對方自己是誰(二層,這樣對方可以知道是誰對它做了ARP動作,正常情況下是發(fā)起該ARP包的主機(jī)接口的MAC地址,但如果是病毒或黑客程序,則會更改此字段以達(dá)到隱藏自己的目的10.發(fā)送者IP:告訴對方自己是誰(三層,這樣對方可以知道是誰

5、對它做了ARP動作,正常情況下是發(fā)起該ARP包的主機(jī)接口的IP地址,但如果是病毒或黑客程序,則會更改此字段以達(dá)到隱藏自己的目的11.接收者M(jìn)AC:最終接收該ARP包的網(wǎng)絡(luò)接口的MAC地址12.接收者IP:最終接收該ARP包的網(wǎng)絡(luò)接口的IP地址是不是很暈?暈就對了,呵呵,不要急,慢慢往下看。終于可以進(jìn)入主題了,現(xiàn)在我們先看第一個抓圖,看看前6字節(jié)(表里的第一個字段,值為FF-FF-FF-FF-FF-FF,對應(yīng)表里的目的MAC,這個全F的MAC是個什么地址呢?我們把這換算成二進(jìn)制就得到了48個1,在網(wǎng)絡(luò)的地址規(guī)則中,一般遇到全1的都是廣播地址,這里也不例外,它是一個二層的廣播地址。為什么是廣播呢?

6、文章開頭說了,只有當(dāng)ARP表里沒有此次操作的目的主機(jī)所對應(yīng)的ARP條目(即目的主機(jī)IP已知但MAC地址未知的情況下,就會發(fā)起ARP查詢,由于不知道對方的MAC地址,那么怎么才能發(fā)送到對方去呢?為了保證目的主機(jī)能收到,所以只好用廣播了。但是第二個圖里是一個單播MAC地址,為什么是單播呢?原因是這個包是一個ARP響應(yīng)包。由于第一個是00-60-6e-30-15-55向FF-FF-FF-FF-FF-FF請求192.168.1.1這個IP對應(yīng)的MAC地址,所以當(dāng)擁有192.168.1.1這個IP的主機(jī)接收到這個廣播ARP請求后,看到是00-60-6e-30-15-55請求自己的MAC地址,所以它可以直

7、接向00-60-6e-30-15-55發(fā)送回單播ARP響應(yīng),這樣就節(jié)省了不必要的浪費(fèi)(廣播是非常浪費(fèi)資源的。再看緊接著的6字節(jié)(表里第二字段,值為00-60-6e-30-15-55,這個MAC地址為發(fā)起該ARP的主機(jī)接口的MAC地址,即源MAC地址。這個MAC地址也就是我自己這臺電腦(192.168.1.100的MAC地址。第三字段2字節(jié),是協(xié)議類型,ARP的類型值為806H(H表示十六進(jìn)制,所以我們可以看到圖中的值為0806,表示該幀為ARP幀。第四字段2字節(jié),是硬件類型,IP頭從該字段開始。由于我們用的是標(biāo)準(zhǔn)以太網(wǎng)(快速以太網(wǎng)也是標(biāo)準(zhǔn)的以太網(wǎng)幀,所以值為1H(0001,表示是10M以太網(wǎng)(

8、實(shí)際是100M。第五字段2字節(jié),是協(xié)議類型,我們用的是IP協(xié)議,IP對應(yīng)的值是800H,所以顯示值為0800。第六字段1字節(jié),為硬件地址長度偏移,這個值告訴處理該幀的程序,讀取硬件地址時讀到哪里結(jié)束。MAC地址為6字節(jié),所以該字段的值就為6,程序從硬件地址字段開始讀取,讀完6字節(jié)后認(rèn)為該硬件地址已經(jīng)讀取完畢了。第七字段1字節(jié),為協(xié)議地址長度偏移,這個值告訴處理該幀的程序,讀取協(xié)議地址時讀到哪里結(jié)束。IP地址為4字節(jié),所以該字段的值就為4,程序從協(xié)議地址字段開始讀取,讀完4字節(jié)后認(rèn)為該協(xié)議地址已經(jīng)讀取完畢了。第八字段2字節(jié),為操作類型,ARP提供幾種操作類型,用來表示這個報文的類型,ARP 請求

9、為1,ARP響應(yīng)為2,RARP請求為3,RARP響應(yīng)為4,我們一般常用的只有前兩種。第一個圖里是1H(0001,所以這是一個ARP請求,第二個圖里是2H(0002,所以這是一個ARP響應(yīng)。第九字段6字節(jié),為發(fā)送者M(jìn)AC地址,該地址用來告訴本次操作的對方,是哪個MAC地址對它進(jìn)行了操作。第十字段4字節(jié),為發(fā)送者IP地址,該地址用來告訴本次操作的對方,是哪個IP地址對它進(jìn)行了操作。第十一字段6字節(jié),為接收者M(jìn)AC地址,用來告訴本次操作的對方,是哪個MAC地址應(yīng)該接收并處理該幀。第十二字段4字節(jié),為接收者IP地址,用來告訴本次操作的對方,是哪個IP地址應(yīng)該接收并處理該ARP報文。是不是發(fā)現(xiàn)后面還有很

10、多0呢?呵呵,其實(shí)不用奇怪,那些0是沒有用的,它只是做個填充的作用,由于IP報文規(guī)定最小不能小于60字節(jié)(為什么?自己查TCP/IP,而ARP只用了42個字節(jié),所以它需要用0(其實(shí)不一定是“0”來填充剩下的12字節(jié)。好了,ARP報文介紹完畢,現(xiàn)在我們來講一下ARP的過程。一.當(dāng)A要訪問R,這時,A的ARP表是空的,即沒有R的相關(guān)條目,所以為了產(chǎn)生ARP條目,A要向網(wǎng)絡(luò)中發(fā)送一個ARP請求廣播。二.B和R都會收到這個廣播。因?yàn)槭菑V播,所以網(wǎng)絡(luò)上的任何一個節(jié)點(diǎn)都要對該幀進(jìn)行進(jìn)一步處理。于是B檢查該幀的協(xié)議類型,發(fā)現(xiàn)是806H(ARP,便把該幀的幀頭去掉,檢查其IP 頭,發(fā)現(xiàn)是發(fā)向192.168.1

11、.1的ARP報文而不是自己的,于是將該報文丟棄。三.而R收到這個幀后發(fā)現(xiàn)是個廣播,所以也會檢查該幀的協(xié)議類型,發(fā)現(xiàn)是806H(ARP,便把該幀的幀頭去掉,露出IP頭,發(fā)現(xiàn)該報文是發(fā)給自己的,就再檢查操作類型,發(fā)現(xiàn)是1(請求,于是便讀取該幀的發(fā)送者M(jìn)AC和發(fā)送者IP,把它們作為ARP響應(yīng)的目的MAC和目的IP發(fā)送回去,這就是為什么ARP請求是廣播,而響應(yīng)是單播的原因。有沒有發(fā)現(xiàn)這個幀的接收者M(jìn)AC字段為全0呢?這是由于發(fā)送者不知道接收者的MAC地址,所以把這個字段留空,讓接收者自己填寫。四.當(dāng)A收到來自R的ARP單播響應(yīng)時,首先檢查該幀的目的MAC是不是自己,發(fā)現(xiàn)匹配,于是再檢查協(xié)議類型,發(fā)現(xiàn)是

12、ARP協(xié)議,于是去掉二層幀頭,送到IP層,IP協(xié)議發(fā)現(xiàn)目的IP 地址是自己,于是進(jìn)一步檢查操作類型,發(fā)現(xiàn)是2(響應(yīng),于是讀取發(fā)送者M(jìn)AC和發(fā)送者IP,把它們記錄進(jìn)ARP表。至此,一次ARP過程完成。搞了這么多事,ARP的原理算是搞清楚了,那么我們來分析一個幀: 第一個字段是全1,證明這是一個廣播,源MAC 當(dāng)然是發(fā)送者的MAC 地址,0806說明是ARP 協(xié)議,0001說明是10M 以太網(wǎng)(實(shí)際是100M ,0800說明是IP 報文,06說明物理地址(MAC 的長度是6字節(jié),04說明協(xié)議地址(IP 長度是4字節(jié),0001說明這是一個ARP 請求,發(fā)送者M(jìn)AC 、發(fā)送者IP 這個不用說了吧,這個

13、接收者M(jìn)AC 是全0,原因上面也說了,是由于發(fā)起者不知道對方的MAC ,所以只能留空給接收者自己填了,目的IP 地址當(dāng)然就是接收者的IP 地址了,后面18字節(jié)是用來填補(bǔ)60字節(jié)的最小IP 報文長度的。學(xué)會分析IP 報文了,那么我們進(jìn)一步,來學(xué)習(xí)怎么偽造它吧!(玩點(diǎn)過癮的,哈哈!現(xiàn)在我們回到最上面的拓?fù)鋱D里去,我們現(xiàn)在唯一能操作的設(shè)備只有計算機(jī)A ,我想讓計算機(jī)B 上不了網(wǎng)怎么辦?現(xiàn)在請我們的主角SNIFFER 出場(燈光!掌聲!鮮花! 這個就是SNIFFER的主界面,我們現(xiàn)在要用到它的包產(chǎn)生器“Packet Generator”: 然后點(diǎn)那個0101的圖標(biāo),出現(xiàn)一個包編輯器: 現(xiàn)在我們就可以進(jìn)

14、行數(shù)據(jù)的編輯了,為了要達(dá)到讓主機(jī)B無法上網(wǎng),我們要欺騙B的ARP表,讓它產(chǎn)生一條錯誤的對于網(wǎng)關(guān)的ARP條目。先看看這幾個選項(xiàng)吧,Continuously是連續(xù)發(fā)送選項(xiàng),下面的time(s是發(fā)送數(shù)據(jù)的數(shù)量,右邊的Delay是指隔多少毫秒發(fā)送一個數(shù)據(jù)。下面百分比是分多少網(wǎng)絡(luò)帶寬給SNIFFER用。為了保證我們偽造的ARP信息不被正確的ARP信息覆蓋,我們選連續(xù)發(fā)包,間隔為1000毫秒(1秒發(fā)送一個。 我們來分析一下這個ARP包:a.字段1:目的MAC為全1,由于我們不知道主機(jī)B的MAC是多少,只知道IP是192.168.1.200,為了保證對方能收到這個ARP,所以我們填一個廣播地址。b.字段2:

15、源MAC為一個隨意偽造的MAC(做壞事當(dāng)然不能留真實(shí)姓名啦_,最主要的還不是這個原因,因?yàn)樵碝AC和第9字段的發(fā)送者M(jìn)AC如果不一致,遇到高手就露餡了,嘿嘿!c.字段3-7:略過,自己查上面的表。d.字段8:操作類型為0002,說明這個包為一個ARP響應(yīng),因?yàn)橹挥蠥RP響應(yīng)包攜帶的信息才會被接收者放入ARP表,所以我們才要偽造ARP響應(yīng)而不是ARP請求。e.字段9:這個就不用我說了吧!發(fā)送者M(jìn)AC當(dāng)然是偽造的,最好和源MAC一致,這樣不容易露餡。f.字段10:發(fā)送者IP當(dāng)然是網(wǎng)關(guān)的,因?yàn)檫@個是要被放到接收者的ARP表里去的,這里的接收者當(dāng)然就是主機(jī)B-192.168.1.200啦!由于我們的網(wǎng)

16、關(guān)是192.168.1.1,所以這里我們填16進(jìn)制數(shù):C0A80101,對應(yīng)十進(jìn)制的19216811g.字段11:接收者M(jìn)AC地址不能再填0了,因?yàn)檫@是個ARP響應(yīng),既然是響應(yīng),就表示不需要再讓對方填寫該字段了,所以不能是0,那我們填個廣播吧,為了和前面的目的MAC一致。h.字段12:接收者IP地址當(dāng)然要填192.168.1.200了,因?yàn)槲覀兪且堰@個ARP發(fā)給主機(jī)B,所以填B的IP地址,其值就是對應(yīng)的16進(jìn)制C0A801C8了我們再來分析一下主機(jī)B收到這個ARP響應(yīng)后都做了些什么:1檢查目的MAC地址,發(fā)現(xiàn)是廣播,于是開始處理這個幀2檢查協(xié)議類型,發(fā)現(xiàn)是ARP協(xié)議,于是送給三層(IP處理3

17、IP協(xié)議檢查接收者協(xié)議地址(IP地址,發(fā)現(xiàn)是自己,于是進(jìn)一步處理4檢查操作類型,發(fā)現(xiàn)是0002(ARP響應(yīng),于是讀取包內(nèi)的發(fā)送者IP和發(fā)送者M(jìn)AC5把發(fā)送者IP和發(fā)送者M(jìn)AC寫入ARP表內(nèi)6沒了現(xiàn)在在主機(jī)B上的命令行里用arp-a命令可以看到一條錯誤的ARP條目了:C:>arp-aInterface:192.168.1.200-0x*Internet Address Physical Address Type192.168.1.100-11-22-33-44-55dynamic由于主機(jī)B的網(wǎng)關(guān)設(shè)置為192.168.1.1了,而它的ARP表的對應(yīng)MAC是一個不存在的MAC,所以非本網(wǎng)段的流量都會發(fā)往00-11-22-33-44-55這個假M(fèi)AC

溫馨提示

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

最新文檔

評論

0/150

提交評論