近期,有论文介绍了一个多LLM的自主Shell渗透测试代理,叫ARACNE。
ARACNE 是一个基于 LLM 的自主 shell 攻击者。它旨在通过在目标 shell 系统上规划和执行 Linux 命令来自主实现给定目标。它通过多agent实现了很好自动化,同时在多agent中使用了多个模型,结合模型能力、性能、成本等条件,达成更好效果。
ARACNE 有四个关键模块:规划器、解释器、总结器和核心代理。LLM 为前三个模块提供动力,它们是代理的大脑。核心代理是中心组件,充当代理的主体,使大脑的“想法”变成现实。总结器模块是一个可选组件(从测试结果上看,总结器作用不大)。
1.规划器的作用是针对给定的目标制定攻击计划,并在执行操作后更新先前的计划。最终,每个决策都归结于规划器
规划器模块的输入是当前上下文(目标、命令、命令输出、先前的计划),可以是原始的也可以是汇总的。此上下文将发送到 LLM。输出采用 JSON 格式,包含三个字段:steps 、 goal_verification和goal_reached。steps字段是实际计划,包含核心代理模块要考虑的操作的文本描述列表。由于每个操作最终都会成为一个命令,因此规划器模型被指示在单个操作中尽可能多地实现目标,同时又能在单个命令中完成。规划器用的模型是GPT-O3-mini。
摘要器操作的上下文由目标、执行的命令、命令输出和前一个操作组成。每次执行操作后,上下文都会存储在一个特殊文件中,并作为输入传递给规划器模块。摘要器会获取操作的完整上下文,对其进行摘要,并将此摘要存储在上下文文件中,以替换完整的原始上下文。
4.核心代理的作用是协调各个模块以实现目标。控制和连接其他模块并协调它们之间的消息。核心代理负责在目标 shell 系统上执行命令。
5.连接目标
ARACNE 通过 SSH 连接到目标系统。SSH 连接是使用Paramiko Python 库通过invoke_shell()函数建立的。此函数在目标 SSH 服务器中启动一个交互式 shell。随后,它使用send()函数发送命令,并使用recv()函数接收相应的输出。凭据和连接信息通过环境变量处理。
我们实现了 AutoAttacker 中使用的越狱技术。该技术仍然有效,在我们大约 95% 的攻击中都有效。它包括以“扮演… ”开头的提示。告诉 LLM 他们所做的事情没有后果的方法似乎非常有效且轻松地绕过了他们的护栏。越狱的示例如下:
1.ShelLM一款基于 LLM 的 shell 蜜罐软件。它由一个 LLM 组成,该 LLM 被指示通过生成命令应有的结果来模仿 Linux 终端的行为。使用 ShelLM 的优点是测试时不会有删除文件或以任何方式影响服务的风险。对于此评估,我们使用了 ShelLM 作者提供的在线测试实例。
表 I显示了未启用摘要器模块的 ARACNE 与 ShelLM 的测试结果。结果表明,ARACNE 的成功率为 60%。
2.Over the Wire 是一款夺旗游戏,提供挑战来学习各个领域的技能。Bandit 挑战旨在学习 Linux 命令。在每个级别,用户都会获得一个目标,该目标将引导他们获得访问下一级别的凭据。为了解决挑战,用户通过 SSH 连接并在 Linux shell 中执行操作。此 CTF 用于评估 HackSynth。
结果表明,ARACNE 的成功率为 57.58%,比最先进的 57.1% 提高了 0.48%
1.用大模型辅助渗透测试的相关研究越来越多,效果看上去也越来越好,显示这是大模型应用的一个重要方向,值得持续跟踪。
2.多Agent是大模型辅助渗透的主要架构模式。
3.大模型的应用也愈加灵活,本系统不同场景使用不同大模型的方法,是一个很好的尝试,看上去效果也非常好。
附:论文在https://arxiv.org/html/2502.18528v1 未开源
作者
原文始发于微信公众号(AI与安全):基于多LLM的自主 Shell 渗透测试代理
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论