freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

网络靶场场景仿真度分析
2022-10-17 18:49:32
所属地 北京

网络靶场是通过构建一个虚实融合的仿真环境,然后在仿真环境上进行实训教学、安全竞赛、实网演练、安全测评、技术开发、推演复盘等网络安全相关活动。这里为啥要说“虚实融合的仿真环境”呢?首先回顾网络靶场仿真技术的发展历史,从最初的数学模拟到后来的纯实物仿真到纯虚拟化仿真到现在的虚实融合仿真,本质上是在走一条追求仿真的真实度、技术难度和成本之间平衡的路。

一、网络靶场场景仿真度说明

现在客户也经常问,你的场景能真实到什么程度,能不能仿真一些复杂结构的网络,能不能仿真某某业务,能不能仿真某某设备等。对于网络靶场厂商来说,有时候也确实很难回答。比如对于商用设备来说,只能和相关设备厂商合作,以虚拟形态或者实体形态集成到网络靶场中。同时也会带来较高的建设成本,另外对于虚拟形态,付费和授权模式还在探索中,因为网络靶场对设备的使用数量和创建使用频次难以避免的会多一些。 现在网络靶场厂商能做的就是尽量多的在公开渠道寻找一些之前商业设备厂商开放的一些历史版本虚拟设备,并在靶场中进行适配,比如从开源EVE-NG这种网络模拟器的资源中寻找。同时提供虚实结合的能力,支持多厂家多类型设备的接入。等真正有项目落地时,如果客户有导入商业虚拟设备的需求,再跟相关厂家谈合作以及费用。

二、网络靶场各层次仿真度现状分析

1、系统层

主要仿真不同类型的操作系统,比如PC操作系统(Windows、Linux、Macos、麒麟),移动操作系统(安卓),实时系统(Vxworks)等。

目前网络靶场使用的主流服务器虚拟化技术为QEMU+KVM,其中KVM利用CPU的硬件特性复用linux的内核能力提供内存和CPU的虚拟化能力,QEMU提供IO设备的虚拟化能力,比如鼠标、键盘、存储设备、网络设备等,同时QEMU也支持自己通过纯软件形式进行内存和CPU的虚拟化,即QEMU自身也可以完成整个服务器的虚拟化,但是由于是纯软件形式,存在过多的指令翻译过程,所以性能会差。

当前主流的Windows、Linux和Macos系统均可通过QEMU+KVM很好的虚拟出来。对于安卓和Vxworks可以通过QEMU进行虚拟,性能方面会有损耗,实用性有待进一步探索。

2、网络层

主要包括设备(网络设备、安全设备)的仿真、网络结构的仿真、链路的仿真,网络协议一般通过相关设备提供。

虚拟设备主要通过公开渠道收集或与设备厂商合作并进行适配,实体设备主要通过SDN等能力接入,把实体设备或网络跟虚拟设备或网络打通,融合在一起。

对于二层实体设备的接入,目前有些复杂,因为没有物理网线的引流,也不能像三层设备那样通过路由很自然的可以接入,二层设备就相当于透明的,怎么强制流量流经二层设备,需要做一些工作,目前常用的是SDN引流,相当于通过Openflow流表打通了一条物理线路。

对于虚拟链接来说,由于本身位于软件之上,所以难以仿真双绞线、光纤这些链路类型,但是可以通过Linux内核能力控制链路带宽、时延和丢包率等链路特性。

任意网络拓扑结构构建受限:

拥有了虚拟或者实体的网络设备、安全设备,如果在实际环境中,只要协议支持,就可以组成任意的网络拓扑结构。但是在网络靶场中,由于仿真环境的构建是先通过WEB页面拓扑拖拽形式画出网络结构,然后前端程序分析拓扑结构,分析完成后调用后端程序,后端程序再调用虚拟化程序进行相关资源的创建。由于当前拓扑编辑时可以指定虚拟节点的ip也可以让系统自动分配,这就需要根据虚拟节点之间的连线来判断属于哪个网络,以确定其ip范围,后续能够进行ip的分配及ip池的管理。这就要求能够分析出拓扑结构中包含那些网络,每个网络的参数是什么。对于不同类型的复杂的拓扑结构,没办法形成统一的分析算法,所以当前拓扑编辑时一般都会有一些限制,目的是为了更方便对拓扑结构进行分析,也就导致网络靶场不能支持任意设备之间的连接,一些拓扑结构就没办法模拟出来。

既然拓扑结构分析限制了任意拓扑的构建,那从两个方面想:是不是可以找到一个统一的分析算法或者干脆不分析。由于设备类型和拓扑结构多种多样,难以穷尽,也就没办法找到统一的分析算法。那不分析可以吗?如果拓扑编辑时必须手动指定ip,并且整个拓扑在一个VLAN下,由于不用考虑ip分配和网络关系,所以没有拓扑结构分析过程,直接创建即可,这样就可以支持任意的拓扑结构了,当然还有其它方式实现。

3、应用层

应用层的仿真可以从软件部署、参数配置和应用数据三个方面看。从软件部署来看,对于大多数免费软件比较容易部署,对于商业软件就需要考虑授权的问题;从配置来看,要想跟实网中的参数配置完全一样,需要考虑虚拟节点的CPU、内存、硬盘等资源是否足够,同时需要甲方运维人员配合,配置成本较高;从应用数据来看,由于数据安全原因业务数据一般不会直接导入到网络靶场中,要经过脱敏过程,但是本身脱敏也是一个比较复杂的过程,需要对业务数据的结构和敏感字段进行了解,然后导出批量脱敏,然后导入到靶场中,也是比较复杂的过程,对于一些仿真要求不高的场景,可以根据业务数据结构伪造一批数据。

自动化的实现软件的部署、参数的配置和数据的导入是当前的一个挑战,由于应用各方面的差异,因此涉及到比较大的定制工作量。

4、行为层

主要在网络环境中模拟一些动态行为,包括用户的操作行为、来自外部或内部的一些攻击行为、日常网络环境中产生的一些流量行为等。

用户的操作行为主要是用户平时在使用设备时的一些动作,比如邮件收发、网页浏览、装卸软件、文件编辑等。这些方面目前网络靶场提供的能力有限,缺乏相关的插件以及数据和经验的积累,可能一些专业做欺骗防御的厂商会有更好的经验。

攻击行为当前主要通过测试仪或者回放提前录制的攻击流量包进行,这里需要根据仿真场景中节点内的应用类型和端口开放情况选择合适的攻击行为,否则很容易就可以识别出这个回放的流量,同时根据节点信息对流量包进行改造,然后在仿真场景中进行回放。

流量行为是正常的流量,这个也需要根据仿真场景中节点的信息和节点内的应用类型选择合适的回放流量,根据节点信息进行改造后在仿真场景中进行回放。

三、仿真场景到底多真为好

我认为针对不同的活动要区别对待,同时也要认清现实:由于成本和技术限制,我们几乎不可能仿真的和实网一摸一样。我们可以追求完美,但是在仿真度上不要过于追求完美,要理性看待,合适即好。一切活动肯定是在实网中效果最好,但是为了保证实网的安全和稳定这又不现实。那我们就要思考哪些活动需要什么级别的仿真度。

如果只是学习、训练一些基本技能,那基本上虚拟化仿真就可以满足要求,甚至有些通过数学仿真或命名空间都可以完成,只要能够把网络结构和业务流程模拟出来就可以,再不行对关键设备使用实体接入;对于实网演练、安全测评、技术开发、推演复盘原则上是要按实网构建仿真环境的,但是很多情况下这不现实,这时就要坚持二八原则了,重点仿真核心和典型业务,使通过仿真场景进行的演练效果最大化。

四、结语

当前网络靶场的场景仿真在一些方面还是存在不足,有些需要在成本和仿真的真实度之间做权衡,有些需要继续努力完善。同时某些仿真资源和仿真场景的建立需要网络靶场厂商和用户共同努力,作为网络靶场厂商在做好自己能力范围内的工作的同时,要积极和用户沟通交流,加深对用户需求和业务的理解,协调客户共同构建更好的仿真资源和场景,让网络靶场更有价值。

不曾扬帆,何以至远方。



# 网络攻防 # 红蓝演练 # 网络靶场 # 实网攻防 # 实网对抗与攻防演练专场
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录