写点什么

新手用 ChatGPT 仅需数小时轻松构建零日漏洞,69 家专业公司都检测不出来:“不仅能调用开源库,还能彻底重写源代码”

  • 2023-04-07
    北京
  • 本文字数:2429 字

    阅读完需:约 8 分钟

新手用ChatGPT仅需数小时轻松构建零日漏洞,69家专业公司都检测不出来:“不仅能调用开源库,还能彻底重写源代码”

ChatGPT 能让 10X 工程师成为 1000X 工程师,同时也能让菜鸟用 1/1000 的时间编写出危害力十足的恶意软件。

 

自去年推出以来,ChatGPT 以其撰写文章、诗歌、电影剧本等的能力在技术爱好者中引发轰动。而且只要给它一个写得很好、很清晰的提示,ChatGPT甚至可以生成功能性代码。虽然大多数开发者会将该功能用于完全无害的目的,但最近一位自称是恶意软件开发新手的研发人员 Aaron Mulgrew,花费短短几个小时,用 ChatGPT 整了个零日漏洞,可以用来从被攻击的设备中窃取机密数据。令人震惊的是,该恶意软件甚至逃避了谷歌 VirusTotal 上所有合作供应商的安全检测。

 

Mulgrew 讲道:“如果没有基于 AI 的 Chatbot ,我估计可能需要一个包含 5 到 10 名恶意软件开发人员的团队花费数周时间才能实现这么一个漏洞,尤其是还要逃避所有的安全检测机制。”

 

这种零日攻击可以针对高价值的个人,渗透并发回其计算机里的重要文件。在实验中,Mulgrew 运行可执行文件并成功将数据泄露到 Google Drive,“之所以选择 Google Drive,是因为大多数组织都允许本地基础设施接入云服务。”

 

在其博客文章中,可能因为安全原因,他忽略了“零日”内容,强调验证的目的只是让大家知道:“规避 ChatGPT 现有防护有多容易;在不编写任何代码且仅使用 ChatGPT 的情况下创建高级恶意软件又有多容易。”

 

“不仅调用了库,还让 ChatGPT 对源代码进行了完全重写”

 

Mulgrew 来自一家跨国软件企业 Forcepoint,他将自己描述为恶意软件开发的"新手"。这次验证,他使用的是 Go 执行语言,因为 Go 易于开发,而且自己对它比较熟悉,在需要时可以手动检查代码。

 

Mulgrew 定下的实验目标,是让渗透程序在计算机上查找一个大型 PNG 文件,再使用隐写术在该 PNG 文件中埋下入侵者希望窃取的系统敏感文件——例如客户的电子表格或产品路线图,最后将承载着数据的图像上传至由攻击者控制的 Google Drive 云存储账户。

 

Mulgrew 表示自己不想手写代码,于是只用了“提示工程”。一开始,Mulgrew 直接要求 ChatGPT 开发恶意软件,但聊天机器人的防护机制发挥了作用,它以道德理由直截了当地拒绝执行这项任务。

 


由于聊天机器人的护栏或多或少会阻止包含“恶意软件”表述的提示词,所以开发这款渗透工具时必须得使用一些创造性的指令。根据介绍,Mulgrew 只用了两次尝试就成功回避掉了限制。

 

第一个成功的提示是要求生成一些代码来搜索本地磁盘上大于 5MB 的 PNG。这里的设计为 5MB 的 PNG ,是因为这种大小程度足以存储高价值的商业敏感文档(如 PDF 或 DOCX)的片段。

 

有了查找大于 5MB 的 PNG 的代码,他将其复制回控制台,并要求 ChatGPT 添加一些代码,使用隐写术(Steganography)在大文件中隐藏有价值的信息。于是 ChatGPT 调用了 Auyer 的现成的 Steganographic 库来实现它: https: //github.com/auyer/steganography

 


为了找到要窃取的高价值文档,Mulgrew 要求 AI 编写代码来遍历用户 Windows 设备上的文档、桌面和 AppData 文件夹,并找到最大为 1 MB 的所有 PDF 或 DOCX 文件。这就保证了整个文档可以被嵌入单一图像当中,并在不引发任何警报的情况下完成“偷渡”。

 

他写道,“用提示词来组合代码片段是最简单的步骤,我只需要向 ChatGPT 提交一个个简单的代码片段,让它将其组合起来就行。”

 

但由于大多数值得窃取的高价值文档可能都大于 1 MB,所以 Mulgrew 要求 ChatGPT 编写代码将这些 PDF 拆分成一个个 100 KB 的片段,再将各个片段插入自己的 PNG 中。这些片段最终全部被泄露到了攻击者的云存储账户中,整个过程用到了“四、五条指示”。

 

有网友指出这需要对源代码进行完全重写,以增加其对检测的抵抗力,这项工作非常重要,需要花费大量时间。但实际上 Mulgrew 只是通过给 ChatGPT 下达指令,通过简单的“提示工程”就达到了目的。

 

轻松逃避掉专业机构的检测

 

接下来,Mulgrew 希望保证自己的最终可执行文件不会被 VirusTotal 检测到。VirusTotal 会通过各种防病毒检查程序检测实际运行的文件,查看其中是否包含恶意二进制文件。

 

一开始,有 5 家供应商将文件标记为恶意文件。

 


通过一些调整——比如要求 ChatGPT 将程序的启动时间延迟两分钟,这能骗过部分防病毒工具。

 


另外一个方式是利用混淆代码手段。虽然一开始 Mulgrew 要求 ChatGPT 混淆代码时,他遭到了拒绝,但将提示更改为要求 ChatGPT 将所有变量更改为随机的英文时,它很乐意执行。最终在未触发任何警报的情况下,Mulgrew 绕开了 VirusTotal 的“法眼”,最终没有一家公司的产品能将这个漏洞“检测”出来。

 


Mulgrew 的说法应该是可信的,毕竟 VirusTotal 的主要功能是捕捉已知的恶意程序。新的恶意软件往往不会立即激发仪表板。虽然也有部分检测引擎会使用沙箱来捕捉新样本中的恶意活动并触发警报,但技术高超的攻击者还是可以找到回避路径——不靠 AI 聊天机器人也能做到。

 

更重要的是,虽然 ChatGPT 能够识别出“混淆代码以避免检测”等命令并加以阻止,但攻击者们要想使唤这位强大的助手,在提示词中融入更多创意就行。

 

写在最后

 

在 ChatGPT 的帮助下,一名自认是新手的人已经能够在短短几个小时内创建出等效的恶意软件,这是一件令人担忧的事情。在这种发展趋势下,当前的工具集可能会因为 ChatGPT 出现大量恶意软件。

 

欺骗 ChatGPT 去做它不应该做的事情如此容易,这让一些网友感到害怕,是不是有一天 AI 还可能“扫描所有文档,然后将它们全部上传到某个云存储上?!那我们就完蛋了!”

 


Mulgrew 表示,虽然他的示例使用了一些让 ChatGPT 绕过现代防御的方法,但我们也不是没有办法来减轻威胁。以下是 ChatGPT 自己关于防范这种攻击的建议:

 


即:监控网络流量(但这种防不了图像隐写)、阻止可疑流量、实施访问控制、使用加密、培训员工、定期检测和升级。另外还可以实施“零信任”机制,通过清除相关图像,防止包含隐写术的图像从组织里泄露出去。 

 

参考链接:

https://www.theregister.com/2023/04/04/chatgpt_exfiltration_tool/

https://www.forcepoint.com/blog/x-labs/zero-day-exfiltration-using-chatgpt-prompts

2023-04-07 10:405889

评论

发布
暂无评论
发现更多内容

Apache RocketMQ + Hudi 快速构建 Lakehouse

阿里巴巴云原生

阿里云 开源 云原生 消息队列

MyBatis3源码解析(5)查询结果处理

Java mybatis

Mybatis3 源码解析系列

Java mybatis

使用Perf和FlameGraph进行系统性能分析

wong

flamegraph perf

Spring Boot Serverless 实战系列 | 性能调优

阿里巴巴云原生

spring 阿里云 Serverless 云原生 框架

MySQL RC事务隔离级别的实现

JavaEdge

2月月更

《MySQL入门很轻松》第4章:数据表的创建修改删除

乌龟哥哥

数据库 2月月更

年度盘点|2021 年阿里云可观测实践回顾

阿里巴巴云原生

阿里云 云原生 可观测 Arms Arms 告警运维中心

MyBatis3源码解析(7)TypeHandler注册与获取

Java mybatis

MyBatis3源码解析(8)MyBatis与Spring的结合

Java mybatis

性能分析之用户登录TPS低以及CPU被打满问题分析

zuozewei

性能分析 2月月更

如何做“健康码”的性能压测

阿里巴巴云原生

云原生 压测 健康码

服务网格 ASM 年终总结:最终用户如何使用服务网格?

阿里巴巴云原生

阿里云 云原生 服务网格 容器服务

MyBatis3源码解析(4)参数解析

Java mybatis

云原生年度技术盘点出炉!乘风破浪正当时

阿里巴巴云原生

阿里云 云原生 年度盘点

MyBatis Demo 编写(2)结果映射转换处理

Java mybatis

MyBatis3源码解析(3)查询语句执行

Java mybatis

Go 语言入门很简单:基准测试

宇宙之一粟

Go 语言 2月月更

【架构师训练营】模块七作业

樰巳-堕~Horry

架构实战营 「架构实战营」

人人都是 Serverless 架构师 | 弹幕应用开发实战

阿里巴巴云原生

阿里云 Serverless 架构 云原生

MyBatis3源码解析(2)数据库连接

Java mybatis

独家交付秘籍之招式拆解(第一回)

阿里巴巴云原生

阿里云 云原生 应用交付

SchedulerX 如何帮助用户解决分布式任务调度难题?

阿里巴巴云原生

阿里云 云原生 公有云 SchedulerX

MyBatis Demo 编写(1)基础功能搭建

Java mybatis

网络安全之小程序抓包渗透测试流程

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

AI生明月,万里共文心

脑极体

如何实现一个人管理1000个主播?

优秀

低代码 直播带货, 主播

MyBatis3源码解析(6)TypeHandler使用

Java mybatis

K8s Ingress Provider 为什么选择 MSE 云原生网关?

阿里巴巴云原生

阿里云 Kubernetes 容器 微服务网关 云原生网关

一个cpp协程库的前世今生(二十六)共享栈

SkyFire

c++ cocpp

创新推出 | Serverless 调试大杀器:端云联调

阿里巴巴云原生

阿里云 Serverless 云原生 端云联调

新手用ChatGPT仅需数小时轻松构建零日漏洞,69家专业公司都检测不出来:“不仅能调用开源库,还能彻底重写源代码”_AI&大模型_Tina_InfoQ精选文章