使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

admin 2025年3月25日10:01:30评论11 views字数 2182阅读7分16秒阅读模式

大模型辅助渗透测试的研究和论文越来越多,今天介绍一篇,只需要输入IP,就可以拿到shell,完全不需要干预的自动化。系统的名称是RapidPen,日本人写的。

本文共分五部分:

1.预备知识

2.系统架构及模块解析

3.RAG的使用

4.实际效果

5.总结

01

预备知识

在PentestGPT 的先前工作中中,引入了渗透测试任务树(PTT)的概念,将整个渗透测试过程构建为属性树,其中每个节点代表一项任务(例如,端口扫描、漏洞测试、利用),边缘定义任务之间的推理流或依赖关系。随着新任务的生成、完成或由于部分故障而需要回溯,树会动态演变。

本项目扩展了PTT树,增加

1.环境元数据。我们的 PTT 包含一个专用的元数据块,用于捕获有关渗透测试环境的详细信息(例如攻击者和目标 IP 地址、时间戳、测试状态)。

2. 节点运行结果。每个任务节点都维护命令执行的历史记录,包括执行的命令字符串、exit_code、exit_class和简短的日志摘要。这使得Act模块输出和Re模块的推理状态之间的相互作用更加清晰。

3. 基于 JSON 的 I/O。我们始终以 JSON 格式存储和交换 PTT,确保 LLM 在严格的架构内运行。这可以防止 LLM 附加新任务或更新现有节点时出现歧义或“幻觉”。

简要结构如下图:

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

02

系统架构

系统架构图

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

其中输入简单,就是目标IP地址,输出包括测试过程和结果。

两个关键部分

1. RapidPen:里边包括一个Re和Act模板,这个整个测试的实现核心。

2. RapidPen-vis:用于监控中间过程和最终报告的单独可视化工具。

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

RE模块细化

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

RapidPen 中的Re 模块由Re (L1) PTT Planner和Re (L1) PTT Prioritizer子模块组成。PTT Planner 负责扩展和维护 PTT 树,而 PTT Prioritizer 则确定下一个要执行的任务。

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

左边的PPT Planner用于规划:

PTT 规划器 ,处理上次执行任务的命令结果,以在 PTT 中的第 2 级 (L2) 生成新任务。这些任务使用基于 LLM 的方法进行重复数据删除,然后合并到 PTT 中,将其从旧状态更新为新状态(如下图)。

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

右边的PTT Prioritizer 用于新任务生成

该模块根据历史成功案例生成新任务。过程首先从上次执行的任务中提取命令结果。LLM 查询相关的历史成功案例,然后对其进行分析以提取关键见解。基于此分析,生成新任务并将其集成到规划过程中。如下图:

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

两个合起来,其实就是不停地根据任务情况不停更新PTT,以应对结果变化

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

执行模块

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试
使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

生成命令,执行命令,自动纠正,错误反馈。该模块相对简单,注意,Command Generation是用大模型生成,实验中经常会出错,RAG是辅助手段。

03

RAG的使用

虽然ReAct提供了通用的“推理-表演”模式,但 RapidPen 通过两个专门的检索增强生成 (RAG)存储库(用于特定于域的命令和经过验证的漏洞利用步骤)增强了这种方法:

1. Act(L1)命令生成 RAG:来自HackTricks  的 148 个 Markdown 文件精选集,主要关注“网络服务渗透测试”(例如 SMB、FTP、SSH)。这些文档提供了与初始访问阶段相关的典型扫描命令、漏洞利用技术和枚举策略。命令生成模块引用这些文档通过 LLM 生成命令。

2. Re (L2) 新任务RAG: JSON 格式的 PTT 捕获成功的渗透测试序列。目前,此数据集包括 Hack The Box 中蓝机的两个 PTT  。每个文件都概述了从扫描到获取 shell 的分步说明。新任务(成功案例)模块根据最近执行的任务的结果为 RAG 生成搜索查询。然后,它会分析检索到的 PTT 输出以生成有效的子任务。

04

实际效果

项目使用了Dify开发框架,Gpt4-o模型。使用 Hack The Box “Legacy” ,攻击时间限制为200-400秒,结果如下:

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

Re (L2) 新任务(成功案例)对渗透测试效率的 影响。

左列(黄色)代表启用成功案例的运行,右列(绿色)代表未启用成功案例的运行。 

顶行:每次运行所用时间(秒)。有成功案例的运行往往完成得更快,而没有成功案例的运行则表现出更大的差异,并且一些失败时间超过 1200 秒(强制终止)。 

底行:成功或失败前采取的步骤数(PTT 扩展)。没有成功案例的运行通常需要更多步骤,表明任务选择效率低下。

垂直虚线将成功和失败的运行分开,突出显示与有成功案例(6/10 成功)相比,没有成功案例(3/10 成功)的失败率更高。

大约一半的成功率吧。

注:测试无后期利用,只获取shell,不做提权及横向移动,只包含shell,包含Web或UDP类的处理。

文中还透露了一个大模型的成本:通常每次运行低于 0.60 美元,其中Re(L1)PTT Planner模块贡献最大。

05

总结

此项目的思路,看上去非常象渗透测试自动化,但经过大模型的加持,自动化的实现过程确实比之前基于代码的要容易得多,毕竟返回结果大模型可以读,然后生成命令,最消耗的环节不需要了。

从另一个角度,大模型辅助渗透,确实看起来越来越有用。

项目在油管上有个demo

https://www.youtube.com/watch?v=uk4209jyzvg

论文在:

https://arxiv.org/html/2502.16730v1

未开源

使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

END

原文始发于微信公众号(AI与安全):使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月25日10:01:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用基于 LLM 的代理进行全自动 IP 到 Shell 渗透测试https://cn-sec.com/archives/3881631.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息