自动化渗透测试工具箱的研发

(整期优先)网络出版时间:2023-02-24
/ 2

自动化渗透测试工具箱的研发

陈红波,范秉旭,范鹏飞,郭俊英,郭巴图

国网内蒙古东部电力有限公司信息通信分公司,内蒙古 呼和浩特 010000

摘要:随着当今信息技术的飞速发展,各式各样的系统脆弱性问题对信息系统造成很大的安全威胁,这些安全漏洞已然成为恶意软件传播的入口和途径。为发现信息系统中存在的安全威胁并确定危害程度,工程师必须周期性地针对信息系统进行渗透测试并根据渗透测试结果进行系统的安全性修复。为了减少渗透测试过程中人工的投入,让渗透测试服务更快捷、标准化且易操作,摆脱渗透测试过程中对专业技能的过度依赖,同时提高测试效率,本论文设计了一款自动化渗透测试工具,该工具通过建立渗透测试平台,对信息系统安全性进行人工与自动化相结合的评测方法并深入评估目标系统的安全性。

关键词:自动化;渗透测试工具箱;研发

引言

为了提高安全服务项目的检测效率、规范性、全面性,Tide安全团队结合在渗透测试行业的经验和安全开发方面的积累,开发了一款自动化渗透测试工具。该工具使用Golang开发为CS架构,集“资产探测-服务识别-爬虫-被动监测-漏洞扫描-POC检测-截屏-报告”于一体,适合甲方或乙方安服团队对目标系统进行全面的安全检测并输出报告。

1 自动化工具的必要性

传统的渗透测试主要是靠人工进行测试,但由于测试人员的经验、能力、细致度的差别,导致渗透测试的结果可能千差万别。虽然测试用例能让人工测试更规范一些,但每个人的技术擅长点不同,发现漏洞的点也会有很大差异。另外就是,渗透测试的效率相对较低,一般一套CMS系统的纯黑盒测试可能都需要3-5天时间,就算这样也没有人敢保证自己测完之后就不会有任何漏洞,这在快节奏和高时效的今天显得有些格格不入。

而工具扫描从一开始就有它的弊端,比如可能影响业务可用性、误报、漏报、业务逻辑测试盲区、安全设备绕过等。但它也有先天的优势,比如参数检测的全面性,合适的爬虫可以让扫描器能检测系统的每个参数点;比如漏洞检测的快捷性,人工可能还需要识别框架后逐个用POC检测,但工具可以自动化的分析-识别-检测-报告;再比如检测的时效性,一套系统可能30分钟就能做完全部的扫描并完成报告,而人工的话可能才刚把环境配置好。

自动化工具能减轻测试人员繁琐的工作,让大家可以集中精力来测试可能的盲区以及运用其专业知识在最重要的地方,而且自动化测试工具也可以是IT合规检测的关键组成部分。在项目日益激增的时候,在海量资产亟待检测的时候,在重复性报告让人疲于应付的时候,一款适合自己的自动化渗透测试工具就很有必要了。

2 市面上的自动化工具

现在市面上也有很多优秀的自动化检测工具,比如goby、xray、BurpSuite、Awvs、AppScan、Nessus等,其中goby和xray分别出自国内知名安全公司华顺信安和长亭科技,也是每个渗透测试人员的必备工具。

Goby是由华顺信安扛把子赵武Zwell(Pangolin、JSky、FOFA作者)打造,它的资产探测、高效扫描、漏洞利用等等都让人感觉这不仅仅是一个工具,这是渗透的艺术,赵武大神的工具也向来都是这样让人臣服,当为我辈之楷模。

Xray 是长亭科技推出的免费白帽子工具平台,功能丰富调用简单,现在也被很多人用做自己的扫描核心,而且它的企业版“洞鉴”更是让人眼前一亮,出色的检测能力和用markdown编写的检测报告也是让人心悦诚服。

当然,完全的模仿goby和xray是我们做不到的,而且重复造轮子也不是我们要做的,我们只需要在巨人肩上找到适合自己的最佳实践。

3 我们研制的自动化渗透测试工具的优势

其实相比goby的“资产-指纹-漏洞-验证-横向”和xray的“主被动-爬虫-web全扫描-poc检测”,我们不管代码还是检测能力或者是覆盖面都还差很多,但我们的工具也有一些“神器”难以取代的优势。

3.1 可进行模块化测试

我们对渗透、等保、合规等方面的测试项都可以根据需求自行设定,登录机制验证、弱口令猜解、用户名枚举、短信轰炸、未授权访问漏洞、cookie配置等方面都可以进行模块化测试。

3.2 可有效控制风险

自己实现的爬虫,可以有效控制测试时的风险,大大降低系统管理后台登录后扫描测试的风险。

3.3 可快速上手

工具使用简单方便,不论是不懂安全的研发,测试人员,还是后期的运维人员,都可以快速上手,在不增加测试工作量的基础上,零成本,可视化的完成项目安全测试。

3.4 可知可控

漏洞截图、日志留存、报告输出相对可知可控,能满足安服团队的日常需求。

3.5 测试时间较短

测试时间较短,一套常规web系统在10-30分钟左右,这样测试人员可以节省精力去测试一些业务逻辑漏洞之类的就可以。

4 自动化渗透测试工具框架

我们的目的就是让渗透测试服务更快捷、标准化且易操作,因为使用它的可能是专业渗透测试人员,也可能是其他安服部门同事,或者是售前、运维等人员,安装、部署、使用、生成报告都要尽量便捷,所以我们最后是参考了Goby的开发框架,使用了GoLang+Electron+VUE,也能较好支持Windows/MacOS/Linux多平台使用。

我们开发研制的这款自动化渗透测试工具框架是由前端框架、管理中心、漏洞评估、资产探测四部分组成。其中工具界面简洁清晰,易上手,一键即可出报告。同时内置多种模板报告可供选择。

5 自动化渗透测试工具部分功能实现方法参考

5.1 前后端交互

前端和后台的模式主要参考了Goby的实现方式,使用Electron+VUE+nodejs开发前端后打包即可。在前端启动时也会在后台启动服务端,服务端提供了api接口供前端调用,实现前后端交互。

在最初的方案中,我们是想用Golang自带的GUI模块来实现前端界面,但挑来选去没有发现太好用的,要么繁琐要么移植性差。也想过用BS架构,比如gin框架,类似gshark或者pocassist,但我们功能不多,专门弄个web有点大材小用了,所以最后还是选了Electron,而且GoBy 、中国蚁剑、FOFA客户端等也就是基于此方案进行开发的,向大佬们学习肯定不会有错。

5.2 资产探测

因为该工具主要定位是针对单个web资产进行扫描,所以资产的探测主要是在端口扫描、服务指纹识别、应用指纹识别等方面,也能在后面的POC检测环节根据指纹信息来对POC进行匹配,提高精准度降低不良影响。

5.2.1 端口扫描和探测

直接使用了go代码来进行端口存活的发现,使用nmap的指纹库进行服务指纹识别,这部分可以参考dismap和ServerScan。

5.2.2 应用指纹识别

应用指纹识别方面现在市面上有很多开源工具,我之前也用python写过tidefinger,现在也有很多用Golang开发的指纹识别工具,比如dismap、fscan、kscan等,我主要还是根据tidefinger的原理融合了其他几个工具的指纹,并参考了goby的指纹识别方式。

5.3 登录缺陷测试

登录缺陷测试主要是对登录数据包进行一定的分析,然后根据返回包长度、返回数据、cookie变化等进行判断,主要测试了如下测试项:用户名猜解、密码枚举、验证码绕过测试、敏感信息明文传输、是否进行加密、加密算法是否为弱加密、是否存在会话定置、cookie验证缺陷、cookie中存储敏感信息等。

5.4 输出报告

报告是安服检测的最重要的交付物了,我司对报告格式也要求比较严格,所以为了能较好的生成报告也是查了不少资料,开始本来是想用unioffice,但我们的模板有些地方没法生成,而unioffice的代码改起来也比较费劲,而且还不是完全开源免费。最后我们是参考unioffice的原理,自己实现了一个报告生成器,虽然笨重一些,但恰好能满足我们的需求。

结束语

综上所述,我们这款自动化渗透测试工具相比市面上的自动化工具具有很大的优势。但是到目前为止,我们还有很多亟待解决的问题。比如:web常规漏洞扫描、poc的持续维护、逻辑漏洞的检测、安全设备绕过、误报漏检、验证码识别准确度问题、漏洞利用链构造等等,距离burp、goby或者xray还有很长很长的路要走。自动化渗透测试可能是未来发展的趋势,但目前仍处于早期阶段吧,很多问题都还没法用人工智能的方式去实际解决。尽管暂时还无法完全替代渗透测试人员,但有很大一部分内容是完全可以取代人工并且比人工完成的更好更快的,所以才有了我们这个工具。

参考文献:

[1] 李匀.网络渗透测试保护网络安全的技术、工具和过程[M].北京:电子工业出版社,2019.

[2] 卜佑军,王涵,胡静萍,张桥.一种自动化安全渗透测试系统的设计与研究[J].网络安全技术与应用,2020(07):32-34.