摘 要:近期借助arp協議實施破壞網絡安全應用的問題特別突出,互聯網上出現了許多基于arp開發的病毒或惡意程序。由于受到基于ARP病毒攻擊的危害,全國大中院校的校園網,網絡故障頻繁發作。網絡病毒發作特征表現為:用戶使用網絡時會突然掉線,過一段時間后又會恢復正常,用戶頻繁斷網,IE瀏覽器頻繁出錯,以及一些常用軟件出現故障等,部分基于arp的木馬除了會導致用戶上網出現時斷時續的現象外,還竊取用戶密碼。如盜取QQ密碼、網上銀行賬號及密碼等,給用戶造成了很大的不便和巨大的經濟損失。
關鍵詞:ARP;欺騙;局域網斷網;解決方法
在我們學校的網絡中亦出現了arp破壞的影子,其中特別嚴重的是網絡連接的穩定性嚴重下降,極大影響了正常教學應用和教師上網辦公的秩序。筆者作為學校的網絡安全維護負責教師,經過問題解決的實踐,總結出arp攻擊問題防范管理的簡單有效辦法。
首先我們認識什么是ARP?ARP(Address Resolution Protocol)是地址解析協議,ARP是一種將IP地址轉化成物理地址的協議。從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式。ARP具體說來就是將網絡層(IP層,也就是相當于OSI的第三層)地址解析為數據連接層(MAC層,也就是相當于OSI的第二層)的MAC地址。ARP協議是通過IP地址來獲得MAC地址的。
ARP病毒實質就是利用ARP協議的缺陷實施欺騙,從而影響網絡服務質量的。那么什么是ARP欺騙?
從影響網絡連接通暢的方式來看,ARP欺騙分為二種,一種是對路由器ARP表的欺騙;另一種是對內網PC的網關欺騙。
第一種ARP欺騙的原理是——截獲網關數據。它通知路由器一系列錯誤的內網MAC地址,并按照一定的頻率不斷進行,使真實的地址信息無法通過更新保存在路由器中,結果路由器的所有數據只能發送給錯誤的MAC地址,造成正常PC無法收到信息。第二種ARP欺騙的原理是——偽造網關。它的原理是建立假網關,讓被它欺騙的PC向假網關發數據,而不是通過正常的路由器途徑上網。在PC看來,就是上不了網了,“網絡掉線了”。
1 詳細分析ARP攻擊的原理
在局域網中,通過ARP協議來完成IP地址轉換為第二層物理地址(即MAC地址)的。ARP協議對網絡安全具有重要的意義。通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞。
在局域網中,網絡中實際傳輸的是“幀”,幀里面是有目標主機的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。
D直接進行整個包的修改轉發,捕獲到A發送給C的數據包,全部進行修改后再轉發給C,而C接收到的數據包完全認為是從A發送來的。不過,C發送的數據包又直接傳遞給A,倘若再次進行對C的ARP欺騙。現在D就完全成為A與C的中間橋梁了,對于A和C之間的通訊就可以了如指掌了。
中了ARP后的一些現象:
1).能PING通網內其它客戶機,但PING不通路由,上不了網(連接到INTERNET)。
2).能PING通網內其它客戶機,同樣PING不通路由,但能上網(能連接到INTERNET)。
3).當中毒的機器向網關路由發出請求時,網關路由的ARP緩存還未到刷新時間,網關路由內的ARP緩存表中保存的是客戶機還未中毒前的MAC地址。而這個MAC地址,與客戶機當前請求的MAC(被病毒修改過)不一致,客戶機的連接請求被網關拒絕。即發生與網關斷流。
4).當中毒的源頭機器向局域網發出假MAC廣播時,網關路由也接收到了此消息,并將這些假MAC地址與其IP相對應,并建立新的ARP緩存。導致客戶機與服務器斷開連接。
2 ARP問題解決思路
⑴不要把你的網絡安全信任關系建立在IP基礎上或MAC基礎上,(rarp同樣存在欺騙的問題),理想的關系應該建立在IP+MAC基礎上。
⑵設置靜態的MAC-->IP對應表,不要讓主機刷新你設定好的轉換表。
在網關路由上對客戶機使用靜態MAC綁定。ROUTE OS軟路由的用戶可以參照相關教程,或是在IP--->ARP列表中一一選中對應項目單擊右鍵選擇“MAKE STATIC”命令,創建靜態對應項。用防火墻封堵常見病毒端口:134-139,445,500,6677,5800,5900,593,1025,1026,2745,3127,6129以及P2P下載
⑶除非很有必要,否則停止使用ARP,將ARP做為永久條目保存在對應表中。
⑷使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這臺ARP服務器不被黑。
⑸使用\"proxy\"代理IP的傳輸。
⑹使用硬件屏蔽主機。設置好你的路由,確保IP地址能到達合法的路徑。(靜態配置路由ARP條目),注意,使用交換集線器和網橋無法阻止ARP欺騙。
⑺管理員定期用響應的IP包中獲得一個rarp請求,然后檢查ARP響應的真實性。
⑻管理員定期輪詢,檢查主機上的ARP緩存。
⑼使用防火墻連續監控網絡。注意有使用SNMP的情況下,ARP的欺騙有可能導致陷阱包丟失。
⑽在客戶機上進行網關IP及其MAC靜態綁定。
通過以上相應措施,我們已經從ARP病毒的爆發原因深層實施了解決方案,大多數常見的類似網絡故障籍此可以解決。但是ARP協議也在網絡好事者新一輪探索中有會插上新的翅膀,作為一名網絡安全運行的守護著,我們不能絲毫輕視他的下一步動向。
[參考文獻]
[1]陳鵬,傅豐林.TCP/IP協議安全性分析.<<電子科技IT Age>>.
[2]軟件解決方案參照引用“蘇州工業園區北斗軟件有限公司”相關方案.