上網記——ARP欺騙與反ARP欺騙

      搬家後,這裏可以上網,是房東牽了一根寬帶然後用交換機分到每個房間裏.頭天來還挺快。從第二天開始,速度就奇慢無比,十有八九是有人在下BT。就在網上找點工具查查誰在下。GOOGLE,BAIDU一搜,網絡執法官,P2P終結者。OK,下了個P2P終結者。運行起來,一查,果然攔截到不少BT,電驢等的數據。然後一開用戶列表,有一臺機器下載速度達到130k,天哪,你們用了這麼多,別人還用不用了。當時一發狠,就把他的網給掐了。隨即世界太平了。網速恢復嗖嗖的了。

             過了兩天,發現網速又是奇慢。打開P2P終結者,咦?能攔截到P2P的包,但是每個用戶都是幾k的速度,總的帶寬佔用也不多啊,是不是也有人用網絡執法官之類的軟件呢?後來在網上查資料,瞭解諸如網絡執法官,P2P終結者之所以限制網速甚至斷網,就是利用了ARP欺騙的原理。

                    在局域網內通訊,IP層的下一層——鏈路層是通過MAC地址通訊的。比如我要訪問192.168.0.3的機器,這時我可能不知道192.168.0.3的MAC地址,這時我就向局域網裏廣播一個ARP包,問誰是192.168.0.3啊?請把你的MAC地址發我。局域網內所有的機器都會收到這個廣播包,正常情況下,只有192.168.0.3的機器會做出應答,說我的MAC是A23FFF0D,這時我的機器就知道了192.168.0.3對應的MAC地址,並可以和他通訊了,並且會在本機的ARP緩衝裏面保存192.168.0.3對應的MAC地址,這樣就不用每次都去發廣播包詢問了。某太機器的IP地址可能會變,所以這個列表會隨時更新的。ARP欺騙的原理就是,當有ARP查詢包時,尤其是要查詢網關的ARP的時候,有其他機器在中間回答,說我是網關,這就麻煩了。比如網關的IP地址是192.168.0.1,我要上網了,肯定要先把數據發到網關,於是我就先發個廣播包詢問,誰是網關啊,把你的MAC地址發個我。其中有不是網關的機器就對這個ARP查詢數據應答了,說我是網關,要想上網把數據發給我,這樣我每次上網的數據都是先發給他,再由他發給真正的網關,這就達到了截獲數據的目的,當然也可以乾脆把數據包丟掉,得,這下乾脆就上不了網了。而且ARP還有一種廣播包,裏面的信息是IP地址和對應的MAC地址。正常情況下,比如我的ip地址變更了,我就可以發送這樣一個廣播包告訴大家,我的IP地址和對應MAC地址是多少,以前的IP地址不用了。但是這樣一種包也可以被ARP欺騙利用,他可以不停在局域網裏廣播數據包,包的內容是網關的IP地址和自己的MAC地址,意思是告訴大家,我是網關,以後大家要有出局域網的數據都要發給我。這下好了。局域網所有的用戶都得聽他的了。網絡執法官和P2P終結者就是這麼幹的。

      難道就沒有解決辦法嗎?

      回答是有的。本地的ARP列表可以進行靜態綁定。即我的列表裏192.168.0.1的MAC固定爲某個值,不允許改變。這樣的話,只要把正確MAC地址和網關IP綁定,就不怕自己的包再發給“中間的第三人”了。用ARP -A命令一看,網關地址果然不是原來的了,隨即進行了靜態綁定。120k/s,哈哈,網速又恢復了!這之後,只要一發現網速變慢,我就看看ARP列表網關的MAC有沒有被改變,變了我就綁定成靜態的,綁定完就網速就好了。直到有一天……      一天回家上網,發現網速奇慢,先用P2P終結者看了看,沒有人大量佔用帶寬。再看看ARP列表,網關的MAC地址是靜態綁定的,而且MAC值也是對的,咦,這是怎麼回事?百思不得其解。後來在網上閒逛,發現ARP防火牆可能管用,就下了一個,裝上一試,網速倒是沒有完全恢復吧,但是也有50,60k了,看來還管點用。當時一看不早了,就去洗臉準備睡覺。在洗臉的時候我就琢磨,突然來了靈感:是不是ARP欺騙者把網關記錄的我機器的MAC地址也改了——改成欺騙者的MAC地址了,這樣我發出去的包是直接送到了網關,但網關接收到數據後,是首先發給欺騙者,再發給我的,這樣接收數據的速度就會收到控制。回屋後看ARP防火牆的監測,發現一秒鐘發出五個ARP攻擊數據——即告訴局域網中的其他機器網關的MAC地址是FAC2CC03FC(即攻擊者本機的MAC),並告訴網關網絡中所有的機器的MAC也都是FAC2CC03FC,這樣不僅往外發的數據會經過欺騙者,而且網關從外網接收到數據以後,也會先發給欺騙者,再由他轉發給實際的接收者(至於說他是否真的轉發,就全由着他了)。索性的是我的ARP防火牆可以發廣播數據,即告訴局域網中的機器(包括網關)我的IP地址和真正對應的MAC地址。你不是一秒鐘發5個ARP欺騙包嗎?好,那我一秒鐘發20個廣播包,告訴大家(尤其是網關)我真正的MAC地址是多少。在ARP防火牆中設置完後,一看網速,180k/s,爽!

      後記:      這樣的反ARP欺騙方式有個缺點就是自己發廣播包的速度一定要比欺騙者快,原理我想我已經說得很清楚了。這樣就帶來一個問題,如果欺騙者想得逞,就會加快欺騙數據的發送速度,而被欺騙者如果想擺脫欺騙,就得以更快的速度發送“更正”數據,這樣下來,兩個人就開始比誰發送廣播包的速度快了,結果局域網裏到處充斥廣播包,對網速也會有影響,如果是多個人同時比賽看誰發發得快,OH MY GOD!      如果局域網中同時有人用ARP欺騙和BT下載的話,那怎麼辦的?那你就得用更快的速度發ARP欺騙包,從而佔領整個網絡的控制高地。當然,還是上面說的問題,如果多個人同時競爭ARP包的發送速度,那……。就像美蘇兩個大國在搞軍備競賽,儲備的核彈夠把地球毀滅多少遍了,突然又冒出個國家來,聲稱他的核彈比美蘇的還多,這豈不是加倍讓人提心吊膽嗎?            當然管理BT下載用ARP欺騙的方法並不是個解決方法,最好的辦法還是人來管。本文只是從技術的角度討論一下ARP欺騙和反ARP欺騙的原理和應對。

發佈了44 篇原創文章 · 獲贊 12 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章