c 記一次實驗室區域網的ARP欺騙

2021-07-24 03:41:37 字數 2904 閱讀 2952

起因

某天中午午睡時,筆者被激烈的鍵盤和滑鼠聲音吵醒,發現實驗室的同學在那邊忘我地打lol,頓覺不爽,於是決定整他一下。想了一下之後覺得就讓他掉線一下作為懲罰好了。結合以往的理論知識,大家在同乙個區域網中,用arp欺騙顯然是乙個好辦法,於是就有了本文接下來的故事。

arp欺騙理論

首先先來整理一下關於arp欺騙的理論知識。arp欺騙[1](英語:arp spoofing),又稱arp病毒(arp poisoning)或arp攻擊,是針對乙太網位址解析協議(arp)的一種攻擊技術。此種攻擊可讓攻擊者獲取區域網上的資料報甚至可篡改資料報,且可讓網路上特定電腦或所有電腦無法正常連線。

在以太區域網內資料報傳輸依靠的是mac位址,ip位址與mac對應的關係依靠arp表,每台安裝有tcp/ip協議的主機(包括閘道器)都有乙個arp快取表。該表中儲存這網路中各個電腦的ip位址和mac位址的對照關係。

在正常情況下arp快取表能夠有效的保證資料傳輸的一對一性。但是arp協議對應的arp快取表維護機制中存在不完善的地方,當主機收到乙個arp的應答包後,它並不驗證自己是否傳送過這個arp請求,而是直接將應答包裡的mac位址與ip對應的關係替換掉原有的arp快取表裡的相應資訊。這就是導致arp欺騙的根本原因。

簡單總結一下,arp欺騙大致可以分為以下三種:

1、偽造主機

欺騙源c把自己偽裝成區域網內的另一台主機b,使得區域網內發往b的報文都流向了c。偽造主機的過程與偽造閘道器類似。

圖1:偽造主機

圖1中,我們假設區域網中有三颱主機,分別是閘道器,欺騙源和被騙主機,他們的ip的mac位址都標在圖中了。欺騙源每隔一定的時間間隔就向閘道器傳送乙個arp報文,內容為我的ip位址是192.168.1.3(被騙主機ip),我的mac位址是bb-bb-bb-bb-bb-bb(自己的mac位址)。這樣當閘道器更新arp快取表的時候,就會把這個錯誤的ip和mac對映關係登記在arp快取表中,下次當閘道器**報文的時候就會把傳送給被騙主機的報文傳送給欺騙源。這反應到現實中就是被騙主機斷網了。

2、偽造閘道器

欺騙源把自己(或者其他非閘道器主機)偽裝成閘道器,向區域網內的被騙主機傳送arp應答報文。使得區域網內的主機誤以為欺騙源的mac是閘道器mac位址。使得原本流向閘道器的資料都被錯誤地傳送到欺騙源。其簡單的示意圖如圖2所示:

圖2:偽造閘道器

我們還是以上面三颱主機的例子來解釋,主機的ip與mac都沒有改變,但是這次欺騙源向被騙主機傳送arp報文,報文的內容為,我的ip是192.168.1.1(我是閘道器),我的mac位址是bb-bb-bb-bb-bb-bb(欺騙源的mac位址)。這樣當被騙主機收到arp報文後,會更新ip位址為192.168.1.1這一項的mac為欺騙源的mac。這樣被騙主機向閘道器傳送資料的時候其實都發給了欺騙源,這反應到現實中其實也是被騙主機掉線了。當然第二種情況經驗證理論和實際情況有出入,下文會解釋。

3、雙向欺騙

第三種其實是上兩種方式的結合,既欺騙閘道器又欺騙主機,達到雙向欺騙的目的,這裡就不再贅述。

具體實施

通過windows api來構造arp報文並傳送也是可以的,但是感謝偉大的開源社群,我們可以使用winpcap或者其c#的封裝sharppcap來實現,這大大簡化了我們的實現過程。事實上,本文並不打算介紹程式設計的細節,因為筆者認為明白原理之後,通過上述工具寫出乙個arp欺騙工具並不是什麼事兒。所以我們直接來看一下這個工具,如圖3所示。

圖 3:arp欺騙工具

在開始arp欺騙之前,我們先要掃瞄一下區域網內的所有主機,獲取他們的ip位址和mac的對映關係,這個可以通過arp request報文,乙個乙個掃瞄過去就可以了。

然後選擇其中乙個ip(mac)進行arp欺騙就可以了。arp風暴是筆者加的另乙個功能,其原理是不斷構造arp request報文來不停地詢問區域網內的所有主機,讓他們不斷做出應答從而來耗盡區域網內的頻寬資源,造成網絡卡的假象。但似乎是因為現在的交換機頻寬足夠大吧,並沒有什麼卵用。

效果

當使用arp閘道器欺騙(即對應上文的偽造主機)時,效果非常理想,那個同學掉線了,且怎麼都無法重連,非常著急……

但是當使用arp主機欺騙(即對應上文的偽造閘道器)時,效果超出的我的想象,實驗室所有主機都掉線了,包括筆者的電腦。後來筆者分析了一下原因,理論上這個假的arp response報文(即筆者電腦偽裝成閘道器給被騙主機發報文)是傳送給那個被騙的主機的,其他主機應該是不會接收的。但是實際上,別的主機看到是從閘道器傳送回來的arp response 報文,則不管是不是傳送給自己的,都會接受下來,然後更新自己的arp快取表。確實,這麼做是有其道理的,因為當閘道器的mac位址發生給變時,區域網的主機應該第一時間更新arp快取表,而不是等到閘道器傳送給你了你再更新,那就太晚了。

結論

筆者並不打算公開arp欺騙工具和其**,畢竟不是什麼有用的工具,而且可以用來做壞事(當然有心的話自己寫乙個也很容易)。如果有興趣交流的話筆者很樂意給個人傳送乙份^_^

********************===2015.9.9 修改******************************====

參考文獻

arp欺騙 

分類: 

c#標籤: 

c#, 

arp欺騙

記一次實驗室電腦公升級過程

這個月又在反反覆覆折騰實驗室的主機,配置i5 8g 1tb機械 256ssd。ssd是之前筆記本ssd公升級了換下來的,在ssd上安裝了win10。最近有了用伺服器的需求,因此開始裝雙系統。由於之前安裝雙系統是win10 ubuntu 都裝在1tb的機械硬碟上,引導ubuntu很簡單,用easybs...

學校小型的實驗室區域網路的搭建

pc機若干臺 2 網線若干 需測試有效 台式電腦需配無線網絡卡 下圖是我搭建的區域網路的布局 1.宿舍和學校實驗室的ip不屬於同乙個網段,所以要遠端登入的話,可以使用teamview軟體登入 2.同一臺電腦在同時連線了本地連線和無線連線時,本地連線只是為了與其他的電腦組成區域網,並沒有連線外網 要登...

記一次計算機學習 sdn實驗室進入考核作業

姓名 胡智凱 學號 212006240 班級 電腦科學與技術3班 雜談本次作業鏈結 我的github 我的github倉庫 這裡我直接使用了學校電腦同款的vmware進行安裝。相關元件的安裝 tcpdump抓包 1。tcpdump抓包 2。1 學到了虛擬機器及虛擬機器系統的安裝 2 一些元件的安裝,...