追蹤arp***者

衆所周知,ARP欺騙已經是局域網中最令人頭疼的一種***手段了,可以在一瞬間讓整個網絡中的所有計算機從Internet上面斷開,也可以輕而易舉地讓Windows 98計算機出現持續的“IP地址衝突”,導致宕機,更有甚者,如果結合Sniffer軟件還能夠獲取局域網中任何一臺主機上網時的郵箱密碼。

儘管ARP欺騙的危害巨大,但相應的防範措施卻並不多,常見的方法一般也就是“VLAN劃分”和“MAC地址綁定”兩種。“VLAN劃分”是將一個大網絡劃分成若干個小網絡,由於ARP不能跨路由***,所以這樣可以降低ARP欺騙的危害性,但它並不能阻止同一個網段內ARP欺騙的產生。“MAC地址綁定”理論上說的確可以在一定程度上降低ARP欺騙的危害,但實踐中的效果卻微乎其微,幾乎沒有幾個網管員採用這種方法,因爲除了巨大的工作量令網絡管理員難以招架外,從網絡管理的角度來看,這種方法也極爲不科學,大有“高射炮打蚊子”之嫌。

本文中,筆者將和大家共同探討另外一種管理辦法——用SNMP網絡管理來對付ARP欺騙,只要輕點一下手中的鼠標,我們就能夠查到ARP***的源頭,並將其踢出局域網,還大家一個清靜且安全的網絡環境。

爲了能夠更好說明整個追蹤過程,筆者特意構建了一個小型局域網,其拓撲結構如圖1所示。

396603.jpg

圖1

筆者會從這個拓撲圖上採集實驗數據,向大家詳細介紹如何追蹤位於交換機2上面的***者的真實IP地址,大家可以對照着這個拓撲圖來閱讀本文。

追蹤原理

局域網中ARP欺騙的一個主要特點就是使用了僞造的IP地址和MAC地址,我們所看到的地址都是由***軟件精心構造出來的虛假地址,因而無法從捕捉的數據包中識別出***者的真正來源。儘管如此,但一個有經驗的網絡管理員仍然能通過查找交換機的端口來定位***者的來源,因爲IP地址和MAC地址可以僞造,但***者連接到交換機的那個端口卻無法僞造,利用“MAC地址-IP地址-PORT”三者之間的聯繫,我們就可以準確而快速地定位***者來源,這就是追蹤ARP欺騙***源的基本依據。那麼,如何才能發現“MAC地址-IP地址-PORT”之間的關係呢?

在交換式局域網裏,由於交換機可以自動記住連接到每一個端口上面的計算機的MAC地址,因此,無論***者使用什麼樣的計算機和操作系統,只要一開機,計算機的MAC地址和端口之間的關係就被自動記錄到交換機的內存中,這是正常情況下的關聯;如果***者在他的計算機上面發起一次ARP欺騙,那麼交換機就會捕捉到這個ARP欺騙包,通過拆包檢查,交換機就能記住在這個端口上又出現了一個新的MAC地址,這是ARP欺騙狀態下的關聯。此時,交換機的內存中就會出現同一個端口對應了兩個不同的MAC地址的情況:一個是***者真實的MAC地址,另一個則是其僞造的MAC地址。

在Cisco交換機中,我們可以分別使用show arp和show mac-address-table命令來查看“端口和MAC地址”之間的對應關係,以下爲筆者在交換機1上所獲得的數據:

Switch#show arp

Protocol Address Age (min) Hardware Addr Type Interface

Internet 192.168.0.92 1 0060.0892.e20d ARPA Vlan1

Internet 192.168.0.15 - 000a.f4e7.af40 ARPA Vlan1

Internet 192.168.1.3 141 000b.46ce.ea00 ARPA Vlan1

Internet 192.168.0.3 0 00a0.d1d1.5e77 ARPA Vlan1

Internet 192.168.1.2 232 000b.46ce.ea00 ARPA Vlan1

Switch#show mac-address-table

Mac Address Table

Vlan Mac Address Type Ports

1 0005.5d68.37da DYNAMIC Fa0/13

1 000b.461c.3e40 DYNAMIC Fa0/5

1 000b.461c.3e58 DYNAMIC Fa0/5

1 000b.46ce.ea00 DYNAMIC Fa0/24

1 000c.7687.c32b DYNAMIC Fa0/10

1 0050.2281.23ad DYNAMIC Fa0/11

1 0050.bafb.e0c5 DYNAMIC Fa0/16

1 0060.0892.e20d DYNAMIC Fa0/5

1 0090.0b01.d6fe DYNAMIC Fa0/23

1 00a0.d1d1.5e77 DYNAMIC Fa0/5

1 5078.4c6b.1c9d DYNAMIC Fa0/12

1 5078.4c6b.1c9f DYNAMIC Fa0/6

1 5078.4c6c.4cba DYNAMIC Fa0/22

Total Mac Addresses for this criterion: 13

Switch#

從中可以看到,192.168.0.92計算機所對應的端口爲Fa0/5,即第5個端口。如果網絡中沒有部署相關的網絡管理軟件,利用show arp和show mac-address-table兩條命令來查看MAC-PORT之間的對應關係不失爲一種好的辦法。但是大家可能也發現了,這種方法需要我們先從ARP表中找出相應計算機的MAC地址,然後再到MAC地址表中去查找對應的端口號,應該說還是比較麻煩的。要是網絡中的計算機數量達到上百臺,這樣的查找就太費時費力了,說不定等我們查到時,***者早已逃之夭夭了……

但是不管怎麼說,我們至少已經找到了追蹤***者源頭的理論和實踐依據,接下來的問題是:如何才能確定該端口上的一個MAC地址是僞造的呢?從前面的數據中也可以看出,端口5(Fa0/5)對應了4個不同的MAC地址,難道我們能說其中的三個都是僞造的?顯然不行,這麼武斷是會造成冤假錯案的。

識別惡意數據流

所謂“知己知彼,百戰不殆”,要想在網絡追蹤中明確辨析真假MAC地址的話,首先就要了解***者的行爲特徵,瞭解能夠代表***軟件特性的數據流。這裏,筆者將爲大家分析一個極具代表性的ARP***軟件“局域網終結者”。目前,局域網中絕大部分的ARP***行爲都是由它來具體實施的,瞭解它的行爲特徵對我們的追蹤將會起到一定的幫助。

在圖1所示的拓撲圖中,我們在192.168.0.9上面用局域網終結者發起一次ARP欺騙,阻擋網絡中的所有主機跟網關192.168.0.1的連接,而後在網管工作站192.168.0.3上面用windump來捕捉局域網終結者所發出的ARP欺騙包,捕獲的數據包內容如下:

C:>windump -X arp host 192.168.0.1

windump: listening on DeviceNPF_{3B4C19BE-6A7E-4A20-9518-F7CA659886F3}

14:51:23.520119 arp who-has 192.168.0.1*** tell 192.168.0.1

0x0000 0001 0800 0604 0001 0006 6989 adc6 c0a8..i

0x0010 0001 0000 0000 0000 c0a8 00a4 2020 2020

0x0020 2020 2020 2020 2020 2020 2020 2020

14:51:49.883520 arp who-has 192.168.0.210 tell 192.168.0.1

0x0000 0001 0800 0604 0001 0006 6989 adc6 c0a8..i

0x0010 0001 0000 0000 0000 c0a8 00d2 2020 2020

0x0020 2020 2020 2020 2020 2020 2020 2020

14:52:03.881930 arp who-has 192.168.0.86 tell 192.168.0.1

0x0000 0001 0800 0604 0001 0006 6989 adc6 c0a8..i

0x0010 0001 0000 0000 0000 c0a8 0056 2020 2020..V

0x0020 2020 2020 2020 2020 2020 2020 2020

14:52:22.887181 arp who-has 192.168.0.193 tell 192.168.0.1

0x0000 0001 0800 0604 0001 0006 6989 adc6 c0a8..i

0x0010 0001 0000 0000 0000 c0a8 00c1 2020 2020

0x0020 2020 2020 2020 2020 2020 2020 2020

14:52:39.897678 arp who-has 192.168.0.190 tell 192.168.0.1

0x0000 0001 0800 0604 0001 0006 6989 adc6 c0a8..i

0x0010 0001 0000 0000 0000 c0a8 00be 2020 2020

0x0020 2020 2020 2020 2020 2020 2020 2020

這是***者192.168.0.9以192.168.0.1的名義發起的一次ARP欺騙,可以看出,***者發送了一系列的ARP請求包,表面上像是網關192.168.0.1在網絡中查尋各個主機的MAC地址,而實際上是***者通過發送廣播包告訴各個主機:192.168.0.1的MAC地址是“0006 6989 adc6”。這樣,當各主機收到廣播包後,就會用僞造的這個MAC地址來更換原先的ARP緩存表,此時用“arp -a”命令查看時得到的就是這個僞造的MAC地址。

當我們停止局域網終結者的***,清空本地主機上的ARP緩存,等網絡恢復正常後再用“arp -a”命令查看時,網關的真實MAC地址卻是“00-90-0b-01-d6-fe”:

C:>ARP -A

Interface: 192.168.0.3 --- 0x10003

Internet Address Physical Address Type

192.168.0.1 00-90-0b-01-d6-fe dynamic

由此可見,局域網終結者是通過不斷地發送一個ARP請求包來阻斷各個主機和網關之間的連接,同採用發送ARP應答包方式的軟件相比,局域網終結者的隱蔽性要更強一些。

在接下來的實驗中,筆者還發現局域網終結者所僞造的MAC地址是隨機生成的,每次都不一樣,這在一定程度上干擾了網絡管理員們的視線。不過這也無妨,任它千變萬化,只要我們部署好一個合理的網絡管理系統,狐狸的尾巴終究還是會露出來的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章