程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 手把手教你玩轉ARP包(完)【數據包的游戲系列之一】

手把手教你玩轉ARP包(完)【數據包的游戲系列之一】

編輯:.NET實例教程
  function ctlent(evt,id) { if(evt.ctrlKey && evt.keyCode == 13) { try { TempSave(id); } catch(ex) { } finally { __doPostBack(''AjaxHolder$PostComment$btnSubmit'','''') } } }function SetReplyAuhor(author){document.getElementById(''AjaxHolder_PostComment_tbComment'').value+="@"+author+"\n";document.getElementById(''AJaxHolder_PostComment_tbComment'').focus();return false}


飛鳥Java


BlogJava   首頁   新隨筆 聯系   聚合   管理
隨筆-17  評論-26  文章-79  trackbacks-0


(轉)手把手教你玩轉ARP包(完)【數據包的游戲系列之一】
作者:
   CSDN  VC/MFC 網絡編程PiggyXP  ^_^
 
本篇目錄:

    四。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 驅動。

讀者可以安裝我代碼包裡的驅動,不過它更新很快,可以到它主頁上去下載最新版本

    &nbsp;   http://winpcap.polito.it/install/default.htm

    不做開發的讀者,只用下載並安裝這個就可以了 WinPcap auto-installer (driver +DLLs)

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved