企業(yè)ARP欺騙分析及防御:不同網(wǎng)段欺騙分析及對策
把ARP欺騙和ICMP重定向結(jié)合在一起就可以基本實現(xiàn)跨網(wǎng)段欺騙的目的。本文將介紹不同網(wǎng)段ARP欺騙分析及對策。
不同網(wǎng)段ARP欺騙分析
假設A、C位于同一網(wǎng)段而主機B位于另一網(wǎng)段,三臺機器的ip地址和硬件地址如下:
A: IP地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA;
B: IP地址 192.168.1.2 硬件地址 BB:BB:BB:BB:BB:BB;
C: IP地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC。
在現(xiàn)在的情況下,位于192.168.1網(wǎng)段的主機B如何冒充主機C欺騙主機A呢?顯然用上面的辦法的話,即使欺騙成功,那么由主機B和主機A之間也無法建立telnet會話,因為路由器不會把主機A發(fā)給主機B的包向外轉(zhuǎn)發(fā),路由器會發(fā)現(xiàn)地址在192.168.0.這個網(wǎng)段之內(nèi)。
現(xiàn)在就涉及另外一種欺騙方式——ICMP重定向。把ARP欺騙和ICMP重定向結(jié)合在一起就可以基本實現(xiàn)跨網(wǎng)段欺騙的目的。
ICMP重定向報文是ICMP控制報文中的一種。在特定的情況下,當路由器檢測到一臺機器使用非優(yōu)化路由的時候,它會向該主機發(fā)送一個ICMP重定向報文,請求主機改變路由。路由器也會把初始數(shù)據(jù)報向它的目的地轉(zhuǎn)發(fā)。
我們可以利用ICMP重定向報文達到欺騙的目的。下面是結(jié)合ARP欺騙和ICMP重定向進行攻擊的步驟:
為了使自己發(fā)出的非法IP包能在網(wǎng)絡上能夠存活長久一點,開始修改IP包的生存時間TTL為下面的過程中可能帶來的問題做準備。把TTL改成255。(TTL定義一個IP包如果在網(wǎng)絡上到不了主機后,在網(wǎng)絡上能存活的時間,改長一點在本例中有利于做充足的廣播)。
下載一個可以自由制作各種包的工具(例如hping2)。
然后和上面一樣,尋找主機C的漏洞按照這個漏洞宕掉主機C。
在該網(wǎng)絡的主機找不到原來的192.0.0.3后,將更新自己的ARP對應表。于是他發(fā)送一個原IP地址為192.168.0.3硬件地址為BB:BB:BB:BB:BB:BB的ARP響應包。
現(xiàn)在每臺主機都知道了,一個新的MAC地址對應192.0.0.3,一個ARP欺騙完成了,但是,每臺主機都只會在局域網(wǎng)中找這個地址而根本就不會把發(fā)送給192.0.0.3的IP包丟給路由。于是他還得構(gòu)造一個ICMP的重定向廣播。
自己定制一個ICMP重定向包告訴網(wǎng)絡中的主機:“到192.0.0.3的路由最短路徑不是局域網(wǎng),而是路由,請主機重定向你們的路由路徑,把所有到192.0.0.3的IP包丟給路由。”
主機A接收這個合理的ICMP重定向,于是修改自己的路由路徑,把對192.0.0.3的通信都丟給路由器。
入侵者終于可以在路由外收到來自路由內(nèi)的主機的IP包了,他可以開始telnet到主機的23口。
其實上面的想法只是一種理想話的情況,主機許可接收的ICMP重定向包其實有很多的限制條件,這些條件使ICMP重定向變得非常困難。
TCP/IP協(xié)議實現(xiàn)中關(guān)于主機接收ICMP重定向報文主要有下面幾條限制:新路由必須是直達的;重定向包必須來自去往目標的當前路由;重定向包不能通知主機用自己做路由;被改變的路由必須是一條間接路由。
由于有這些限制,所以ICMP欺騙實際上很難實現(xiàn)。但是我們也可以主動地根據(jù)上面的思維尋找一些其他的方法。更為重要的是我們知道了這些欺騙方法的危害性,我們就可以采取相應的防御辦法。
ARP欺騙的防御原則
我們給出如下一些初步的防御方法:
不要把你的網(wǎng)絡安全信任關(guān)系建立在IP地址的基礎(chǔ)上或硬件MAC地址基礎(chǔ)上,(RARP同樣存在欺騙的問題),理想的關(guān)系應該建立在IP+MAC基礎(chǔ)上。
設置靜態(tài)的MAC→IP對應表,不要讓主機刷新你設定好的轉(zhuǎn)換表。
除非很有必要,否則停止使用ARP,將ARP作為永久條目保存在對應表中。在Linux下用ifconfig -arp可以使網(wǎng)卡驅(qū)動程序停止使用ARP。
使用代理網(wǎng)關(guān)發(fā)送外出的通信。
修改系統(tǒng)拒收ICMP重定向報文。在Linux下可以通過在防火墻上拒絕ICMP重定向報文或者是修改內(nèi)核選項重新編譯內(nèi)核來拒絕接收ICMP重定向報文。在Win 2000下可以通過防火墻和IP策略拒絕接收ICMP報文。