四。ARP包的游戲
1 . 小伎倆
2. ARP欺騙的實現
3. 基於ARP欺騙的監聽原理
四.ARP包的游戲
既然我們可以自己來填充數據包,那麼來玩些 ARP 的“小游戲”欺騙就是易如反掌了,當然,是在沒有安全防護的網絡裡 ,比如只有 hub 或者交換機把你們相連,而沒有路由分段 ……^_^
下面我就由淺入深的講一些介紹一些關於 ARP 的小伎倆。
1. 小伎倆
1) 你可以試著發一個請求包廣播,其中的 ARP 幀裡關於你的信息填成這樣:
( 為了節省篇幅,我只寫需要特別指出的填充字段 )
發送方Mac
6
隨便亂填一個錯誤的
發送方IP
4
填上你的IP
出現什麼結果?是不是彈出一個 IP 地址沖突的提示?呵呵,同樣的道理,如果發送方 IP 填成別人的,然後每隔 1 秒發一次 ………..-_-b
2) 比如你們都靠一個網關 192.168.0.1 上網 ,如果你想讓 192.168.0.77 上不了網,就可以偽裝成網關給 192.168.0.77 發一個錯誤的 ARP 響應包 , like this
發送方Mac
6
發送方IP
4
網關IP 192.168.0.1
接收方就填 192.168.0.77 的相關信息,發送之後,它還能上網不?
這樣能折騰他好一陣子了,只要它的系統得不到正確的到網關的 ARP 映射表它就一直上不了網了 ^_^
呵呵類似的伎倆還有很多,不過只停留在這點東西上也沒什麼意思,還是看看稍微高深一點的吧 ^_^
2. ARP 欺騙
因為在以太網裡,網絡設備就是靠 MAC 信息來識別的計算機的,比如 A 電腦知道 MAC 地址為 22-22-22-22-22-22 的電腦是 B ,而如果我給 A 發送一個 ARP 響應包,告訴它我的 Mac 是 22-22-22-22-22-22 的話, A 同樣會認為我的計算機是 B 了,那麼好,我們設想有這麼一個環境,
A 的防火牆只對 IP 為 192.168.0.2 Mac 為 22-22-22-22-22-22 的 B 有信任關系,而且 A 打開了 21 端口提供 FTP 服務,正常情況下因為防火牆的緣故我們的計算機是連不到 A 的,
於是我們想辦法讓 B down 掉,或者在它關機的時候,我們把我們的 IP 改成 B 的 192.168.0.2 ,然後給 A 發送一個 ARP 回應包,告訴 A 更新一下 ARP 緩存列表, 192.168.0.2 的 IP 映射到我們的
Mac 地址上來,於是,奇跡出現了,我們可以連到 A 的 FTP 上了,防火牆失效了 ^_^
不過這個辦法只能在同網段內生效,如果我們和 A 不在一個網段內,那就要復雜的多了,還要配合 ICMP 的重定向來控制報文的路由,這個我准備在以後闡述 ICMP 包的時候詳細講解,就不再此多說了。
3. 基於 ARP 欺騙的監聽原理
監聽的技術有很多了,不過我們常用的 sniffer 工具只能在基於 hub 的網絡中起作用,碰到哪怕是交換機都無能為力了,這個時候我們的 ARP 欺騙技術就派上用場了。
還是假設有三台主機 A,B, 還有我們的主機,位於同一個交換式局域網中
A 與 B 正在通信,如果我們想要刺探 A ―― >B 通信的內容,於是我們就可以給 A 發送一個偽造的 ARP 回應包,告訴 A , B 的 IP 對應的 MAC 條目為我們的 Mac 地址,於是, A 也就會相應的刷新自己的 ARP 緩存,將發給 B 的數據,源源不斷的發送到我們的主機上來,這樣我就可以對接收到的數據包進行分析就好了,達到了監聽的目的。當然,因為動態 ARP 緩存是動態的,有超時時間的,所以我們必須每隔一段時間就給 A 發送一個 ARP 回應包
雖然我們這樣達到了目的,但是 A 到 B 的通信卻被停止了,為了不讓 B 發現,我們還要對每次接收到的數據包進行轉發,全部都轉發給 B ,這樣就天衣無縫了 ^_^
同樣的,如果我們還想監聽 B à A 的數據包,一樣給 B 發一個 ARP 回應包,告訴 B , A 的 IP 對應的 MAC 是我們的主機 Mac ,於是 B 到 A 的數據包也源源不斷的發到我們的主機上來了,當然我們也是一樣要對這些數據包進行轉發,如圖:
A <------> 我們的主機 <------> B
一切都無誤的話, A 和 B 的通信內容就這樣不知不覺的被我們監聽到了 ^_^
具體的代碼實現由於篇幅的關系我就不放在這裡講了,如果需要我就專門另寫篇文章附上完整代碼吧
至此,我們的 ARP 基礎知識就講完了,但願您能從中有所收獲
後記:
因為本人開發都是使用 VC++.net 2003 ,所以沒有安裝 .Net 的朋友是打不開工程的, 可以試一下 vckbase 上的工程轉換工具,本人沒有試過,不保證有效
http://www.vckbase.com/tools/assist/prjconverter.rar
而且本文的代碼使用了 winpcap 開發包,是要另外安裝 ainpcap 驅動。
讀者可以安裝我代碼包裡的驅動,不過它更新很快,可以到它主頁上去下載最新版本
http://winpcap.polito.it/install/default.htm
不做開發的讀者,只用下載並安裝這個就可以了 WinPcap auto-installer (driver +DLLs)