實例講解如何對目標進行ARP欺騙 |
發布時間: 2012/6/17 21:42:10 |
以太網內的嗅探sniff對于網絡安全來說并不是什么好事,雖然對于網絡管理員能夠跟蹤數據包并且發現網絡問題,但是如果被破壞者利用的話,就對整個網絡構成嚴重的安全威脅。
其中: 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 假設B是屬于一個嗅探愛好者的,比如A機器的ARP緩存: 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 這是192.168.10.1機器上的ARP緩存表,假設,A進行一次ping 192.168.10.3操作,PING主機C,會查詢本地的ARP緩存表,找到C的IP地址的MAC地址,那么就會進行數據傳輸,目的地就是C 的MAC地址。如果A中沒有C的ARP記錄,那么A首先要廣播一次ARP請求,當C接收到A 的請求后就發送一個應答,應答中包含有C的MAC地址,然后A接收到C的應答,就會更新本地的ARP緩存。接著使用這個MAC地址發送數據(由網卡附加MAC地址)。因此,本地高速緩存的這個ARP表是本地網絡流通的基礎,而且這個緩存是動態的。 集線器網絡(Hub-Based) 很多網絡都是用Hub進行連接的。數據包經過Hub傳輸到其他計算機的時候,Hub只是簡單地把這個數據包廣播到Hub的所有端口上。這就是上面舉例中的一種網絡結構。 現在A需要發送TCP數據包給C。首先,A需要檢查本地的ARP 緩存表,查看是否有IP為192.168.10.3即C的ARP記錄,如果沒有那么A將要廣播一個ARP請求,當C接收到這個請求后,就作出應答,然后A更新自己的ARP緩存表。并獲得與C的IP相對應的MAC地址。這時就傳輸這個TCP數據包,Ethernet幀中就包含了C的MAC地址。當數據包傳輸到HUB的時候,HUB直接把整個數據包廣播到所有的端口,然后C就能夠接收到A發送的數據包。 正因為HUB把數據廣播到所有的端口,所以計算機B也能夠收到A發送給C的數據包。這正是達到了B嗅探的目的。因此,Hub-Based的網絡基本沒有安全可言,嗅探在這樣的網絡中非常容易。 交換網絡(Switched Lan) 交換機用來代替HUB,正是為了能夠解決HUB的幾個安全問題,其中就是能夠來解決嗅探問題。Switch不是把數據包進行端口廣播,它將通過自己的ARP緩存來決定數據包傳輸到那個端口上。因此,在交換網絡上,如果把上面例子中的HUB換為Switch,B就不會接收到A發送給C的數據包,即便設置網卡為混雜模式,也不能進行嗅探。 ARP欺騙(ARP spoofing) ARP協議并不只在發送了ARP請求才接收ARP應答。當計算機接收到ARP應答數據包的時候,就會對本地的ARP緩存進行更新,將應答中的IP和MAC地址存儲在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機器的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欺騙。 我們來實現這樣的ARP欺騙。這里需要使用一個WinPcap提供的API和驅動。(http://winpcap.polito.it/),winpcap是一個偉大而且開放的項目。Windows環境下的nmap、snort、windump都是使用的winpcap。
本文出自:億恩科技【www.laynepeng.cn】 |