歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> ARP 欺騙技術

ARP 欺騙技術

日期:2017/2/27 9:25:10   编辑:更多Linux
  本來不打算寫這接下的一系列討論欺騙的文章(計劃中有arp欺騙、icmp欺騙、 路由rip欺騙、ip地址欺騙等),這主要是自己有些擔心有些人會給網管增加 日常工作量,但是想想還是寫的好,因為通常在你猛打完補丁後,你可能覺得 你的系統安全了,但是,實際上,打補丁只是安全措施裡的一個很基本的步驟 而已,通常一個hacker要進入你的系統,他所要做的並不是你打補丁就可以避 免的,象這些欺騙都要求你必須掌握相當的網絡底層知識和合理安排物理布線 才可阻止得了的。特別是多種手法混用的時候,特別要說明的是:有些人往往 以為會使用某些工具入侵就覺得自己是個hacker, 呵呵。。其實,我認為這只 是入門而已(有些是連門都找不到),通過本文,我想讓人們知道,一個hacker 在真正入侵系統時,他並不是依靠別人寫的什麼軟件的。更多是靠對系統和網絡 的深入了解來達到這個目的。 我想我會盡可能將我知道的寫出來,同時也將盡可能把防止欺騙的解決辦法寫 出來,當然,這只是我知道的而已,如果有失誤的地方,歡迎指正。 呵呵。。 首先還是得說一下什麼是 ARP ,如果你在UNIX Shell下輸入 arp -a (9x下也是),你的輸出看起來應該是這樣的: Interface: xxx.xxx.xxx.xxx Internet Address Physical Address Type xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic ...... ......... .... 這裡第一列顯示的是ip地址,第二列顯示的是和ip地址對應的網絡接口卡的硬件 地址(MAC),第三列是該ip和mac的對應關系類型。 可見,arp是一種將ip轉化成以ip對應的網卡的物理地址的一種協議,或者說 ARP協議是一種將ip地址轉化成MAC地址的一種協議,它靠維持在內存中保存的 一張表來使ip得以在網絡上被目標機器應答。 為什麼要將ip轉化成mac 呢? 呵呵。。解釋下去太多了,簡單的說,這是因為 在tcp網絡環境下,一個ip包走到哪裡,要怎麼走是靠路由表定義,但是,當ip 包到達該網絡後,哪台機器響應這個ip包卻是靠該ip包中所包含的mac地址來識 別,也就是說,只有mac地址和該ip包中的mac地址相同的機器才會應答這個ip包 (好象很多余,呵呵。。),因為在網絡中,每一台主機都會有發送ip包的時候, 所以,在每台主機的內存中,都有一個 arp--> mac 的轉換表。通常是動態的轉 換表(注意在路由中,該arp表可以被設置成靜態)。也就是說,該對應表會被 主機在需要的時候刷新。這是由於乙太網在子網層上的傳輸是靠48位的mac地址 而決定的。 通常主機在發送一個ip包之前,它要到該轉換表中尋找和ip包對應的mac地址, 如果沒有找到,該主機就發送一個ARP廣播包,看起來象這樣子: “我是主機xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip為xxx.xxx.xxx.xx1的 主機請報上你的mac來” ip為xxx.xxx.xxx.xx1的主機響應這個廣播,應答ARP廣播為: “我是xxx.xxx.xxx.xx1,我的mac為xxxxxxxxxx2" 於是,主機刷新自己的ARP緩存。然後發出該ip包。 了解這些常識後,現在就可以談在網絡中如何實現ARP欺騙了,可以看看這樣 一個例子: 一個入侵者想非法進入某台主機,他知道這台主機的火牆只對192.0.0.3(假設) 這個ip開放23口(telnet),而他必須要使用telnet來進入這台主機,所以他要 這麼做: 1、他先研究192.0.0.3這台主機,發現這台95的機器使用一個oob就可以讓他 死掉。 2、於是,他送一個洪水包給192.0.0.3的139口,於是,該機器應包而死。 3、這時,主機發到192.0.0.3的ip包將無法被機器應答,系統開始更新自己的 arp對應表。將192.0.0.3的項目搽去。 4、這段時間裡,入侵者把自己的ip改成192.0.0.3 5、他發一個ping(icmp 0)給主機,要求主機更新主機的arp轉換表。


6、主機找到該ip,然後在arp表中加如新的ip-->mac對應關系。 7、火牆失效了,入侵的ip變成合法的mac地址,可以telnet 了。 (好象很羅嗦,呵呵。。不過這是很典型的例子) 現在,假如該主機不只提供telnet , 它還提供r命令(rsh,rcopy,rlogin等) 那麼,所有的安全約定將無效,入侵者可以放心的使用這台主機的資源而不用 擔心被記錄什麼。 有人也許會說,這其實就是冒用ip嘛。。呵呵。。不錯,是冒用了ip,但決不是 ip欺騙,ip欺騙的原理比這要復雜的多,實現的機理也完全不一樣。 上面就是一個ARP的欺騙過程,這是在同網段發生的情況,但是,提醒注意的 是,利用交換集線器或網橋是無法阻止ARP欺騙的,只有路由分段是有效的阻 止手段。(也就是ip包必須經過路由轉發。在有路由轉發的情況下,ARP欺騙 如配合ICMP欺騙將對網絡造成極大的危害,從某種角度將,入侵者可以跨過路 由監聽網絡中任何兩點的通訊,如果有裝火牆,請注意火牆有沒有提示過類似: 某某IP是局域IP但從某某路由來等這樣的信息。詳細實施以後會討論到。) 在有路由轉發的情況下,發送到達路由的ip的主機其arp對應表中,ip的對應 值是路由的mac。 比如: 我 ping www.nease.net 後,那麼在我主機中,www.nease.net的IP對應項不 是nease的mac 而是我路由的mac。其ip也是我路由的IP. (有些網絡軟件通過交換路由ARP可以得到遠程IP的MAC) 有興趣做深入一步的朋友可以考慮這樣一種情況: 假設這個入侵者很不幸的從化學食堂出來後摔了一跤,突然想到:我要經過一個 路由才可以走到那台有火牆的主機!!! ^^^^ 於是這個不幸的入侵者開始坐下來痛苦的思考: 1、我的機器可以進入那個網段,但是,不是用192.0.0.3的IP 2、如果我用那個IP,就算那台正版192.0.0.3的機器死了,那個網絡裡的機器也 不會把ip包丟到路由傳給我。 3、所以,我要騙主機把ip包丟到路由。 通過多種欺騙手法可以達到這個目的。所以他開始這樣做: 1、為了使自己發出的非法ip包能在網絡上活久一點,他開始修改ttl為下面的 過程中可能帶來的問題做准備。他把ttl改成255. (ttl定義一個ip包如果在網絡上到不了主機後,在網絡上能存活的時間,改長 一點在本例中有利於做充足的廣播) 2、他從貼身口袋中掏出一張軟盤,這張有體溫的軟盤中有他以前用sniffer時保 存的各種ip包類型。 3、他用一個合法的ip進入網絡,然後和上面一樣,發個洪水包讓正版的 192.0.0.3死掉,然後他用192.0.0.3進入網絡。 4、在該網絡的主機找不到原來的192.0.0.3的mac後,將更新自己的ARP對應表。 於是他趕緊修改軟盤中的有關ARP廣播包的數據,然後對網絡廣播說“能響應 ip為192.0.0.3的mac 是我”。 5、好了,現在每台主機都知道了,一個新的MAC地址對應ip 192.0.0.3,一個ARP 欺騙完成了,但是,每台主機都只會在局域網中找這個地址而根本就不會把 發送給192.0.0.3的ip包丟給路由。於是他還得構造一個ICMP的重定向廣播。 6、他開始再修改軟盤中的有關ICMP廣播包的數據,然後發送這個包,告訴網絡中 的主機:“到192.0.0.3的路由最短路徑不是局域網,而是路由,請主機重定 向你們的路由路徑,把所有到192.0.0.3的ip包丟給路由哦。” 7、主機接受這個合理的ICMP重定向,於是修改自己的路由路徑,把對192.0.0.3 的ip通訊都丟給路由器。 8、不幸的入侵者終於可以在路由外收到來自路由內的主機的ip包了,他可以開始 telnet到主機的23口,用ip 192.0.0.3. 9、這個入侵者一把沖出芙蓉一(229),對著樓下來往的女生喊到:“一二一。。” 呵呵。。他完成了。 注意,這只是一個典型的例子,在實際操作中要考慮的問題還不只這些。 現在想想,如果他要用的是sniffer會怎樣? 假如這個入侵者實在是倒霉 (因為喊“一二一。。”而被女生痛毆),當他從地 上爬起來後突然發現:其實我要經過好幾個路由才可以到那台主機啊。。。。。 這時他要怎麼做? 呵呵。。。有興趣做更深入了解的朋友可以自己構思。通常入侵者是這樣做的: 1、苦思冥想六天六夜。。。。。 . . . N、一把沖出芙蓉一(229),狂叫一聲,一頭栽向水泥馬路。 可見,利用ARP欺騙,一個入侵者可以得到: 1、利用基於ip的安全性不足,冒用一個合法ip來進入主機。 2、逃過基於ip的許多程序的安全檢查,如NSF,R系列命令等。 甚至可以得到: 栽賬嫁禍給某人,讓他跳到黃河洗不清,永世不得超生。

那麼,如何防止ARP欺騙呢?從我收集整理的資料中,我找出這幾條:(歡迎補充) 1、不要把你的網絡安全信任關系建立在ip基礎上或mac基礎上,(rarp同樣存在 欺騙的問題),理想的關系應該建立在ip+mac基礎上。 2、設置靜態的mac-->ip對應表,不要讓主機刷新你設定好的轉換表。



欺騙的問題),理想的關系應該建立在ip+mac基礎上。 2、設置靜態的mac-->ip對應表,不要讓主機刷新你設定好的轉換表。



Copyright © Linux教程網 All Rights Reserved