「網絡安全」常見攻擊篇(22)——DHCP攻擊

DHCP攻擊針對的目標是網絡中的DHCP服務器,原理是耗盡DHCP服務器所有的IP地址資源,使其無法正常提供地址分配服務。然後在網絡中再架設假冒的DHCP服務器為客戶端分發IP地址,從而來實現中間人攻擊。

什麼是DHCP?

DHCP,動態主機配置協議,前身是BOOTP協議,是一個局域網的網絡協議,使用UDP協議工作,常用的2個端口:67(DHCP server),68(DHCP client)。DHCP通常被用於局域網環境,主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,並能夠提升地址的使用率。簡單來說,DHCP就是一個不需要賬號密碼登錄的、自動給內網機器分配IP地址等信息的協議。

1、產生背景:網絡增大,手工配置存在很多問題【人員素質要求高、容易出錯、靈活性差、IP地址資源利用率低、工作量大,不利於管理等】

2、DHCP相對於靜態手工配置的優點【效率高、靈活性強、易於管理等】

DHCP的工作原理

  • DHCP的基本工作過程
「網絡安全」常見攻擊篇(22)——DHCP攻擊
  1. 發現階段:在發現階段,DHCP客戶端會以廣播的方式給自己所在在廣播域中的DHCP服務器都發送一個DHCP Discover 報文,目的是尋找網絡中的DHCP Server,並表示自己需要獲得一個IP地址
  2. 提供階段:是網絡中的DHCP Server響應所收到的DHCP Discover 報文,把準備提供的IP地址攜帶在DHCP Offer 報文中,並以單播的方式發送給DHCP 客戶端(注意這裡Offer 報文中攜帶的IP地址客戶端還不能直接使用)
  3. 請求階段:DHCP客戶端在收到的所有Offer 報文中選擇接受第一個到達客戶端的Offer(通常情況下選擇第一個接收到的Offer),並向相應的DHCP Server 以廣播的方式發送DHCP Request 報文,表示自己願意接受該Offer (在這個DHCP Request 報文中攜帶有R上的DHCP Server 的標識—稱為Server Identifier,表示DHCP Client 只願意接受R上的Offer,R也是通過分析這個標識來確定DHCP Client 只願意接受自己的Offer。而該二層廣播域中其他的DHCP服務器也會收到DHCP Client 所發出的DHCP Request 報文,它們則通過分析這個標識來確定DHCP Client 已經拒絕接受自己的Offer)
  4. 確認階段:如果在提供階段所攜帶的IP地址能正常地分配給DHCP Client 使用的話,那麼R會以單播的方式給DHCP Client 發送一個DHCP Ack 報文,此時DHCP Client 獲取地址成功;但是如果因為一些原因,在提供階段所攜帶的IP地址不能分配給DHCP Client 的話,這時R則會給DHCP Client 發送一個DHCP Nak 報文,而當DHCP Client 收到R的DHCP Nak 報文後,則表示獲取IP地址失敗,需要重新進入到發現階段。

當DHCP Client 正常獲得IP地址後,如下圖:

「網絡安全」常見攻擊篇(22)——DHCP攻擊

從DHCP Server 獲取的IP地址有一個租約時間,DHCP協議規定租約時間缺省不少於1小時,通常情況下,租約時間缺省值為24小時。

在DHCP協議中規定,在缺省情況下,當DHCP Client 使用IP地址到達T1時(租約時間的1/2),DHCP Client會以單播的方式給R發送一個DHCP Request 報文(請求續租),當到達時間T2(租約時間的7/8,即租約時間的87.5%)之前,若DHCP Client 收到R的DHCP Ack報文,則續租成功,重新開始租約期的計時;若沒有收到,則DHCP Client 會在T2時刻再次以廣播的方式發送DHCP Request 報文,請求續租,這時如果DHCP Client 在租約時間到達之前收到R的DHCP Ack報文,則續租成功,重新開始租約期的計時,如果沒收到,則續租失敗,DHCP Client 不能繼續使用這個IP地址,需要重新從發現階段開始向DHCP服務器申請新的IP地址。

  • DHCP中繼
  1. DHCP中繼的使用場景
「網絡安全」常見攻擊篇(22)——DHCP攻擊

從前面DHCP的工作原理我們可以知道,DHCP Client 必須和DHCP Server 在同一個二層廣播域中,才能接收到彼此發送的DHCP報文,DHCP報文是無法跨越二層廣播域傳播的。這時,我們可以有兩種方法解決這個問題:

(1)、在網絡中的每個網段都設置一臺DHCP Server,但是這個方法代價較大,很不經濟,造成資源的很大浪費,所以現實中一般不推薦此方法

(2)、只設置一個DHCP Server,利用DHCP中繼技術DHCP Relay 來實現一個DHCP Server 同時為多個二層廣播域中的DHCP Client 服務,這樣既節省成本,又便於集中管理

2.DHCP中繼的工作原理

「網絡安全」常見攻擊篇(22)——DHCP攻擊

在DHCP中繼的工作原理中和前面的DHCP工作原理基本相同,只是中間DHCP Relay 負責DHCP Client 和DHCP Server 之間的DHCP報文的轉發,這裡要注意的是:DHCP Relay 與DHCP Client 之間是以廣播的方式進行交換DHCP報文的,而DHCP Relay 與DHCP Server 之間是以單播的方式來交換DHCP報文的。

DHCP服務器的防攻擊與防禦

DHCP服務器面臨的安全威脅:DHCP在設計上未充分考慮到安全因素,從而留下許多安全漏洞,使得DHCP很容易受到攻擊。在實際網絡中,針對DHCP攻擊的手段主要有以下三種:

  • DHCP餓死攻擊

1.攻擊原理

「網絡安全」常見攻擊篇(22)——DHCP攻擊

攻擊者持續大量地向DHCP服務器申請IP地址,直到耗盡DHCP服務器地址池的IP地址,使DHCP服務器無法再給正常的主機分配IP地址

在PC機給DHCP Server發送的DHCP Discover 報文中有一個CHADDR字段,該字段是由DHCP客戶端填寫的,用來表示客戶端的硬件地址(MAC地址),而DHCP Server 也是根據CHADDR字段來分配IP地址的,對於不同的CHADDR,DHCP Server會分配不同的IP地址,因為DHCP Server 無法識別CHADDR的合法性,攻擊者就利用這個漏洞,不斷的改變CHADDR字段的值,來冒充不同的用戶申請IP地址,使DHCP Server 中IP池枯竭,從而達到攻擊目的。

2.DHCP Snooping 技術解決DHCP 餓死攻擊

為了防止DHCP受到攻擊,就產生了一種DHCP Snooping的技術,但DHCP Snooping不是一種標準技術,還沒有統一的標準規範,所以不同品牌的網絡設備上實現DHCP Snooping也不盡相同。DHCP Snooping部署在交換機上就相當於在DHCP客戶端與DHCP服務器端之間構建了一道虛擬的防火牆。

「網絡安全」常見攻擊篇(22)——DHCP攻擊

我們前面講到DHCP餓死攻擊是攻擊者不斷改變CHADDR的字段來實現的,為了彌補這個漏洞,阻止餓死攻擊,我們在端口下配置DHCP Snooping技術,對DHCP Request報文的源MAC地址與CHADDR的字段進行檢查,如果一致則轉發報文,如果不一致則丟棄報文。

配置命令為,進入連接客戶端接口視圖,輸入命令dhcp snooping check dhcp-chaddr enable

如下圖:

「網絡安全」常見攻擊篇(22)——DHCP攻擊

但是還可能存在另一種餓死攻擊,就是攻擊者不斷改變CHADDR,同時改變源MAC,並讓CHADDR與源MAC地址相同,這樣也可以躲過源MAC地址與CHADDR的一致性檢查。

  • 仿冒DHCP Server攻擊

1.攻擊原理

「網絡安全」常見攻擊篇(22)——DHCP攻擊

當攻擊者私自安裝並運行DHCP Server 程序後,可以將自己偽裝成DHCP Server,這就是仿冒DHCP Server。它的工作原理與正常的DHCP Server 一模一樣,所以當PC機接收到來自DHCP Server 的DHCP報文時,無法區分是哪個DHCP Server 發送過來的,如果PC機第一個接收到的是來自仿冒DHCP Server 發送的DHCP報文,那麼仿冒DHCP Server 則會給PC機分配錯誤的IP地址參數,導致PC客戶端無法訪問網絡。

2.DHCP Snooping 防止仿冒DHCP Server 攻擊

「網絡安全」常見攻擊篇(22)——DHCP攻擊

在DHCP Snooping技術中,將交換機的端口分為兩種類型,信任端口(Trusted端口)和非信任端口(Untrusted端口),交換機所有端口默認都是Untrusted端口,我們將與合法DHCP Server 相連的端口配置為Trusted端口,這樣交換機從Trusted端口接收到的DHCP 報文後,會正常轉發,從而保證合法的DHCP Server能正常分配IP地址及其他網絡參數;而其他從Untrusted端口接收到的DHCP Server 的報文,交換機會直接丟棄,不再轉發,這樣可以有效地阻止仿冒的DHCP Server 分配假的IP地址及其他網絡參數。

配置命令如下:進入與DHCP Server 相連的接口視圖

[LSW2] int e0/0/2

[LSW2-E0/0/2] dhcp snooping trusted

如果恢復為Untrusted 端口,命令如下:

[LSW2-E0/0/2] undo dhcp snooping trusted

  • DHCP中間人攻擊

1.攻擊原理

「網絡安全」常見攻擊篇(22)——DHCP攻擊

攻擊者利用ARP機制,讓PC-A學習到IP-S與MAC-B的映射關係,讓DHCP Server 學習到IP-A與MAC-B的映射關係,如此一來,PC-A與DHCP Server之間交互的IP報文都要經過PC-B進行中轉。我們這裡要了解交換機在轉發數據包過程中,IP地址與MAC地址的變化過程,這個類似於MAC地址欺騙。由於PC1與DHCP Server之間的IP報文都會經過攻擊者PC,攻擊者就能很容易竊取到IP報文中的信息,進行篡改或其他的破壞行為,從而達到直接攻擊DHCP目的。

2.DHCP Snooping 防止DHCP中間人攻擊

「網絡安全」常見攻擊篇(22)——DHCP攻擊

DHCP中間人攻擊從原理上我們可以知道它其實是一種Snoofing IP/MAC攻擊(ARP欺騙),所以要防止DHCP中間人攻擊,就是要防止ARP欺騙。而運行DHCP Snooping的交換機會偵聽(Snooping)往來於用戶與DHCP Server之間的信息,並從中收集用戶的MAC地址(DHCP消息中的CHADDR字段中的值)、用戶的IP地址(DHCP Server分配給相應的CHADDR的IP地址)、IP地址租用期等等信息,將它們集中存放在DHCP Snooping 綁定表中,運行了DHCP Snooping的交換機會建立並動態維護DHCP Snooping綁定表。

如上圖所示,DHCP Server給PC-A 、PC-B分別分配IP-A、IP-B,那麼IP-A與MAC-A就形成綁定關係,IP-B與MAC-B形成綁定關係,並存入DHCP Snooping綁定表中。這時攻擊者想讓Server 學習到IP-A與MAC-B的映射關係,會發送不斷髮送ARP請求報文(ARP報文中源IP地址填為IP-A,源MAC地址填為MAC-B)。交換機接收到這個ARP報文後,會檢查它的源IP地址和源MAC地址,發現與DHCP Snooping綁定表中的條目不匹配,就丟棄該報文,這樣可以有效地防止Spoofing IP/MAC攻擊。

配置命令為:

[LSW2] arp dhcp-snooping-detect enable

  • DHCP Snooping 與IPSG技術的聯動
「網絡安全」常見攻擊篇(22)——DHCP攻擊

針對網絡中經常存在對源IP地址進行欺騙的攻擊行為(攻擊者仿冒合法用戶的IP地址來向服務器發送IP報文),我們可以使用IPSG(IP Source Guard)技術來防範這種攻擊。在交換機使用IPSG功能後,會對進入交換機端口的報文進行合法性的檢查,然後對報文進行過濾(檢查合法,則轉發;檢查非法,則丟棄)。

DHCP Snooping技術也可以與IPSG技術進行聯動,即對於進入交換機端口的報文進行DHCP Snooping綁定表的匹配檢查,如果報文的信息與綁定表一致,則允許通過,如果不一致則丟棄該報文。

報文的檢查項可以是源IP地址、源MAC地址、Vlan和物理端口號等若干組合。如在交換機的端口視圖下可支持IP+MAC、IP+Vlan、IP+MAC+Vlan等組合檢查,在交換機的Vlan視圖下可支持:IP+MAC、IP+物理端口號、IP+MAC+物理端口號等組合檢查。

配置命令如下:

在交換機的接口視圖或VLan視圖下輸入命令:ip source check user-bind enable。

總結

1、熟悉DHCP服務器的工作原理,DHCP服務器工作過程中的報文的作用可以讓我們對於攻擊DHCP服務器的手段能更好的理解;

2、在防範DHCP和各種攻擊手段中所用到的技術,其工作原理和工作場景,我們也要非常熟悉。



上一篇:

下篇預告:「網絡安全」常見攻擊篇(23)——ARP攻擊 敬請關注


分享到:


相關文章: