《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 跨網(wǎng)段ARP欺騙的原理及防治策略的研究
跨網(wǎng)段ARP欺騙的原理及防治策略的研究
來(lái)源:微型機(jī)與應(yīng)用2010年第21期
單家凌
(廣東白云學(xué)院 計(jì)算機(jī)系,,廣東 廣州 510450)
摘要: ARP協(xié)議主要實(shí)現(xiàn)了網(wǎng)絡(luò)層地址到數(shù)據(jù)鏈路層地址的動(dòng)態(tài)映射,,由于ARP協(xié)議具有無(wú)序性,、無(wú)確認(rèn)性,、動(dòng)態(tài)性,、無(wú)安全機(jī)制等特性,,ARP欺騙攻擊成了局域網(wǎng)中一種常見(jiàn)的攻擊現(xiàn)象,。在深入研究ICMP重新定向原理的基礎(chǔ)上,,通過(guò)一個(gè)實(shí)例解釋了跨網(wǎng)段ARP欺騙原理和具體實(shí)現(xiàn)過(guò)程,,并給出了具體的檢測(cè)與防范方法,。
關(guān)鍵詞: ARP 重新定向 ICMP 跨網(wǎng)段
Abstract:
Key words :

摘  要: ARP協(xié)議主要實(shí)現(xiàn)了網(wǎng)絡(luò)層地址到數(shù)據(jù)鏈路層地址的動(dòng)態(tài)映射,由于ARP協(xié)議具有無(wú)序性、無(wú)確認(rèn)性,、動(dòng)態(tài)性,、無(wú)安全機(jī)制等特性,ARP欺騙攻擊成了局域網(wǎng)中一種常見(jiàn)的攻擊現(xiàn)象,。在深入研究ICMP重新定向原理的基礎(chǔ)上,,通過(guò)一個(gè)實(shí)例解釋了跨網(wǎng)段ARP欺騙原理和具體實(shí)現(xiàn)過(guò)程,并給出了具體的檢測(cè)與防范方法,。
關(guān)鍵詞: ARP,;重新定向;ICMP,;跨網(wǎng)段

    網(wǎng)絡(luò)安全是當(dāng)今網(wǎng)絡(luò)技術(shù)的一個(gè)重要研究課題,,有很強(qiáng)的現(xiàn)實(shí)應(yīng)用背景。在網(wǎng)絡(luò)安全防范中,,地址解析協(xié)議ARP(Address Resolution Protocol)是一個(gè)相當(dāng)重要的內(nèi)容,,也是網(wǎng)絡(luò)攻擊者最偏向于利用的網(wǎng)絡(luò)底層協(xié)議。ARP協(xié)議的設(shè)計(jì)是建立在局域網(wǎng)內(nèi)計(jì)算機(jī)互信的基礎(chǔ)上的,,這種設(shè)計(jì)的初衷使得今天局域網(wǎng)內(nèi)出現(xiàn)了大量的與ARP相關(guān)的木馬和病毒,,嚴(yán)重影響了局域網(wǎng)內(nèi)通信的安全和通信效率,給用戶利益帶來(lái)了巨大的風(fēng)險(xiǎn),。研究ARP攻擊的原理與欺騙的防御方法,,有助于加強(qiáng)局域網(wǎng)的安全建設(shè),提高局域網(wǎng)內(nèi)各主機(jī)的通信安全和網(wǎng)絡(luò)的性能,。本文針對(duì)跨網(wǎng)段的ARP攻擊進(jìn)行了研究,。
1 ARP協(xié)議
1.1 ARP的作用

    ARP[1]工作在數(shù)據(jù)鏈路層,在本層與硬件接口聯(lián)系,,同時(shí)對(duì)上層(網(wǎng)絡(luò)層)提供服務(wù)。在以太網(wǎng)中,,由于以太網(wǎng)設(shè)備并不識(shí)別32 bit的IP地址,,所以數(shù)據(jù)包的傳送不是通過(guò)IP地址完成的,而是通過(guò)48 bit MAC地址(網(wǎng)卡的物理地址)來(lái)完成的,,一臺(tái)主機(jī)要和另一臺(tái)主機(jī)進(jìn)行直接通信,,必須要知道目標(biāo)主機(jī)的MAC地址。而ARP協(xié)議用于將網(wǎng)絡(luò)中的IP地址解析為MAC地址,,以保證通信的順利進(jìn)行,。ARP工作時(shí),首先請(qǐng)求主機(jī)發(fā)送出一個(gè)含有所希望到達(dá)的IP地址的以太網(wǎng)廣播數(shù)據(jù)包,,然后目標(biāo)IP的所有者會(huì)以一個(gè)含有IP和MAC地址對(duì)的數(shù)據(jù)包應(yīng)答請(qǐng)求主機(jī),。這樣請(qǐng)求主機(jī)就能獲得要到達(dá)的IP地址對(duì)應(yīng)的MAC地址,同時(shí)請(qǐng)求主機(jī)將這個(gè)地址對(duì)放入自己的ARP表緩存起來(lái),以節(jié)約不必要的ARP通信,。主機(jī)每隔一段時(shí)間(或者當(dāng)收到ARP應(yīng)答)都會(huì)用新的地址映射記錄對(duì)ARP緩存進(jìn)行更新,,以保證自己擁有最新的地址解析緩存。ARP的報(bào)文格式如表1所示[2],。

1.2 ARP協(xié)議的安全問(wèn)題
    ARP協(xié)議是建立在信任局域網(wǎng)內(nèi)所有結(jié)點(diǎn)的基礎(chǔ)上的,,它高效,但卻不安全,。ARP高速緩存根據(jù)所接收到的ARP協(xié)議包隨時(shí)進(jìn)行動(dòng)態(tài)更新,,它是無(wú)狀態(tài)的協(xié)議,不會(huì)檢查自己是否發(fā)過(guò)請(qǐng)求包,,只要收到目標(biāo)MAC是自己的ARP響應(yīng)數(shù)據(jù)包或ARP廣播包(包括ARP請(qǐng)求數(shù)據(jù)包和ARP響應(yīng)數(shù)據(jù)包),,都會(huì)接受并緩存。ARP協(xié)議沒(méi)有認(rèn)證機(jī)制,,只要接收到的協(xié)議包是有效的,,主機(jī)就無(wú)條件地根據(jù)協(xié)議包的內(nèi)容刷新本機(jī)ARP緩存,并不檢查該協(xié)議包的合法性,。因此攻擊者可以隨時(shí)發(fā)送虛假ARP包更新被攻擊主機(jī)上的ARP緩存,,進(jìn)行地址欺騙或拒絕服務(wù)攻擊。
2 跨網(wǎng)段的ARP需重新定向的原因
    如果是同一網(wǎng)段,,ARP欺騙攻擊就可以直接通過(guò)洪水攻擊或偽造IP-MAC地址映射表來(lái)實(shí)現(xiàn),。但是如果偽造包是經(jīng)過(guò)路由分段將無(wú)法獲得成功,因?yàn)榧词故褂煤樗艋蛘邆卧彀沟媚繕?biāo)主機(jī)無(wú)法提供服務(wù),,失去連接,,局域網(wǎng)中的主機(jī)也只是在局域網(wǎng)中找目標(biāo)主機(jī)而根本不會(huì)與攻擊主機(jī)通信,因?yàn)橹鳈C(jī)路由表到目標(biāo)主機(jī)的路由是直接交付而不是經(jīng)過(guò)網(wǎng)關(guān)交付,,這時(shí)需要再偽造一個(gè)網(wǎng)際控制報(bào)文協(xié)議ICMP(Internet Control Message Protocol)重定向報(bào)文廣播包,,通知目標(biāo)主機(jī)所在的局域網(wǎng)中的所有主機(jī):到達(dá)目標(biāo)主機(jī)的最短路徑不是直接交付,而是路由,,需要重定向,。這樣所有主機(jī)在接收重定向報(bào)文后更新自己的路由表,攻擊主機(jī)就可以偽裝成目標(biāo)主機(jī)進(jìn)行通信,。
3 ARP與ICMP跨網(wǎng)段重定向
3.1 ICMP重定向報(bào)文格式

    ICMP是為了更有效地轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)和提高交付成功的機(jī)會(huì),。它在主機(jī)和路由器之間報(bào)告差錯(cuò)情況和提供異常情況的報(bào)告,目的是為了當(dāng)網(wǎng)絡(luò)出現(xiàn)問(wèn)題的時(shí)候返回控制信息,。ICMP重定向報(bào)文是ICMP差錯(cuò)報(bào)告中的一種請(qǐng)求改變路由的報(bào)文,。表2為ICMP重定向報(bào)文格式[3]。

    重定向報(bào)文的類型為5,,代碼有效值為0~3,。其中0代表網(wǎng)絡(luò)重定向,,1代表主機(jī)重定向,2代表服務(wù)類型和網(wǎng)絡(luò)重定向,,3代表服務(wù)類型和主機(jī)重定向,。原則上,重定向報(bào)文是由路由器產(chǎn)生而供主機(jī)使用的,。路由器默認(rèn)發(fā)送的重定向報(bào)文也只是1或者3,,只是對(duì)主機(jī)的重定向,而不是對(duì)網(wǎng)絡(luò)的重定向,。而主機(jī)本身不是路由器,,所以這種ICMP重定向會(huì)導(dǎo)致網(wǎng)絡(luò)流量的增大。
3.2 ICMP重定向報(bào)文程序
    ICMP重新定向所使用的報(bào)文程序如下:
    //ICMP header
    typedef struct _tagX_icmphdr{
    unsigned char i_type,; //類型
    unsigned char i_code,; //代碼
    unsigned short i_cksum; //檢驗(yàn)和
    unsigned short i_id,; //標(biāo)識(shí)符
    unsigned short i_seq,; //序列號(hào)
    unsigned long i_timestamp;
    //當(dāng)前時(shí)間itmestump=(unsigned long):GetTickCount(),;
    XIcmpHeader,;
    case ICMP-REDIRECT:
  if (code>3)
   goto badcode;
  if(icmplen< ICMP-ADVLENMIN||icmplen<ICMP-ADVLEN (icp))
 ||icp->icmp-ip·ip-hl<(sizeof(struct ip)>>2))
{
icmpstat.icps-badlen++,;
  break,;
 }
icmpgw·sin-addr=ip->ip-src;
icmpdst·sin-addr=icp->icmp-gwaddr,,
icmpsrc·sin-addr=icp->icmp-ip·ip-dst,;
rtredirect ((struct sockaddr*) &icmpsrc,
(struct sockaddr*) &icmpdst,,
(struct sockaddr*) 0,, RTF-GATEWAY|
RTF-HOST,(struct sockaddr*)&icmpgw,,
(struct rtentry**) 0),;
ptctlinput (PRC-REDIRECT-HOST,(struct sockaddr*) &icmpsrc),;
 Break;
3.3 ICMP重定向的工作原理
    在Internet網(wǎng)的主機(jī)發(fā)送數(shù)據(jù)報(bào)時(shí),,先查找自己的路由表,,判斷發(fā)送接口。出于效率的考慮,,主機(jī)并不和連接在網(wǎng)絡(luò)上的路由器定期交換路由信息,,一般在主機(jī)中設(shè)置一個(gè)默認(rèn)路由器的IP地址,,數(shù)據(jù)報(bào)先傳送給這個(gè)默認(rèn)路由器,此默認(rèn)路由器通過(guò)與其他路由器交換路由信息得知到達(dá)每一個(gè)網(wǎng)絡(luò)的最佳路由,,當(dāng)默認(rèn)路由器發(fā)現(xiàn)主機(jī)發(fā)往某個(gè)目的地址的數(shù)據(jù)報(bào)的最佳路由不是本默認(rèn)路由器而是另一個(gè)路由器時(shí),,就用改變路由報(bào)文把這種情況告訴主機(jī),主機(jī)即更改路由表增加一個(gè)新路由項(xiàng)目,。
    下面用如圖1所示的實(shí)例來(lái)說(shuō)明ICMP重新定向的過(guò)程,。主機(jī)PC要ping路由器RB的f1地址:192.168.2.1/24,主機(jī)將判斷出目標(biāo)屬于不同的網(wǎng)段,,因此它要將ICMP請(qǐng)求包發(fā)往自己的默認(rèn)網(wǎng)關(guān)192.168.0.253/24(路由器RA的f0接口),。但是,這之前主機(jī)PC首先必須發(fā)送ARP請(qǐng)求,,請(qǐng)求路由器RA的f0(192.168.1.253/24)的MAC地址,。當(dāng)路由器RA收到此ARP請(qǐng)求包后,首先用ARP應(yīng)答包回答主機(jī)PC的ARP請(qǐng)求(通知主機(jī)PC:路由器RA自己的f0接口的MAC地址為AA-AA-AA-AA),。然后,,路由器RA將此ICMP請(qǐng)求轉(zhuǎn)發(fā)到路由器RB的f0接口:192.168.0.254/24(要求路由器RA正確配置了到網(wǎng)絡(luò)192.168.2.0/24的路由)。此外,,路由器RA還要發(fā)送一個(gè)ICMP重定向消息給主機(jī)PC,,通知主機(jī)PC對(duì)于主機(jī)PC請(qǐng)求的地址的網(wǎng)關(guān)是:192.168.0.254。路由器RB此時(shí)會(huì)發(fā)送一個(gè)ARP請(qǐng)求消息請(qǐng)求主機(jī)PC的MAC地址,,而主機(jī)PC會(huì)發(fā)送ARP應(yīng)答消息給路由器RB,。最后,路由器RB通過(guò)獲得的主機(jī)PC的MAC地址信息,,將ICMP應(yīng)答消息發(fā)送給主機(jī)PC,。

3.4 跨網(wǎng)段的ARP欺騙攻擊的實(shí)現(xiàn)過(guò)程
    跨網(wǎng)段的ARP欺騙比同一網(wǎng)段的ARP欺騙要復(fù)雜得多,它需要把ARP欺騙與ICMP重定向攻擊結(jié)合在一起,。假設(shè)A和B在同一網(wǎng)段,,C在另一網(wǎng)段,如表3所示,。

    首先攻擊方C修改IP包的生存時(shí)間,,將其延長(zhǎng),以便做充足的廣播,。然后和上面提到的一樣,,尋找主機(jī)B的漏洞,攻擊此漏洞,,使主機(jī)B暫時(shí)無(wú)法工作,。此后,攻擊方C發(fā)送IP地址為B的IP地址192.168.0.2,,MAC地址為C的MAC地址CC-CC-CC-CC的ARP應(yīng)答給A,。A接收到應(yīng)答后,,更新其ARP緩存。這樣,,在主機(jī)A上,,B的IP地址就對(duì)應(yīng)C的MAC地址。但是,,A在發(fā)數(shù)據(jù)包給B時(shí),,仍然會(huì)在局域網(wǎng)內(nèi)尋找192.168.0.2的MAC地址,不會(huì)把包發(fā)給路由器,,這時(shí)就需要進(jìn)行ICMP重定向,,告訴主機(jī)A到192.168.0.2的最短路徑不是局域網(wǎng),而是路由,,請(qǐng)主機(jī)重定向路由路徑,,把所有到192.168.0.2的包發(fā)給路由器。主機(jī)A在接收到這個(gè)合理的ICMP重定向后,,修改自己的路由路徑,,把對(duì)192.168.0.2的數(shù)據(jù)包都發(fā)給路由器。這樣攻擊方C就能得到來(lái)自內(nèi)部網(wǎng)段的數(shù)據(jù)包,。
4 ARP病毒的檢測(cè)和防范策略
4.1 ARP的檢測(cè)方法[4]

    (1)主動(dòng)定位方式,。因?yàn)樗械腁RP病毒攻擊源都會(huì)有其特征——網(wǎng)卡會(huì)處于混雜模式,可以通過(guò)ARPKiller工具掃描網(wǎng)內(nèi)有哪臺(tái)機(jī)器的網(wǎng)卡是處于混雜模式的,,從而判斷這臺(tái)機(jī)器有可能就是攻擊機(jī),。定位好機(jī)器后,再做病毒信息收集,,提交給相關(guān)單位做分析處理,。
    (2)在任意客戶機(jī)上進(jìn)入命令提示符(或MS-DOS方式),用arp-a命令查看,。如果看到有兩個(gè)機(jī)器的MAC地址相同,,那么就可以判斷網(wǎng)絡(luò)內(nèi)有ARP欺騙攻擊。
    (3)運(yùn)行tracert–d網(wǎng)址,。如果第一個(gè)跳顯示的不是網(wǎng)關(guān)而是其他的IP地址,,則第一跳中顯示的IP即為中了ARP病毒計(jì)算機(jī)的IP地址。
4.2 ARP欺騙的安全防范策略[5]
    (1)編寫(xiě)一個(gè)批處理文件arp.bat,,實(shí)現(xiàn)開(kāi)機(jī)運(yùn)行,,將交換機(jī)網(wǎng)關(guān)的MAC地址和網(wǎng)關(guān)的IP地址綁定,內(nèi)容如下:
    @echo off
    arp-d
    arp-s IP MAC
    其中IP和MAC為網(wǎng)關(guān)IP地址和MAC地址,。
    (2)網(wǎng)管交換機(jī)端綁定,。在核心交換機(jī)上綁定用戶主機(jī)的IP地址和網(wǎng)卡的MAC地址,同時(shí)在邊緣交換機(jī)上將用戶計(jì)算機(jī)網(wǎng)卡的MAC地址和交換機(jī)端口綁定的雙重安全綁定方式,。
以思科2950交換機(jī)為例,,輸入命令:
  Switch#config terminal #進(jìn)入配置模式
  Switch(config)# Interface f 0/1
  #進(jìn)入具體端口配置模式
  Switch(config-if)switchport
  port-security mac-address  MAC(主機(jī)的MAC地址)
    (3)算法的實(shí)現(xiàn)[6]。根據(jù)ARP欺騙過(guò)程,,防止ARP欺騙可以基于這樣的思想:如果ARP響應(yīng)報(bào)文是在發(fā)出ARP請(qǐng)求之后收到的,,則接收該響應(yīng),并更新ARP緩存,。如果接收到ARP響應(yīng)報(bào)文不是在發(fā)送ARP請(qǐng)求之后,,則拒絕該響應(yīng)。該算法的具體實(shí)現(xiàn)過(guò)程中,,設(shè)置一個(gè)數(shù)組ReqAddBuf[i],,保存陸續(xù)發(fā)出的n個(gè)ARP請(qǐng)求包的目的IP地址,均賦初值0,。設(shè)置兩個(gè)參數(shù):ReqEntryIP和ResEntryIP,,分別保存當(dāng)前發(fā)出的ARP請(qǐng)求報(bào)文的目的IP地址和接收到的ARP響應(yīng)報(bào)文的源IP地址。設(shè)置兩個(gè)邏輯變量Sendin-gReqPack和ReceivingResPack,。首先,,察看是否在發(fā)送ARP請(qǐng)求報(bào)文,如果正在發(fā)送,,就將該IP加入到數(shù)組ReqAddBuf[i]中,。C語(yǔ)言描述如下:
if (SendingReqPack= =1)
{ for (i=1; i<=n ,; i++)
 { if (ReqAddBuf[i] = = 0)
  {ReqAddBuf[i] = ReqEntryIp,;
   break;}
   else if (i= =n)
      {n = n+1,;
       i = n,;
       ReqAddBuf[i] = ReqEntryIp; }
  }
 }
    當(dāng)接收到一個(gè)ARP響應(yīng)報(bào)文時(shí),,察看它的源IP地址是否記錄在案,,如果有,則更新ARP高速緩存,;如果沒(méi)有,,丟棄該響應(yīng)報(bào)文。C語(yǔ)言描述如下:
if (ReceivingResPack= =1)
{ for (i=1,; i<=n ,; i++)
 {if (ReqAddBuf[i]= = ResEntryIP)
  { ReqAddBuf[i]=0;
   UpdateArp( ),;
   break,;}
   else if (i= =n) DelResPack();
  }
}
    該方案可以通過(guò)修改TCP/IP內(nèi)核源代碼(主要是修改廣播ARP請(qǐng)求函數(shù)arprequest和處理接收到的ARP報(bào)文的函數(shù)in_arpinput)得以實(shí)現(xiàn),;也可以做一個(gè)軟件,,在每次發(fā)送和接收ARP報(bào)文時(shí)進(jìn)行相應(yīng)處理,。
    (4)使用ARP服務(wù)器。ARP服務(wù)器保存有局域網(wǎng)內(nèi)各主機(jī)的IP地址和MAC地址的映射信息,,并且禁用局域網(wǎng)內(nèi)除服務(wù)器之外各主機(jī)的ARP應(yīng)答,,僅保留服務(wù)器對(duì)接收到的ARP請(qǐng)求進(jìn)行應(yīng)答。但是必須要保證ARP服務(wù)器的正常運(yùn)行,,不被黑客攻擊,。
    (5)使用防火墻等安全產(chǎn)品。現(xiàn)在大多網(wǎng)絡(luò)公司在防火墻等安全產(chǎn)品中加入了對(duì)ARP欺騙的防范,,它們通常是從底層驅(qū)動(dòng)對(duì)所有ARP欺騙數(shù)據(jù)包進(jìn)行識(shí)別和屏蔽,,使ARP欺騙攻擊無(wú)功而返。
    依據(jù)ICMP的重新定向,,ARP欺騙攻擊可以跨網(wǎng)段進(jìn)行,,這樣就擴(kuò)大了ARP進(jìn)行攻擊的范圍,這對(duì)于ARP欺騙的防御又增添了難度,。由于ARP本身的設(shè)計(jì)問(wèn)題,,使得要徹底避免ARP欺騙攻擊幾乎不可能。因此,,除了做好防范以外,,經(jīng)常查看當(dāng)前的網(wǎng)絡(luò)狀態(tài),對(duì)網(wǎng)絡(luò)活動(dòng)進(jìn)行分析,、監(jiān)控,,采取積極、主動(dòng)的防御行動(dòng)是保證網(wǎng)絡(luò)的安全和暢通的重要和有效的方法,。
參考文獻(xiàn)
[1] 陳晨.ARP欺騙防御研究[D],,保定:河北農(nóng)業(yè)大學(xué),2009.
[2] 姜曉峰.ARP協(xié)議簡(jiǎn)析與ARP欺騙攻擊防范[J].電腦知識(shí)與技術(shù),,2008(1):1349-1350
[3] 佚名.ICMP重定向差錯(cuò). http: //www. 77169. com/classical/HTML/51616. html,,2010-06-01.
[4] 范俊俊.基于交換機(jī)的ARP安全機(jī)制研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(8):4162-4164
[5] 金濤.公眾網(wǎng)絡(luò)環(huán)境中的ARP欺騙攻擊與防范方法[D].上海:上海交通大學(xué),,2007.
[6] 徐功文.ARP協(xié)議攻擊原理及其防范措施[J].網(wǎng)絡(luò)與信息安全,,2005(1):4-6.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。