ARP介紹

1arp的引入

主機在發送IP包之前,首先到轉換表中尋找和ip包相對應的硬件mac地址,如果沒有找到,主機就發送一個ARP的廣播包,得到ARP應答後,刷新ARP緩存並將包發送出去。Arp在這其中就是把ip地址轉換成mac地址

 

2:常用的arp命令

arp

arp –a

arp –s IP MAC

arp –d IP

 

3:ARP包的結構和定義

以太網目的地址

以太網源地址

幀類型(0x0806 ARP請求/應答)

硬件類型(1 以太網地址)

協議類型(0x0800 IP地址)

硬件地址長度(6

協議地址長度(4

Op1 ARP請求)

發送端以太網地址

發送端IP地址

目的端以太網地址

目的端IP地址


typedef struct ehhdr

{

    UCHAR    eh_dst[6];        
/**//* destination ethernet addrress */

    UCHAR    eh_src[6];        
/**//* source ethernet addresss */

    USHORT   eh_type;          
/**//* ethernet pachet type    */

}EHHEADR, *PEHHEADR;

//28字節的ARP請求/應答

typedef struct arphdr

{

    USHORT    arp_hrd;            
/**//* format of hardware address */

    USHORT    arp_pro;            
/**//* format of protocol address */

    UCHAR     arp_hln;            
/**//* length of hardware address */

    UCHAR     arp_pln;            
/**//* length of protocol address */

    USHORT    arp_op;             
/**//* ARP/RARP operation */

    UCHAR     arp_sha[6];         
/**//* sender hardware address */

    ULONG     arp_spa;            
/**//* sender protocol address */

    UCHAR     arp_tha[6];         
/**//* target hardware address */

    ULONG     arp_tpa;            
/**//* target protocol address */

}ARPHEADR, *PARPHEADR;

//把上面定義的兩種結構封裝起來

typedef struct arpPacket

{

    EHHEADR    ehhdr;

    ARPHEADR   arphdr;

} ARPPACKET, *PARPPACKET;

 

4ARP欺騙

同一個網段

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地址之上的。如果單單把主機Bip地址改的和主機C的一樣,那是不能工作的,至少不能可靠地工作。如果你告訴以太網卡設備驅動程序, 自己IP192.168.0.3,那麼這只是一種純粹的競爭關係,並不能達到目標。我們可以先研究C這臺機器如果我們能讓這臺機器暫時當掉,競爭關係就可以解除,這個還是有可能實現的。在機器C當掉的同時,將機器Bip地址改爲192.168.0.3,這樣就可以成功的通過23端口telnet到機器A上面,而成功的繞過防火牆的限制。

上面的這種想法在下面的情況下是沒有作用的,如果主機A和主機C之間的信任關係是建立在硬件地址的基礎上。這個時候還需要用ARP欺騙的手段讓主機A把自己的ARP緩存中的關於192.168.0.3映射的硬件地址改爲主機B的硬件地址。

我們可以人爲的製造一個arp_reply的響應包,發送給想要欺騙的主機,這是可以實現的,因爲協議並沒有規定必須在接收到arp_echo後纔可以發送響應包.這樣的工具很多,我們也可以直接用snifferpro抓一個arp響應包,然後進行修改。

你可以人爲地製造這個包。可以指定ARP包中的源IP、目標IP、源MAC地址、目標MAC地址。

這樣你就可以通過虛假的ARP響應包來修改主機A上的動態ARP緩存達到欺騙的目的。

下面是具體的步驟:

1.      他先研究192.0.0.3這臺主機,發現這臺主機的漏洞。

2.      根據發現的漏洞使主機C當掉,暫時停止工作。

3.      這段時間裏,入侵者把自己的ip改成192.0.0.3

4.      他用工具發一個源ip地址爲192.168.0.3MAC地址爲BB:BB:BB:BB:BB:BB的包給主機A,要求主機A更新自己的arp轉換表。

5.      主機更新了arp表中關於主機Cip-->mac對應關係。

6.      防火牆失效了,入侵的ip變成合法的mac地址,可以telnet 了。

上面就是一個ARP的欺騙過程,這是在同網段發生的情況,但是,提醒注意的是,在BC處於不同網段的時候,上面的方法是不起作用的。

不同的網段

AC位於同一網段而主機B位於另一網段,三臺機器的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

在現在的情況下,位於192.168.1網段的主機B如何冒充主機C欺騙主機A呢?顯然用上面的辦法的話,即使欺騙成功,那麼由主機B和主機A之間也無法建立telnet會話,因爲路由器不會把主機A發給主機B的包向外轉發,路由器會發現地址在192.168.0.這個網段之內。

現在就涉及到另外一種欺騙方式―ICMP重定向。把ARP欺騙和ICMP重定向結合在一起就可以基本實現跨網段欺騙的目的。

什麼是ICMP重定向呢?

ICMP重定向報文是ICMP控制報文中的一種。在特定的情況下,當路由器檢測到一臺機器使用非優化路由的時候,它會向該主機發送一個ICMP重定向報文,請求主機改變路由。路由器也會把初始數據報向它的目的地轉發。

我們可以利用ICMP重定向報文達到欺騙的目的。

下面是結合ARP欺騙和ICMP重定向進行攻擊的步驟:

1.      爲了使自己發出的非法ip包能在網絡上能夠存活長久一點,開始修改ip包的生存時間ttl爲下面的過程中可能帶來的問題做準備。把ttl改成255. (ttl定義一個ip包如果在網絡上到不了主機後,在網絡上能存活的時間,改長一點在本例中有利於做充足的廣播)

2.      下載一個可以自由製作各種包的工具(例如hping2

3.      然後和上面一樣,尋找主機C的漏洞按照這個漏洞當掉主機C

4.      在該網絡的主機找不到原來的192.0.0.3後,將更新自己的ARP對應表。於是他發送一個原ip地址爲192.168.0.3硬件地址爲BB:BB:BB:BB:BB:BBARP響應包。

5.      好了,現在每臺主機都知道了,一個新的MAC地址對應192.0.0.3,一個ARP欺騙完成了,但是,每臺主機都只會在局域網中找這個地址而根本就不會把發送給192.0.0.3ip包丟給路由。於是他還得構造一個ICMP的重定向廣播。

6.      自己定製一個ICMP重定向包告訴網絡中的主機:"192.0.0.3的路由最短路徑不是局域網,而是路由,請主機重定向你們的路由路徑,把所有到192.0.0.3ip包丟給路由。"

7.      主機A接受這個合理的ICMP重定向,於是修改自己的路由路徑,把對192.0.0.3的通訊都丟給路由器。

8.      入侵者終於可以在路由外收到來自路由內的主機的ip包了,他可以開始telnet到主機的23口。

其實上面的想法只是一種理想話的情況,主機許可接收的ICMP重定向包其實有很多的限制條件,這些條件使ICMP重定向變的非常困難。

TCP/IP協議實現中關於主機接收ICMP重定向報文主要有下面幾條限制:

1.      新路由必須是直達的

2.      重定向包必須來自去往目標的當前路由

3.      重定向包不能通知主機用自己做路由

4.      被改變的路由必須是一條間接路由

由於有這些限制,所以ICMP欺騙實際上很難實現。但是我們也可以主動的根據上面的思維尋找一些其他的方法。更爲重要的是我們知道了這些欺騙方法的危害性,我們就可以採取相應的防禦辦法。

 

發佈了98 篇原創文章 · 獲贊 6 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章