對于ARP欺騙,提出几點加強安全防范的措施。環境是主机或者网關是基于Linux/BSD的。
一、理論前提
本著“不冤枉好人,不放過一個坏人的原則”,先說說我的一些想法和理論依据。首先,大家肯定發送ARP欺騙包肯定是一個惡毒的程序自動發送的,正常的TCP/IP网絡是不會有這樣的錯誤包發送的(板磚扔了過來啊,廢話﹗)。這就假設,如果犯罪嫌疑人沒有啟動這個破坏程序的時候,网絡環境是正常的,或者說网絡的ARP環境是正常的,如果我們能在犯罪嫌疑人啟動這個犯罪程序的第一時間,一開始就發現了他的犯罪活動,那么就是人贓俱在,不可抵賴了,因為剛才提到,前面网絡正常的時候証据是可信和可依靠的。好,接下來我們談論如何在第一時間發現他的犯罪活動。
ARP欺騙的原理如下﹕
假設這樣一個网絡,一個Hub接了3台机器
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
正常情況下 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
現在假設HostB開始了罪惡的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不知道其實是從B發送過來的,A這里只有192.168.10.3(C的IP地址)和無效的DD-DD-DD-DD-DD-DD mac地址,沒有和犯罪分子B相關的証据,哈哈,這樣犯罪分子豈不樂死了。
現在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應答信息包,NND,嚴重的网絡堵塞就開始了﹗网吧管理員的噩夢開始了。我的目標和任務,就是第一時間,抓住他。不過從剛才的表述好像犯罪分子完美的利用了以太网的缺陷,掩蓋了自己的罪行。但其實,以上方法也有留下了蛛絲馬跡。盡管,ARP數据包沒有留下HostB的地址,但是,承載這個ARP包的ethernet幀卻包含了HostB的源地址。而且,正常情況下ethernet數据幀中,幀頭中的MAC源地址/目標地址應該和幀數据包中ARP信息配對,這樣的ARP包才算是正确的。如果不正确,肯定是假冒的包,可以提醒﹗但如果匹配的話,也不一定代表正确,說不定偽造者也考慮到了這一步,而偽造出符合格式要求,但內容假冒的ARP數据包。不過這樣也沒關系,只要网關這里擁有本网段所有MAC地址的网卡數据庫,如果和Mac數据庫中數据不匹配也是假冒的ARP數据包。也能提醒犯罪分子動手了。
二、防范措施
1. 建立DHCP服務器(建議建在网關上,因為DHCP不占用多少CPU,而且ARP欺騙攻擊一般總是先攻擊网關,我們就是要讓他先攻擊网關,因為网關這里有監控程序的,网關地址建議選擇192.168.10.2 ,把192.168.10.1留空,如果犯罪程序愚蠢的話讓他去攻擊空地址吧),另外所有客戶机的IP地址及其相關主机信息,只能由网關這里取得,网關這里開通DHCP服務,但是要給每個网卡,綁定固定唯一IP地址。一定要保持网內的机器IP/MAC一一對應的關系。這樣客戶机雖然是DHCP取地址,但每次開机的IP地址都是一樣的。
2. 建立MAC數据庫,把网吧內所有网卡的MAC地址記錄下來,每個MAC和IP、地理位置統統裝入數据庫,以便及時查詢備案。
3. 网關机器關閉ARP動態刷新的過程,使用靜態路郵,這樣的話,即使犯罪嫌疑人使用ARP欺騙攻擊网關的話,這樣對网關也是沒有用的,确保主机安全。
网關建立靜態IP/MAC捆綁的方法是﹕建立/etc/ethers文件,其中包含正确的IP/MAC對應關系,格式如下﹕
192.168.2.32 08:00:4E:B0:24:47
然后再/etc/rc.d/rc.local最后添加﹕
arp -f 生效即可
4. 网關監听网絡安全。网關上面使用TCPDUMP程序截取每個ARP程序包,弄一個腳本分析軟件分析這些ARP協議。ARP欺騙攻擊的包一般有以下兩個特點,滿足之一可視為攻擊包報警﹕第一以太网數据包頭的源地址、目標地址和ARP數据包的協議地址不匹配。或者,ARP數据包的發送和目標地址不在自己网絡网卡MAC數据庫內,或者与自己网絡MAC數据庫 MAC/IP 不匹配。這些統統第一時間報警,查這些數据包(以太网數据包)的源地址(也有可能偽造),就大致知道那台机器在發起攻擊了。
5. 偷偷摸摸的走到那台机器,看看使用人是否故意,還是被任放了什么木馬程序陷害的。如果后者,不聲不響的找個借口支開他,拔掉网線(不關机,特別要看看Win98里的計划任務),看看机器的當前使用記錄和運行情況,确定是否是在攻擊。