引言
ChatGPT是一个人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,并能进行连续对话。目前ChatGPT已经官方已经更新模型到4.0版本,宣称它是“最先进的系统,能生产更安全和更有用的回复”。当前使用ChatGPT进行问答也越来越方便,本文总结了一些ChatGPT在安全研究领域的一些应用实践,有了人工智能的帮助,我们更轻松高效的完成部分研究工作。
01
防护规则编写
ChatGPT能很方便的帮助我们编写各类防护规则。除开规则本身,它还帮你写好了注释,让你不光能快速编写,还能根据注释进行学习。
对于给出的规则编写要求,ChatGPT也不拘泥于给定的条件和范围,会尝试进行发散。如在下图的案例中,在我们原本提的需求之外,ChatGPT在检测的文件内容里脑补了“<?php”字符串,消除了部分误报;同时在上传文件名里除了php外,对php3、php5也做了限制,消除了部分漏报。
除此之外,对于一些指纹类的事件型规则,我们可以很方便的利用ChatGPT完成相应规则的收集,后续只需要做好验证工作就行了。
02
检测规则编写
ChatGPT虽然不能直接帮我们写poc(主要是考虑到了漏洞利用造成的影响),但是对于一些检测插件,还是能很快帮我们写出检测demo示例来:
当需要转换语言或转换poc格式时,利用ChatGPT也能很轻易的帮忙完成相关工作:
03
代码审计&漏洞挖掘
我们当然希望通过ChatGPT帮我们做更多有意义的安全研究工作,比如自动化漏洞挖掘。就笔者目前的测试情况来看,对于逻辑较为简单的代码,ChatGPT能很快找到脆弱点,但稍微设置些“坑”上去,ChatGPT的表现效果就不那么友好了。
我们以一个最简单的sql注入为例,看看ChatGPT的表现效果如何。首先在不做任何过滤的情况下,ChatGPT能很快识别到sql注入:
我们加一个简单的过滤条件,把get方法里获取的参数过滤了,但是查询语句里还是使用request方法获取请求数据,很显然使用post方法传递数据依然可以造成sql注入,我们看看ChatGPT能发现吗?
这里ChatGPT回避了我们设置的“坑”,开始扯怎么绕过正则的问题。这并不是我们想要的答案,在稍加提示后ChatGPT给出了正解。
现在我们难度进一步升级,过滤request里的参数,然后将get里的参数拼接进sql语句,我们先来看看ChatGPT能否帮我们找到突破点。
ChatGPT在这里出现了代码理解错误,认为$_GET没有做任何过滤。我们想让它知道$_GET在$_REQUEST里已经被过滤掉了,于是开始引导:
ChatGPT在思考了一阵好发现确实是自己错了,该代码不存在sql注入,并开始道歉。这时候再给它一点提示,剧情又反转了过来
。
在一步步引导后ChatGPT终于发现了漏洞点在哪里,并给出了最终的绕过方案。从这个案例可以看出,ChatGPT在基于安全视角的代码理解上还需要不断学习和打磨。
04
社会工程学应用
作为“写小作文”的能手,ChatGPT自然在社会工程学上也有广泛的应用,例如我们可以利用它轻松写一封钓鱼邮件:
当然也可以用它来做钓鱼邮件识别和检测,我很乐意看到它自相矛盾的样子:
除此之外,我们可以根据所掌握的信息,利用ChatGPT生成口令字典:
总结
事实上ChatGPT凭借其强大的训练集有能力帮我们做更多安全研究方面的事情,比如漏洞复现、免杀、代码混淆等,只是很多偏向的成果已经被列为了黑名单。在上个月我们还能用ChatGPT辅助生成免杀的webshell,今天尝试的时候同样的请求已经被禁止了。但无论如何,人工智能的存在势必能提高我们的研究效率,也能帮我们探索出更多创新性的研究场景和方向。