汤荣秀
(天津工业职业学院,天津 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比赛以便更好地选拔网络安全人才,对网络安全人才的培养非常有意义。