1.1 什么是網關
首先來簡單解釋一下什么是網關,網關工作在OSI七層模型中的傳輸層或者應用層,用於高層協議的不同網絡之間的連接,簡單地說,網關就好比是一個房間通向另一個房間的一扇門。
1.2 ARP協議是什么
ARP(Address Resolution Protocol)地址轉換協議,工作在OSI模型的數據鏈路層,在以太網中,網絡設備之間互相通信是用MAC地址而不是IP地址,ARP協議就是用來把IP地址轉換為MAC地址的。而RARP和ARP相反,它是反向地址轉換協議,把MAC地址轉換為IP地址。
假設A(192.168.1.2)與B(192.168.1.3)在同一局域網,A要和B實現通信。A首先會發送一個數據包到廣播地址(192.168.1.255),該數據包中包含了源IP(A)、源MAC、目的IP(B)、目的MAC,這個數據包會被發放給局域網中所有的主機,但是只有B主機會回復一個包含了源IP(B)、源MAC、目的IP(A)、目的MAC的數據包給A,同時A主機會將返回的這個地址保存在ARP緩存表中。
1.3 ARP欺騙原理
上面提到過了ARP緩存表,在每台主機都有一個ARP緩存表,緩存表中記錄了IP地址與MAC地址的對應關系,而局域網數據傳輸依靠的是MAC地址。
假設主機 A 192.168.1.2,B 192.168.1.3,C 192.168.1.4; 網關 G 192.168.1.1; 在同一局域網,主機A和B通過網關G相互通信,就好比A和B兩個人寫信,由郵遞員G送信,C永遠都不會知道A和B之間說了些什么話。但是並不是想象中的那么安全,在ARP緩存表機制存在一個缺陷,就是當請求主機收到ARP應答包后,不會去驗證自己是否向對方主機發送過ARP請求包,就直接把這個返回包中的IP地址與MAC地址的對應關系保存進ARP緩存表中,如果原有相同IP對應關系,原有的則會被替換。
這樣C就有了偷聽A和B的談話的可能,繼續思考上面的例子:
C假扮郵遞員,首先要告訴A說:“我就是郵遞員” (C主機向A發送構造好的返回包,源IP為G 192.168.1.1,源MAC為C自己的MAC地址),愚蠢的A很輕易的相信了,直接把“C是郵遞員”這個信息記在了腦子里;
C再假扮A,告訴郵遞員:“我就是A” (C向網關G發送構造好的返回包,源IP為A 192.168.1.2,源MAC地址為自己的MAC地址),智商捉急的郵遞員想都沒想就相信了,以后就把B的來信送給了C,C當然就可以知道A和B之間聊了些什么
上面ABCG的故事就是ARP雙向欺騙的原理了
ARP單向欺騙就更好理解了,C只向A發送一個返回包,告訴A:G 192.168.1.1 的MAC地址為 5c-63-bf-79-1d-fa(一個錯誤的mac地址),A把這個信息記錄在了緩存表中,而G的緩存表不變,也就是說,A把數據包給了C,而G的包還是給A,這樣就是ARP單向欺騙了。
2.1 實戰ARP欺騙
ARP欺騙又被稱為ARP毒化,屬於中間人攻擊,我用虛擬機來模擬一下ARP欺騙的全過程
首先,看一下
ARP緩存表中默認已經存在了網關IP、MAC地址的記錄
看一下目標主機的ARP緩存表
目標IP與本機IP
再進行arp欺騙之前必須要開啟IP轉發,否則當欺騙成功之后,目標機會斷網,這樣會被對方察覺
sysctl -w net.ipv4.ip_forward=1 或者 echo 1 > /proc/sys/net/ipv4/ip_forward
已經成功開啟IP轉發
向目標192.168.124.133發送返回包,包含內容:
源ip:192.168.124.2
源MAC:00:0c:29:86:a1:04
此時再來看目標主機ARP緩存
可以看出目標主機arp緩存已經發生了變化,在緩存表中所記錄的網關(192.168.124.2)的MAC已經變為了攻擊者的MAC
以上就是一次簡單的ARP欺騙了
2.2 ARP欺騙的危害
局域網之間主機通信會收到影響,如果是網關欺騙,上互聯網也會受影響
黑客利用ARP欺騙可以竊取用戶敏感信息、掛馬等
在這里我簡單演示一下ARP欺騙嗅探Telnet賬戶密碼
3 怎樣防范ARP欺騙
1.在主機綁定網關MAC與IP地址為靜態(默認為動態),命令:arp -s 網關IP 網關MAC
2.在網關綁定主機MAC與IP地址
3.使用ARP防火牆
本文由i春秋學院提供,原文地址: http://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=1739&highlight=防?from=bky