史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 網路軟硬體架設技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-24, 02:55 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 ARP傳輸協定學習小結——傳輸協定簡介和圖形化工具SendARP

  在進入正文之前,首先要感謝一些前輩,他們的文章和話語,都給了我很大的說明 ,所以我將感謝放在了文章最前面。

1、Douglas E. Comer ——《用TCP/IP進行網際互連》
  這是我的唯一一本參考書,一本通俗易懂的好書。

2、SendARP.c
  這是一個linux下傳送ARP包的程序源碼,在網上廣為流傳,很抱歉,無法查到其作者。

3、HiHint —— IPMan
  一位老前輩在98年寫的執行於Win95環境下對乙太網卡直接進行讀寫的DOS指令行程序,雖然實現方法已經不太一樣,但是我在開發程序中依然從他那裡獲得了許多指點。

4、Refdom —— 交換網路中的嗅探和ARP欺騙 (http://www.xfocus.net/articles/200204/377.html)
  安全焦點的一位前輩,他的這篇文章指引我實現具體的ARP包傳送。

  最近倍感墮落,於是找了點時間學習ARP傳輸協定,並寫了一個相關的工具——SendARP,還寫了這樣一篇我的文件,我的文件分為兩部分,前一部分是ARP傳輸協定的簡介,後一部分是工具SendARP的使用我的文件。

  如果你已經瞭解ARP傳輸協定,可以跳過這篇我的文件的前半部分,直接去看後面的程序我的文件,不過如果你有空的話,還是幫我看看,看看我是否描述清楚了,有沒有什麼錯誤,以便我儘快修正,在此提前表示感謝。

  先來介紹一下ARP傳輸協定吧,不過……由於個人水準問題,下面的文章可能枯燥乏味、難以理解,而且你可能看著看著就會罵我,為什麼不舉一個例子呢?放心,堅持看下去,例子在後面。實在挺不住的時候一定告訴我,讓我們一起來讓這篇我的文件變得通俗易懂。

  首先引出兩位主角,它們是電腦A和電腦B,它們連線到同一個Hub或者switch,屬於同一個區域網路,他們各自的網路硬體設備(一般為網路卡)的物理位址(也稱為硬體位址、MAC位址)分別為Pa和Pb,並且給他們各自的網路連接分配了IP位址(也可以稱為網路位址、傳輸協定位址),分別為Ia和Ib。或者我給幾個具體值吧,這樣方便理解。

機器名 物理位址(硬體位址、MAC位址) IP位址(網路位址、傳輸協定位址)
A 11-22-33-44-55-66 192.168.0.10
B aa-bb-cc-dd-ee-ff 192.168.0.20

  當一台電腦要和另外一台電腦進行網路通訊時,我們一般認為,僅僅只需要知道對方電腦的IP位址和相對應的連接埠號就可以了。但是,這些都是在網路層才提供的概念,再往下走呢?最終,在底層通信時還是要知道對方電腦的物理位址,因為網路硬體設備只能識別物理位址。你或許要問那為什麼不都用物理位址呢,那是因為物理位址很複雜,而且對於每個硬體設備來說是類BIOS的,不像IP位址那樣簡潔、易組織。

  假設此時機器A要像機器B傳送資料包,但是機器A只知道機器B的IP位址Ib,不知道機器B的物理位址,那麼如何由這個IP位址,得到機器B的物理位址Pb呢?

  於是就有了ARP傳輸協定…?

  ARP,全名為 An Ethernet Address Resolution Protocol,乙太網上的位址轉換傳輸協定,通過遵循該傳輸協定,只要我們知道了某台機器的IP位址,即可以知道其物理位址。

  下面我將根據ARP傳輸協定描述一下機器A和機器B的交流程序:
1、機器A說:「有程序叫我給機器B傳送資料,但是他們只告訴了我機器B的IP位址,可以我和機器B聯繫是通過物理位址的呀。嗯……如果廣播資料包的話,那麼機器B就可以收到了,不過如果我每個資料包都廣播的話,那不是很豬頭!還是得想辦法知道機器B的物理位址,這樣我直接聯繫她。對了!據說有一個ARP傳輸協定可以說明 我,嗯,讓我來試一下。」

2、按照ARP傳輸協定規定的格式,機器A構造一個資料包,其中包含機器B的IP位址Ib,我們稱之為請求包,然後將其廣播出去。附帶說一下,這裡面還包含著機器A自己的IP位址和物理位址,先埋下一個伏筆。

3、機器A說:「這個包已經廣播出去了,現在就等著機器B回應我了……」

4、這個區域網路內所有機器都收到了這個廣播的請求包,並且都對這個包進行了檢查,不過絕大部分機器發現包中所提到的IP位址Ib和自己的IP位址不一樣,於是就將這個包丟棄了。

5、只有一台機器發現包中的IP位址和自己的IP位址一樣,這台機器就是傳說中的機器B……

6、機器B說:「有個豬頭廣播了一個ARP請求包,裡面提到了我的IP位址,他大概是想和我單獨聯繫,但是不知道我的物理位址吧,所以才廣播的……那好!我就給他一次和我說話的機會吧,我先把物理位址告訴他吧」

7、於是機器B也根據ARP傳輸協定構造了另外一個資料包,其中包含自己的物理位址Pb,我們稱之為回應包,並打算將該回應包傳送給機器A。

8、機器B說:「怎麼把這個回應包傳送給A呢?學它的,繼續廣播?不行,我怎麼能夠和他一樣豬頭呢!再檢查一下他給我的請求包,也許可以找出什麼信息來……Search……Search……Search……找到了,這裡放著他的IP位址和物理位址呢!好,就用這個物理位址和他聯繫吧。」

9、於是機器B將剛剛構造的回應包傳送出去了……過一下就到了機器A那裡。

10、機器A說:「謝天謝地!經過漫長的等待,終於接到了回應了,嗯,這個包果然是機器B發給我的,對,也從裡面讀到了機器B的物理位址,好,以後我就用這個物理位址和機器B單獨聯繫了……」

  插幾句話,機器A和機器B雖然很想單獨聯繫,但是不是他們想就可以辦到的,還要看底層的物理設備,如果他們都連線到同一個Hub上,那麼他們注定是沒有秘密可言的了,因為Hub對於所有的資料包都會往所有連接埠傳送。有沒有一種設備不這麼豬頭呢?有,那就是傳說中的switch,switch會在每台機器的物理位址和他們連線到自己的連接埠號之間建立一個對應關係,給任何一台機器的資料包僅僅只會往相應的連接埠傳送,這樣就可以滿足機器A和機器B單獨聯繫的願望了。

  不過,這一切對於上層應用軟體都是透明的,他們都不必在意底層的轉換程序和結果,通訊時僅僅只需要知道對方IP位址和對應連接埠即可。

  那麼ARP資料包的具體格式是怎麼樣的呢?從網路底層看來,這樣一個資料包主要分為兩個部分,前面一個是物理畫格頭,後面一個才是ARP畫格。

  物理畫格頭,它將存在於任何一個傳輸協定資料包的前面,參照Sniffer Pro的命名規則,稱為 DLC Header,因為這個畫格頭是在資料鏈路層構造的,並且其主要內容為收發雙方的物理位址,以便硬體設備識別。

DLC Header
字段名 長度
(字元) 含義 預設值 備註
Destination 6 接收方的物理位址 乙太網硬體位址長度為6個字元
當廣播時,物理位址為 0xFFFFFFFFFFFF(FF-FF-FF-FF-FF-FF)
Source 6 傳送方的物理位址 乙太網硬體位址長度為6個字元
Ethertype 2 畫格類型 0x0806 ARP畫格的類型值為 0x0806

  然後才是ARP畫格,這裡稱為 ARP Frame

ARP Frame
字段名 長度
(字元) 含義 預設值 備註
Hardware type 2 硬體類型 0x1 區域網路的類型為 0x1
Protocol type 2 上層傳輸協定類型 0x0800 由於這裡是為關於IP傳輸協定的資料通訊做準備,所以上層傳輸協定為IP傳輸協定,其類型值為 0x0800
Length of hardware address 1 硬體位址長度 0x6 乙太網的硬體位址長度為 0x6
Length of protocol address 1 傳輸協定位址長度 0x4 IP傳輸協定的位址長度為 0x4
Opcode 2 操作碼 0x1 表示ARP請求包
0x2 表示ARP回應包
Sender's hardware address 6 傳送方的硬體位址 乙太網的硬體位址長度為 0x6
Sender's protocol address 4 傳送方的傳輸協定位址 IP傳輸協定的位址長度為 0x4
由於上層傳輸協定為IP傳輸協定,因此這裡為IP位址
Target hardware address 6 接收方的硬體位址 乙太網的硬體位址長度為 0x6
Target protocol address 4 接收方的傳輸協定位址 IP傳輸協定的位址長度為 0x4
由於上層傳輸協定為IP傳輸協定,因此這裡為IP位址
frame padding 18 物理畫格填充資料 以上所有字段加起來總長度為42個字元,另外物理畫格最後還有4個字元的CRC,為了達到物理畫格的最小長度64個字元,所以要填充的字元數為64-42-4=18

  下面,我們再參照傳輸協定規定的資料包格式來詮釋一下上述步驟。
  我們再把兩台機器的物理位址和IP位址囉嗦一遍:

機器名 硬體位址 IP位址
A 11-22-33-44-55-66 192.168.0.10
B aa-bb-cc-dd-ee-ff 192.168.0.20

  現在機器A僅僅知道機器B的IP位址為 192.168.0.20,它將廣播這樣一個ARP請求包,然後等待命器B的ARP回應包。

  當機器A廣播ARP請求包時,其中 Destination 為 0xFFFFFFFFFFFF(FF-FF-FF-FF-FF-FF),Source為自己的硬體位址,Opcode為1,在 Target protocol address 填入機器B的IP位址,在 Sender's hardware address 和 Sender's protocol address 分別填入自己的硬體位址和IP位址。
  該ARP請求包的內容如下:

字段名 長度
(字元) 值 備註 結構描述
Destination 6 ff ff ff ff ff ff 廣播位址為 FF-FF-FF-FF-FF-FF DLC Header
Source 6 11 22 33 44 55 66 機器A的硬體位址 11-22-33-44-55-66
Ethertype 2 08 06 ARP畫格的類型值為 0x0806

Hardware type 2 00 01 區域網路的類型為 0x1 ARP Frame
Protocol type 2 08 00 上層傳輸協定為IP傳輸協定,類型值為 0x0800
Length of hardware address 1 06 乙太網的硬體位址長度為 0x6
Length of protocol address 1 04 IP傳輸協定的位址長度為 0x4
Opcode 2 00 01 0x1 表示ARP請求包
Sender's hardware address 6 11 22 33 44 55 66 機器A的硬體位址 11-22-33-44-55-66
Sender's protocol address 4 c0 a8 00 0a 機器A的IP位址 192.168.0.10
Target hardware address 6 00 00 00 00 00 00 這裡的6個字元可以是隨機的
Target protocol address 4 c0 a8 00 14 機器B的IP位址 192.168.0.20
frame padding 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18個字元用於填充

  機器B接到該ARP請求包以後,從中提取機器A的硬體位址和IP位址,然後向機器A傳送ARP回應包,其中 Destination 為機器A的硬體位址,Source為自己的硬體位址,Opcode為2,在 Sender's hardware address 和 Sender's protocol address 分別填入自己的硬體位址和IP位址,在 Target hardware address 和 Target protocol address 分別填入機器A的硬體位址和IP位址。
  該ARP回應包的內容如下:

字段名 長度
(字元) 值 備註 結構描述
Destination 6 11 22 33 44 55 66 機器A的硬體位址 11-22-33-44-55-66 DLC Header
Source 6 aa bb cc dd ee ff 機器B的硬體位址 aa-bb-cc-dd-ee-ff
Ethertype 2 08 06 ARP畫格的類型值為 0x0806

Hardware type 2 00 01 區域網路的類型為 0x1 ARP Frame
Protocol type 2 08 00 上層傳輸協定為IP傳輸協定,類型值為 0x0800
Length of hardware address 1 06 乙太網的硬體位址長度為 0x6
Length of protocol address 1 04 IP傳輸協定的位址長度為 0x4
Opcode 2 00 02 0x2 表示ARP回應包
Sender's hardware address 6 aa bb cc dd ee ff 機器B的硬體位址 aa-bb-cc-dd-ee-ff
Sender's protocol address 4 c0 a8 00 14 機器B的IP位址 192.168.0.20
Target hardware address 6 11 22 33 44 55 66 機器A的硬體位址 11-22-33-44-55-66
Target protocol address 4 c0 a8 00 0a 機器A的IP位址 192.168.0.10
frame padding 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18個字元用於填充

  機器A收到該ARP回應包後,即可得到機器B的物理位址,至此,機器A已經完成機器B的IP位址到物理位址的轉換程序,同時機器B也已經順帶完成機器A的IP位址到物理位址的轉換程序。

  至此,相信你已經瞭解了ARP傳輸協定,如果依然有些糊塗,來找我吧,我會給你講清楚,並修改我的文件,使之更加易於理解。

  另外,我們再描述一些和ARP傳輸協定相關的知識。
1、為了描述方便,我們稱一個IP位址和一個物理位址的對應關係為一個對應條目,對於一台機器而言,這種條目可能會很多,所以有必要用一張表來管理,這裡我們稱作ARP條目表。在系統中可以通過指令「arp -a」來顯示系統當前的ARP條目表。

2、由於各種可能的原因,一台機器的IP位址和物理位址的對應關係不會永遠類BIOS,比如機器B突然下線了,或者換了網路卡,變了一個物理位址,她不會通知機器A的,所以在系統中會設定一個超時時間,當某個對應條目的生命期達到超時時間後,即將其刪除,這樣由機器A主動保持該條目的有效性。

3、對於一台機器而言,如果他收到了一個ARP回應包,他是不會去判斷自己是否傳送過請求包的,他依然會從中提取相關資訊。你也許會問,他為什麼不判斷呢?拜託!你想累死他呀……不過其實我覺得也不太累,但是他就是沒有這麼實現。這樣,就出現了一個可能的漏洞,也就是我下面即將提到的ARP欺騙。

  下面談一下利用ARP傳輸協定所實現的一些另類功能。如果在狗狗(Google,我的一個同事習慣這麼稱呼)上搜尋一下和ARP相關的東西,可以找到許多「ARP欺騙」(ARP spoof)的字樣,這個也就是我們即將講述的另類功能。
  現在我們構造一個ARP請求包,然後來設想一下會產生什麼情況。

字段名 長度
(字元) 值 備註 結構描述
Destination 6 11 22 33 44 55 66 機器A的硬體位址 11-22-33-44-55-66 DLC Header
Source 6 88 88 88 88 88 88 機器B的硬體位址 88-88-88-88-88-88
Ethertype 2 08 06 ARP畫格的類型值為 0x0806

Hardware type 2 00 01 區域網路的類型為 0x1 ARP Frame
Protocol type 2 08 00 上層傳輸協定為IP傳輸協定,類型值為 0x0800
Length of hardware address 1 06 乙太網的硬體位址長度為 0x6
Length of protocol address 1 04 IP傳輸協定的位址長度為 0x4
Opcode 2 00 02 0x2 表示ARP回應包
Sender's hardware address 6 88 88 88 88 88 88 機器B的硬體位址 88-88-88-88-88-88
Sender's protocol address 4 c0 a8 00 14 機器B的IP位址 192.168.0.20
Target hardware address 6 11 22 33 44 55 66 機器A的硬體位址 11-22-33-44-55-66
Target protocol address 4 c0 a8 00 0a 機器A的IP位址 192.168.0.10
frame padding 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18個字元用於填充

  現在看這樣一個資料包,是不是很熟悉呢?你會認為這是一個機器B傳送給機器A的回應包,其中包括了機器B的硬體位址。不過和我們上面給出的那個包的內容有所區別……

  區別就在於機器B自己的硬體位址上,機器B的硬體位址應該是 aa-bb-cc-dd-ee-ff,但是這個回應包中相對應的硬體位址卻是 88-88-88-88-88-88,設想一下,機器A接收到這個包以後會造成什麼效果。他不會去在意自己是否傳送過針對機器B的物理位址的請求包,他依然會直接提取其中的IP位址和物理位址,這樣機器A就會錯誤的認為機器B的硬體位址是 88-88-88-88-88-88,那麼機器A就無法和機器B通訊了,因為他搞錯了機器B的硬體位址。

  那麼現在你還會相信這個回應包是機器B自己傳送的嗎?顯然是另外一台機器對於他們的一種惡意企圖。不過如果真的是機器B故意這麼做,那我不好再說什麼了,不過機器B的系統自己是不會這樣的,這些只能是人為產生的。
  這個就是前面所提到的ARP欺騙……

  假如機器A是這個區域網路的網關呢?那麼以後機器B就別想上網了,因為她無法收到機器A本該發給她的信息。

  假如這裡給出的機器B的物理位址 88-88-88-88-88-88 是另外一台機器C的物理位址呢?那麼以後機器A發給機器B的信息都會發給機器C。這樣機器C就可以攔截到機器A發給機器B的部分信息,但是機器A和機器B的通訊會中斷,因為對於機器B而言,中間有資料包掉了。但是如果機器C將攔截到的資料包繼續轉發給機器B呢,當然轉發程序中機器C會偽裝成機器A,那麼機器C就完全成為機器A到機器B的資料中轉站了。同理,機器C也可以成為機器B到機器A的資料中轉站。

  這個就是通過ARP欺騙所實現的資料監聽,關於監聽,這裡就不多囉嗦了,呵呵,其實是因為我還不會,以後學會了再寫相關我的文件吧……

  呵呵,這片文章扯多了點,真的很感謝你可以堅持看到這裡,下面我將介紹一下程序本身的一些情況。

  在我學習完傳輸協定之後,緊接著就是實現ARP包的傳送程序,從網上找到了SendARP.c,這是一個linux下傳送ARP包的程序,直接用socket,但是我後來始終沒有找到方法在windows下直接使用socket傳送ARP包,後來看到了Refdom在安全焦點的文章《交換網路中的嗅探和ARP欺騙》,於是決定採用WinPcap,功能強大、使用方便,還是免費的,呵呵,好呀好呀就是好呀!

  我這個程序其實也沒有什麼大作用,只是用來傳送ARP包。目前可以直接傳送ARP包的程序很多,不過都是指令行的,在許多人看來指令行可能更方便一些,不過如果在圖形界面上另外做一些擴展功能,那麼圖形界面的優勢將會是很明顯的。另外,我暫時沒有打算把他做成黑客工具,僅僅只是供學習研究使用。

  由於種種原因,程序本身存在一些局限,先說明一下。
  首先,這個程序有執行平台的限制,僅僅適用於 Windows 2000 和 Windows XP,主要是因為兩個原因造成了平台限制。其一是我的開發平台為 Win2000,Win2000 和 Win9x 系列在網路硬體上的記錄形式可能不一樣,為了避免可能存在的問題,所以要求程序不能在 Win9x 上使用;其二,由於程序中使用了 WinPcap 傳送資料包,而這個東西它自己說不支持 Windows 2003,但是我在 Win2003 上測試時,一點問題也沒有。
  其次,執行該程序對於系統還有一個要求,即必須安裝 WinPcap,由於WinPcap 的東西太多了,我也不好帶上一堆dll和sys文件發佈,所以還是先把 WinPcap 的執行庫裝上比較省事。這個東西的下載位址在文章最後。

  限制了一堆,這裡還要說明一點不限制的,即對於區域網路內其他機器的系統平台不限制,不論是 Windows 還是 Linux,不過有個前提(鬱悶!好像又是一個限制),要用 TCP/IP 呀!
  另外,這個程序僅僅提供了傳送ARP包的功能,如果你想檢視對方機器發給你的ARP回應包,還是需要借助別的 sniffer 工具。我還不會 sniffer 呢,等哪天學會了,再把這兩個功能整合起來。




  如圖所顯示,這就是程序的主界面了,主要功能就是傳送ARP包。

  如果前面的文章你看明白了,那麼這個界面左側的各項就不需要多解釋了吧……
  右側的東西也就是本程序的擴展功能了,也是和其他同類工具的區別所在。
  其實,在我剛開始學習ARP傳輸協定時,就找到了許多指令行的ARP工具,我當時做了這樣兩個試驗,一個是模擬系統查詢另外一台機器物理位址的程序,另外一個是通過ARP欺騙導致另外一台機器無法上網,我稱這台機器為小白鼠。
  在這兩個試驗中,我都需要知道小白鼠機器的IP位址和物理位址。如果打算自己手動獲取這兩項信息,那麼首先要得到該機器的IP位址,這個方法太多了,不囉嗦了,然後ping該IP位址,此時系統已經通過ARP傳輸協定進行了相關轉換,所以我們就可以通過「arp -a」指令獲取該機器的物理位址。
  我一直都是一個懶人,所以我就想如果把這個程序整合到自己的程序中,豈不是更好,於是就打算做一個圖形界面的,並且有這些輔助功能,所以 SendARP 就成為了現在這個樣子。
  你也許會問我,如果你只知道對方機器名,不知道對方機器IP位址,能否把ping的這一步也整合到程序中去,這個……這個……我很懶的……

  界面右側有兩個 ListView,上面一個 ListView 是系統當前的可用網路卡的列表,包括每個網路卡在網路連接中的名稱、IP位址和物理位址,下面一個 ListView 是上面一個 ListView 中選的網路卡所在網路中的所有ARP對應條目列表,包括每項對應條目的IP位址和物理位址。

  你可以選項在哪一個網路卡上試驗,主要是為了方便多網路卡的朋友。

  如果你想知道某個IP位址對應的物理位址,可以點擊「增加」按鈕,輸入IP位址,如果該IP位址是存在該區域網路內的話,那麼系統自己會完成ARP轉換程序,程序會讀取轉換結果,重新列舉所有ARP對應條目。

  如果你想刪除系統中某個ARP對應條目,可以選它,然後點擊「刪除」按鈕。

  舉兩個例子:
1、假想一台機器通過廣播ARP請求包來獲取自己機器的物理位址,然後填充一個資料包用來描述這個ARP請求包,將這個包傳送出去。該包將對自己電腦上的ARP條目產生影響,那麼你可以點擊「重新整理」按鈕檢視現在系統上所有ARP對應條目,將會發現假想的那台機器在自己電腦上的ARP對應條目。
2、就是上面提到的導致某台機器無法與網關通訊的例子,這裡就不多囉嗦了。

  還有一個小功能,因為程序中經常會將界面右側的位址信息複製到界面左側,那麼你可以在 ListView 中相對應的位置點擊滑鼠右鍵,此時對應位置中的內容已經被複製到記事本中,你就可以到界面左側去貼上了。

  還有一個輸入格式需要說明,輸入的IP位址一律只接收那種點式輸入,比如 192.168.0.1,輸入的物理位址建議類似於這樣 11-22-33-44-55-66 或者 112233445566,我沒有做過多的判斷、轉換和容錯處理,大家自己小心……

  好像都寫明白了吧,最後補充一點,那個截取影圖中的ARP條目全部都是我自己做假的,界面左側的各個字段的資料一旦發出去,就可以產生一個人為製作的ARP對應條目,這是模仿我上面提到的第一個例子,不過其中 DLC Header 的傳送方物理位址和ARP畫格中的傳送方物理位址不一樣,通過試驗結果,我們就可以知道在windows系統下到底會取哪一個,其實從理論上來看,也是應該取後面一個。

  最後,提一下程序程式碼的問題,這個程序的程式碼是完全開放的,不過文件數目比較多一點,所以不方便直接貼上來,大家可以到下面的位址下載程序源碼,編譯環境為 Microsoft Visual Studio .NET 2003,開發語言為 VC,我的程式碼不是很規範,大家在邊看邊批評的同時,別忘了將意見告訴我,說明 我改正。在此特別感謝老羅為我提供空間。
  另外,由於用到了 WinPcap,所以在編譯時需要 WinPcap 的開發包,下載位址在下面。

由於無法正常顯示html表格,所以提供一下htm版和mht版的我的文件,位址如下:
http://www.luocong.com/sparrow/arp/SendARP_doc.htm
http://www.luocong.com/sparrow/arp/SendARP_doc.mht
源碼位址就在上帖的最後。

SendARP 來源碼: http://www.luocong.com/sparrow/arp/SendARP_src.rar
WinPcap 執行庫: http://winpcap.polito.it/install/bin/WinPcap_3_0.exe
WinPcap 開發包: http://winpcap.polito.it/install/bin/wpdpack_3_0.zip



sparrow
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3188 次
舊 2006-05-31, 08:15 PM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

解決ARP攻擊的方法和原理

解決ARP攻擊的方法和原理

 局域網內有人使用ARP欺騙的木馬程式(比如:傳奇盜號的軟件,某些傳奇外掛中也被惡意載入了此程式)。

【故障原理】

  要瞭解故障原理,我們先來瞭解一下ARP協議。

  在局域網中,通過ARP協議來完成IP地址轉換為第二層物理地址(即MAC地址)的。ARP協議對網路安全具有重要的意義。通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網路中產生大量的ARP通信量使網路阻塞。

  ARP協議是「Address Resolution Protocol」(地址解析協議)的縮寫。在局域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂「地址解析」就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。

  每台安裝有TCP/IP協議的電腦裡都有一個ARP快取記憶體表,表裡的IP地址與MAC地址是一一對應的,如下所示。

主機 IP地址 MAC地址
A 192.168.16.1 aa-aa-aa-aa-aa-aa
B 192.168.16.2 bb-bb-bb-bb-bb-bb
C 192.168.16.3 cc-cc-cc-cc-cc-cc
D 192.168.16.4 dd-dd-dd-dd-dd-dd


  我們以主機A(192.168.16.1)向主機B(192.168.16.2)發送資料為例。當發送資料時,主機A會在自己的ARP快取記憶體表中尋找是否有目標IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裡面發送就可以了;如果在ARP快取記憶體表中沒有找到相對應的IP地址,主機A就會在網路上發送一個廣播,目標MAC地址是「FF.FF.FF.FF.FF.FF」,這表示向同一網段內的所有主機發出這樣的詢問:「192.168.16.2的MAC地址是什麼?」網路上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應:「192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb」。這樣,主機A就知道了主機B的MAC地址,它就可以向主機B發送訊息了。同時它還更新了自己的ARP快取記憶體表,下次再向主機B發送訊息時,直接從ARP快取記憶體表裡查找就可以了。ARP快取記憶體表採用了老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP快取記憶體表的長度,加快查詢速度。

  從上面可以看出,ARP協議的基礎就是信任局域網內所有的人,那麼就很容易實現在以太網上的ARP欺騙。對目標A進行欺騙,A去Ping主機C卻發送到了DD-DD-DD-DD-DD-DD這個地址上。如果進行欺騙的時候,把C的MAC地址騙為DD-DD-DD-DD-DD-DD,於是A發送到C上的資料包都變成發送給D的了。這不正好是D能夠接收到A發送的資料包了麼,嗅探成功。

  A對這個變化一點都沒有意識到,但是接下來的事情就讓A產生了懷疑。因為A和C連接不上了。D對接收到A發送給C的資料包可沒有轉交給C。

  做「man in the middle」,進行ARP重定向。打開D的IP轉發功能,A發送過來的資料包,轉發給C,好比一個路由器一樣。不過,假如D發送ICMP重定向的話就中斷了整個計劃。

  D直接進行整個包的修改轉發,捕獲到A發送給C的資料包,全部進行修改後再轉發給C,而C接收到的資料包完全認為是從A發送來的。不過,C發送的資料包又直接傳遞給A,倘若再次進行對C的ARP欺騙。現在D就完全成為A與C的中間橋樑了,對於A和C之間的通訊就可以瞭如指掌了。

【故障現象】

  當局域網內某台主機執行ARP欺騙的木馬程式時,會欺騙局域網內所有主機和路由器,讓所有上網的流量必須經過病毒主機。其他用戶原來直接通過路由器上網現在轉由通過病毒主機上網,切換的時候用戶會斷一次線。

  切換到病毒主機上網後,如果用戶已經登入了傳奇服務器,那麼病毒主機就會經常偽造斷線的假像,那麼用戶就得重新登入傳奇服務器,這樣病毒主機就可以盜號了。

  由於ARP欺騙的木馬程式發作的時候會發出大量的資料包導致局域網通訊擁塞以及其自身處理能力的限制,用戶會感覺上網速度越來越慢。當ARP欺騙的木馬程式停止執行時,用戶會恢復從路由器上網,切換過程中用戶會再斷一次線。

【HiPER用戶快速發現ARP欺騙木馬】

  在路由器的「系統歷史記錄」中看到大量如下的訊息(440以後的路由器軟件版本中才有此提示):

  MAC Chged 10.128.103.124
   MAC Old 00:01:6c:36:d1:7f
   MAC New 00:05:5d:60:c7:18

  這個消息代表了用戶的MAC地址發生了變化,在ARP欺騙木馬開始執行的時候,局域網所有主機的MAC地址更新為病毒主機的MAC地址(即所有訊息的MAC New地址都一致為病毒主機的MAC地址),同時在路由器的「用戶統計」中看到所有用戶的MAC地址訊息都一樣。
   如果是在路由器的「系統歷史記錄」中看到大量MAC Old地址都一致,則說明局域網內曾經出現過ARP欺騙(ARP欺騙的木馬程式停止執行時,主機在路由器上恢復其真實的MAC地址)。

【在局域網內查找病毒主機】

  在上面我們已經知道了使用ARP欺騙木馬的主機的MAC地址,那麼我們就可以使用NBTSCAN(下載地址:http://www.utt.com.cn/upload/nbtscan.rar)工具來快速查找它。

  NBTSCAN可以取到PC的真實IP地址和MAC地址,如果有」傳奇木馬」在做怪,可以找到裝有木馬的PC的IP/和MAC地址。

  命令:「nbtscan -r 192.168.16.0/24」(搜索整個192.168.16.0/24網段, 即192.168.16.1-192.168.16.254);或「nbtscan 192.168.16.25-137」搜索192.168.16.25-137 網段,即192.168.16.25-192.168.16.137。輸出結果第一列是IP地址,最後一列是MAC地址。

  NBTSCAN的使用範例:

  假設查找一台MAC地址為「000d870d585f」的病毒主機。

  1)將壓縮包裝中的nbtscan.exe 和cygwin1.dll解壓縮放到c:下。

  2)在Windows開始—執行—打開,輸入cmd(windows98輸入「command」),在出現的DOS視窗中輸入:C: btscan -r 192.168.16.1/24(這裡需要根據用戶實際網段輸入),Enter鍵。





  3)通過查詢IP--MAC對應表,查出「000d870d585f」的病毒主機的IP地址為「192.168.16.223」。

【解決思路】

  1、不要把你的網路安全信任關係建立在IP基礎上或MAC基礎上,(rarp同樣存在欺騙的問題),理想的關係應該建立在IP+MAC基礎上。

  2、設置靜態的MAC-->IP對應表,不要讓主機重新整理你設定好的轉換表。

  3、除非很有必要,否則停止使用ARP,將ARP做為永久條目儲存在對應表中。

  4、使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這台ARP服務器不被黑。

  5、使用"proxy"代理IP的傳輸。

  6、使用硬體屏蔽主機。設置好你的路由,確保IP地址能到達合法的路徑。(靜態配置路由ARP條目),注意,使用交換集線器和網橋無法阻止ARP欺騙。

  7、管理員定期用響應的IP包中獲得一個rarp請求,然後檢查ARP響應的真實性。

  8、管理員定期輪詢,檢查主機上的ARP快取記憶體。

  9、使用防火牆連續監控網路。注意有使用SNMP的情況下,ARP的欺騙有可能導致陷阱包丟失。

【HiPER用戶的解決方案】

  建議用戶採用雙向綁定的方法解決並且防止ARP欺騙。

  1、在PC上綁定路由器的IP和MAC地址:

  1)首先,獲得路由器的內網的MAC地址(例如HiPER網關地址192.168.16.254的MAC地址為0022aa0022aa)。

  2)編寫一個批處理文件rarp.bat內容如下:

  @echo off
   arp -d
   arp -s 192.168.16.254 00-22-aa-00-22-aa

  將文件中的網關IP地址和MAC地址更改為您自己的網關IP地址和MAC地址即可。

  將這個批處理軟件拖到「windows--開始--程式--啟動」中。

  3)如果是網吧,可以利用收費軟件服務端程式(pubwin或者萬象都可以)發送批處理文件rarp.bat到所有客戶機的啟動目錄。Windows2000的預定啟動目錄為「C:\Documents and SettingsAll Users「開始」表菜單程式啟動」。

  2、在路由器上綁定用戶主機的IP和MAC地址(440以後的路由器軟件版本支持):

  在HiPER管理界面--高階配置--用戶管理中將局域網每台主機均作綁定。
ARP傳輸協定概述

http://www.slime2.com.tw/forums/show...&highlight=ARP
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3188 次
舊 2006-06-01, 03:48 AM   #3 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

解決ARP攻擊的方法和原理

解決ARP攻擊的方法和原理

 局域網內有人使用ARP欺騙的木馬程式(比如:傳奇盜號的軟件,某些傳奇外掛中也被惡意載入了此程式)。

【故障原理】

  要瞭解故障原理,我們先來瞭解一下ARP協議。

  在局域網中,通過ARP協議來完成IP地址轉換為第二層物理地址(即MAC地址)的。ARP協議對網路安全具有重要的意義。通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網路中產生大量的ARP通信量使網路阻塞。

  ARP協議是「Address Resolution Protocol」(地址解析協議)的縮寫。在局域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂「地址解析」就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。

  每台安裝有TCP/IP協議的電腦裡都有一個ARP快取記憶體表,表裡的IP地址與MAC地址是一一對應的,如下所示。

主機 IP地址 MAC地址
A 192.168.16.1 aa-aa-aa-aa-aa-aa
B 192.168.16.2 bb-bb-bb-bb-bb-bb
C 192.168.16.3 cc-cc-cc-cc-cc-cc
D 192.168.16.4 dd-dd-dd-dd-dd-dd


  我們以主機A(192.168.16.1)向主機B(192.168.16.2)發送資料為例。當發送資料時,主機A會在自己的ARP快取記憶體表中尋找是否有目標IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裡面發送就可以了;如果在ARP快取記憶體表中沒有找到相對應的IP地址,主機A就會在網路上發送一個廣播,目標MAC地址是「FF.FF.FF.FF.FF.FF」,這表示向同一網段內的所有主機發出這樣的詢問:「192.168.16.2的MAC地址是什麼?」網路上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應:「192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb」。這樣,主機A就知道了主機B的MAC地址,它就可以向主機B發送訊息了。同時它還更新了自己的ARP快取記憶體表,下次再向主機B發送訊息時,直接從ARP快取記憶體表裡查找就可以了。ARP快取記憶體表採用了老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP快取記憶體表的長度,加快查詢速度。

  從上面可以看出,ARP協議的基礎就是信任局域網內所有的人,那麼就很容易實現在以太網上的ARP欺騙。對目標A進行欺騙,A去Ping主機C卻發送到了DD-DD-DD-DD-DD-DD這個地址上。如果進行欺騙的時候,把C的MAC地址騙為DD-DD-DD-DD-DD-DD,於是A發送到C上的資料包都變成發送給D的了。這不正好是D能夠接收到A發送的資料包了麼,嗅探成功。

  A對這個變化一點都沒有意識到,但是接下來的事情就讓A產生了懷疑。因為A和C連接不上了。D對接收到A發送給C的資料包可沒有轉交給C。

  做「man in the middle」,進行ARP重定向。打開D的IP轉發功能,A發送過來的資料包,轉發給C,好比一個路由器一樣。不過,假如D發送ICMP重定向的話就中斷了整個計劃。

  D直接進行整個包的修改轉發,捕獲到A發送給C的資料包,全部進行修改後再轉發給C,而C接收到的資料包完全認為是從A發送來的。不過,C發送的資料包又直接傳遞給A,倘若再次進行對C的ARP欺騙。現在D就完全成為A與C的中間橋樑了,對於A和C之間的通訊就可以瞭如指掌了。

【故障現象】

  當局域網內某台主機執行ARP欺騙的木馬程式時,會欺騙局域網內所有主機和路由器,讓所有上網的流量必須經過病毒主機。其他用戶原來直接通過路由器上網現在轉由通過病毒主機上網,切換的時候用戶會斷一次線。

  切換到病毒主機上網後,如果用戶已經登入了傳奇服務器,那麼病毒主機就會經常偽造斷線的假像,那麼用戶就得重新登入傳奇服務器,這樣病毒主機就可以盜號了。

  由於ARP欺騙的木馬程式發作的時候會發出大量的資料包導致局域網通訊擁塞以及其自身處理能力的限制,用戶會感覺上網速度越來越慢。當ARP欺騙的木馬程式停止執行時,用戶會恢復從路由器上網,切換過程中用戶會再斷一次線。

【HiPER用戶快速發現ARP欺騙木馬】

  在路由器的「系統歷史記錄」中看到大量如下的訊息(440以後的路由器軟件版本中才有此提示):

  MAC Chged 10.128.103.124
   MAC Old 00:01:6c:36:d1:7f
   MAC New 00:05:5d:60:c7:18

  這個消息代表了用戶的MAC地址發生了變化,在ARP欺騙木馬開始執行的時候,局域網所有主機的MAC地址更新為病毒主機的MAC地址(即所有訊息的MAC New地址都一致為病毒主機的MAC地址),同時在路由器的「用戶統計」中看到所有用戶的MAC地址訊息都一樣。
   如果是在路由器的「系統歷史記錄」中看到大量MAC Old地址都一致,則說明局域網內曾經出現過ARP欺騙(ARP欺騙的木馬程式停止執行時,主機在路由器上恢復其真實的MAC地址)。

【在局域網內查找病毒主機】

  在上面我們已經知道了使用ARP欺騙木馬的主機的MAC地址,那麼我們就可以使用NBTSCAN(下載地址:http://www.utt.com.cn/upload/nbtscan.rar)工具來快速查找它。

  NBTSCAN可以取到PC的真實IP地址和MAC地址,如果有」傳奇木馬」在做怪,可以找到裝有木馬的PC的IP/和MAC地址。

  命令:「nbtscan -r 192.168.16.0/24」(搜索整個192.168.16.0/24網段, 即192.168.16.1-192.168.16.254);或「nbtscan 192.168.16.25-137」搜索192.168.16.25-137 網段,即192.168.16.25-192.168.16.137。輸出結果第一列是IP地址,最後一列是MAC地址。

  NBTSCAN的使用範例:

  假設查找一台MAC地址為「000d870d585f」的病毒主機。

  1)將壓縮包裝中的nbtscan.exe 和cygwin1.dll解壓縮放到c:下。

  2)在Windows開始—執行—打開,輸入cmd(windows98輸入「command」),在出現的DOS視窗中輸入:C: btscan -r 192.168.16.1/24(這裡需要根據用戶實際網段輸入),Enter鍵。





  3)通過查詢IP--MAC對應表,查出「000d870d585f」的病毒主機的IP地址為「192.168.16.223」。

【解決思路】

  1、不要把你的網路安全信任關係建立在IP基礎上或MAC基礎上,(rarp同樣存在欺騙的問題),理想的關係應該建立在IP+MAC基礎上。

  2、設置靜態的MAC-->IP對應表,不要讓主機重新整理你設定好的轉換表。

  3、除非很有必要,否則停止使用ARP,將ARP做為永久條目儲存在對應表中。

  4、使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這台ARP服務器不被黑。

  5、使用"proxy"代理IP的傳輸。

  6、使用硬體屏蔽主機。設置好你的路由,確保IP地址能到達合法的路徑。(靜態配置路由ARP條目),注意,使用交換集線器和網橋無法阻止ARP欺騙。

  7、管理員定期用響應的IP包中獲得一個rarp請求,然後檢查ARP響應的真實性。

  8、管理員定期輪詢,檢查主機上的ARP快取記憶體。

  9、使用防火牆連續監控網路。注意有使用SNMP的情況下,ARP的欺騙有可能導致陷阱包丟失。

【HiPER用戶的解決方案】

  建議用戶採用雙向綁定的方法解決並且防止ARP欺騙。

  1、在PC上綁定路由器的IP和MAC地址:

  1)首先,獲得路由器的內網的MAC地址(例如HiPER網關地址192.168.16.254的MAC地址為0022aa0022aa)。

  2)編寫一個批處理文件rarp.bat內容如下:

  @echo off
   arp -d
   arp -s 192.168.16.254 00-22-aa-00-22-aa

  將文件中的網關IP地址和MAC地址更改為您自己的網關IP地址和MAC地址即可。

  將這個批處理軟件拖到「windows--開始--程式--啟動」中。

  3)如果是網吧,可以利用收費軟件服務端程式(pubwin或者萬象都可以)發送批處理文件rarp.bat到所有客戶機的啟動目錄。Windows2000的預定啟動目錄為「C:\Documents and SettingsAll Users「開始」表菜單程式啟動」。

  2、在路由器上綁定用戶主機的IP和MAC地址(440以後的路由器軟件版本支持):

  在HiPER管理界面--高階配置--用戶管理中將局域網每台主機均作綁定。
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3188 次
舊 2006-08-24, 10:08 AM   #4 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

實戰:ARP攻擊原理及解決方法

【故障原因】

局域網內有人使用ARP欺騙的木馬程式(比如:傳奇盜號的軟件,某些傳奇外掛中也被惡意載入了此程式)。

【故障原理】

要瞭解故障原理,我們先來瞭解一下ARP協議。
在局域網中,通過ARP協議來完成IP位址轉換為第二層物理位址(即MAC卡位址)的。ARP協議對網路安全具有重要的意義。通過偽造IP位址和MAC卡位址實現ARP欺騙,能夠在網路中產生大量的ARP通信量使網路阻塞。
ARP協議是「Address Resolution Protocol」(地址解析協議)的縮寫。在局域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的MAC卡位址的。在乙太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC卡位址。但這個目標MAC卡位址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂「地址解析」就是主機在發送幀前將目標IP位址轉換成目標MAC卡位址的過程。ARP協議的基本功能就是通過目標設備的IP位址,查詢目標設備的MAC卡位址,以保證通信的順利進行。
每台安裝有TCP/IP協議的電腦裡都有一個ARP快取記憶體表,表裡的IP位址與MAC卡位址是一一對應的,如下表所示。

主機 IP位址 MAC卡位址
A 192.168.16.1 aa-aa-aa-aa-aa-aa
B 192.168.16.2 bb-bb-bb-bb-bb-bb
C 192.168.16.3 cc-cc-cc-cc-cc-cc
D 192.168.16.4 dd-dd-dd-dd-dd-dd


我們以主機A(192.168.16.1)向主機B(192.168.16.2)發送資料為例。當發送資料時,主機A會在自己的ARP快取記憶體表中尋找是否有目標IP位址。如果找到了,也就知道了目標MAC卡位址,直接把目標MAC卡位址寫入幀裡面發送就可以了;如果在ARP快取記憶體表中沒有找到相對應的IP位址,主機A就會在網路上發送一個廣播,目標MAC卡位址是「FF.FF.FF.FF.FF.FF」,這表示向同一網段內的所有主機發出這樣的詢問:「192.168.16.2的MAC卡位址是什麼?」網路上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應:「192.168.16.2的MAC卡位址是bb-bb-bb-bb-bb-bb」。這樣,主機A就知道了主機B的MAC卡位址,它就可以向主機B發送訊息了。同時它還更新了自己的ARP快取記憶體表,下次再向主機B發送訊息時,直接從ARP快取記憶體表裡查找就可以了。ARP快取記憶體表採用了老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP快取記憶體表的長度,加快查詢速度。
從上面可以看出,ARP協議的基礎就是信任局域網內所有的人,那麼就很容易實現在乙太網上的ARP欺騙。對目標A進行欺騙,A去Ping主機C卻發送到了DD-DD-DD-DD-DD-DD這個地址上。如果進行欺騙的時候,把C的MAC卡位址騙為DD-DD-DD-DD-DD-DD,於是A發送到C上的資料包都變成發送給D的了。這不正好是D能夠接收到A發送的資料包了麼,嗅探成功。
A對這個變化一點都沒有意識到,但是接下來的事情就讓A產生了懷疑。因為A和C連接不上了。D對接收到A發送給C的資料包可沒有轉交給C。
做「man in the middle」,進行ARP重定向。打開D的IP轉發功能,A發送過來的資料包,轉發給C,好比一個路由器一樣。不過,假如D發送ICMP重定向的話就中斷了整個計劃。
D直接進行整個包的修改轉發,捕獲到A發送給C的資料包,全部進行修改後再轉發給C,而C接收到的資料包完全認為是從A發送來的。不過,C發送的資料包又直接傳遞給A,倘若再次進行對C的ARP欺騙。現在D就完全成為A與C的中間橋樑了,對於A和C之間的通訊就可以瞭如指掌了。
【故障現象】

當局域網內某台主機執行ARP欺騙的木馬程式時,會欺騙局域網內所有主機和路由器,讓所有上網的流量必須經過病毒主機。其他用戶原來直接通過路由器上網現在轉由通過病毒主機上網,切換的時候用戶會斷一次線。
切換到病毒主機上網後,如果用戶已經登入了傳奇服務器,那麼病毒主機就會經常偽造斷線的假像,那麼用戶就得重新登入傳奇服務器,這樣病毒主機就可以盜號了。
由於ARP欺騙的木馬程式發作的時候會發出大量的資料包導致局域網通訊擁塞以及其自身處理能力的限制,用戶會感覺上網速度越來越慢。當ARP欺騙的木馬程式停止執行時,用戶會恢復從路由器上網,切換過程中用戶會再斷一次線。

【HiPER用戶快速發現ARP欺騙木馬】

在路由器的「系統歷史記錄」中看到大量如下的訊息(440以後的路由器軟件版本中才有此提示):
MAC Chged 10.128.103.124
MAC Old 00:01:6c:36:d1:7f
MAC New 00:05:5d:60:c7:18
這個消息代表了用戶的MAC卡位址發生了變化,在ARP欺騙木馬開始執行的時候,局域網所有主機的MAC卡位址更新為病毒主機的MAC卡位址(即所有訊息的MAC New地址都一致為病毒主機的MAC卡位址),同時在路由器的「用戶統計」中看到所有用戶的MAC卡位址訊息都一樣。
如果是在路由器的「系統歷史記錄」中看到大量MAC Old地址都一致,則說明局域網內曾經出現過ARP欺騙(ARP欺騙的木馬程式停止執行時,主機在路由器上恢復其真實的MAC卡位址)。

【在局域網內查找病毒主機】

在上面我們已經知道了使用ARP欺騙木馬的主機的MAC卡位址,那麼我們就可以使用NBTSCAN(下載位址:http://down.wglm.net/Software/catalo...查找它。
NBTSCAN可以取到PC的真實IP位址和MAC卡位址,如果有」傳奇木馬」在做怪,可以找到裝有木馬的PC的IP/和MAC卡位址。
命令:「nbtscan -r 192.168.16.0/24」(搜索整個192.168.16.0/24網段, 即
192.168.16.1-192.168.16.254);或「nbtscan 192.168.16.25-137」搜索192.168.16.25-137 網段,即192.168.16.25-192.168.16.137。輸出結果第一列是IP位址,最後一列是MAC卡位址。
NBTSCAN的使用範例:
假設查找一台MAC卡位址為「000d870d585f」的病毒主機。
1)將壓縮包裝中的nbtscan.exe 和cygwin1.dll解壓縮放到c:/下。
2)在Windows開始—執行—打開,輸入cmd(windows98輸入「command」),在出現的DOS視窗中輸入:C:/nbtscan -r 192.168.16.1/24(這裡需要根據用戶實際網段輸入),Enter鍵。

C:/Documents and Settings/ALAN>C:/nbtscan -r 192.168.16.1/24
Warning: -r option not supported under Windows. Running without it.
Doing NBT name scan for addresses from 192.168.16.1/24
IP address NetBIOS Name Server User MAC address
192.168.16.0 Sendto failed: Cannot assign requested address
192.168.16.50 SERVER 00-e0-4c-4d-96-c6
192.168.16.111 LLF ADMINISTRATOR 00-22-55-66-77-88
192.168.16.121 UTT-HIPER 00-0d-87-26-7d-78
192.168.16.175 JC 00-07-95-e0-7c-d7
192.168.16.223 test123 test123 00-0d-87-0d-58-5f

3)通過查詢IP--MAC對應表,查出「000d870d585f」的病毒主機的IP位址為「192.168.16.223」。

【解決思路】

1、不要把你的網路安全信任關係建立在IP基礎上或MAC基礎上,(rarp同樣存在欺騙的問題),理想的關係應該建立在IP+MAC基礎上。
2、設置靜態的MAC-->IP對應表,不要讓主機重新整理你設定好的轉換表。
3、除非很有必要,否則停止使用ARP,將ARP做為永久條目儲存在對應表中。
4、使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這台ARP服務器不被黑。
5、使用"proxy"代理IP的傳輸。
6、使用硬體屏蔽主機。設置好你的路由,確保IP位址能到達合法的路徑。(靜態配置路由ARP條目),注意,使用交換集線器和網橋無法阻止ARP欺騙。
7、管理員定期用響應的IP包中獲得一個rarp請求,然後檢查ARP響應的真實性。
8、管理員定期輪詢,檢查主機上的ARP快取記憶體。
9、使用防火牆連續監控網路。注意有使用SNMP的情況下,ARP的欺騙有可能導致陷阱包丟失。

【HiPER用戶的解決方案】

建議用戶採用雙向綁定的方法解決並且防止ARP欺騙。
1、在PC上綁定路由器的IP和MAC卡位址:
1)首先,獲得路由器的內網的MAC卡位址(例如HiPER網路閘道器地址192.168.16.254的MAC卡位址為0022aa0022aa)。
2)編寫一個批處理文件rarp.bat內容如下:
@echo off
arp -d
arp -s 192.168.16.254 00-22-aa-00-22-aa
將文件中的網路閘道器IP位址和MAC卡位址更改為您自己的網路閘道器IP位址和MAC卡位址即可。
將這個批處理軟件拖到「windows--開始--程式--啟動」中。
3)如果是網咖,可以利用收費軟件服務端程式(pubwin或者萬象都可以)發送批處理文件rarp.bat到所有客戶機的啟動目錄。Windows2000的預定啟動目錄為「C:/Documents and Settings/All Users「開始」表菜單程式啟動」。
2、在路由器上綁定用戶主機的IP和MAC卡位址(440以後的路由器軟件版本支持):
在HiPER管理界面--高階配置--用戶管理中將局域網每台主機均作綁定。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3188 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 11:51 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2018, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1