湯榮秀
(天津工業職業學院,天津 300400)
漏洞靶場是目前每個安全人員以及想學習信息安全的人必備的知識,但目前商業化產品居多,還有一些類似dvwa、sqli-labs這類的開源項目,但是其漏洞環境比較固定,使用完一次后就失去其作用。且搭建的成本過高,每次啟動的流程會比較繁瑣,甚至很多場景是不滿足的,之前關于漏洞環境鏡像使用多的是vulhub,但是作為企業、高校以及相關的培訓,單純的漏洞環境不一定能滿足使用的需求,所以我們基于當下的一些靶場項目做了小小的改進來符合我們的一些需求,比如增加flag的形式,來滿足一些考核與驗證的需求,可以對我們內部人員能力進行考核,于是Vulfocus就誕生了[1]。
Cardinal是由Vidar-Team開發的AWD比賽平臺,使用Go編寫。本程序可以作為CTF線下比賽平臺,亦可用于團隊內部AWD模擬練習。
Cardinal這個名字來源于作品《刀劍神域》中的Cardinal System游戲系統,小說中描述為可在無需任何人工外界輸入就可以獨立完成對玩家的監控、維護游戲數據平衡、自動產生新的游戲任務、進行自我修復與完善[2]。
這也是我們對于AWD比賽平臺的愿景,我們希望能有一個監測管理選手靶機動態,準確計算得分,自動更新靶機狀態,并在發生異常時能及時反饋甚至自我調節修復的平臺。因此,我將這個項目命名為Cardinal。
Docker是使用Google公司推出的Go語言進行開發實現,基于Linux內核的CGroup、Namespace以及AUFS技術,對進程進行封裝隔離,屬于操作系統層面的虛擬化技術。由于隔離的進程獨立于宿主和其他隔離的進程,因此也被稱為容器[3]。
Docker的三個概念如下。
(1)鏡像:鏡像是創建Docker容器的基礎,Docker鏡像類似于虛擬機鏡像,可以將它理解為一個面向Docker引擎的只讀模塊,包含文件系統。
(2)容器:容器是由鏡像創建出來,一個鏡像可以創建出多個相同的容器實例,每個容器為獨立的應用進程。容器可以進行編輯,重新打包為鏡像(創建鏡像的一種方式,但一般不這么做)。
(3)倉庫:存在鏡像的倉庫,有遠程倉庫、有本地倉庫,如同git。
官網的鏡像倉庫:https://hub.docker.com
阿里云鏡像倉庫:https://cr.console.aliyun.com/cn-hangzhou/images
與傳統虛擬機和Docker容器技術比較,虛擬機不僅包括應用,也包括操作系統。操作系統一般要占用幾個GB的磁盤空間,而Docker容器共用宿主的內核,只需按照應用和必要的類庫,非常輕量。
如果在測試服務器上使用Docker,會極大節省應景資源,簡單企業成本。Docker支持鏡像構建和鏡像部署,有類似Github的Docker hub的鏡像開源倉庫(hub.docker.com),這上面有十萬多種免費鏡像資源,目標國內也有很大Docker鏡像網站。使用Docker容器,只需獲取鏡像,一鍵安裝即可。同時,也可以將常用的系統軟件集成構建成鏡像后部署到其他容器。支持測試環境和線上環境使用Docker容器技術進行軟件的構建發布。
攻防兼備AWD模式是一種綜合考核參賽團隊攻擊、防御技術能力、即時策略的比賽模式。在攻防模式中,參賽隊伍分別防守同樣配置的虛擬靶機,并在有限的博弈時間內,找到其他戰隊的薄弱環節進行攻擊,同時要對自己的靶機環境進行加固防守[4]。
比賽采用零和積分方式,即每個戰隊都擁有相同的起始分數,挖掘網絡服務漏洞并攻擊對手服務取得flag獲得積分,被攻擊方扣減相應分數;修補自身服務漏洞進行防御來避免丟分,最終以得分高低直接分出勝負。因為AWD競賽方式,戰隊得分情況對技術水平高低的反饋非常直接,對抗性強,而且選手會在競賽過程中衍生出各種各樣的競技技巧及戰略戰術,經驗豐富和技術嫻熟的選手可以以壓倒性的技術收割分數,在CTF選手間擁有較高的口碑。
Vulhub是一個基于Docker和Docker-compose的漏洞環境集合,進入對應目錄并執行一條語句即可啟動一個全新的漏洞環境,讓漏洞復現變得更加簡單,讓安全研究者更加專注于漏洞原理本身。官網:https://vulhub.org。
Vulfocus的特性如下。
①啟動:一鍵漏洞環境啟動,方便簡單;
②自帶Flag功能:每次啟動flag都會自動更新,明確漏洞是否利用成功;
③帶有計分功能也可適用于相關安全人員能力的考核;
④兼容Vulhub、Vulapps 中所有漏洞鏡像。
官方也有Docker鏡像版本的安裝,本次安裝的方式是使用官方提供的Docker鏡像進行安裝,本次使用的服務器是centos 7。
(1)掛載鏡像
mkdir /mnt/cdrom:創建掛載點;
mount /dev/cdrom /mnt/cdrom:鏡像掛載。
注意:這個必須已連接,否則鏡像掛載失敗。
(2)配置yum源
進入yum配置文件目錄 cd /etc/yum.repos.d/;
修改配置文件vim CentOS-Media.repo。
Docker的安裝步驟包括:
(1)查看linux的版本;
(2)安裝所需要的安裝包;
(3)設置yum源;
(4)查看倉庫中的docker版本;
(5)驗證docker是否安裝成功,如圖1所示。
(1)拉取Vulfocus最新的鏡像;
docker pull vulfocus/vulfocus:latest
注意:這里鏡像拉取不上重新啟動一下docker環境;
(2)運行vulfocus;
(3)在宿主機瀏覽器測試:輸入docker服務器地址(centos7);
在centos測試:URL輸入回環地址或服務器地址都可以;容器已經通過8081端口映射運行,訪問IP+端口。
平臺初始的管理員賬戶和密碼為admin/admin,管理員可以對平臺漏洞環境、用戶等進行操作。所有的漏洞都是Docker鏡像,在Docker hub上有一個官方的開源的漏洞鏡像庫。https://hub.docker.com/u/vulshare。在管理員端,鏡像管理界面可以添加剛剛下載的鏡像,選中鏡像以后可以一鍵添加,此時容器已經被部署。
管理同時還可以進行普通用戶的信息管理、靶場的鏡像管理、操作日志管理等。靶場的使用:首頁注冊以后進入,可以看到已經添加的漏洞環境,這里以phpimapcve_2018_19518為例。點擊“啟動”稍等片刻以后環境啟動,靶場自動分配地址,訪問提供地址后即可看到靶場環境,如圖1所示。

圖1 靶場界面
通過對漏洞的學習,利用此漏洞拿到flag進行提交,完成漏洞學習。
Cardinal由Vidar-Team團隊開發,接受并允許各大高校、安全團隊、技術愛好者使用Cardinal作為比賽訓練平臺或舉辦內部訓練賽[5]。
4.5.1 GO 語言環境部署

4.5.2 初次搭建Cardinal
(1)下載網址:https://github.com/vidar-team/Cardinal/releases
適用于您目標機器的架構程序,運行即可。
(2)解壓程序包:$tar -zxvf Cardinal_VERSION_OS_ARCH.tar.gz
(3)賦予執行權限:$chmod +x ./Cardinal
(4)運行:$./Cardinal
初次運行需要配置/conf/Cardinal.toml 配置文件。
(5)此時再次啟動:$./Cardinal
訪問目標服務器8082端口,如圖2所示。

圖2 平臺界面啟動
隨著國家網絡安全教育的大力發展,相信一定會有越來越多的人投入學習網絡安全的隊伍中。在目前的發展趨勢下,單一的課本技能已經不能解決日益復雜的網絡安全問題,需要一個可以貼近實戰的平臺對學生所學的知識進行整理和實踐。網絡安全學習平臺的設計便是以此為初衷,它的設計在于提高學生對于網絡安全的學習熱情,通過各類型靶場訓練、CTF比賽以便更好地選拔網絡安全人才,對網絡安全人才的培養非常有意義。