基于Docker的ctf赛题设计
2021-04-20漆雪西陈长瑜李维
◆漆雪西 陈长瑜 李维
基于Docker的ctf赛题设计
◆漆雪西 陈长瑜 李维
(四川传媒学院 四川 611745)
随着网络安全在国内的高度重视,ctf大赛在近几年也逐渐发展起来。CTF作为一项网络安全赛事比拼,能很好地展现选手的技术水平,但是ctf中WEB题型往往需要渗透网站取得权限,搭建一个靶机需要虚拟机作为支撑,一个虚拟机极其浪费资源,若所有web题目部署在一个靶机上,选手解出一题就可拿到所有的flag,对于比赛极其不公平。Docker容器具有独立封装的特点,而且占用资源小,非常适合部署轻量级靶机,提高了ctf大赛的效率。
CTF;靶机;Docker
近年来,网络安全引起了国家的高度重视,网络安全大赛也如雨后春笋越来越多。国内的网络安全大赛以ctf为主,在比赛中ctf平台和web类赛题往往搭建在同一个平台或者服务器上,web类赛题考验选手的渗透能力,需要选手拿下web服务器的权限。选手攻克一道题后可以顺势进入平台后端查看所有赛题答案,对比赛极其不公平,web赛题独立设置虚拟机,又会对资源造成极大的浪费。对此,本文提出基于docker的ctf赛题设计,将每个web赛题封装成独立的docker容器,实现动态下发,即节约了资源,又能防止选手作弊。
1 Docker与ctf
1.1 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是一个开放平台,可以使开发者在松散、隔离的容器环境中构建镜像、交付与运行分布样式的应用程序。
1.2 CTF
CTF是英文Capture The Flag的缩写,直译为夺旗赛,是归于网络安全领域中的一种关于信息安全的竞赛。它起源于1996年的全球黑客大会,是网络安全技术人员进行技术竞技的比赛。它的比赛流程可简单归纳为,参赛团体通过分析程序、漏洞挖掘、攻击防守等形式,迅速地从主办方给出的题干内容、比赛环境中得出有关的字符串或是其他数据,并在规定时长内提交答案,夺得分数。为了更好地描述这种比赛,我们把得出的答案称为Flag,选手们的答题过程则称为夺旗。
2 传统ctf赛题缺陷
CTF现在是被国内外网络安全大赛广泛采用的竞技方式。其比赛形式与传统考试类似,主办方给每一个参赛团队准备的题目都是相同的。试题涉猎广泛,有:密码学、web漏洞、ACM编程、网络和取证等。比赛特点是竞速,谁的答题速度快且准确,谁正确作答的题目多,谁就能夺得高分。其比赛形式简单,竞赛过程公开透明,主办赛事比较容易。但随着CTF 比赛在全球各地的不断举行,传统CTF赛题问题及不足渐渐暴露出来。CTF平台和靶机往往都在一个服务器或者多个服务器上,其中web赛题需要选手渗透web服务器权限拿到flag,但是一场ctf比赛往往有多个web赛题,常见web赛题的部署方式有两种,第一种,将所有赛题放在一个服务器上,不同的web赛题使用不同的端口,这种部署方式较为节约资源,但是所有web赛题在一个服务器,选手只需要渗透得到其中一道题的答案,就可以拿到服务器的权限,查看所有赛题的答案,若ctf平台与靶机在一个服务器,选手甚至可以直接进入ctf后台查看答案,对赛事极其不公平。第二种方式,每个赛题放在不同的靶机,常见的方式就是使用虚拟机,使用虚拟机部署赛题可以避免选手渗透一题得到所有题目的答案,但是对资源极其浪费。
3 Docker在ctf中的应用
3.1 Docker优势
Docker可以完成虚拟机可以完成的所有功能,并且Vm所有虚拟机在创建的时候回虚拟独立的系统内核,而docker所有的虚拟机共用主机的系统内核,节约了虚拟环境系统部署的资源,将更好的性能提供给了应用,所以docker占用资源小,比虚拟机开启更快,更方便。和传统虚拟机相比,Docker 有很多非常大的优势。首先是轻量,Docker 占用的内存和磁盘空间比虚拟机少得多,普通主机上同时运行几十个甚至上百个 Docker 容器无压力;其次是启动速度特别快,Docker 容器启动速度基本都属于秒级。因此,用 Docker 容器可以代替虚拟机技术用于制作大部分靶机获得更好性能
3.2 Docker靶机创建
Docker镜像的制作可以使用开源已公布的镜像,也可以自己制作。以dvwa靶场为例,使用命令docker search dvwa就可以搜索dvwa相关的镜像。然后使用pull命令就可以下载搭建。
自己制作web赛题镜像,将web源码打包,编写dockerfile文件,使用dockerfile命令创建镜像即可。选手做题时,可使用下发docker命令,如图1所示。动态下发docker可实现资源的高度利用,每个赛题各自独立,防止选手作弊。
图1 下发docker选项图
4 总结
Docker与VMware相比,不论是启动速度还是占用的空间,docker都具有极大的优势,将docker使用在ctf比赛中,不仅能节约资源,也能从其他角度保证比赛公平性。
[1]吴栋淦.Docker容器技术在网络安全实验室的应用研究[J].韶关学院学报,2020,41(06):23-28.
[2]冯一凡,朱文龙,杨双双.基于Docker的分布式网络安全攻防平台设计与实现[J].计算机产品与流通,2020(03):47.