摘要:ARP攻擊是近年來對互聯(lián)網具有較大影響的惡意攻擊方式,而且已經對各行業(yè)網造成了巨大威脅,卻一直沒有得到有效的解決,連我們熟知的殺毒軟件、防火墻都擋不住ARP攻擊。從分析ARP協(xié)議和欺騙原理入手,從試驗中分析常見的有效ARP攻擊手段及一個簡單的發(fā)現(xiàn)算法,及時處理正在遭受ARP攻擊,總結各種常用防御辦法,最后設計出一個企業(yè)級的攻擊防御解決方案。
關鍵詞:地址解析協(xié)議;試驗分析;防范;網絡安全
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)14-3680-04
Experimental Analysis of ARP Attack and Defense
YI Xu-hui
(Loudi Municipal Public Security Bureau, Loudi 417000, China)
Abstract: In recent years, ARP attack, as a way of malicious attack which has tremendous influence on the internet, moreover, it had already posed a huge threat to various professional networks. However, the matter has never been effectively resolved, even our well-known anti-virus software and firewalls can not stop the ARP attacks. Starting with analysis of ARP protocol and the principle of deception, analyzes the common and effective means of ARP attack and the simple discovery algorithm from experiment to deal with something being subjected to ARP attacks in time. Meanwhile, this paper summarizes a variety of commonly used defense methods and designs a program of protecting and resolving attacks on an enterprise-class ultimately.
Key word: Address Resolution Protocol;experimental analysis;guard, network security
1 引言
近些年網絡安全問題愈演愈烈,因為ARP攻擊而導致行業(yè)網絡癱瘓的例子舉不勝舉,它不僅會造成聯(lián)網不穩(wěn)定,而且其在局域網內大規(guī)模爆發(fā)時,進而使政府、企業(yè)斷網導致重大生產事故;利用ARP欺騙攻擊可進一步實施中間人攻擊,一次非法獲得到游戲、網銀等系統(tǒng)的賬號和口令,對被攻擊者造成利益上的重大損失。
2 ARP協(xié)議及欺騙原理
2.1 以太網的工作原理
以太網中,數(shù)據包被發(fā)送出去之前,首先要進行拆分(把大的包進行分組)、封裝(在Network層添加源IP地址和目標的IP地址,在Data Link層添加源MAC地址和下一跳的MAC地址),變成二進制的比特流,整個過程如圖1所示。數(shù)據包到達目標后再執(zhí)行與發(fā)送方相反的過程,把二進制的比特流轉變成幀,解封裝(Data Link層首先比較目標的MAC是否與本機網卡的MAC相同或者是廣播MAC,如相同則去除幀頭,再把數(shù)據包傳給Network層,否則丟棄;Network層比較目的地IP地址是否與本機相同,相同則繼續(xù)處理,否則丟棄)。如果發(fā)送方和接收方位于同一個網絡內,則下一跳的MAC就是目標的MAC,如發(fā)送方和接收方不在同一個網絡內,則下一跳的MAC就是網關的MAC。從這個過程不難發(fā)現(xiàn),以太網中數(shù)據的傳速僅知道目標的IP地址是不夠的,還需要知道下一跳的MAC地址,這需要借助于另外一下協(xié)議,ARP(地址解析協(xié)議)。
2.2 ARP的工作原理
計算機發(fā)送封裝數(shù)據之前,對比目標IP地址,判斷源和目標在不在同一個網段,如在同一網段,則封裝目標的MAC;如不在同一網段,則封裝網關的MAC。封裝之前,查看本機的ARP緩存,看有沒有下一跳對應的IP和MAC映射條目,如有則直接封裝;如沒有則發(fā)送ARP查詢包。ARP查詢和應答包的格式如圖2所示,查詢包中 “以太網目的地址”為0xffffffffffff廣播地址,“以太網源地址”為本機網卡的MAC地址,“幀類型”為0x0806表示ARP應答或請求,“硬件類型”為0x0001表示以太網地址,“協(xié)議類型”為0x0800表示IP地址,“OP”為ARP的請求或應答,ARP請求包的OP值為1,ARP應答包的OP值為2,“發(fā)送端以太網地址”為發(fā)送者的MAC地址,“發(fā)送端IP”為發(fā)送者的IP地址,“目的以太網地址”這里為0x000000000000,“目的IP”為查詢MAC地址的IP。此包以廣播形式發(fā)送到網絡上,局域網中所有的計算機均收到此包,只有本機IP地址為“目的IP”的計算機對此數(shù)據包進行響應,并回復此數(shù)據包。當始發(fā)送端方收到此ARP應答包后,即獲取到目標IP對應的MAC地址,然后就可進行數(shù)據包的封裝了。
圖2 ARP的查詢和應答包格式
2.3 ARP的欺騙
于TCP通過序列號和確認號字段不同,實施三次握手來保證數(shù)據傳輸?shù)目煽啃裕珹RP是一個無狀態(tài)的協(xié)議,也就是說不管有沒有發(fā)送ARP請求,只要有發(fā)往本機的ARP應答包,計算機都不加驗證的接收,并更新自己的ARP緩存。了解ARP的工作原理后,只要有意圖的填充圖2中的某些字段,即可達到ARP攻擊的效果:IP地址沖突、ARP欺騙、ARP攻擊等。
2.3.1 IP地址沖突
計算機檢測本機IP地址是否在網上被使用的方法是用本機IP地址作為目的IP地址,發(fā)送ARP查詢包,如果收到應答,則說明本IP地址已經在網上被使用,彈出IP地址被使用對話框,釋放出本機的IP地址。ARP攻擊者利用這一原理,用任意的MAC地址(非被攻擊者真實的MAC地址)填充“發(fā)送端以太網地址”字段,用被攻擊者的IP地址填充“發(fā)送端IP”字段,用被攻擊者的真實MAC地址填充“目的以太網地址”字段,用被攻擊者的IP地址填充“目的IP”字段,OP的值為“2”,如圖3所示。當被攻擊者收到這樣的ARP應答后,就認為本機的IP地址在網絡上已經被使用,彈出IP地址沖突對話框。
2.3.2 ARP欺騙
如圖4所示,PC1是攻擊者,攻擊的目的是“中斷PC2與網關的通信”。PC1生成一個ARP應答信息包,“發(fā)送端的IP”填寫成網關的IP地址,“發(fā)送端以太網地址”填寫一個非網關的MAC地址(這個地址可以隨機生成),“目的IP”填寫PC2的IP地址,“目的以太網地址”填入PC2的MAC地址。主機PC2收到這個最新的ARP應答信息包后,就會用這個不正確的網關的MAC地址更新自己的ARP緩存表,以后PC2后就這個錯誤的MAC地址進行封裝,造成封裝后的數(shù)據包無法正確到達網關;PC1類似的再發(fā)送一個不正確ARP應答包給網關,“發(fā)送端的IP”填寫成PC2的IP地址,“發(fā)送端以太網地址”填寫一個非PC2的MAC地址(這個地址可以隨機生成),“目的IP”填寫網關的IP地址。網關收到這樣的ARP應答信息后,也在緩存中保存了錯誤的PC2映射條目。PC1周期性向網關和PC2發(fā)送這樣的包,以免它們的ARP表老化,這樣就達到了阻止它們通信的目的。
3 ARP攻擊試驗解析
試驗通過在一個模擬完整交換網絡中實施簡單ARP攻擊、ARP 的“中間人攻擊”、基于ARP欺騙的信息嗅探、ARP洪泛攻擊,結合交換網絡中主機、交換設備、路由網關上的ARP 緩存表,分析各種攻擊手段的不同危害。進而總結出一套防范ARP攻擊的妥善辦法。試驗環(huán)境及網絡拓撲見圖5。
3.1 對主機的簡單欺騙
試驗目的:通過A對目標主機C實施ARP攻擊導致C至主機B的網絡不可用。
實驗步驟:
C:\\ >ping 192.168.1.4
Reply from 192.168.1.4: bytes=32 time<1ms TTL=128
C:\\ >arp -a
Interface: 192.168.1.5--- 0x10005
Internet AddressPhysical Address Type
192.168.1.1 00-15-58-a8-b5-5ddynamic
192.168.1.3 00-0f-e1-2d-42-ccdynamic
192.168.1.4 00-c2-cc-2d-a2-c5dynamic
在A采用“網絡執(zhí)法官”中對C“禁止與關鍵主機連接…”,然后單擊“關鍵主機”,加入B的地址,實施ARP攻擊。
C:\\ >ping 192.168.1.4
Request timed out.
C:\\ >ping 192.168.1.1
Reply from 192.168.1.1: bytes=32 time<1ms TTL=255
C:\\ >arp –a
Interface: 10.145.201.206 --- 0x10005
Internet AddressPhysical AddressType
192.168.1.1 00-15-58-a8-b5-5ddynamic
192.168.1.3 00-0f-e1-2d-42-ccdynamic
192.168.1.4 00-ff-e2-3d-62-7cdynamic
C:\\Documents and Settings\\Administrator>arp-s 192.168.1.400-0f-e1-2d-42-cc
C:\\Documents and Settings\\Administrator>ping 192.168.1.4
Reply from 192.168.1.4: bytes=32 time<1ms TTL=128
實驗分析:
1) 正常狀態(tài)下主機C上正常的ARP緩存表。B主機MAC地址是00-c2-cc-2d-a2-c5,ping 主機B正常。這里已經成功被欺騙為動態(tài)的00-15-58-a8-b5-5d,該實驗主機提示為IP地址沖突。
2) 通過工具軟件對C實施ARP攻擊,測試B,C至B網絡是不可用的。
3) 網關可達,未被欺騙。
4) 查看C上ARP緩存表,B的mac地址已經成功被欺騙為動態(tài)的00-ff-e2-3d-62-7c,該主機提示為IP地址沖突。
5) 對實驗主機靜態(tài)捆綁IP-MAC。
6) 捆綁后,網絡可用。
以上顯示的是ARP攻擊對內網主機的欺騙,必須靜態(tài)綁定IP-MAC才可以通信。
3.2 ARP“中間人攻擊”及信息嗅探
試驗目的:“中間人”主機B通過對主機A及網關的ARP欺騙可以使子網內的主機B的網絡流量都會流到攻擊者機器來,從而實現(xiàn)對主機A的信息嗅探。由于篇幅原因具體實驗數(shù)據和簡單欺騙類似所以不再累述。
試驗步驟:
1) 主機B向主機A發(fā)送一個非法ARP響應,將主機A的ARP緩存中網關的MAC地址篡改為B的MAC地址。
2) 主機B向網管router發(fā)送一個非法ARP響應,將網關router的ARP緩存中A的MAC地址篡改為B的MAC地址
3) 在主機B上啟動IP Forward(IP轉發(fā))功能并開啟信息嗅探。
實驗分析:試驗通過實驗軟件Cain Abel完成ARP欺騙及信息嗅探。主機B作為“中介”冒充路由器角色,轉發(fā)主機A與網關通信產生的所有數(shù)據包。這樣,在光天化日之下,主機B竟然劫持了所有主機A和網管之間通信的數(shù)據,如此造成的危害就不言而喻了。
3.3 ARP泛洪攻擊
實驗目的:通過子網內部分主機對交換機或網關發(fā)布大量虛假的ARP應答,占用大部分網絡帶寬或導致交換機或網關的mac地址表溢出,從而實現(xiàn)干擾網絡通信造成子網內主機網絡時斷時續(xù)或干脆無法出網。
實驗步驟:
1) 在主機A、B上利用ARP洪水攻擊軟件對交換機實施持續(xù)的ARP洪水攻擊。
2) 在h3c的S7506E交換機上可偵測到ARP攻擊,同時ARP緩存表數(shù)量激增
<7506E>dis log
%Apr7 10:11:52 2009 7506E ARP/5/DUPIP:IP address 192.168.1.3 collision detected, sourced by 000f-e12d-42cc on Ethernet4/0/15 of VLAN101 and 0015-f288-ae20 on Ethernet4/0/15 of VLAN101
%Apr7 10:11:52 2009 7506E ARP/5/DUPIP:IP address 192.168.1.4 collision detected, sourced by 00c2-cc2d-a2c5 on Ethernet4/0/16 of VLAN101 and 00ef-e356-78f1 on Ethernet4/0/16 of VLAN101
<7506E>dis arp count
Total entry(ies):68
實驗分析:從上述ARP泛洪攻擊僅僅看到網絡延時稍稍增大,并未出現(xiàn)網絡斷續(xù)和斷網現(xiàn)象,但從交換機上可以看到ARP攻擊日志,也伴有ARP緩存表激增且mac條目超過交換網絡中主機數(shù)量的現(xiàn)象,這可能與攻擊者數(shù)量不足和7506E處理能力強大有關。
4 ARP攻擊的發(fā)現(xiàn)及防范
4.1 發(fā)現(xiàn)ARP攻擊
由于ARP攻擊主要作用于交換網絡,所以在局域網內的主機和交換設備上我們都能采用較為簡單的方法發(fā)現(xiàn)攻擊的痕跡。在主機出現(xiàn)網絡異常情況時,用“arp –a”對比常用設備(一般是網關)的物理地址,就能發(fā)現(xiàn)攻擊;交換設備僅僅是hub,也能通過監(jiān)控主機借助專業(yè)的網絡分析軟件捕獲異常網絡流量,分析出攻擊的始作俑者;在帶網管功能的交換設備或者二、三層的網絡交換設備上,我們可以更容易的判斷出攻擊者,采用封堵端口或設置mac黑洞就能很快剔除攻擊者。
自動發(fā)現(xiàn)、攔截ARP攻擊的vc6下簡單程序實現(xiàn):
1) 第一次運行或檢測到網關發(fā)生變化時,程序自動獲得本機網卡信息、網關ip及網關mac保存至配置文件中,其他時候只信任并直接使用配置文件。
void mainframe()
{…
GetPrivateProfileStringA(…);//讀取配置文件
If(初次運行或網關變化){SendDlgItemMessage(…);}//發(fā)布更新配置文件消息
Else{讀取配置}
…}
2) 默認網關IP 和網關的MAC綁定
MIB_IPNETROW *arp_row=1;
…
if (arp_row == NULL) {
arp_row = (PMIB_IPNETROW) malloc(sizeof(MIB_IPNETROW));
}
DeleteIpNetEntry(arp_row);
…
CreateIpNetEntry(arp_row);
// 使用DeleteIpNetEntry和CreateIpNetEntry修改ARP Cache表項)
3) 周期性檢測ARP Cache中原默認網關的MAC在ARP Cache的值是否被改寫,若被改寫就報警。
void CALLBACK alrmclock(HWND hWnd, UINT uMsg,UINT idEvent,DWORD dwTime)
{…
for (i=0; i
{
//逐項比對,發(fā)現(xiàn)變化馬上報警并重寫本機ARP Cache
}
}
4) 主動防護,即默認每秒發(fā)10個ARP reply包來維持網關設備的ARP Cache
u_int8_t ArpPacket[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x06,0x00,0x01,
0x08,0x00,0x06,0x04,0x00,0x02,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00
};
pcap_sendpacket(p, ArpPacket, 0x3c);
5) 如能利用SNMP協(xié)議結合中心交換機的MIB庫中的ARP表,并配合交換網絡中的網絡流量分析統(tǒng)計則能準確定位到攻擊主機的ip和所在中心交換機上的端口號。
4.2 ARP攻擊的常用防范手段:
4.2.1 mac綁定,或采用靜態(tài)的ARP地址表
終端上用arp –s進行ip與mac之間的綁定,關鍵設備如中心交換機及路由網關采用靜態(tài)ARP,不要讓系統(tǒng)刷新設定好的ARP轉換表。
4.2.2 細分網段劃分vlan
欺騙攻擊無法跨網段工作,同一網段中計算機數(shù)量越少,ARP攻擊的影響范圍就越小,同時將關鍵主機放在一個vlan中有針對性的授權訪問可保證關機主機的安全。
4.2.3 使用ARP服務器
在內部網絡中設置ARP服務器,通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播,而禁止其他系統(tǒng)響應ARP請求,但需要保證該主機的絕對安全。
4.2.4 主動防御
利用嗅探軟件偵測保存內部網絡主機ip及mac,定期輪詢,同時采用用一些安全工具在網絡中進行檢測,可以檢測到本地網絡上的ARP欺騙報文。
4.2.5 使用加密通信
ARP欺騙主要針對敏感信息的獲取和傳輸實體的替換主要針對非加密通信,將內網的通信進行加密可以有效地防止這類攻擊。如https替代http、SSH替代Telnet;SFTP替換FTP。
4.3 較為全面的企業(yè)級攻擊防御解決方案
政府和企業(yè)往往是ARP攻擊的重災區(qū),ARP病毒的大規(guī)模泛濫使得被動性防御顯得軟弱無力。所以針對客戶端、接入交換機和網關三個控制點實施自上而下的全面、主動防御才是徹底解決ARP攻擊的較好方式。
實現(xiàn)方法:客戶端通過ppp、pppoe、802.1x等認證協(xié)議向CAMS (綜合訪問管理服務器)發(fā)起認證后并登陸網絡,CAMS識別客戶端,并將事先配置好的網關和重要服務器ip/mac綁定信息下發(fā)給客戶端;接入交換機則統(tǒng)過監(jiān)控認證報文實現(xiàn)用戶的ip和mac的綁定,并配置事先網關的ip和mac綁定,配合ARP限速維護相對的靜態(tài)ARP地址表;客戶端則通過認證客戶端實現(xiàn)網關的ip和mac綁定,使得虛假的ARP報文因為缺少認證無法生存,從根本上防止了ARP攻擊和病毒的泛濫。
5 結束語
上文分析了基于ARP協(xié)議的內部交換網絡的攻擊和滲透,攻擊者只是利用協(xié)議的缺陷在內網破壞正常的網絡通訊和竊取敏感信息,攘外必先安內,所以內網安全永遠是一個不可忽視的課題。
參考文獻:
[1] Comer D E.TCP、IP網絡互連第1卷原理協(xié)議和體系結構[M].4版.北京:人民郵電出版社,2002.
[2] 秦相林.二層交換網絡上的嗅探技術研究[J].自然科學報,2005(2).
[3] 郭麗.基于ARP欺騙的交換網絡監(jiān)聽技術分析與研究[D].曲阜師范大學,2006.
[4] 吳小平.基于SNMP的ARP欺騙主動防御機制[J].華中師范大學學報,2007(4).
[5] 楊延朋.校園網絡ARP協(xié)議欺騙的檢測與防御[J].鞍山科技大學學報,2007,30(2).
[6] H3c.CAMS[EB/OL].http://forum.h3c.com/forum-205-1.html.