一种基于容器的快速搭建靶机环境的方法与流程

文档序号:17130112发布日期:2019-03-16 01:04阅读:579来源:国知局
一种基于容器的快速搭建靶机环境的方法与流程

本发明涉及靶机环境搭建技术领域,特别涉及一种基于容器的快速搭建靶机环境的方法。



背景技术:

目前,行业中现普遍采用传统虚拟机部署的方式搭建靶机环境,虚拟机搭建操作复杂,准备过程长,即使按照相同的方式搭建仍旧会因为各种环境的因素导致搭建出的环境不一,而通过虚拟机镜像的方式分发靶机又会受镜像大小限制。

而市面上另一种使用的vagrant技术搭建靶机环境的方案与本专利所涉及的docker技术相比也缺乏一定的易用性。专利中谈及的docker技术在目前市场上应用广泛,已有许多可靠的容器云技术使得容器化应用部署于商业项目中,是较成熟的一种技术选型,而我们信息安全领域靶机环境也缺乏标准性,漏洞分析人员各自按各种技术搭建的靶机无法有效统合起来以帮助公司或社区的靶机分发,部署,测试。



技术实现要素:

本发明的目的是克服上述背景技术中不足,提供一种基于容器的快速搭建靶机环境的方法,采用容器化技术docker来统一靶机漏洞环境的搭建,并结合容器编排技术kubernetes将定制好的docker容器纳入管理,随用随建,用后即焚,合理利用服务器资源,更方便地分发靶机环境辅助漏洞分析人员,渗透测试人员学复现、分析、学习漏洞技术。

为了达到上述的技术效果,本发明采取以下技术方案:

一种基于容器的快速搭建靶机环境的方法,包括以下步骤:

a.利用开源kubernetes技术搭建容器云基础设施,即建立靶机环境基础设施;

b.编写靶机环境dockerfile文件,使用dockerbuild构建靶机镜像,具体如在准备好的靶机相关文件目录下执行指令如`dockerbuild-tsome-vul:lastest-fdockerfile.`即可完成镜像构建,通过镜像的tag标签如上述指令中的some-vul:latest变更latest为v1.0,v2.0等自定义的tag标签对靶机的版本控制;

此步骤中,编写靶机环境dockerfile文件时,该脚本文件可使靶机搭建过程完全自动化,使用dockerbuild构建靶机镜像后,可将镜像持久化存储,且定制化过程中注意优化,可有效减少镜像大小,构建的镜像可以随意分发,保证了每个获取到的人员获取到标准化的靶机,减少不必要的麻烦,同时通过镜像的tag标签可以做好靶机的版本控制;

c.对每个漏洞重复步骤b构建好标准靶机镜像,调用kubernetesapi编写一键部署程序创建web程序统一管理步骤b中构建的各个漏洞靶机环境;

具体原理为:使用kubernetesapi调用dockerdaemon将我们构建好的docker镜像运行成docker容器,kubernetes会为靶机环境容器提供临时的端口便于访问,利用api可轻松获取到容器的ip,端口等网络信息,以及当前容器的资源占用情况监控信息,便于进行机器资源的调度,待利用运行的靶机环境容器测试或研究完毕后,同样可以利用kubernetesapi一键销毁容器,回收机器资源;

d.提交发布编写完毕的dockerfile文件,通过管线pipeline实现自动化构建镜像过程,同时将构建的镜像发布到web端的靶机镜像列表中提供服务;即可完成漏洞靶机环境的容器云的建立。

进一步地,所述步骤b中编写靶机环境dockerfile文件是具体包括以下步骤:

s1.针对漏洞建立特定的靶机环境,根据漏洞描述文档使用虚拟机模拟漏洞复现所需的环境;

s2.记录下操作系统、涉及组件、环境配置的要素,记录调试漏洞复现环境的过程中所用到的指令;

s3.根据记录写成dockerfile将漏洞靶机环境脚本化,抽象靶机人工搭建过程dockerlize为docker容器,且同一漏洞靶机环境均由dockerfile构建;则可使得漏洞环境得以标准化,而采用dockerfile进行分发,传输,重构建都非常方便,且易于存档。

进一步地,所述步骤d中提交发布编写完毕的dockerfile文件时会调用持续集成工具,现有技术中已有的持续集成工具即可。

进一步地,所述持续集成工具为jenkins。

本发明与现有技术相比,具有以下的有益效果:

本发明的基于容器的快速搭建靶机环境的方法,解决了渗透测试中需要的靶机环境无法快速部署,删除,污染主机环境,产生不安全因素等技术问题,本发明的技术方案中采用当前流行的容器化技术来解决这一问题,达到使用时部署,用后即焚,保证宿主机安全的效果;

且可结合各公司情况实现一键部署、随建随用,具有易于管理的特点,对于建立公司的漏洞靶机环境数据库,辅助渗透测试人员学习等方面有极大帮助。采用容器技术实现占用空间更小、更便于传输、分享的效果,结合现有成熟的容器编排技术如kubernetes等,可实现方便易用的标准化“靶机云”,具有一定的市场前景。

附图说明

图1是本发明的一个实施例中的漏洞靶机环境镜像构建流程示意图。

具体实施方式

下面结合本发明的实施例对本发明作进一步的阐述和说明。

如图1所示,一种基于容器的快速搭建靶机环境的方法,拥有一次搭建,随时使用,便于分发,用后即焚的特点,可帮助信息安全从业人员以低运维成本,快速灵活的方式搭建靶机用于研究和测试,可有效解决信息安全领域中传统的人工搭建靶机方法复杂难用,无法全自动脚本化实现,搭建的靶机环境缺乏标准性,不易保存,运维成本高,不易分发等问题。

本实施例的基于容器的快速搭建靶机环境的方法中所采用的基础技术栈主要包括:当下流行的容器技术docker及容器编排技术kubernetes、当下运用广泛的devops中涉及到的自动化流程思想以及在脚本化靶机环境搭建过程,减少手动调整,建立标准化漏洞靶机环境库,引入社区贡献的技术要点。

具体的,结合以上提及的技术栈,本实施例的基于容器的快速搭建靶机环境的方法包括以下步骤:

步骤1.建立靶机环境基础设施;利用开源kubernetes技术搭建容器云基础设施。

具体的,容器云基础设施搭建可使用云厂商提供的完备的kubernetes容器云环境或在自建机房按kubernetes官方文档(https://kubernetes.io/docs/setup/)指引搭建kubernetes环境,在此过程中docker环境的搭建是前置条件,官方文档中已有详尽的部署指导,具体实施时可作为参照,此处不再赘述。

步骤2.编写靶机环境dockerfile文件,该脚本使靶机搭建过程完全自动化,使用dockerbuild构建靶机镜像后,可将镜像持久化存储,定制化过程中注意优化,可有效减少镜像大小,如编写dockerfile时添加rm指令及时清理掉当前构建阶段stage中产生的缓存垃圾,下载残余等,从而压缩镜像大小,达到优化目的,且构建的镜像可以随意分发,保证了每个获取到的人员获取到标准化的靶机,减少不必要的麻烦,同时通过镜像的tag标签如上述指令中的some-vul:latest变更latest为v1.0,v2.0等自定义的tag标签对靶机的版本控制。

具体为针对漏洞建立特定的靶机环境,根据漏洞描述文档或特定情况人工方式使用虚拟机模拟漏洞复现所需的环境,记录下操作系统(os),涉及组件(component),环境配置(envconfig)等要素,记录调试漏洞复现环境的过程中所用到的指令,根据记录写成dockerfile将漏洞靶机环境脚本化,其具体实施方式可参照下述实施例中靶机搭建时的相关步骤,抽象靶机人工搭建过程dockerlize为docker容器,且同一漏洞靶机环境均由此dockerfile构建,使得漏洞环境得以标准化,而采用dockerfile进行分发,传输,重构建都非常方便,易于存档。

具体的靶机搭建示例如下:

本实施例中具体以apachesynapse远程代码执行漏洞(漏洞编号:cve-2017-15708)的靶机搭建为例说明:

s1.1.阅读漏洞文档(http://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2017-15708)及其他相关文档,本实施例中具体通过搭建虚拟机ubuntu16.04lts来模拟,受影响的apachesynapse版本为:3.0.0,2.1.0,2.0.0,1.2,1.1.2,1.1.1,

s1.2.从漏洞文档中能得到对应的java版本,本实施例中得到对应使用的java版本为1.8.0_112,

s1.3.按照前述选择一个含有漏洞的apachesynapse版本3.0.0从官网下载apachesynapse3.0.0,(http://synapse.apache.org/download/3.0.0/download.cgi),解压后进入安装目录bin下,运行./synapse.sh启动服务,检查1099端口开启,

s1.4.靶机搭建完成,使用该漏洞所对应的poc(proofofconcept)检查靶机是否搭建成功,若poc执行未能得到漏洞文档描述的预期效果,则重复以上步骤,按照文档描述逐步调整重现漏洞触发的条件,直至最后搭建出的靶机产生poc执行所预期的结果。

s1.5将上述步骤s1.1至s1.4转换成dockerfile文件,具体如下:

1fromjava:8u111-alpine

2addsynapse-3.0.0-bin.tar.gz/opt/software

3expose1099

4cmd[“sh”,“/opt/software/synapse-3.0.0/bin/synapse.sh”]

s1.6.使用dockerbuild指令构建一个该漏洞的标准化靶机,执行指令`dockerbuilf-tsome-vul:latest-fdockerfile.`等待命令执行完毕后再执行指令`dockerrun--rmsome-vul`运行一个靶机容器,对该容器执行poc检查docker镜像是否构建成功;

步骤3:每个漏洞重复步骤2构建好标准靶机镜像,调用kubernetesapi创建web程序统一管理步骤2中构建的各个漏洞靶机环境,本实施例中具体采用google的开源容器管理方案kubernetes实施靶机容器的管理及监控,kubernetes已经提供了完备的容器管理方案,能够创建、监控、调度、销毁靶机容器,其原理是使用kubernetes会调用dockerapi控制dockerdaemon将事先构建好的docker镜像运行成docker容器,并为靶机环境容器自动提供端口便于访问,而利用kubernetesapi可获取到这些容器的ip,端口等网络信息,以及当前容器的资源占用情况监控信息,这些信息对创建、发布、销毁等行为进行定制化提供了定制的依据,整个定制过程结合了devops的思想利用持续集成软件jenkins所提供的pipeline将整个定制过程串联起来,下面以一个靶机容器的整个生命周期为例来说明这个定制化过程即本发明核心:

a.步骤2中靶机创建者将dockerfile提交至代码仓库后,出发jenkins的pipeline,自动构建镜像及镜像存入dockerregistry,最后运行成容器实例,如:

b.(a)中的容器实例可以通过kubernetesapi采集监控信息,api接口如:

get/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status

c.通过(b)中获取的资源占用情况信息及自身业务需求,如测试完毕后需要关闭销毁容器回收计算资源的需求,调用kubernetesapi实现这一操作:

接口如下:

$kubectlproxy

$curl-xdelete-h'content-type:application/yaml'--data'

graceperiodseconds:0

orphandependents:false

''http://127.0.0.1:8001/apis/apps/v1/namespaces/default/deployments/deployment-example'

如此即利用kubernetesapi就可以方便地创建web程序统一管理步骤2中构建的各个漏洞靶机环境,灵活搭建分发靶机给研究人员或测试人员,同时也将公司闲置资源充分利用起来搭建计算需求不高的靶机容器,节约了公司运维成本,且渗透测试人员与漏洞分析人员即可灵活方便地使用靶机环境进行研究、交流和分析。

步骤4:将构建的镜像发布到web端的靶机镜像列表中提供服务,统合公司内部力量和社区力量共同建立漏洞靶机环境的容器云--“靶机云”,反哺社区,为社区安全研究人员提供快捷方便的靶机使用体验,以此吸引更多社区力量贡献靶机搭建脚本。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1