◆漆雪西 陳長瑜 李維
基于Docker的ctf賽題設計
◆漆雪西 陳長瑜 李維
(四川傳媒學院 四川 611745)
隨著網絡安全在國內的高度重視,ctf大賽在近幾年也逐漸發展起來。CTF作為一項網絡安全賽事比拼,能很好地展現選手的技術水平,但是ctf中WEB題型往往需要滲透網站取得權限,搭建一個靶機需要虛擬機作為支撐,一個虛擬機極其浪費資源,若所有web題目部署在一個靶機上,選手解出一題就可拿到所有的flag,對于比賽極其不公平。Docker容器具有獨立封裝的特點,而且占用資源小,非常適合部署輕量級靶機,提高了ctf大賽的效率。
CTF;靶機;Docker
近年來,網絡安全引起了國家的高度重視,網絡安全大賽也如雨后春筍越來越多。國內的網絡安全大賽以ctf為主,在比賽中ctf平臺和web類賽題往往搭建在同一個平臺或者服務器上,web類賽題考驗選手的滲透能力,需要選手拿下web服務器的權限。選手攻克一道題后可以順勢進入平臺后端查看所有賽題答案,對比賽極其不公平,web賽題獨立設置虛擬機,又會對資源造成極大的浪費。對此,本文提出基于docker的ctf賽題設計,將每個web賽題封裝成獨立的docker容器,實現動態下發,即節約了資源,又能防止選手作弊。
Docker是一個在2013年開源的應用容器引擎,它基于go語言編寫。Docker的容器技術可以輕松地為任何應用創建一個輕量級、可移植,自給自足的容器。簡單理解,使用者可以將Docker類比為集裝箱,通過集裝箱標準化托管各種貨物,且集裝箱與集裝箱互不影響。所以開發者能夠打包應用以及其依賴關系于此容器里,該容器再運送到Linux機器或者Windows機器運行,可實現虛擬化。而且容器還可以進行版本管理、復制、分享與修改,符合軟件的彈性架構。
一個完整組成的Docker包括了DockerClient客戶端、Docker Daemon守護進程、Docker Image鏡像與DockerContainer容器這四個部分。DockerClient客戶端使用Docker命令或者是通過其他工具調用Docker APL。Docker Daemon守護進程運行Docker容器。Docker Image鏡像可以理解為創建實例而用的模板。DockerContainer容器是從鏡像生成的對外提供服務的一個或者是一組服務。
總而言之,Docker是一個開放平臺,可以使開發者在松散、隔離的容器環境中構建鏡像、交付與運行分布樣式的應用程序。
CTF是英文Capture The Flag的縮寫,直譯為奪旗賽,是歸于網絡安全領域中的一種關于信息安全的競賽。它起源于1996年的全球黑客大會,是網絡安全技術人員進行技術競技的比賽。它的比賽流程可簡單歸納為,參賽團體通過分析程序、漏洞挖掘、攻擊防守等形式,迅速地從主辦方給出的題干內容、比賽環境中得出有關的字符串或是其他數據,并在規定時長內提交答案,奪得分數。為了更好地描述這種比賽,我們把得出的答案稱為Flag,選手們的答題過程則稱為奪旗。
CTF現在是被國內外網絡安全大賽廣泛采用的競技方式。其比賽形式與傳統考試類似,主辦方給每一個參賽團隊準備的題目都是相同的。試題涉獵廣泛,有:密碼學、web漏洞、ACM編程、網絡和取證等。比賽特點是競速,誰的答題速度快且準確,誰正確作答的題目多,誰就能奪得高分。其比賽形式簡單,競賽過程公開透明,主辦賽事比較容易。但隨著CTF 比賽在全球各地的不斷舉行,傳統CTF賽題問題及不足漸漸暴露出來。CTF平臺和靶機往往都在一個服務器或者多個服務器上,其中web賽題需要選手滲透web服務器權限拿到flag,但是一場ctf比賽往往有多個web賽題,常見web賽題的部署方式有兩種,第一種,將所有賽題放在一個服務器上,不同的web賽題使用不同的端口,這種部署方式較為節約資源,但是所有web賽題在一個服務器,選手只需要滲透得到其中一道題的答案,就可以拿到服務器的權限,查看所有賽題的答案,若ctf平臺與靶機在一個服務器,選手甚至可以直接進入ctf后臺查看答案,對賽事極其不公平。第二種方式,每個賽題放在不同的靶機,常見的方式就是使用虛擬機,使用虛擬機部署賽題可以避免選手滲透一題得到所有題目的答案,但是對資源極其浪費。
Docker可以完成虛擬機可以完成的所有功能,并且Vm所有虛擬機在創建的時候回虛擬獨立的系統內核,而docker所有的虛擬機共用主機的系統內核,節約了虛擬環境系統部署的資源,將更好的性能提供給了應用,所以docker占用資源小,比虛擬機開啟更快,更方便。和傳統虛擬機相比,Docker 有很多非常大的優勢。首先是輕量,Docker 占用的內存和磁盤空間比虛擬機少得多,普通主機上同時運行幾十個甚至上百個 Docker 容器無壓力;其次是啟動速度特別快,Docker 容器啟動速度基本都屬于秒級。因此,用 Docker 容器可以代替虛擬機技術用于制作大部分靶機獲得更好性能
Docker鏡像的制作可以使用開源已公布的鏡像,也可以自己制作。以dvwa靶場為例,使用命令docker search dvwa就可以搜索dvwa相關的鏡像。然后使用pull命令就可以下載搭建。
自己制作web賽題鏡像,將web源碼打包,編寫dockerfile文件,使用dockerfile命令創建鏡像即可。選手做題時,可使用下發docker命令,如圖1所示。動態下發docker可實現資源的高度利用,每個賽題各自獨立,防止選手作弊。

圖1 下發docker選項圖
Docker與VMware相比,不論是啟動速度還是占用的空間,docker都具有極大的優勢,將docker使用在ctf比賽中,不僅能節約資源,也能從其他角度保證比賽公平性。
[1]吳棟淦.Docker容器技術在網絡安全實驗室的應用研究[J].韶關學院學報,2020,41(06):23-28.
[2]馮一凡,朱文龍,楊雙雙.基于Docker的分布式網絡安全攻防平臺設計與實現[J].計算機產品與流通,2020(03):47.