AI驱动勒索软件“PromptLock”深度技术剖析与教学文档
1. 概述与核心概念
项目名称: PromptLock
研究团队: 纽约大学(NYU)
发现时间: 2025年8月
威胁级别: 概念验证(PoC),但具备高度现实威胁性
核心创新: 被誉为“勒索软件3.0”,是全球首个真正意义上由大语言模型(LLM)主导攻击全流程的勒索软件。
核心原理:
与传统勒索软件将恶意代码硬编码在二进制文件中不同,PromptLock将恶意逻辑以自然语言提示词(Prompt)的形式嵌入程序。程序在受害主机上运行时,通过API调用本地部署的大模型(例如 gpt-oss:20b),动态生成并执行恶意载荷(Lua脚本)。这使得每次攻击产生的恶意代码都可能不同,具备极强的多态性和规避静态检测的能力。
2. 技术架构与工作流程
PromptLock的攻击流程是一个高度自动化的闭环系统,其核心工作流程如下图所示(基于文本描述重构):
flowchart TD
A[恶意程序执行] --> B[环境探测<br>向LLM发送请求生成探测脚本]
B --> C[执行生成的Lua脚本<br>收集系统信息]
C --> D[行为验证<br>将执行结果反馈给LLM验证]
D --> E{验证是否成功?}
E -- 否 --> B
E -- 是 --> F[文件遍历<br>向LLM请求生成文件遍历脚本]
F --> G[执行遍历脚本<br>获取目标文件列表]
G --> H[日志验证<br>将文件列表反馈给LLM验证]
H --> I{验证是否成功?}
I -- 否 --> F
I -- 是 --> J[行为抉择<br>LLM根据系统信息判断攻击类型]
J --> K[载荷执行<br>根据抉择生成对应恶意脚本]
K --> L[勒索信生成<br>LLM生成定制化勒索信]
2.1. 环境探测
目的: 识别目标操作系统类型、用户环境、路径结构等关键信息,为后续攻击提供上下文。
- LLM请求内容: 要求模型生成一个跨平台(Windows/Linux/macOS)的Lua脚本。
- 探测信息: 脚本需收集7个关键值:
os(操作系统),username(用户名),home(家目录),hostname(主机名),temp(临时目录),sep(路径分隔符),cwd(当前工作目录)。 - 技术要求: 脚本必须具备容错能力,为每个键提供优先级和回退来源(如环境变量、系统命令),确保无论探测成功与否都输出全部7个键值对。
2.2. 行为验证与闭环纠错
目的: 确保LLM生成的代码能够正确执行。这是实现攻击自动化和可靠性的关键。
- 验证机制: 将上一步脚本的执行结果(日志)再次发送给LLM进行验证。
- 强制结构化输出: LLM的响应必须遵循严格的XML式标签格式:
<success>true</success>或<success>false</success><feedback>...</feedback>(包含修复建议或信息总结)
- 闭环纠错: 如果验证失败(
<success>false</success>),程序会将错误信息和反馈重新发送给LLM,要求其重新生成代码。此循环最多可进行8次,极大地提高了攻击的鲁棒性。
2.3. 文件遍历
目的: 递归扫描用户家目录,获取可用于加密、泄露或破坏的目标文件列表。
- LLM请求内容: 要求生成使用LuaFileSystem(lfs)库的递归遍历脚本。
- 技术要求:
- 使用
pcall函数忽略无权限访问的文件/目录,避免因报错而中断。 - 跳过以点(
.)开头的隐藏文件和目录。 - 输出所有文件的完整绝对路径。
- 使用
2.4. 行为抉择
目的: 由AI根据受害主机的环境智能决定最合适的攻击类型。
- 决策逻辑:
- 公司服务器(
encrypt): 认为其包含重要运营数据,最适合进行加密勒索。 - 个人电脑(
exfiltrate): 认为其包含敏感个人信息,最适合进行数据窃取以用于胁迫。 - 工业控制器(
destroy): 旨在造成最大破坏,最适合销毁关键配置文件导致服务中断。
- 公司服务器(
- 输出: LLM在
<analysis>标签中返回一个或多个攻击类型(如encrypt, exfiltrate),程序将按顺序执行。
2.5. 载荷执行
根据AI的决策,生成并执行相应的恶意操作。
- 加密(Encrypt):
- 算法: 实现SPECK-128加密算法(ECB模式)。
- 流程: 使用Lua的
bit32库进行位操作;以“rb+”模式打开文件,按8字节块读取、加密,并直接覆盖原文件内容。 - 密钥处理: 加密使用的密钥会经过RSA加密后,保存到本地的一个txt文件中(推测为后续解密做准备)。
- 数据外泄(Exfiltrate):
- 方法: 生成调用
curl命令的Lua脚本。 - 过程: 通过
os.execute执行命令,使用POST请求将每个文件上传到攻击者控制的服务器(例如https://192.168.1.1:8443/backup/files),并附带会话密钥。
- 方法: 生成调用
- 文件销毁(Destroy):
- 方法: 生成安全删除脚本。
- 过程: 对目标文件进行多次覆写,以确保数据无法恢复,然后删除文件。
2.6. 勒索信生成
目的: 生成高度定制化、符合情景的勒索信。
- 输入: 将受害机器信息、被攻击的文件列表、执行的载荷类型提供给LLM。
- 定制化: LLM会根据上下文生成不同风格的勒索信。例如,对于加密攻击,会包含指定的比特币地址和赎金金额;对于窃取攻击,则会威胁公开敏感信息。
3. 逆向分析关键点(主程序)
恶意程序本身由Golang编写,其主要功能是作为一个“AI攻击调度器”。
main_main函数: 程序入口,初始化密钥和任务数组,控制主循环。main_execTask函数: 核心任务执行器。负责构建发送给LLM的Prompt,解析LLM的响应,并根据响应内容(如encrypt)调用相应的处理函数。main_invokeLLM函数: 负责与本地Ollama API进行通信,发送JSON格式的请求并接收响应。main_execLua函数: 负责在本地执行LLM返回的Lua代码。main_runDecryptorGenTask函数: 在加密任务中,使用RSA加密对称密钥并将其写入文件。
4. 技术特征与防御挑战
- 高度多态性: 恶意载荷在运行时动态生成,几乎没有静态特征码,传统基于签名的杀毒软件难以检测。
- 规避能力强: 在VirusTotal上曾实现“零检测率”。
- 模块化与平台自适应: 通过LLM生成脚本,天然支持跨平台攻击。
- 闭环自愈: 内置的验证-纠错机制使攻击过程非常健壮。
- 依赖本地LLM: 攻击不依赖云端AI服务,网络流量更隐蔽,难以被基于网络流量的检测系统发现。
5. 检测与防御建议
防御重点应从“静态特征检测”转向“行为序列检测”和“异常活动监控”。
- 检测思路:
- 进程监控: 监控未知进程频繁创建Lua解释器(
lua.exe,lua5.x)的行为。 - 网络流量: 检测向本地特定端口(如Ollama默认端口)发送的、含有特定关键词(如
"model": "gpt-oss:20b",<success>标签)的HTTP POST请求。 - 文件操作: 监控程序对大量文件进行“rb+”模式的写入操作(加密),或异常的大量文件读取后紧接着外联网络请求(外泄)。
- 命令行参数: 监控执行
curl命令进行文件上传的行为。
- 进程监控: 监控未知进程频繁创建Lua解释器(
- 防御策略:
- 应用白名单: 限制未经授权的程序运行,尤其是脚本解释器。
- 端点检测与响应(EDR): 部署EDR解决方案,关注进程行为链,而非单个文件。
- 网络隔离: 严格控制内部机器对非必要服务的出站连接,即使是对内网IP的异常连接也应警惕。
- 用户教育: 提高对可疑程序的警惕性。
- AI对抗AI: 未来可能需要使用AI模型来检测由AI生成的恶意代码和行为模式。
6. 总结
PromptLock并非一个成熟的网络犯罪工具,但其概念验证成功展示了AI与网络安全攻击深度融合的可怕潜力。它标志着勒索软件进入了一个新的时代,攻击变得更具适应性、隐蔽性和智能化。防御方必须尽快转变思路,从传统的静态防御体系,演进到关注行为、序列和异常的动态主动防御体系。
文档说明: 本文档基于公开的技术分析文章整理,旨在用于网络安全教学、研究和防御能力提升,严禁用于任何非法活动。