天天看點

BGP劫持原理及如何防禦

網際網路跟人類社會一樣,都通過特定的規則和法律來確定社會的正常運作。BGP協定就是網際網路中的“規則”之一。BGP用于在不同的自治系統(AS)之間交換路由資訊,當兩個AS需要交換路由資訊時,每個AS都必須指定一個運作BGP的節點,來代表AS與其他的AS交換路由資訊。

BGP劫持原理及如何防禦

但這些規則可能會被人為或意外打破。破壞 Internet 規則的最常見方式之一是 BGP 路由器通告不屬于其自己的 AS 的字首,也就是說,BGP路由器非法宣布特定字首,進而将流量從其預期目的地重定向到它自己的 AS。這稱為 BGP 路由劫持,也稱為字首劫持、路由劫持和 IP 劫持。

2018 年 4 月,惡意黑客公布了一些屬于 Amazon Web Services 的 IP 字首,一些試圖登入加密貨币網站的使用者被重定向到黑客所創造的虛假網頁之中,導緻了超過 160,000 美元的損失。

除了惡意攻擊,BGP 劫持的意外執行個體也可能産生嚴重後果。2008 年,巴基斯坦的一家 ISP 試圖通過更新其 BGP 路由來審查 YouTube,由于在審查過程中配置錯誤,整個網際網路中的YouTube 流量路全都輸送到了巴基斯坦 ISP,導緻了全球 YouTube 長達數小時的中斷。

在了解 BGP 劫持之前,我們需要先掌握一些BGP的基礎知識 。

BGP劫持之是以非常常見,很大一部分原因是因為BGP的設計者并未考慮到BGP劫持的可能性,并且預設所有 BGP “說話者”都在說真話。如果想要了解如何減輕這種風險,首先要了解 BGP 字首通告和 BGP 劫持的工作原理。

BGP 如何通告字首?

AS 由多個路由器組成,并在其邊界内包含特定的字首或路由,向相鄰的 AS 通告。BGP 路由器在整個 Internet 中傳播這些字首,并通過各種 AS 維護到該目的地的路徑,每個 AS 負責向其鄰居宣布它擁有并包含在其中的字首,BGP 路由器中維護的 BGP 表,其中包含為到達該特定字首必須經過的 AS 路徑。

例如下圖:

BGP劫持原理及如何防禦

當AS 100需要與AS170建立聯系時,首先需要将自己的字首 195.25.0.0/23 通告給相鄰的 AS。這樣,當該資訊到達 AS 170 時,路由表中的資訊将包括:

字首:195.25.0.0/23

AS_PATH: AS100 AS190

在這個過程中,如果AS 170 收到來自具有不同路徑的此字首,則會優先選擇最短路徑,即綠色虛線建立聯系。(如紅色虛線路徑更長,穿越的 AS 數量更多,假設之前所有的 BGP 屬性都保持不變,會通過最短路徑,也就是綠色路徑進行傳播。)

在 AS 邊緣與其他 AS 中的 BGP 路由器形成對等互連的是外部 BGP 或 eBGP 路由器,eBGP 路由器負責向其他 AS 通告字首。

當“敵對”AS 宣布它實際上不受控制的IP字首的路由時,就會發生 BGP 路由劫持。例如,在下圖中,AS 140 非法通告與 AS 100 相同的字首:

BGP劫持原理及如何防禦

AS 140 中的惡意劫持者正在宣傳不屬于自己的 AS 的字首,所有其他 AS 将收到兩個具有相同字首的不同通告,後續的選擇将取決于 BGP 屬性。

是以,AS_PATH 長度屬性在 BGP 劫持中的具有非常重要的作用,假設所有先前的屬性保持不變,将安裝最短 AS_PATH 的路由。如果 AS_PATH 相等,則由其他屬性決定,例如最舊的路徑或路由器 ID,這會導緻路由的結果難以預測。在上圖中,隻有 AS 190 可以確定正确路由到 195.25.0.0/23 字首。

此外,劫持者可以執行所謂的 AS_PATH 僞造,其中對目的地的通告 AS_PATH 進行修改,以便發往相關路由的流量将通過本地 AS。在這些情況下,合法 AS 包含在 AS_PATH 中,以便在将流量引導至非法 AS 時更難檢測到此類劫持。

那麼BGP劫持會造成什麼後果,劫機者又為什麼要劫持呢?

BGP劫持可能導緻網際網路流量出錯,被監控或攔截,被“黑洞”,或者作為中間人攻擊的一部分将流量導向虛假網站。此外,垃圾郵件發送者可以使用BGP劫持或實施BGP劫持的AS網絡,以欺騙合法IP以進行垃圾郵件。

另外,攻擊者可能執行 BGP 路由劫持的原因包括:

  • 拒絕對特定線上服務的服務。
  • 将流量重定向到僞造網頁,以實作憑據、信用卡号和其他機密資訊的網絡釣魚。
  • 重定向流量以壓倒某些服務。
  • 為了破壞而破壞,進行無差别攻擊。

BGP劫持是對 Internet 上正确路由操作的一個非常真實的潛在威脅。是以,采用适當的機制和配置來防止此類攻擊和事故非常重要。然而,我們并不能直接避免BGP劫持的發生,除了持續監控網際網路流量如何路由之外,使用者和網絡可以做很少的事情來防止BGP劫持。

IP段字首過濾

大多數網絡應該隻在必要時接受IP段字首聲明,并且隻應将其IP字首聲明到某些網絡,而不是整個Internet。這樣做有助于防止意外的路由劫持,并可能使AS不接受僞造的IP字首聲明; 但是,這在實踐中很難實施。

BGP劫持檢測

劫持檢測可以采取多種形式。基線性能的變化,例如更大的延遲、錯誤的流量或性能的普遍下降是可能表明某種形式的劫持的初步迹象。此外,監控廣告以及記錄路線的可用性和停機時間是發現劫持的重要方面。

更複雜的系統還可以分析來自鄰居的公告 AS 以檢視被劫持的字首是否包含在公告中,可以識别字首不比對,并使用路徑分析來確定正确的路由。