freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

网络靶场产品常见问题总结
2022-10-15 18:33:59
所属地 北京

网络靶场本质上是通过构建一个虚实融合的仿真环境,然后在仿真环境上进行人才培养、比赛演练、安全测评等活动。稳定、易用的平台是活动更好开展的基础,下面从不同方面对网络靶场产品当前的一些问题进行分析总结,仅供参考。

一、稳定性

任何一款软件产品都需要经过大量的测试和大规模使用验证后,才会不断变得更好、更稳。 而网络靶场产品本身的客户群体和使用者的数量及使用时长、使用频率相比传统互联网产品相差太多,所以缺乏长时间实践检验的产品,稳定性必然存在一些问题,再加上网络靶场的一些行业特性,总是存在一些定制化需求,导致功能更分散。使用用户少、使用频率低、使用时长短,仿佛陷入了一个恶行循环。加之任何软件产品的发展成熟,必须有强大的推动力,包括巨大的商业价值、社会价值等,否则会缺乏推进的动力和激情,加上如果商业利润很低,也就更没有能力进行大量投入,就会导致产品华而不实,功能都有,但是性能和稳定性不足。从0到60分如果需要1人年,从60到100需要的可能就是10人年,不是线性关系,而是指数关系。就像传统ICT入网设备不好切入那样,性能和稳定性满足通信要求需要的不止是能力更是积累。

当前经常遇到的问题如下:

1、创建数量比较多的虚拟资源时,底层出现莫名其妙的问题,导致一些资源创建失败。

2、数量比较多的人员同时通过ssh、rdp、vnc等方式接入虚拟设备时,出现卡顿甚至卡死现象。

3、由于靶场是一个比较大的解决方案,里面包含很多的功能组件,使用过程中有时有些组件会出莫名问题。

4、应用对底层使用不合理,导致存在一些资源泄露问题。

5、应用面对大并发访问压力时无法稳定支撑。

一些参考解决方式如下

1、用户要减少定制化,提高使用时长,这个需要靶场厂家把价值传递给客户。基本需求一样的情况下,尽量减少功能定制,尤其是底层功能。

2、做好对系统资源的监控、平台各个组成服务的监控、API调用链路监控,做到能及时发现问题。

3、做好API参数的校验、优化日志输出、优化错误返回信息及错误码。

4、进行弹性的架构设计和部署实践,能够满足不同场景的规模和性能需求。

5、加强应用和底层的适配性,进行整体考虑和设计,充分利用底层特性根据业务需求进行最优设计。

6、做好并发处理,使用适合当前开发语言和开发框架的并发模型,根据并发结束条件设置结束时间。

7、资源创建过程中,先做校验,再做创建,没有前后顺序的情况下优先创建成本低的资源,减少创建失败的代价。

8、业务流程上做好事务性,避免一些资源的泄露,可以通过定时器定时回收清除失败的垃圾资源。

9、发现的一些开源组件的bug要及时反馈给社区,共同促进开源组件的发展。

二、可用性

不同于互联网平台可用性用于描述平台的整体可用性,是否使用了服务降级、限流等措施,这里的可用性是针对客户来说,是否有使用该平台的意愿,平台对于用户是否可用、好用,是否可以解决用户的真实问题。

当前经常遇到的问题如下:

1、一些业务流程设计过于复杂繁琐,甚至脱离实际,提高了用户的理解成本和使用成本。

2、开发的资源质量低,客户使用价值低。

3、平台使用中的帮助提升不明确甚至缺乏、报错提示信息不明确甚至缺乏。

4、出现一些问题需要进入到操作系统里面去处理。

一些参考解决方式如下

1、产品设计要深入学习了解客户业务流程以及网络靶场相关的业务流程,使用保持简单且简洁的思想去设计产品。

2、在理解客户需求和业务的基础下去设计开发资源。

3、合理设置帮助信息和帮助话语以及报错提示信息。

4、在web页面上要有常见问题的处理方式,在平台肯定会出问题的前提下,降低客户处理问题的成本。

三、可维护性&可扩展性

可维护性时指当需要修复程序的某个bug或者修改某个功能时,修改的代价和对其它模块的影响;可扩展性是当面对新的功能需求时,代码开发的效率和质量是否满足要求,是否不会影响之前的功能和架构。一切的前提是充分理解业务并且有用很好的编程思想和理论知识,同时要具备一些软件工程思想、产品设计思想,代码不可能完美,但是我们要有一颗追求完美的心。

当前经常遇到的问题如下:

1、面条式代码,又臭又长,而且缺乏注释。

2、缺乏设计,完全按照自己的思路写,别人不易看懂。

3、写的代码不具有可测试性,也缺乏单元测试用例。

一些参考解决方式如下

1、代码要保持合理的长度,一个功能中的代码要进行合理的分块分层,在考虑代码效率的情况下合理组织代码流程。

2、自己写的代码不一定是自己维护,所以写代码的时候就要想着怎么让别人更易读懂,要为别人写代码。

3、大家要坚持一些共同的编程习惯和风格,这样方便维护。

4、遇到自己难以完成的功能时要多与人讨论,大家共同设计。

5、要学习如何写可测试性代码,核心功能要保证单元测试覆盖。

6、代码写之前要先进行设计,先整体分层设计,然后再分模块设计,既要保证整体设计的协调,也要保证每个模块内部设计的合理。各层做各层的事儿,为上层提供能力,保证代码的复用,避免大量重复代码。

7、学习面向对象的编程思想,对未来有扩展需求的功能做好扩展设计。

8、添加合理的注释和日志输出。

四、安全性

安全性主要指网络靶场产品操作系统层面的漏洞、中间件的漏洞以及web程序的漏洞。

当前经常遇到的问题如下:

1、通过容器隔离性差的缺陷,对系统进行dos或者溢出攻击。

2、宿主机系统和中间件存在的一些漏洞。

3、Web相关的sql注入、XSS、CSRF、中间人拦截等攻击。

一些参考解决方式如下

1、使用类似kata-container等技术替代传统的docker技术。

2、产品设计开发过程中就把安全考虑进行,选择合适的系统版本和中间件版本以及开发语言版本。在功能测试完成后进行必要的安全测试,系统层面做好安全的控制,只保留必要的服务和端口。

3、做好API接口的参数和权限校验,做好数据库的结构设计,只返回必要的数据。按需做好API的幂等设计,防止通过API调用底层资源进行DOS攻击。

4、框架开启防SQL注入、CSRF等攻击, 对上传的文件和脚本进行严格的校验,存储区域禁止执行权限,重要信息加密传输,重要信息不在网络上明文传输。

五、结语

网络靶场应该作为一个产品+服务的形态,而不是一个项目交付给客户,要作为一个与客户高频互动的纽带,一个带动其它项目机会的纽带,交付完后我们要多跟客户沟通,收集问题,反馈回公司产品、研发,持续进行产品的迭代优化。这样能够持续提升客户使用意愿、使用频率和时长,以便发现更多潜在问题,更好的提升网络靶场产品质量。同时客户应重点关注资源和场景与自身需求的贴合性,以资源和场景驱动网络靶场建设。

对于网络靶场厂商来说,在市场调研、需求分析、产品设计方面,要能分辨需求的真伪,挖掘需求的本质,产品设计时要考虑整体、考虑当下、也要考虑未来,要兼顾客户也要兼顾研发,不能完全倾斜到一面。在架构设计、产品开发方面,要具备软件工程思维、项目管理思维、产品设计思维,要具备编程的基本思想,在整体上把握好架构设计和开发的过程及开发的质量。在测试方面要有监督意识,做好质量的把关。在部署方面,要有探究之心,充分发挥运维部署能力,让产品保持最大的稳定性、可用性和性能,产品的很多问题也是可以通过部署来解决的。

回归理性,网络靶场应该避免为了交付而交付,稳定性和可用性好的基础上,对于网络靶场厂家来说,可以打造更高的产品势能,助力营销和推广,也许会有更大的利润空间和商业空间。

心中有梦,眼里有光,脚下有路。

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