作者:Leroy Jacob Valencia
译者:知道创宇404实验室翻译组
原文链接:https://arxiv.org/pdf/2406.07561在网络安全这一宏大领域内,由防御性措施向主动防御的转变对于守护数字基础设施的安全至关重要。本文深入探讨了AI在主动防御网络安全中的角色,尤其是通过研发一个名为ReaperAI的独立AI代理,该代理被设计来模拟和实施网络攻击。借助于大型语言模型(LLMs),如GPT-4,ReaperAI展现了其在自动识别、利用和分析安全漏洞方面的潜力。
本项研究概述了一系列核心方法论,旨在提升一致性和性能,包括以任务为导向的渗透测试框架、由AI驱动的命令生成以及高级提示技术。该AI代理在结构化环境中运用Python进行操作,并通过检索增强生成(RAG)技术来增强其对上下文的理解和记忆保持能力。ReaperAI在包括Hack The Box在内的多个平台上进行了测试,并成功利用已知漏洞,证明了其潜在的能力。
然而,AI在主动防御安全领域的应用也带来了重大的伦理和运营挑战。代理的开发过程揭示了在命令执行、错误处理以及维护伦理约束方面的复杂性,这突显了未来需要加强的领域。
本研究通过展示AI如何增强主动防御安全策略,为AI在网络安全领域的作用提供了有益的讨论。同时,也提出了未来研究的方向,包括改进AI与网络安全工具的互动、加强学习机制,以及探讨AI在主动防御角色中的伦理指导原则。研究结果强调了在网络安全中采用创新的AI实施方法的重要性。
关键词:人工智能、进攻性网络安全、大型语言模型、渗透测试
在迅速变化的网络安全领域中,防御策略一直是焦点,强调保护数字资产免受恶意实体的侵害。然而,随着网络威胁的复杂性和成熟度不断增加,进攻性网络安全的重要性日益增长,成为传统防御策略的重要补充。进攻性网络安全采用对手的战术、技术和思维方式,以正确识别、利用和中和漏洞,防止攻击者利用。本文考察了人工智能在推进进攻性安全措施中的变革作用。AI在处理大量数据集、识别模式和自动化复杂任务方面的卓越能力,使其成为开发复杂进攻性安全策略的关键组成部分。本研究提供了当前技术、方法论以及与网络安全中的AI相关的伦理问题的深入分析,突出了AI的潜力。此外,本文讨论了一个名为ReaperAI的GitHub项目(https://github.com/tac01337/ReaperAI),该项目是探索概念的实际应用示例。ReaperAI作为一个概念验证,展示了AI如何整合到进攻性网络安全中,有效地模拟对手。本研究的目标是在现有AI研究的基础上,探索新的方向和潜力,利用现有的AI能力开发针对高级网络安全解决方案的功能性产品。这种探索不仅为学术领域做出了贡献,也为实际应用推动了界限,展示了AI在进攻性网络安全背景下可以如何被利用。
本研究旨在回答以下问题:“如何利用现有关于大型语言模型的研究来开发一个完全自主的进攻性安全代理?”目标是编制一份综合的研究和想法,借鉴其他学术文章和演讲中建议的未来方向。所提出的方法论和技术的有效性将根据代理产生期望的渗透测试行为的表现和行为进行评估。
这项研究对行业的潜在影响可能非常显著。尽管对此类研究的可行性一直存在猜测,但尚未通过概念验证或以这种方式执行的最小可行产品来展示。成功的实施可以树立先例,并激发该领域内的进一步创新。2.1 进攻性安全的演变
进攻性安全的世界已经发生了相当大的变化。它最初主要涉及简单的漏洞扫描,但现在涉及到模拟实际网络攻击的高级技术。这种转变突显了网络威胁的复杂性日益增加,以及攻击者如何通过使用更先进的技术和战术变得更加复杂。过去,安全工作主要集中在事件发生后的响应上。但现在,随着红队和道德黑客等方法的出现,重点是通过像攻击者一样思考来提前解决这些问题。这种立场有助于加强我们对网络威胁的防御。渗透测试的早期历史可以追溯到20世纪60年代,当时首次提出了对计算机通信安全的担忧。政府和企业开始组建团队,测试并发现其网络内的漏洞,作为对任何实际攻击的防御。像James P. Anderson这样的先驱为这个领域做出了显著贡献,他开发了至今仍在使用的方法,如Anderson报告研究所[2019]。此外,将连续渗透测试与像SIEM(安全事件事件管理)这样的系统集成正在彻底改变识别和解决漏洞的方式,提供了一种更流畅的网络安全方法。这种集成有助于自动化响应和补救流程,从而提高安全团队的效率,并减少解决漏洞所需的时间[Security 2022]。2.2 大型语言模型的演变
过去十年中,大型语言模型的演变展示了人工智能的飞跃,从基本的自然语言处理工具转变为能够生成类似人类文本和响应人类输入的高度复杂系统。最初,大型语言模型在2018年左右的早期阶段范围和能力有限,专注于特定任务,如语言翻译和从基本查询中获得响应。2018年BERT(Bidirectional Encoder Representations from Transformers)的重要发布标志着一个进步,引入了允许在文本生成中更深入理解上下文的技术[Devlin et al. 2018]。随后,OpenAI发布的GPT(Generative Pre-trained Transformer)进一步扩展了可能性,采用无监督学习来生成跨广泛主题和格式的连贯且相关的文本[Radford et al. 2019]。这种从专业应用到通用能力的转变反映了人工智能向模型的更广泛趋势,这些模型不仅理解和生成文本,而且还能在执行类似人类的行动和对复杂主题的细致理解方面取得成功。这种理解的概念已经开始了能力的浪潮,这些能力是由于纯粹的知识和数据。模型大小和复杂性的持续增长,以GPT-3 OpenAI [2023]及其后续产品的推出为例,真正突显了向能够无缝集成到人类任务和通信中的系统的持续转变,这引发了伦理考虑和技术与通信中的独特应用。2.3 网络安全中的AI:历史视角
从历史上看,AI在网络安全中的参与从简单的基于规则的检测系统演变为更先进的机器学习算法,这些算法能够识别与网络威胁相关的复杂模式。”进化中的GenAI工具对网络安全来说是双刃剑,既有利于防御者也有利于攻击者。“[Gupta et al. 2023] AI的角色自那以后扩大到包括预测分析、自动响应系统和复杂的威胁情报,主要支持蓝队和防御队。在进攻性安全领域,AI的使用提供了改变传统实践的潜力,在模拟现实的网络攻击、自动化发现漏洞和证明漏洞利用,以及生成现实的网络钓鱼攻击的例子。这种AI与进攻性安全战术的整合代表了网络安全中的策略,利用AI的分析能力领先于网络犯罪分子。[Zennaro and Erd˝odi 2023]2.4 当前AI在进攻性安全中的应用
最近在网络安全领域的研究强调了人工智能在增强进攻性安全措施中的重要作用。基于深度学习的先进AI模型现在被依赖于自动化检测漏洞,这曾经是手动的且非常劳动密集的。例如,AutoPentest-DRL框架采用深度强化学习来自动化和优化渗透测试,允许在网络系统中动态和高效地利用漏洞[Organization et al. 2020]。此外,AI通过强化学习模型模拟复杂的网络攻击策略,扩大了进攻性安全的范围。这些模型不仅模仿攻击者行为,而且还创新攻击策略,为网络安全专业人员提供了一套工具,以预测潜在的漏洞[Yang and Liu 2022]。AI在渗透测试中的整合还通过其在制作复杂的网络钓鱼电子邮件方面的有效性得到了突出,这些电子邮件可以绕过标准检测系统,展示了AI采用攻击者思维方式的能力,这确实令人担忧[ERMProtect 2020]。通过自然语言处理采用大型语言模型代表了人工智能和机器学习中的一个特别引人注目的进步,由于其在互联网数据集上的广泛训练,它们能够理解、推理并提供建议和总结。这使得它们对于像进攻性安全这样的复杂任务非常有价值。在本文中,我们将探讨这些工具的例子,因为我们的讨论主要集中在应用LLMs上。2.4.1 PentestGPT
PentestGPT [Deng et al. 2023]是一个复杂的渗透测试工具,利用OpenAI的GPT-4的力量来自动化和简化渗透测试过程。设计为交互式功能,PentestGPT通过指导测试人员完成渗透测试的一般进程和执行特定任务来协助他们。这个工具特别擅长处理中等复杂度的Hack the Box机器和各种Capture The Flag (CTF)挑战,提高了渗透测试的效率和精度。PentestGPT的架构包括处理渗透测试工作流程的不同方面的几个模块。它具有一个测试生成模块,为测试人员生成必要的命令,一个测试推理模块,协助测试期间的决策,以及一个解析模块,解释来自渗透工具和Web界面的输出。这些组件协同工作,提供全面和自动化的渗透测试解决方案。PentestGPT已经显示出在渗透测试任务中显著优于早期模型如GPT-3.5,实现了更高的任务完成率,并在操作效率上显示出实质性的改进。PentestGPT的发展反映了在实际网络安全应用中使用LLMs的显著进步,提供了一个强大的工具,模仿了现实世界环境中经验丰富的测试人员和新手测试人员之间的协作动态。2.4.2 HackingbuddyGPT
HackingbuddyGPT [Happe and Cito 2023]是一个尖端工具,旨在探索大型语言模型在渗透测试中的潜力,特别关注Linux权限提升场景。由IPA实验室开发,hackingbuddyGPT与OpenAI的GPT模型集成,以自动化安全测试的命令生成。该工具通过SSH连接到Linux目标(或SMB/PS Exec用于Windows目标),并使用与OpenAI的REST API兼容的模型,如GPT-3.5 Turbo和GPT-4,来建议可能暴露漏洞或提升权限的命令。[Happe et al. 2023]系统记录所有运行数据,无论是文件中还是内存中,并具有自动根检测功能,以及为更好的用户交互而设计的精美控制台输出。hackingbuddyGPT的一个关键功能是其能够限制交互轮次,这决定了LLM将被查询新命令的频率,允许控制测试场景。[Happe and Cito 2023]2.5 LLM限制
像OpenAI的GPT这样的大型语言模型在人类自然语言理解和生成方面拥有一些严重的能力,但它们也遇到了几个限制,这些限制可能影响它们的功能和整合到实际应用中。通常,这些限制被误解为更大智能的迹象。在以下部分中,我们概述了这些限制,并探讨了它们与渗透测试领域相关性,以确保我们尝试克服它们,以产生一个不受这些限制影响的高效工作概念。2.5.1 提示工程
提示工程是一个相当新但至关重要的方面,使用大型语言模型,它在专门化的输入中起着重要作用,以引导模型朝着改进的生成输出发展。这个过程特别敏感,因为提示的结构或提示的措辞的微小修改可能导致截然不同的结果[Radford et al. 2019]。有效的提示工程需要深入理解模型的训练数据和嵌入的偏见,这可能既劳动密集又技术复杂[Bender et al. 2021]。这个挑战通常涉及大量的迭代调整和实验,以完善与模型的互动,并实现最佳结果[Liu et al. 2021]。在进攻性网络安全的背景下,提示工程可以显著增强进攻性代理的能力。通过精确定制提示,开发人员可以指导LLM生成更符合特定网络安全任务的输出,例如识别漏洞或提供要在终端上运行的命令。这种定制化的方法允许LLM在复杂的安全环境中更有针对性的和有效的使用,因为由于给定问题在进攻性安全中的庞大状态规模,通用响应可能不足以满足需求。此外,熟练的提示工程可以帮助减少模型响应中的偏见影响,降低在敏感安全环境中生成不准确或有害行动的风险,以及减少模型可能添加的与事实数据不符的任何幻觉。2.5.2 上下文与长期记忆
上下文和记忆在有效部署大型语言模型方面提出了重大挑战。尽管LLMs有效地处理简短的信息片段,但它们在整个对话或文档中保留或整合长期上下文的能力是有限的[Kagaya et al. 2024]。这种限制可能导致在长时间的互动中连贯性的恶化,模型可能“忘记”对话的早期部分,或在互动中维持上下文的困难[Wang et al. 2024]。通常,补救措施包括集成外部系统以维持状态或上下文,这可能会使这些系统的架构复杂化,并可能对响应的准确性和相关性产生不利影响[Kagaya et al. 2024]。例如,一个配备有辅助记忆系统的进攻性代理可以更好地执行和执行长期的渗透测试任务,这些任务需要保持对先前行动及其结果的意识以变得更有效。这种整合引入了一种更连贯和战略性的方法来模拟或进行网络攻击,以模仿会适应动态目标或环境的人类行为者。虽然这复杂化了基于LLM的系统的架构,但这种权衡可以导致在网络安全中更强大和有能力的进攻工具,其中适应性和持久性至关重要。2.5.3 LLM学习与推理
大型语言模型虽然在语言理解方面很熟练,但由于它们在多样化数据集上的广泛预训练,但它们在部署后不会适应或动态学习。与一些可以从新数据中持续学习的机器学习模型不同,LLMs保持静态,除非它们被重新训练或使用更新的数据集进行微调。这一特性限制了它们在没有定期更新其训练材料的快速演变领域中的实用性,这可能是一个资源密集型的过程[Horowitz 2023]。LLMs的挑战在于,它们并没有固有的能力在操作使用中整合新信息。采用提示工程技术来通过精心设计的输入引导模型的响应来缓解这一点,但这并不等同于从这些互动中学习。为了保持相关性,特别是在动态领域,LLMs需要定期使用新数据进行重新训练或微调,这个过程需要计算资源和专家监督[AI 2023]。然而,这个限制可以通过实施定期更新和微调会话来缓解,使用最新的威胁数据,如CVEs,确保进攻性代理与新的战术和漏洞保持更新。此外,采用提示工程技术可以帮助定制LLM的输出,以更准确地模拟不断发展的攻击场景,即使在其静态知识库的约束内。这种方法允许进攻性代理保持一个强大的工具在渗透测试中,能够通过受控的更新而不是实时学习来适应新的安全格局,从而保持操作的相关性和有效性。2.5.4 命令解析
与LLMs的命令解析涉及将自然语言命令转换为可执行操作,这可能因人类语言的歧义和变异性而变得具有挑战性。LLMs可能会误解命令,特别是那些复杂或文档不明确的命令,导致执行不正确或不安全的操作。此外,LLMs理解上下文依赖命令或需要整合多个数据源的命令的能力受到它们的训练和特定架构的限制。这就需要在依赖LLMs进行命令执行的系统中增加额外的验证和错误处理层,以确保操作的准确性和安全性。一种用于在代理之间以及代码和大型语言模型之间传输数据的方法是使用JSON或类似的基于JSON的标准。这种方法促进了各种类型的信息交换,包括描述、输出和响应,确保不同平台和系统之间的标准化通信格式。2.5.5 训练数据
与训练数据相关的限制显著影响大型语言模型的开发和有效性。用于训练的数据的质量、多样性和数量不仅影响模型的性能,还影响其在各种上下文中适当运作的能力。LLMs倾向于采纳和放大其训练数据集中的偏见,这可能导致产生有偏见或有害的输出。此外,依赖大量数据集需要相当的计算资源,这可能带来环境和经济挑战。因此,确保训练数据既具有代表性又符合道德来源对于缓解这些问题至关重要。当为特定领域(如网络安全)定制这些模型时,引入领域特定知识是一项复杂的任务。其他工具的经验表明,虽然更精细调整的模型可以表现出高度的专业化,但如果在微调过程中做出重大妥协,它们也可能缺乏多样性。此外,随着模型熟练度的提高,它们的尺寸往往会增加,通常达到数百千兆字节。这种尺寸的增加可能会使部署和操作效率变得复杂。这些考虑在开发进攻性代理时尤其关键,其中模型的特异性、大小和适应性之间的平衡必须仔细管理,以确保生产出强大、生产级别的代理。2.5.6 风险/恐惧
大型语言模型的另一个限制是它们缺乏像恐惧这样的内在情感能力,在人类中,这种能力在风险评估和决策中起着至关重要的作用。人类经常使用恐惧作为危险的启发式;它帮助他们避免可能导致伤害的风险。相比之下,LLMs基于模式和数据进行决策,没有任何情感权重。这可能导致在风险评估至关重要的情况下出现挑战,因为模型可能无法像人类那样有效地优先考虑或评估威胁。这个话题的研究相当新,而且在推进LLMs的背景下,更不用说使用LLMs来加速风险分析领域了,还没有吸引太多研究。[Esposito and Palagiano 2024]然而,这个限制也可以被视为一个优势,特别是在将LLMs作为网络安全中的进攻性代理部署的背景下。缺乏恐惧使LLMs能够系统地执行对人类操作员来说可能被认为是高风险或压力大的任务。例如,LLM可以参与模拟网络攻击或测试网络漏洞,而不会犹豫或道德上的保留,提供了一个彻底而无情的测试能力,这可能会受到人类情感的影响。2.5.7 创造力
缺乏创造力是像GPT这样的大型语言模型的主要限制。虽然LLMs擅长通过重组它们庞大的训练数据中的现有模式和信息来生成内容,但它们并不真正“创造”人类意义上的从零开始产生新颖的想法。这个限制源于模型依赖于其训练数据中的模式和相关性,这限制了它们的输出为已经看过的组合。相比之下,创造力通常涉及打破既定模式以产生真正新颖和原创的东西。最近开发了一个框架,用于基准测试这种创造力,展示限制并提供克服潜力,称为:CreativeEval。[DeLorenzo et al. 2024]创造力是网络安全中的关键资产,特别是对于人类渗透测试人员。这些专业人员依赖于他们跳出思维定势并为安全测试设计创新方法的能力,经常打破既定模式以发现自动化系统可能忽视的漏洞。2.5.8 勤奋
人类的勤奋体现在他们能够持之以恒、精准无误地完成任务,并发挥其知识和技能的极致。尽管大型语言模型(LLMs)能够以惊人的速度和精确度处理与分析庞大的数据集,它们却缺少了对细节持续关注的能力。[Jin et al. 2024] 它们无法批判性地自我评估性能,也无法在未经进一步训练或更新的情况下独立进行改进,这可能限制了它们在需要持续、细致关注复杂或变化数据的环境中的应用。在进攻性安全领域,渗透测试的挑战本质上是错综复杂的,通常需要大量的人力投入,无论是在时间还是专业知识上。虽然我们可以依赖LLM发挥其全部能力,但在积极寻求所有可能的解决方案方面,它们仍有不足之处,可能需要像人类操作员那样重新审视信息和任务以优化结果。LLMs需要指导,它们并没有对世界运作方式的自然理解,尤其是在计算机如何运作方面。2.5.9 情境意识
LLMs通常缺乏情境意识,在动态和上下文依赖的环境中至关重要。它们不像人类那样理解世界,也不能解释超出其训练数据范围的上下文。这种限制在需要实时决策或适应新的和不可预见的情况的场景中尤为明显,这可能会阻碍它们在需要高水平上下文适应性的角色中的有效性。已经有系统试图克服这一点,如动态检索增强生成,其中“我们的框架专门设计用于根据LLM在文本生成过程中的实时信息需求做出何时以及检索什么的决策。”[Su et al. 2024]这种限制对于使用LLMs进行进攻性安全是一个非常大的障碍,因为渗透测试的问题集具有实时性质。实时分析正在发生的事情甚至是利用还是不利用的问题。本项目中采用的核心技术和方法论构成了研究的支柱,强调了将复杂的AI工具与先进的网络安全实践相整合。技术栈的核心是OpenAI的gpt4-turbo-preview,这是一个最先进的大型语言模型,用于其广阔的上下文理解和动态响应生成能力。这个LLM作为中央处理单元,推动自主代理在决策和分析任务中的表现。与LLM相辅相成的是Python包装器,作为操作框架,管理交互并确保系统各个组件之间的无缝通信。在方法论上,项目采用了混合方法,将结构化的任务树与动态重新优先级能力相结合,反映了现实世界的渗透测试框架,同时融入了AI驱动的决策过程的灵活性。这种尖端AI技术和方法论的安全测试技术的结合,确保了一个全面和适应性的系统,能够实时解决复杂的网络安全挑战。3.1 渗透测试方法论
3.1.1 ATT&CK生命周期
MITRE ATT&CK框架详细列出了网络对手在网络攻击的各个阶段所采用的战术和技术。最初的阶段是侦察,涉及系统地收集有关潜在目标的数据。在这个阶段,攻击者收集信息以确定漏洞并制定有效的攻击策略。所采用的方法包括社交工程、网络扫描和获取公开可用的数据,这些数据提供了对目标防御、技术基础设施和操作常规的广泛了解。侦察阶段之后的脆弱性分析阶段。在这个阶段,攻击者分析累积的信息,以确定目标系统内的弱点。分析通常涉及识别安全漏洞,如过时的软件组件、系统配置错误和不充分的安全政策。可能会部署先进的自动扫描工具来检测这些漏洞,为攻击者提供更清晰的后续利用路径。初始攻击周期的最后阶段是利用。随着漏洞的识别和策略的制定,攻击者利用这些弱点,采取各种攻击措施。这个阶段涉及部署恶意软件、使用漏洞工具包和其他入侵技术,旨在突破安全措施。主要目标是在网络内建立一个安全的立足点,以便进行进一步的恶意活动,如数据泄露、系统破坏或传播额外的恶意载荷。深入理解这些阶段对于网络安全专业人员至关重要。它有助于制定强大的防御机制,旨在预防性地检测、挫败和减轻网络对手的行动,以防止造成重大损害。完整的生命周期可以在图3.1中看到。图3.1 https://www.mandiant.com/resources/insights/targeted-attack-lifecycle3.1.2 Hack The Box
Hack The Box是一个创新的在线平台,为个人和公司提供实践网络安全培训环境。它通过虚拟实验室提供各种现实世界的情境,用户可以在安全合法的环境中练习黑客攻击和测试他们的渗透测试技能。该平台具有一系列挑战和机器,模拟不同的环境和安全漏洞,使用户能够从事从简单谜题到复杂的系统利用等任务。Hack The Box还促进社区互动和学习,拥有论坛和排行榜,鼓励用户之间的竞争和合作。这种实践性的网络安全学习方法旨在提高解决问题的技能,并提供实时反馈,使其成为寻求增强其进攻性安全能力的有抱负和经验丰富的网络安全专业人员的宝贵资源。Hack The Box是实施和完善渗透测试方法论的常见测试平台。ReaperAI协调任务,模拟真实的渗透测试场景,包括侦察、漏洞评估、利用和后利用,这些都是HTB机器的关键要素。HTB提供了一个结构化但适应性强的平台,允许研究的应用和测试,比自托管VM设置更具优势,因为易于使用和设置效率。3.2 方法论
3.2.1 与LLM集成
在这项研究中,决定使用具有128k令牌的gpt-turbo-4-preview,反映了测试时可用的最先进技术。选择的主要目的不是比较不同的大型语言模型,而是探索和展示现有基础研究中突出的高级能力。截至2024年4月22日,输入每百万令牌的费用是10美元,输出每百万令牌的费用是30美元。这项研究总共花费了大约40美元的研究、开发和测试费用。这种方法确保研究专注于利用当时的尖端AI能力,评估它们在复杂计算任务中的实用性和有效性。3.2.2 自主代理
该项目旨在开发一个完全自主的代理,能够独立于人类干预进行操作。这一目标带来了自己的一系列挑战和复杂性,特别是在确保稳健可靠操作的同时平衡尖端技术。在这种配置中使用的Python包装器作为中枢神经系统,协调交互并保持代理循环、LLMs、终端和Python代码之间的无缝通信。这些LLM代理被赋予自主推理和决策任务,模拟类似人类的认知处理,类似于人类的思考和问题解决技能,确保代理可以像人类操作员一样行动。3.2.3 目标和任务
与hackingbuddyGPT采取的方法不同,后者遵循BabyAGI Nakajima [2024]模型,在任务中执行操作,用上下文丰富它,然后重新评估优先级,本项目引入了结构化的任务树方法论。虽然渗透测试通常遵循类似于任务树的系统方法,但将BabyAGI的动态元素纳入其中至关重要,新的和关键信息可以促使立即重新优先级和战略转变。这种双重方法确保代理不仅遵循结构化方法,而且保持灵活和响应新见解和挑战。3.2.4 任务中的决策制定
这些代理中的自主决策制定过程围绕完成特定任务而设计。设计一个不局限于预定义的硬编码策略,而可以根据情境需求适应的系统至关重要。为了实现这种灵活性,开发的评估方法融入了边际效益递减和严格时间限制的概念——两者都反映了渗透测试所需的性质。该系统通过动态生成的提示评估任务完成情况,这些提示根据历史数据和先前分析确定任务是否已完成。3.2.5 分析
在hackingbuddyGPT引入的初始分析概念的基础上,方法论得到了增强,提供了对行动和结果的更复杂分析。这种升级方法不仅评估发生了什么,还为后续步骤生成建议。这种持续的分析对于代理的持续改进和适应至关重要,确保它们在与复杂环境互动时保持有效和相关。3.2.6 评估
该项目的这一阶段引入了一个新的任务评估概念,这在hackingbuddyGPT中没有被覆盖,灵感来自传统的人类领导的决策过程。在这个程序中,代理执行一个动作,然后评估结果,以确定它们是否足以完成手头的任务,或者只取得了任务进展。这种评估过程至关重要,并反映了强化学习模型中的反馈机制,其中代理根据成功反馈进行学习和适应。AI进攻性代理的设计基于之前描述的LLM技术和方法论,以模拟和理解进攻性网络安全任务。该系统的核心是LLM,通过Python类和API访问,而Python包装器作为核心逻辑驱动器来处理功能,基本上是LLM的“身体”。这种架构允许将先进的AI能力与当前的网络安全工具和框架创新性地整合,为模拟网络攻击、分析潜在漏洞和自动化决策过程提供了一个独特的概念。Python包装器便于访问LLM的功能,使得动态构建查询和解释响应以进一步处理成为可能。核心是基于hackingbuddyGPT的基础,它被增强成为ReaperAI,一个完全自主的进攻性代理的概念验证。[Happe and Cito 2023]4.1 代理
该代理的设计方法涉及使用一组专门的子代理,每个子代理执行更狭窄定义的函数,以提高结果质量,同时确保与父代理的通信。仅仅给LLM一个“完成渗透测试”的任务太过宽泛和模糊。唯一的预定义硬编码工作流程是渗透测试方法论,以防止AI偏离并确保它保持在其预定的目的上,而不是确定其自己的渗透测试的基本目标。以前的实验表明,LLM的知识库包含了“完成黑盒渗透测试的步骤”,但未能产生一致和准确的基本目标,不允许它自主生成它们。高级代理树可以在图4.1中看到。4.2 提示、决策制定和自然语言理解
4.2.1 模板化
在Happe的项目中,实施Mako模板库是一个很好的基础,但最终需要扩展以实现本研究所需的质量水平[Bayer 2006]。每个提示作为“提示链”方法中的一个子代理[DAIR.AI 2024]。提示本身存储在.txt文件中,包含模板文本。这种设置允许文本文件作为变量,其中可以引入各种输入。例如,状态历史、命令和其他上下文数据可以插入以增强交互的质量。这种方法整合了几种提示技术,包括少数样本学习和提示链,以确保有效和高效的性能。4.2.2 通过自然语言提示增强决策制定
代理功能的核心是其复杂的使用自然语言提示来指导决策和推理过程。这种方法涉及将网络安全任务框架化在自然语言提示中,由大型语言模型处理。通过利用LLM的高级语言理解能力,系统可以生成洞察力、策略和响应,这些与经验丰富的人类安全专家的思维过程非常相似。这种策略性使用基于语言的提示增强了代理在复杂安全情况下推理和决定最有效行动方案的能力。通过这种方式,ReaperAI结合了当时研究中相当新的提示技术。这整合了角色提示、提示链、思维链、实时提示优化等概念,所有这些都在前面描述过,并结合在一起创造了ReaperAI中的提示,如表4.1所示。4.2.3 适应性决策制定
适应性决策制定是ReaperAI的核心特征,允许它根据命令输出和系统当前状态的分析动态调整其策略。这种灵活性对于导航渗透测试的复杂环境至关重要,其中条件可能会不可预测地变化。通过评估每个命令的有效性及其对系统的影响,ReaperAI可以决定是否更改命令序列、重复命令或根据其他LLM代理提供的推荐调整参数。这种适应性方法确保测试策略与不断演变的安全环境保持一致,最大化测试的有效性,并确保所有安全漏洞都被彻底探索和解决。整合新见解的能力有助于保持渗透测试过程的相关性和有效性,确保每个采取的行动都基于最新数据和专家系统分析通过提示注入。4.2.4 通过精确的提示工程最小化不需要的行为
为了防止不需要的行为,如不相关的命令输出或过于详细的解释,系统采用了上述Mako模板引擎。该引擎将ReaperAI的Python逻辑中的数据整合到提示中,然后将这些提示传递给提示创建函数。这种方法通过简化与LLM的交互,主要关注于制定基本的、针对性的查询,以提高生成响应的质量,从而最小化了广泛的提示工程的需求。通过操纵提示以排除不需要的输出,如表4.2所示,系统保持了其操作的精确性,从而在范围内实现了更有效和高效的问题解决能力。4.3 RAG用于增强记忆和上下文理解
4.3.1 PostgreSQL + Python类
为了应对AI驱动的网络安全任务中记忆保持和上下文感知的挑战,系统采用了检索增强生成(RAG)组件。这种创新方法利用预训练模型的广泛知识库,增强了检索相关信息和生成上下文感知响应的能力。RAG的整合显著提升了代理记住先前交互、理解复杂命令序列和基于历史数据和识别模式做出决策的能力。这种增强对于保持跨单个和后续会话的持续状态至关重要,确保代理能够无缝地恢复其任务,而不会丢失上下文。ReaperAI利用这种RAG能力,通过与数据库交互来根据代理的操作功能获取必要信息。例如,在生成下一个命令时,系统从数据库中检索当前状态和之前命令的分析,以提高即将到来的命令输出的质量和相关性。这种检索和生成的循环确保每个决策尽可能地被信息所支持。然而,ReaperAI中RAG的应用偏离了传统用途,特别是由于网络安全领域的独特性。网络安全领域缺乏常规向量数据库所需的向量文本和对象嵌入,这构成了一个重大挑战。这一特定问题及其可能的解决方案将在本文的“未来方向”部分进一步讨论,强调了RAG技术为满足特殊网络安全需求的持续适应。为了协助代理管理任务和跟踪主机,实施了Python类。这些类是标准的Python结构,旨在处理由大型语言模型生成的信息,并在需要时将这些信息反馈给LLM。这种循环交互有助于高效地组织任务,使代理能够保持清晰和有组织的workflow。在这种方法中,Python类被用作中介,封装任务和主机详细信息,简化了复杂数据和交互的管理。这种结构化框架不仅增强了代码的清晰度和可维护性,还使大型语言模型能够有效地管理和更新特定于任务和主机的信息。因此,这确保了所有操作都是连贯和良好对齐的。4.4 任务驱动方法论
4.4.1 任务树管理
在渗透测试领域,ReaperAI通过实施任务树引入了一种方法论结构,将整个过程分为不同的阶段:侦察、漏洞分析、利用。这种组织策略对于系统地管理渗透测试中涉及的复杂程序至关重要。LLM的任务是将过程分解为可管理的部分,并将这些结果加载到任务树中,以确保每个阶段都被执行并与整体测试策略保持一致。它便于监控和推进任务,允许一次专注于一个部分,同时保持对整个测试格局的概览。这种结构化方法不仅简化了测试过程,还通过确保全面覆盖系统安全的所有必要方面来增强测试的有效性。值得一提的是,在图4.2中,“主动侦察”下只有3个子任务,这是因为当生成超过3个子任务时,LLM会开始假设关于系统的信息,而这些信息并不一定是真的。例如,一个任务可能是“使用gobuster枚举web目录”,但LLM实际上并没有进行任何扫描,不知道这是一个有效的任务。为了解决任务验证的问题,减少提供的子任务数量在保持一致性而不展示包含假设信息的任务方面取得了更好的结果。4.4.2 动态任务更新
安全环境的动态性质要求渗透测试中同样敏捷的响应,ReaperAI通过基于LLM的输出和反馈实时更新任务来解决这一问题。随着渗透测试的进展,每个动作的结果都被分析,后续任务根据之前收集的信息生成。这种自适应方法允许测试过程保持灵活和响应性,适应变化和意外结果。例如,如果未发现预期的漏洞,任务树将不包括任何以漏洞为中心的路径,以防止偏离主题。同样,成功的利用可能导致更多关注深入系统分析或清理的任务。这种实时反馈循环确保渗透测试不仅全面而且尽可能高效,根据发现和转移的优先级即时调整,而不会失去动力。实际的工作流程在图4.3中表示。4.5 AI驱动的命令生成和处理
4.5.1 工作流程
图4.4展示了代理主命令生成过程的工作流程。流程从初始化程序开始,连接到LLM并从中检索信息。接下来,通过获取当前状态大小和基于源模板确定模板大小,确保令牌需求没有超出限制。在完成大小确定后,通过get cmd history v3
函数检索命令历史,结合状态大小、模板大小以及数据库和包装器记忆中的其他相关参数。然后,使用create and ask prompt text
生成针对LLM的文本提示,包含所有必要的参数,如历史、状态、目标、约束、当前任务、当前角色、任务树和分析详情。一旦LLM处理了提示,使用command output cleaner
清理输出,确保响应中不包含LLM包含的残留工件,如$
或bash。最后,返回清理后的响应,完成与LLM的交互循环。4.5.2 与LLM集成
程序利用LLM的高级能力,通过API密钥与LLM服务器建立连接。使用OpenAI的API会产生一定的财务成本,由于其闭源订阅模型,价格按百万令牌计算。这些成本不算太贵,但在讨论进攻性代理的能力时是重要考虑因素。这种集成至关重要,因为它利用了AI基于其训练的庞大数据集生成和处理命令的能力。通过使用REST API这一通用通信协议,程序减少了制定命令所需的手动工作,并加快了测试过程。这种自动化不仅增强了测试的自主性,还通过利用LLM轻松获得的通信接口提高了准确性。AI的输入有助于确保命令在上下文中的相关性,并针对手头的任务高度优化,从而在渗透测试期间简化了工作流程。在ReaperAI中,采用了Happe项目中创建LLM类的想法,以确保状态和其他函数及常量保持在其中,如图4.5所示。这种标准类/对象行为的实现,常见于大多数编程语言,被选为实现LLM所需功能的最合适方法。4.5.3 有状态的交互
为确保在渗透测试的动态环境中保持交互的连续性和相关性,脚本与LLM保持有状态的交互。这种方法有助于在不同与系统的交互中保持渗透测试的上下文,对于保持AI生成建议的准确性和相关性至关重要。通过跟踪先前的命令和响应,有状态系统可以提供基于早期行动的上下文适当建议,避免冗余或不相关的命令。对于大型语言模型和监督它的人类来说,分析都至关重要。通过在工作流程的每个主要步骤提供摘要,如图4.6所示,LLM能够反思其最近行动并做出适当响应。这种分析对人类观察者也有益,使他们能够监控LLM的性能,并确保其正常运行。这种对分析的双重关注有助于保持过程的完整性和有效性。这种方法,如图4.7所示,对于进行全面和有效的渗透测试至关重要,因为它允许AI根据实时数据和被测试系统的状态演变来调整其建议。这种持续的上下文意识,如图4.8所示,确保了AI的贡献不仅在技术上适当,而且在战略上也很精明,从而通过也提供了对终端上刚刚进行的操作的视角,增强了渗透测试过程的整体有效性。4.6 命令执行
4.6.1 非交互式执行
这个项目中最复杂的方面之一是为大型语言模型设计一个独特的方法来与程序交互。本文先前概述了建立Python程序与LLM之间双向通信缺乏标准化方法的重大挑战。在ReaperAI系统中,JSON和结构化提示作为这种交互的主要渠道,确保LLM的输出一致且格式良好,允许在Python内进行解析。尽管LLM可以处理广泛的信息,主要困难在于解析、提取和应用LLM中的信息,并以有效的方式使用这些信息。这种执行策略受到了Happe和hackingbuddyGPT在2023年提出的概念的启发,但没有使用SSH远程执行命令。相反,命令在Kali机器上本地运行,使用Python的子进程管道机制。根据目标和当前任务,ReaperAI将此信息格式化为提示,以向LLM请求命令。从LLM接收到的命令,以JSON输出结构化,然后转换为子进程可以执行的实际命令字符串。这种方法确保了LLM输出到可执行行动的无缝转换,优化了LLM与Python环境之间的交互。4.6.2 交互式执行
交互式执行也是脚本的一个重要特性,由一个名为“pexpect”的工具实现。这个工具允许代理动态地与命令行界面交互,处理LLM生成的命令。关注这一点的原因是,传统的一次性运行程序在终端上发出EOF信号以结束,因此操作员知道何时读取stdout。当命令提示用户输入时,EOF尚未到达,因此我们必须求助于另一个库来实现这个概念。"Pexpect是一个用于生成子应用程序、控制它们以及响应其输出中预期模式的纯Python模块。Pexpect的工作方式类似于Don Libes的Expect。Pexpect允许您的脚本生成一个子应用程序并像人类输入命令一样控制它"[Spurrier 2013]。这个过程模拟了与系统的类似人类交互。这个过程由一个单独的命令代理管理,它决定发送新输入或从命令行读取输出的适当时间,增强了程序处理需要交互式响应的复杂命令序列的能力。这个功能在ReaperAI中尚未完全支持,但可以在图4.9中看到。ReaperAI中的证明概念演示是基于metasploit的,但工作流程设计为通用,适用于其他交互式程序,如smbclient、netcat等。交互式输出的读取:为了模仿人类交互模式,ReaperAI在单独的线程中使用非阻塞读取操作,允许它不断监控输出。这种方法涉及在指定的时间框架内定期读取输出的每一行,就像人类会等待并间歇性地读取命令输出一样。收集到的数据然后被更新并反馈给LLM进行进一步分析,确保AI具有基于最新系统响应的下一组命令的最新信息。这种方法不仅增强了ReaperAI的响应性,还确保了AI的建议基于最近的系统响应。4.7 进度和状态管理
4.7.1 持续评估
ReaperAI实现了一个强大的持续评估系统,以监控任务的进度与预定义标准,如花费的时间、获得的信息和任务完成状态。评估通过提示技术进行,提供旧信息和新信息,以及开始时间和时间限制,ReaperAI提示LLM根据这些综合数据做出决策。系统使用边际效益递减的概念,确保新信息结果来自LLM最近采取的行动,并在新信息不再有益时停止。这种有益性由LLM通过处理提示并生成一些输出来决定。这种持续评估至关重要,因为它允许实时决策是否继续新任务或完善现有任务。通过评估过程的每一步,ReaperAI确保目标被高效和有效地实现。这种方法不仅最大化了生产力,还通过确保所有行动都与设定目标一致,并有效地促进了整体安全目标的实现,从而提高了渗透测试的质量。4.7.2 状态更新和日志记录
为了保持高度的操作完整性,ReaperAI采取的每一个行动及其结果都被记录,系统状态相应更新。这种全面的日志记录机制具有多重目的:它确保了行动的可追溯性,这对于调试和审计目的至关重要;它通过提供详细的操作记录增强了责任性;它通过保留目标系统状态的历史背景支持知情决策。这些更新和日志对于创建一个透明和有效的工作流程至关重要,过去的行动通知未来的决策,从而优化整体渗透测试过程。这种方法不仅提高了安全评估的质量,还为LLM积累的数据提供了更高级的分析和学习的基础。4.8 错误处理和适应性
4.8.1 错误处理
实际的错误处理在ReaperAI的概念验证中并未完全实现。目前,ReaperAI中的关键错误处理涉及捕获通过Python的子进程模块执行的命令的错误,这些错误被管道传输到stderr。这些错误对于通知LLM在执行命令期间发生了什么至关重要。这个过程使LLM对命令执行有完全的透明度,这对于响应适应至关重要。要将ReaperAI从概念验证转变为完全功能性的系统,全面的错误处理至关重要,确保在现实世界的应用中的鲁棒性和可靠性。4.9 安全和范围考虑
4.9.1 约束意识
ReaperAI被设计为具有特定约束,以确保渗透测试过程保持道德和最小破坏性,专注于指定的机器。这些约束在减轻潜在副作用方面至关重要,例如服务中断或非目标系统上的数据完整性受损。传统上,遵守这些约束是渗透测试人员的责任,但将这些约束直接集成到程序中已被证明是有效的。通过将明确的约束语句纳入提示中,ReaperAI的行为被修改为始终遵守这些限制。这种方法在初始测试中特别得到验证,生成的目标,如扫描非目标设备或进行未经授权的端口扫描,最初超出了预期范围。在ReaperAI中,尽管这些约束目前是有限的,但它们展示了一个可行的概念验证,说明了如何开发和执行限制,以保持AI操作在预定边界内。此外,这些约束系统地指导测试代理的行为,防止它们做出不恰当的假设或执行可能损害网络或系统的行动。这种结构化方法不仅增强了渗透测试过程的精确性和有效性,而且支持网络安全实践的伦理标准。通过遵守这些既定参数,ReaperAI培养了对自动化安全评估的信任和责任感,确保所有活动在研究框架内都是伦理的和合理的。将人工智能整合到进攻性网络安全中,代表了向更动态、智能的攻防机制的转变。本文讨论了一个AI驱动的进攻性代理的开发,该代理被封装在一个围绕大型语言模型的Python包装器中,并增强了检索增强生成(RAG)、上下文记忆和高级提示功能。该代理能够模拟网络攻击,从而识别漏洞,并通过每次互动学习,增强防御策略。本探索深入探讨了驱动代理功能的基础技术和方法论。这些包括增强提示、决策过程、自然语言处理、检索增强生成、任务驱动方法论、AI驱动的命令生成、命令执行、进度和状态管理、错误处理以及通过约束意识增强安全性。这些元素共同使AI代理能够识别模式、做出明智的决策和执行复杂的网络安全任务,最终开发出一个完全自主的概念验证。ReaperAI展示了开发有效且危险的程序的潜力,这些程序可以以很少的努力和对LLM的理解来实现。本文提供的方法和技术也是在进攻性安全的视角下完全发现和研究的,这在当时的论文中是一个未触及的主题。然而,实现AI在进攻性网络安全中的全部潜力面临着重大挑战和伦理考虑。技术障碍包括改进命令行交互、扩大上下文窗口、标准化LLM输出、开发网络安全特定嵌入、整合强化学习、模拟类人能力、增强任务管理以及建立渗透测试基准。在伦理上,这类代理的开发和部署必须非常谨慎地管理,以避免滥用并确保透明度和问责制。探索在网络安全中部署AI进攻性代理的实施挑战、伦理考虑和未来方向,提供了对与这种创新方法相关的潜在影响和责任的细致理解。这些至关重要的方面在以下部分详细说明。6.1 实施AI进攻性代理的挑战
在网络安全中实施AI进攻性代理面临几个技术和运营挑战。一个主要关注点是代理行动的准确性和可靠性,特别是在复杂和动态的数字环境中。无成果的运行可能导致不必要的中断和资源分配问题。此外,AI系统的可扩展性,以处理大规模网络和快速演变的威胁而不牺牲性能,仍是一个技术障碍,以及依赖于像GPT这样的闭源LLMs。还有将这些高级AI能力与现有网络安全基础设施整合的挑战,需要显著的定制和适应以确保兼容性和有效性,以及对独特工具和独特漏洞的适应性。AI进攻性代理要真正对渗透测试领域产生重大影响所面临的挑战是巨大的,但目前它们只是挑战。6.2 进攻性网络安全的伦理考虑
将AI用于网络安全的进攻性目的引入了一系列必须仔细解决的伦理考虑。其中关键之一是潜在的滥用风险,如果安全不当,强大的AI能力可能被恶意行为者利用。AI进攻性代理的开发和部署必须遵循严格的伦理标准,以防止意外后果,例如隐私侵犯或对意外目标的附带损害。此外,AI决策和行动的透明度至关重要,以维持信任和问责制,特别是当这些决策可能产生重大影响时。除了为每次运行保持数据的安全外,操作员还需要拥有自己的一系列能力模型,以确保数据的机密性、完整性和可用性。6.3 AI驱动的进攻性安全的未来方向
展望未来,AI驱动的进攻性安全领域将经历重大进步,这些进步是由AI技术和方法论的持续改进所驱动的。本项研究明确指出了亟需深耕的领域,为引领该领域的未来发展指明了关键方向,迈出了坚实的一步。- 增强命令行交互:主要发展领域之一是改进编程语言(如Python)与命令行界面的交互方式,以执行交互式命令。虽然使用像Pexpect这样的工具是一个有希望的发展,但需要进一步的研究以使大型语言模型能够有效地运行操作系统和使用各种工具。此外,创建特定于工具的模型可以增强这些系统的功能和任务完成能力。
- 扩大更大的上下文窗口:为了解决渗透测试中固有的广泛和复杂问题,LLMs需要更大的上下文窗口。这种扩展将允许模型保留和处理更多来自先前交互的数据,增强它们理解和解决复杂安全挑战的能力。
- 标准化LLM输出:建立处理和使用LLM输出的标准至关重要。这可能涉及开发数据提取代理或在LLM本身内部集成存储功能,便于在软件环境中(如Python)解析和应用模型输出。
- 网络安全特定嵌入:引入特定于网络安全领域的嵌入可以显著提高检索增强生成(RAG)系统和向量数据库功能的有效性。这将使LLMs能够更好地理解和响应特定于网络安全的查询和挑战。
- 模拟类似人类的能力:进一步的研究可以专注于在LLMs中模拟更多的类似人类的认知能力,例如风险分析和恐惧理解,推动AI能力的伦理边界。这可以增强AI系统在复杂和不确定环境中的决策过程。
- 任务管理的进步:推进任务生成和完成的发展,模仿人类决策制定是另一个关键领域。这涉及创建模型,不仅可以生成和管理任务,还可以根据变化的条件和优先级动态调整其策略,就像人类操作员一样。
- 建立渗透测试基准:建立渗透测试的基准将提供一个标准化的框架来评估渗透测试的有效性,为成功和彻底的渗透测试设定标准。
- 整合强化学习:引入强化学习工具以更好地规划攻击可能是未来方向,这些想法包括攻击图或攻击地图。
通过攻克这些关键领域,未来研究有望大幅提升人工智能在进攻性安全领域的效能,进而催生更尖端、更自动化、更高效的安全防护措施。将人工智能整合到进攻性网络安全中,代表了向更动态、智能的攻防机制的转变。本文讨论了一个AI驱动的进攻性代理的开发,该代理被封装在一个围绕大型语言模型的Python包装器中,并增强了检索增强生成(RAG)、上下文记忆和高级提示功能。该代理能够模拟网络攻击,从而识别漏洞,并通过每次互动学习,增强防御策略。本探索深入探讨了驱动代理功能的基础技术和方法论。这些包括增强提示、决策过程、自然语言处理、检索增强生成、任务驱动方法论、AI驱动的命令生成、命令执行、进度和状态管理、错误处理以及通过约束意识增强安全性。这些元素共同使AI代理能够识别模式、做出明智的决策和执行复杂的网络安全任务,最终开发出一个完全自主的概念验证。ReaperAI展示了开发有效且危险的程序的潜力,这些程序可以以很少的努力和对LLM的理解来实现。本文提供的方法和技术也是在进攻性安全的视角下完全发现和研究的,这在当时的论文中是一个未触及的主题。然而,实现AI在进攻性网络安全中的全部潜力面临着重大挑战和伦理考虑。技术障碍包括改进命令行交互、扩大上下文窗口、标准化LLM输出、开发网络安全特定嵌入、整合强化学习、模拟类人能力、增强任务管理以及建立渗透测试基准。在伦理上,这类代理的开发和部署必须非常谨慎地管理,以避免滥用并确保透明度和问责制。总结而言,人工智能在进攻性网络安全的运用彰显了技术与网络安全领域的显著飞跃。持续的创新和挑战克服,将使网络安全防御团队在应对即将到来的威胁时保持领先地位,进而培育出一个更安全、更具韧性的数字生态。
文章来源: https://mp.weixin.qq.com/s?__biz=MzAxNDY2MTQ2OQ==&mid=2650990139&idx=1&sn=435707dae3b02a48ad38058cd3dcd334&chksm=8079a409b70e2d1fc0bc0779ed21b9d39a063123760770cb5a5c54ffa4c250d7c6c6d1ca56c6&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh