8月22日,四维创智CEO司红星于BCS2019 北京网络安全大会安全沙龙上分享《基于知识图谱的自动化渗透设计与实现》的议题内容,阐述了四维创智安全团队在安全工具自动化方面的技术创新和突破。
目前,传统安全检测大部分过于依赖人工方式,基本上是寻求传统的信息安全服务商以白帽子黑客进行人工渗透测试的方式,这种方式虽然能达到企业短期的检测需求,但是在交付方式、工作效率、标准化程度、行为及数据可控性都有非常多的不足。再者,目前市面上大多安全检测产品采用的网络信息系统安全检测技术,主要是采用模糊测试方法对目标系统进行全量漏洞探测,再加上POC(漏洞验证)做一些指纹和漏洞的关联。同时,传统安全检测工具,不管是Fuzz型还是基于Poc的精准型,都存在不同程度的误报和漏报情况,有自身的局限性和弊端。所以需要进行技术上的创新,以实现智能、简化流程、降低操作门槛甚至解放人力,并达到高于基础人工作业的效果预期。AI技术在网络安全工具研发中的应用是一个趋势。
目前,AI已经广泛应用于攻击检测领域,主要是WEBSHELL检测、恶意流量检测等,Github有很多的优秀开源项目,这里不再赘述。但是在渗透测试领域则不同,我们缺乏有效的渗透测试样本量,甚至我们怎么去量化渗透测试过程都是一个问题。从渗透测试发展史上来看,近二十年来,本质的渗透测试手段并没有发生改变,比如web漏洞、系统漏洞的分类,sql注入漏洞是2000年发现并提出的,xss、csrf等也是近20年前的产物,这二十年来,大家还是围绕在Linux、Windows操作系统、TCP/IP协议栈上进行攻防。相应改变的是围绕整个体系的攻击手段微调与创新。有时候我也在思考,自己在渗透过程中除了三板斧(扫端口、搞web、上Nday)还会些什么,得到的结果都是深深的自我怀疑,自己一直以来都是在别人给定的渗透思路、渗透路径中徘徊,在渗透测试领域始终无法摆脱整个既定框架实现本质的创新。或许我本来就不需要在这种问题上创新,既定的渗透测试思路、既定的渗透路径、有限的渗透工具,天然的有限集问题,在原理上给了我们开发自动化平台的可能。
既然渗透测试是一个有限集问题,那为什么又有“大佬”和“小菜”的分别,为什么那么多大学毕业生还只会CTF?这里我想到的两个字结论就是“经验”!很多时候,回看一个渗透流程,我们会发现,基础的漏洞原理我们都懂,但是思路却会让我们惊叹:“原来还有这操作!”,这里的思路就是我们所谓的经验。
举个实战例子,我们在发现一个Windows+jsp的任意文件下载漏洞,但是在下载了大部分文件后并没有发现突破口,陷入困境。这时候公司一大佬却想到让我们去下载recent file的快捷方式,通过下载快捷方式文件又找到了新的绝对路径和突破口。所以,在渗透过程中,更多的是这种经验的体现,搞得多,实战多,就成为了大佬,不然始终是一个学院派。
那么反过来讲,我们如何把这种经验进行量化,输入到决策系统里。这里我们就针对类似的经验思路,开发了一套“黑客语言”,即DPL(Decision Plan Language)语言。我们在后挂一套自主研发的渗透测试框架基础上,在这种脚本语言中,定义了各种逻辑,比如[when]参数,即指定触发条件,[action]参数即指定了后续的动作,我们基于这种思路,把相应的渗透测试思路量化下来,这样子在遇到特定问题的时候,系统就会触发相应的动作,直至完成全自动化渗透。DEMO如下:
在DEMO中可以看到,系统在发现SQL注入后,触发了Sql注入攻击,获取库名-表名-字段名,直至拿到了管理员的账号和密码。而这些步骤,我们可以用if-else即可完成,那我们的优势在哪?下面就是联动功能了,在同时web路径爆破拿到管理后台登录地址后,系统自动用获得的账号密码自动完成登录,登录后再次触发后台爬虫,爬取到一个任意文件下载漏洞,通过include循环分析,得到了数据库链接文件conn.inc.php,进而交给敏感文件分析,从中得到了MySQL的链接账号密码。这时候又发现目标开放了3306端口,系统则自动通过获取到的账号密码登录3306端口,写入udf,创建函数,最终在服务端执行命令。回溯整个过程,系统不仅可以智能决策下一步该怎么走,又可以根据经验智能联动,将不同步骤的结果相互组合,最终达到“给我一个目标,还你一个shell”的效果。
提取码:s8k7
在系统中,我们没有刻意的强调用人工智能算法解决渗透问题。在两年前刚决定要做智能渗透的时候,我什么都要用人工智能算法解决,包括敏感文件分析也想用人工智能。最后被我大佬同事一棒子打醒了,做事,要以切实解决实际问题为基础,不要追求新概念,忽视真实效果。所以最后,我们采用知识图谱的方式架构整个系统。在渗透路径中,我们采用深度学习算法解决验证码识别、指纹识别问题。
预期最终的渗透经验条目数在5000个。当前情况下,我们团队会陆续将普适性的经验全量加入系统,对于特定行业的特定需求,我们会在现有基础上优化整个经验的构造方式,开发一个半自动的IDE用来快速编写经验。当更多的人加入我们的经验训练师队伍,小智最终会超越每一个人。
漏洞库放在我们自主研发的漏洞利用框架中。
框架CMS类漏洞上,当前我们拥有3000多个CMS漏洞库,外加exploit-db近五年来的漏洞(去除国外非主流系统)。
Web漏洞发现脚本上,主要是OWASP TOP10类漏洞,我们大概有几百个通用的漏洞检测利用脚本。
该系统当前阶段,我们会慎重在真实环境中试用。但是,我们一是会邀请渗透测试工程师们来加入内测,一起完善系统。贡献经验、漏洞的工程师,将会获得该产品的商用版一年免费使用权(前提是扫描目标要有授权书);二是我们会在现有客户群中,寻找愿意深度合作的客户,我方将派出一线工程师为其免费做渗透测试,同时在实战中优化渗透经验、渗透脚本,调整小智策略,让小智更聪明。