企業ARP欺騙分析及防御:同網段ARP欺騙分析
在實現TCP/IP協議的網絡環境下,一個IP包走到哪里、要怎么走是靠路由表定義的,但是,當IP包到達該網絡后,哪臺機器響應這個IP包卻是靠該IP包中所包含的硬件MAC地址來識別的。也就是說,只有機器的硬件MAC地址和該IP包中的硬件MAC地址相同的機器才會應答這個IP包,因為在網絡中,每一臺主機都會有發送IP包的時候,所以,在每臺主機的內存中,都有一個arp--〉硬件MAC的轉換表。通常是動態的轉換表(該arp表可以手工添加靜態條目)。也就是說,該對應表會被主機在一定的時間間隔后刷新。這個時間間隔就是ARP高速緩存的超時時間。通常主機在發送一個IP包之前,它要到該轉換表中尋找和IP包對應的硬件MAC地址,如果沒有找到,該主機就發送一個ARP廣播包,于是,主機刷新自己的ARP緩存。然后發出該IP包。
了解這些常識后,現在就可以介紹在以太網絡中ARP欺騙是如何產生了,可以看看如下一個例子。
同網段ARP欺騙分析
如下所示,三臺主機的IP地址和MAC地址分布如下:
A: IP地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA;
B: IP地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB;
C: IP地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC。
一個位于主機B的入侵者想非法進入主機A,可是這臺主機上安裝有防火墻。通過收集資料他知道這臺主機A的防火墻只對主機C有信任關系(開放23端口(telnet))。而他必須要使用telnet來進入主機A,這個時候他應該如何處理呢?
入侵者必須讓主機A相信主機B就是主機C,如果主機A和主機C之間的信任關系是建立在IP地址之上的。如果單單把主機B的IP地址改的和主機C的一樣,那是不能工作的,至少不能可靠地工作。如果你告訴以太網卡設備驅動程序,自己IP是192.168.0.3,那么這只是一種純粹的競爭關系,并不能達到目標。我們可以先研究C這臺機器,如果我們能讓這臺機器暫時當掉,競爭關系就可以解除,這個還是有可能實現的。在機器C宕掉的同時,將機器B的IP地址改為192.168.0.3,這樣就可以成功的通過23端口telnet到機器A上面,而成功的繞過防火墻的限制。
上面的這種想法在下面的情況下是沒有作用的,如果主機A和主機C之間的信任關系是建立在硬件地址的基礎上。這個時候還需要用ARP欺騙的手段,讓主機A把自己的ARP緩存中的關于192.168.0.3映射的硬件地址改為主機B的硬件地址。
我們可以人為地制造一個arp_reply的響應包,發送給想要欺騙的主機,這是可以實現的,因為協議并沒有規定必須在接收到arp_echo后才可以發送響應包。這樣的工具很多,我們也可以直接用Wireshark抓一個arp響應包,然后進行修改。
可以人為地制造這個包。可以指定ARP包中的源IP、目標IP、源MAC地址、目標MAC地址。這樣你就可以通過虛假的ARP響應包來修改主機A上的動態ARP緩存達到欺騙的目的。
下面是具體的步驟:
他先研究192.0.0.3這臺主機,發現這臺主機的漏洞。
根據發現的漏洞使主機C宕掉,暫時停止工作。
這段時間里,入侵者把自己的IP改成192.0.0.3。
他用工具發一個源IP地址為192.168.0.3源MAC地址為BB:BB:BB:BB:BB:BB的包給主機A,要求主機A更新自己的ARP轉換表。
主機更新了ARP表中關于主機C的IP-->MAC對應關系。
防火墻失效了,入侵的IP變成合法的MAC地址,可以telnet了。
上面就是一個ARP的欺騙過程,這是在同網段發生的情況,但是,提醒注意的是,在B和C處于不同網段的時候,上面的方法是不起作用的。