BGP路徑劫持攻擊

1、概述

斯坦福大學計算機網絡CS144課程實驗:基於Mininet實現BGP路徑劫持攻擊演示。html

一、1 BGP概述

首先互聯網總體上來講是一個分佈式的網絡,並無整個網絡的中心。可是整個互聯網其實是由成百上千個不一樣的ISP的子網絡組成的。node

這些子網絡互相鏈接,經過BGP協議告訴對方本身子網絡裏都包括哪些IP地址段,本身的AS編號(AS Number)以及一些其餘的信息。python

這裏又要扯到互聯網的IP地址分配方式。互聯網的IP地址分配是中心化的,ICANN這個機構把IP地址大段分給Regional Internet Registries(RIR),區域互聯網註冊管理機構。RIR再把IP地址段細分後分給ISP們。linux

大部分狀況下,AS Number和分給該AS什麼IP段是沒有任何關係的。git

下面問題來了,BGP協議裏雖然有一些簡單的安全認證的部分,可是對於兩個已經成功創建BGP鏈接的AS來講,基本會無條件的相信對方AS所傳來的信息,包括對方聲稱所擁有的IP地址範圍。github

對於ISP分配給大公司客戶的地址段,ISP每每會對BGP作一些有限的過濾。可是對於大型ISP來講,由於對方所擁有的IP地址段可能過於分散,因此通常是按最大範圍設置BGP prefix 地址過濾。好比假設ISP A擁有地址段20.1.0.0/1620.200.0.0/16,那麼ISP B可能會設置過濾對方傳來的20.0.0.0/8之外的路由。web

固然這種狀況比較極端,通常ISP分配到的IP地址段都是連續的,可是基本也都有可操做的空間,能夠把數百到幾萬個不屬於本身的IP合法加到本身的BGP信息裏。shell

多數ISP甚至都沒有把本身自己的IP段過濾掉,也就是說若是其餘AS聲稱擁有該ISP本身的IP段,這個ISPBGP路由也會相信。數據庫

爲了解決這個問題,有人發明了一個叫Internet Routing Registry (IRR)的東西,至關於一個開放式的數據庫,像DNS 根服務器同樣採用分佈式鏡像服務器放在世界各地。vim

ISP能夠向IRR註冊本身的IP地址段和路由策略,其餘ISP就能夠查詢IRR從而對本身的BGP路由器作過濾。這樣作的確防止了一些因爲無心而致使的路由劫持。

可是IRR這個東西自己也是不靠譜的。IRR裏存了大約10萬條記錄,若是所有加載進路由器的話是個不小的負擔。另外IRR基本沒人管,任何人能夠能夠往裏面註冊任何路由記錄。

因此在大部分ISP都無條件相信IRR的時代,IRR也帶來了很多的麻煩。

最簡單的方式就是經過Whois找到目標IP段的 管理員郵箱,若是該郵箱或者郵箱所在的域名已通過期,那麼就本身註冊一個,而後就能夠隨便經過郵件向IRR修改記錄了。

或者直接經過BGP路由向ISP發送,反正你們都不care……

邊界網關協議 via百度百科

一、2 實驗原理

利用BGP進行特殊攻擊,使用假裝的AS僞造一個更短的路徑到前綴P,其餘的AS要路由到前綴P時就會選擇這個更短的路徑,受到感染的AS會把該攻擊信息繼續向其餘的AS傳播,使得更多的AS受到感染,從而形成BGP劫持攻擊。

一、3 相關工具簡介:Mininet

Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine (VM, cloud or native), in seconds, with a single command:

Because you can easily interact with your network using the Mininet CLI (and API), customize it, share it with others, or deploy it on real hardware, Mininet is useful for development, teaching, and research.

Mininet is also a great way to develop, share, and experiment with OpenFlow and Software-Defined Networking systems.

Mininet is actively developed and supported, and is released under a permissive BSD Open Source license.

Mininet: An Instant Virtual Network on your Laptop (or other PC) - Mininet http://mininet.org/

一、4 參考資料:

網絡與信息安全學報, 2016, 2(8): 54-61 BGP路由泄露研究

http://www.infocomm-journal.com/cjnis/article/2016/2096-109X/2096-109X-2-8-00054.shtml

BlackHat議題分析:淺析BGP劫持利用 - FreeBuf.COM | 關注黑客與極客

http://www.freebuf.com/articles/network/75305.html

BGP Path Hijacking Attack Demo · mininet/mininet Wiki · GitHub

https://github.com/mininet/mininet/wiki/BGP-Path-Hijacking-Attack-Demo

加密貨幣攻擊之比特幣:已成爲可能?(含演示視頻) - FreeBuf.COM | 關注黑客與極客

http://www.freebuf.com/news/155287.html

2、拓撲構建

二、1 拓撲和網絡實現原理

咱們在mininet中進行拓撲構建,咱們須要構建以下拓撲:

拓撲中涉及具體的主機在上圖中不作標識。

包含4個ASAS1AS2AS3AS4流氓AS)。每一個AS都有它的路由守護進程(R1,R2,R3,R4

守護路由的鏈接狀況:

R1R二、R4是對等的

R2R一、R3是對等的

R3R4是對等的

BGP網絡構建腳本:jvimal / bgp — Bitbucket https://bitbucket.org/jvimal/bgp(實驗環境已經下載好實驗所需的腳本)

圖片來源:合天網安實驗室

網絡實現原理:

1)使用開源組件Quagga爲每一個AS節點建立容器,每一個容器都有一個路由守護進程。運行bgpd來承載BGP,經過zebra來配置linux內核中的路由轉發規則。

2)每一個AS的配置存儲在conf目錄中(實驗文件目錄中)

3)Mininet使用了Linux的網絡命名空間,因此每一個AS容器的路由表都是獨立的,也就是說改變AS1的路由表不會影響AS2的路由表。

4)AS之間使用獨立的網口經過靜態路由表項進行相連。R1的IP地址是9.0.0.1R2的是9.0.0.2,其餘相似。

二、2 構建BGP網絡

打開Shell終端

圖片來源:合天網安實驗室

使用寫好的Python腳本構建所需的網絡環境,命令以下:

cd ~/bgp
sudo python bgp.py
複製代碼

等待構建完成

圖片來源:合天網安實驗室
當看到 mininet> 提示符 就表示網絡構建完成了

二、3 mininet基本操做

查看網絡信息

查看所有節點:nodes 命令

圖片來源:合天網安實驗室
查看鏈路信息: net

圖片來源:合天網安實驗室
若是想要對某個節點的虛擬機單獨進行命令操做,也十分簡單,格式爲 node cmd。例如查看 R1上的網絡信息,只須要在執行的 ifconfig命令前加上 R1主機標誌便可,好比 R1 ifconfig

圖片來源:合天網安實驗室
整個實驗過程請保持 mininet在前臺運行

接下來打開另一個shell窗口完成接下來的操做。

在會話窗口上右鍵選擇New Window新開一個shell會話窗口

圖片來源:合天網安實驗室

3、BGP路徑劫持攻擊驗證

三、1 正常狀況下的路由狀況

1.鏈接到AS1的路由器R1

在新開的shell會話窗口中執行以下命令:

cd ~/bgp/
./connect.sh
複製代碼

圖片來源:合天網安實驗室

輸入密碼 en 回車(注意這裏的密碼不會回顯)

輸入 en進入路由器特權模式

並再次輸入密碼 : en 回車

圖片來源:合天網安實驗室
2.查看 AS1的路由表

命令以下:

sh ip bgp (show ip bgp的簡寫)
複製代碼

圖片來源:合天網安實驗室
能夠看到,在 AS1上,到達 13.0.0.0/8的所選 AS路徑是 2 3(即經過 AS2AS3)。 3.在 AS3中開啓一個 Default Web站點,並模擬從主機 h1-1訪問這個站點

再新開一個Shell會話窗口

圖片來源:合天網安實驗室
執行以下命令:

cd ~/bgp/
./website.sh
複製代碼

圖片來源:合天網安實驗室
能夠看到,如今 h1-1主機訪問的是 AS3中的 Default Web Server

三、2 BGP路徑劫持攻擊驗證

4.啓動流氓AS進行路徑劫持

保持上面的Shell會話窗口,新開一個窗口,執行以下命令

cd ~/bgp/
./start_rogue.sh
複製代碼

圖片來源:合天網安實驗室

這個流氓AS鏈接到AS1並通知它一條路由到13.0.0.0/8的更短的路徑(即AS1AS4的路徑),這樣AS1就會的選擇這個更短的路徑。

5.觀察網絡訪問和AS1的路由表變化

切換到模擬h1-1主機訪問AS3站點的Shell窗口

圖片來源:合天網安實驗室

能夠看到,本來訪問是 Default Web Server,如今已經變成了 Attacker web server 了。

再來看看AS1的路由表

使用 ./connect.sh鏈接到R1路由器,按提示輸入密碼 en

而後使用 sh ip bgp 查看路由表

圖片來源:合天網安實驗室

咱們在AS1的路由表中能夠看出AS4的選擇路徑和AS3的路徑。因爲經過AS4到達13.0.0.0/8AS路徑長度較短,因此R1選擇AS4做爲下一跳,而再也不選擇AS2AS3再到13.0.0.0/8。 6.關閉流氓AS

./stop_rogue.sh
複製代碼

關閉以後,你會發現路由收斂很是快,訪問又正常了

圖片來源:合天網安實驗室

圖片來源:合天網安實驗室
7.中止網絡

切換到mininet> 會話窗口

輸入 exit 便可結束

圖片來源:合天網安實驗室

BGP路徑劫持攻擊實驗完成。

戳下面的連接便可進行在線體驗 BGP路徑劫持攻擊

👇👇👇👇👇

BGP路徑劫持攻擊

4、說明

本文由合天網安實驗室原創,轉載請註明來源。

關於合天網安實驗室

合天網安實驗室(www.hetianlab.com)-國內領先的實操型網絡安全在線教育平臺 真實環境,在線實操學網絡安全 ; 實驗內容涵蓋:系統安全,軟件安全,網絡安全,Web安全,移動安全,CTF,取證分析,滲透測試,網安意識教育等。

(本文來源:合天網安實驗室--領先的實操型網絡安全在線教育平臺)

相關文章
相關標籤/搜索