网络靶场实现方法、装置、设备、介质及系统与流程

文档序号:19791881发布日期:2020-01-24 14:24阅读:502来源:国知局
网络靶场实现方法、装置、设备、介质及系统与流程

本发明涉及计算机安全技术领域,尤其涉及一种网络靶场实现方法、装置、设备、介质及系统。



背景技术:

随着全球信息安全问题的增多,计算机安全防御技术变得越来越重要,因此,出现了网络攻防靶场平台,通过搭建漏洞环境,或者提供ctf题目,供用户进行网络安全防御的训练。

目前常用的攻防靶场平台的构建方式有三种,通过物理机、虚拟机或者docker容器的方式完成平台的搭建。

物理机部署漏洞攻防场景,存在部署不灵活,费用昂贵,场景复现困难,题目场景权限监控管理困难;漏洞环境全部通过虚拟机实现,过于重量级,造成大量非必要开销,场景复原不友好,管理不友好;通过docker容器技术进行部署,常常需要重复使用中间件,且对于windows内核的环境不支持。

目前要搭建漏洞环境,或是ctf题目涉及到各种底层平台、技术栈,对于linux和windows跨系统的做题场景难以通过一个平台实现。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种网络靶场实现方法,其通过将底层环境paas化,进而搭建出网络靶场。

本发明的目的之一采用以下技术方案实现:

一种网络靶场实现方法,包括以下步骤:

接收题目及用户id;

判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

所述的paas通过第一组件、第二组件、第三组件及第四组件搭建,所述第一组件用于通过docker生成linux内核题型的镜像环境,所述第二组件用于通过vagrant生成windows内核题型的虚拟机环境,第三组件用于通过docker生成linux内核且需要io转发题型的镜像环境,第四组件用于通过windows生成windows内核且需要io转发题型的镜像环境;

生成题目的访问指令。

进一步地,所述第一组件包括docker和nginx中间件,所述第二组件包括vagrant和用于连接题目网络环境的vpn,所述的第三组件包括docker和golang认证转发模块,所述第四组件包括windows和appjaillauncher认证转发模块。

进一步地,生成题目的访问指令,包括以下步骤:

当题目为基于linux内核的题型时,调用第一组件,nginx作为中间件,根据题目和用户id生成哈希值,根据该哈希值构造子域名,将根域名加上子域名作为题目的访问指令;;

当题目为基于windows内核的题型时,调用第二组件,生成连接至vpn的随机账号密码,所述vpn为连接题目网络环境的vpn,所述的随机账号密码作为题目的访问指令;

当题目为基于linux内核且需要io转发的题型时,调用第三组件,生成哈希值口令,通过golang将所述的哈希值口令及题目转发至tcp端口,所述哈希值口令作为题目的访问指令;

当题目为基于windows内核且需要io转发的题型时,调用第四组件,生成哈希值口令,通过appjaillauncher将所述的哈希值口令及题目转发至tcp端口,所述哈希值口令作为题目的访问指令。

进一步地,生成题目的访问指令之后,还包括以下步骤:

将访问指令返回给用户id对应的操作界面;

接收所述操作界面输入的访问指令;

验证所述的访问指令:

当题目为基于linux内核的题型时,访问指令为根域名和子域名,验证成功,则通过nginx反代到题目镜像环境中;

当题目为基于windows内核的题型时,访问指令为随机账号密码,验证成功,则匹配对应的vpn,通过该vpn访问题目;

当题目为基于linux内核且需要io转发的题型时,访问指令为哈希值口令,验证成功,则转到题目对应的tcp端口;

当题目为基于windows内核且需要io转发的题型时,访问指令为哈希值口令,验证成功,则转到题目对应的tcp端口;

验证失败,则返回错误信息到所述操作界面。

进一步地,当做题时间超过预设时间或接收到提交结果指令时,回收题目的访问指令;当题目不可复用时,还要回收题目的容器,并根据下一个排队的用户id及题目,将题目下发至paas,并生成做题环境。

进一步地,接收题目及用户id,还包括以下步骤:

根据题目,匹配题目库中的题目类型、题目名称、题目描述及题目得分。

本发明的目的之二在于提供一种网络靶场实现装置,其通过将底层环境paas化,进而通过一个平台实现跨系统的做题场景。

本发明的目的之二采用以下技术方案实现:

一种网络靶场实现装置,其特征在于,其包括:

接收模块,用于接收题目及用户id;

环境生成模块,用于判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

指令生成模块,用于生成题目的访问指令。

本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,所述计算机程序被处理器执行时实现上述的网络靶场实现方法。

本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的网络靶场实现方法。

本发明的目的之五在于提供一种网络靶场实现系统,其包括:客户端和远程服务器;

其中,所述客户端用于发送所选题目及用户id;所述远程服务器用于:

接收题目及用户id;

判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

生成题目的访问指令。

相比现有技术,本发明的有益效果在于:

本发明通过四个组件搭建底层paas,实现了各种跨系统、全题型的兼容,实现了题目场景的高效部署,并降低了攻防靶场的开发成本,并通过排队实现了题目的复用机制。

附图说明

图1是实施例一的网络靶场实现方法的流程图;

图2是实施例二的底层paas架构图;

图3是实施例三的访问指令验证方法的流程图;

图4是实施例四的网络靶场实现装置的结构框图;

图5是实施例五的电子设备的结构框图。

具体实施方式

以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。

实施例一

实施例一提供了一种网络靶场实现方法,旨在通过根据底层paas生成做题环境。

paas是platformasaservice的缩写,是指平台即服务。把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供的服务称之为saas(softwareasaservice),而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了paas。paas的兼容性高,可以通过使用docker等作为技术栈完成搭建。

根据上述原理,搭建paas,利用paas的兼容性,根据linux和windows涉及到的各种题型,完成底层paas环境的搭建。

请参照图1所示,一种网络靶场实现方法,包括以下步骤:

s110、接收题目及用户id;

具体地,接收题目及用户id,还包括以下步骤:

根据题目,匹配题目库中的题目类型、题目名称、题目描述及题目得分。

题目类型、题目描述等可以让用户更直观的了解到所选题目的信息,方便用户有针对性的进行题目的选择。

s120、判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

由于题目权限的不同,会出现可复用与不可复用的题目,通常,只有查看权限的题目,由于做题时不会破坏题目环境,因此可以复用,而需要较大权限的题目,例如需要修改其中内容的题目,会破坏题目的环境,因此这些题目不可复用。

预设人数可以根据实际题目数量进行确定,例如对于一个不可复用的题目,只配置了一个容器环境,那么预设人数就为一人,只有当该容器被回收后,下一个排队者才可以做题。

所述的paas通过第一组件、第二组件、第三组件及第四组件搭建,所述第一组件用于通过docker生成linux内核题型的镜像环境,所述第二组件用于通过vagrant生成windows内核题型的虚拟机环境,第三组件用于通过docker生成linux内核且需要io转发题型的镜像环境,第四组件用于通过windows生成windows内核且需要io转发题型的镜像环境;

题目上线到paas后,根据编写好题目、底层环境和技术栈就可以实现横向多份拷贝。

具体地,基于linux内核的题型,例如web题型、需要io转发的密码学题型等,通过每个题目对应的dockerfile生成docker题目的镜像文件,dockerfile是事先编写好的题目配置文件;基于windows内核的题型,对于不需要io转发的题型,例如综合渗透等,通过vagrant构建虚拟机环境,利用vgrant集群概念,根据每个节点配置好的虚拟机网络,生成快照,每次启动和关闭以集群为单位进行操作;需要io转发的题型,例如pwn、re题型等,则通过windows完成题目环境镜像文件的生成。即paas底层环境中,第一组件由docker容器组成,第二组件由vagrant组成,第三组件由docker容器组成,第四组件由windows组成。

s130、生成题目的访问指令;

访问指令相当于给到用户该题目的访问方式,用户通过输入收到的访问指令就可以连接到选择的题目中。

本实施例通过底层paas的四个组件实现了linux内核和windows内核全题型的兼容。

实施例二

实施例二是在实施例一基础上进行,其主要对四个组件的构成及其作用进行了解释和说明。

请参考图2所示,显示了底层paas的架构,第一组件包括docker和nginx中间件,第二组件包括vagrant和用于连接题目网络环境的vpn,第三组件包括docker和golang认证转发模块,第四组件包括windows和appjaillauncher认证转发模块。

此外,底层paas还包括iis、mssql、apache、python、node.js等用于题目运行或驱动的常规工具/模块。

在实施例一中,已对docker、vagrant及windows的作用作了说明,以下将通过访问指令的生成过程,对nginx、vpn、golang和appjaillauncher的作用进行解释和说明。

需要说明的是,本实施例中出现的“调用”都是自动调用,因为每道题目在存储时通过分类字段进行了标识,因此接收到题目后,就可以根据分类字段自动判断出题目类别和题型,匹配并调用对应的组件。

生成题目的访问指令,包括以下步骤:

当题目为基于linux内核的题型时,调用第一组件,nginx作为中间件,根据题目和用户id生成哈希值,根据该哈希值构造子域名,将根域名加上子域名作为题目的访问指令;

此类题目为web题型,根据用户id和题目生成随机的哈希值,由于不同用户的id不同,因此该哈希值就可以作为该题目的唯一值,且哈希值不容易被猜测到,通过在根域名的基础上使用该哈希值作为子域名就可以达到区分不同用户,且防止他人根据根域名进行做题,保证做题的环境是隔离且独立的,使用nginx作为中间件就可以实现通过解析根域名和子域名连接到题目的ip/端口。

当题目为基于windows内核的题型时,调用第二组件,生成连接至vpn的随机账号密码,所述vpn为连接题目网络环境的vpn,所述的随机账号密码作为题目的访问指令;

现有技术通常使用虚拟机加novnc的方式构建此类题目的环境,即通过novnc实现远程浏览器访问虚拟机的windows桌面,但是此类方法限定了工具的使用范围,且无法进行复制粘贴。

通过vpn访问的方式,即通过vpn下的网络环境实现做题功能,用户能使用各种工具,不会限定解题思路,且可以进行复制粘贴,用户的体验更好。

当题目为基于linux内核且需要io转发的题型时,调用第三组件,生成哈希值口令,通过golang认证转发模块将所述的哈希值口令及题目转发至tcp端口,所述哈希值口令作为题目的访问指令;

当题目为基于windows内核且需要io转发的题型时,调用第四组件,生成哈希值口令,通过appjaillauncher将所述的哈希值口令及题目转发至tcp端口,所述哈希值口令作为题目的访问指令。

对于需要io转发(io交互)的题目,根据内核(windows或linux)驱动题目,将题目转发到tcp端口,由于系统不一样,因此对于linux内核的题目,使用golang(go语言)实现题目的转发,对于windows内核的题目,使用appjaillauncher进行题目的转发,使用appjaillauncher是ctf题目常用的方式,转发至tcp端口也可以避免用户访问题目以外的其它内容。

实施例三

实施例三是在实施例一和实施例二的基础上进行的,主要对访问指令的验证及做题完成后的回收做了解释和说明。

请参照图3所示,生成题目的访问指令之后,还包括以下步骤:

s210、将访问指令返回给用户id对应的操作界面;

s220、接收所述操作界面输入的访问指令;

s230、验证所述的访问指令:

当题目为基于linux内核的题型时,访问指令为根域名和子域名,验证成功,则通过nginx反代到题目镜像环境中;

当题目为基于windows内核的题型时,访问指令为随机账号密码,验证成功,则匹配对应的vpn,通过该vpn访问题目;

例如,题目a需要在网络c下进行答题,当用户选择开始题目a,则组件会自动生成一个随机的hash账户密码配置到vpn,并使该vpn仅能访问网络c,这个随机的hash再返回给用户。

此时用户通过账号密码连接至该vpn,就能访问到题目a。

当题目为基于linux内核且需要io转发的题型时,访问指令为哈希值口令,验证成功,则转到题目对应的tcp端口;

当题目为基于windows内核且需要io转发的题型时,访问指令为哈希值口令,验证成功,则转到题目对应的tcp端口;

对于需要转发到tcp端口的题目,通过go(golang)语言或者appjaillauncher实现tcp转发功能,例如,有题目a,ip/端口为:127.0.0.1:8080,根据用户、题目和时间生成一个hash,golang(认证转发模块)对外提供0.0.0.0:80,用户通过tcp连接工具(例如nc工具)到ip后,输入hash,则golang将转发到8080端口,用户就可以进入题目。

验证失败,则返回错误信息到所述操作界面。

本发明通过回收的方式实现题目的复用以及排队机制。

当做题时间超过预设时间或接收到提交结果指令时,回收题目的访问指令;当题目不可复用时,还要回收题目的容器,并根据下一个排队的用户id及题目,将题目下发至paas,并生成做题环境。

通过回收题目的访问指令可以防止题目完成后,用户根据同样的指令再次进入题目,对于不可复用的题目,因为容器数量有限,且不可复制,所以还需要收回容器,根据快照或者镜像再次生成题目环境,使排队者得以进入做题。

通过回收访问指令,可以防止题目再次被用户编辑或使用,回收容器则实现了不可复用类型题目的再次使用。

实施例四

实施例四公开了一种对应上述实施例的网络靶场实现方法对应的装置,为上述实施例的虚拟装置结构,请参照图4所示,包括:

接收模块310,用于接收题目及用户id;

环境生成模块320,用于判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

指令生成模块330,用于生成题目的访问指令。

优选地,所述第一组件包括docker和nginx中间件,所述第二组件包括vagrant和用于连接网络环境的vpn,所述的第三组件包括docker和golang认证转发模块,所述第四组件包括windows和appjaillauncher认证转发模块。

优选地,生成题目的访问指令,包括以下步骤:

当题目为基于linux内核的题型时,调用第一组件,nginx作为中间件,根据题目和用户id生成哈希值,根据该哈希值构造子域名,将根域名加上子域名作为题目的访问指令;

当题目为基于windows内核的题型时,调用第二组件,生成连接至vpn的随机账号密码,所述vpn为连接题目网络环境的vpn,所述的随机账号密码作为题目的访问指令;

当题目为基于linux内核且需要io转发的题型时,调用第三组件,生成哈希值口令,通过golang将所述的哈希值口令及题目转发至tcp端口,所述哈希值口令作为题目的访问指令;

当题目为基于windows内核且需要io转发的题型时,调用第四组件,生成哈希值口令,通过appjaillauncher将所述的哈希值口令及题目转发至tcp端口,所述哈希值口令作为题目的访问指令。

生成题目的访问指令之后,还包括以下步骤:

将访问指令返回给用户id对应的操作界面;

接收所述操作界面输入的访问指令;

验证所述的访问指令:

当题目为基于linux内核的题型时,访问指令为根域名和子域名,验证成功,则通过nginx反代到题目镜像环境中;

当题目为基于windows内核的题型时,访问指令为随机账号密码,验证成功,则匹配对应的vpn,通过该vpn访问题目;

当题目为基于linux内核且需要io转发的题型时,访问指令为哈希值口令,验证成功,则转到题目对应的tcp端口;

当题目为基于windows内核且需要io转发的题型时,访问指令为哈希值口令,验证成功,则转到题目对应的tcp端口;

验证失败,则返回错误信息到所述操作界面。

当做题时间超过预设时间或接收到提交结果指令时,回收题目的访问指令;当题目不可复用时,还要回收题目的容器,并根据下一个排队的用户id及题目,将题目下发至paas,并生成做题环境。

优选地,接收题目及用户id,还包括以下步骤:

根据题目类型,匹配题目库中的题目名称、题目描述及题目得分。

实施例五

图5为本发明实施例五提供的一种电子设备的结构示意图,如图5所示,该电子设备包括处理器410、存储器420、输入装置430和输出装置440;计算机设备中处理器410的数量可以是一个或多个,图5中以一个处理器410为例;电子设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图5中以通过总线连接为例,本实施例描述的电子设备主要用于网络靶场的实现,包括题目环境的搭建及向用户端下发题目。

存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的网络靶场实现方法对应的程序指令/模块(例如,网络靶场实现方法装置中的接收模块310、环境生成模块320、指令生成模块330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述实施例一至实施例三的网络靶场实现方法。

存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序,例如存储有linux操作系统、windows操作系统及四个组件搭建的底层paas;存储数据区可存储根据终端的使用所创建的数据等,例如存储有各种题型的题目。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至电子设备,例如存储有不同题目的远程存储器,通过处理器410对题目完成环境的搭建、下发等处理工作。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置430可用于接收输入的用户身份信息、选择的题目等。输出装置440可包括显示屏等显示设备,例如向用户展示选择的题目,供用户进行答题等。

实施例六

本发明实施例六还提供一种包含计算机可执行指令的存储介质,该存储介质可用于计算机执行网络靶场实现方法,该方法包括:

接收题目及用户id;

判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

所述的paas通过第一组件、第二组件、第三组件及第四组件搭建,所述第一组件用于通过docker生成linux内核题型的镜像环境,所述第二组件用于通过vagrant生成windows内核题型的虚拟机环境,第三组件用于通过docker生成linux内核且需要io转发题型的镜像环境,第四组件用于通过windows生成windows内核且需要io转发题型的镜像环境;

生成题目的访问指令。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的基于网络靶场实现方法中的相关操作。

实施例七

本发明实施例七还提供一种网络靶场实现系统,其包括:客户端和远程服务器;

其中,所述客户端用于发送所选题目及用户id;所述远程服务器用于:

接收题目及用户id;

判断题目是否可复用:

当题目可复用时,将题目下发至paas,并生成做题环境;

当题目不可复用时,判断当前做题人数:

当前做题人数超过预设人数时,进入排队;

当前做题人数未超过预设人数时,将题目下发至paas,并生成做题环境;

生成题目的访问指令。

客户端为用户做题时的终端,通常为计算机,远程服务器可以为云服务器,也可以是一个或多个物理服务器。

本实施例所提到的paas,其架构及功能参照实施例一至实施例三的网络靶场实现方法。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述基于网络靶场实现方法装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。

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