As a reader --> PAC-GPT: A Novel Approach to Generating Synthetic Network Traffic With GPT-3

  • 📌论文分类Ⅱ:
    创建可应用于各种任务的高质量合成网络流量(ICMP和DNS协议下)https://github.com/dark-0ne/NetworkPacketGenerator
    • 论文名称 PAC-GPT: A Novel Approach to Generating Synthetic Network Traffic With GPT-3
    • 作者 Kholgh D K, Kostakos P.
    • 期刊名称 IEEE Access, 2023.
    • 简要摘要
      机器学习模型的应用,特别是在网络安全领域,在过去几年中大幅增长。然而,这些模型的有效性主要取决于它们训练数据的质量和广度。网络安全领域缺乏真实数据集,这对开发用于现实应用场景的工业级工具构成了相当大的挑战。具体来说,当前的数据集要么明显过时,要么在定性和定量方面都存在不足,主要是因为许多组织出于隐私问题或对商业秘密的潜在威胁而不愿共享数据。
      为了应对这一挑战,本文介绍了PAC-GPT,这是一个基于Open AI的生成预训练transformer3 (GPT-3)的机器学习方法生成可靠合成数据的新框架。该框架的核心组件是两个模块,Flow Generator负责捕获和再生一系列网络数据包中的模式,Packet Generator负责生成给定网络流的单个网络数据包。本文还提出了一种基于LLM链的包生成器,然后使用损耗、准确性和成功率等指标对其性能进行评估、比较和评估,得出结论:transformer是一种适合合成包生成的方法,只需进行最小的微调。最后,一个精简的命令行界面(CLI)工具被设计出来,以方便来自不同学科的专业人员无缝访问这一创新的数据生成策略。
    • 关键词 Artificial intelligence, cybersecurity, generative pre-trained transformer, GPT-3, machine learning, NLP, transformer, LLMs.
    • ✏️论文内容
      • 【1】研究问题
        • 💡找到一种合适的方法来生成合成网络流量数据,用于各种任务,如训练基于ML的入侵检测/防御系统
      • 【2】研究过程
        • 💡本文开发了一个强大的“数据包生成器”,旨在按需生成网络数据包。通过探索各种基于transformer的模型来实现这一点,并使用各种各样的度量来评估。随后,使用了一组Python脚本来建立一个“流生成器”,该生成器能够向网络中注入一系列自定义数据包。这两个不可分割的组件合并到一个命令行界面(CLI)工具中,旨在无缝管理数据生成管道。最后,对这种综合替代方案在各种网络安全任务中的可行性进行调查,评估这种方法是否可以有效地替代真实数据。
      • 【3】主要流程


        • 1)用户使用特定场景(例如,正常流量数据,Ping-of-Death攻击等)或通过指定一组网络协议(例如,ICMP, DNS等)请求网络流量
        • 2)流量生成器,这是一个Python脚本,带有命令行接口,以文本格式生成网络流量。也就是说,它生成构成网络流量的数据包的序列和文本摘要,尽管它本身并不创建实际的数据包。
        • 3)最后,流摘要被传递给数据包生成器,这是一个基于transformer的模型,能够使用网络流创建数据包。包生成器创建指定的包,并以PCAP格式将它们写入文件。GPT-3适应解决新任务的灵活性(即,few-shot学习)是本研究选择它的主要原因,但该模型也具有针对特定任务进行微调的能力,这里通过OpenAI API进行模型微调,它可以访问具有不同参数大小、速度和性能的GPT-3模型。
      • 【4】具体实现


        • 构建基于transformer的生成器的流水线如图2所示,具体如下:
        • 1)将网络数据包(即训练数据)转换为文本表示。为此,使用tcpdump,一个功能强大的命令行数据包分析器,提取数据集中每个数据包的摘要。还进行了一些数据预处理和清理,该步骤的最终输出如图3所示。本部分从ToN IoT Dataset[27]、[59]、[60]、[61]、[62]、[63]、[64]中随机抽取共10000个样本包,其中ICMP包和DNS包数量相等。


        • 2)将提取的数据包摘要输入GPT-3“DaVinci”模型,通过一种称为提示工程的技术,使用DaVinci生成Python代码,用于创建给定文本摘要的数据包。提示工程是一种用于指导语言模型为特定任务生成所需输出的方法,在这里用于增强少量学习过程。图4中可以看到这个过程的一个示例。这一步的结果是,获得了800个训练样本,每个样本都包含一个包摘要和在Python中生成该包的等效代码。


        • 3)在前一步中编译的训练样本,现在反过来用于微调“Babbage”,这是GPT-3的另一个变体,与DaVinci相比,它要小得多,因此更快,更便宜。利用这个微调模型,可以跳过达芬奇所需的许多token,因为不再需要提示工程,因此可以更高效、更廉价地生成数据包。图5展示了Babbage的输入/输出对。在最后一步使用OpenAI API生成的800个样本,对模型进行了微调。

        • 4)执行经过微调的Babbage模型生成的代码,使用Python和Scapy创建具体的数据包。Scapy是Python编写的用于数据包操作的框架,广泛用于网络脚本。在示例中,它不仅用于数据包创建,还用于关键的后处理操作,例如校验和更正、将数据包保存到文件中,以及(如果需要)在网络上重放它们。
        • 评估指标
          • Intrinsic metrics:训练损失、训练序列准确性和训练token准确性
            • 训练序列准确性:在训练batch中,模型的预测标记与所有标记的真实完成标记完全匹配的百分比。例如,如果batch大小为3,完成度为([1,2],[0,5],[4,2]),而模型的预测值为([1,1],[0,5],[4,2]),则计算精度为2/3,结果为0.67。
            • •训练token准确性:模型正确预测训练batch中令牌的百分比。例如,batch大小为3,如果数据包含补全([1,2],[0,5],[4,2])和模型预测([1,1],[0,5],[4,2]),则该精度将为5/6 = 0.83。
          • Extrinsic metrics:评估生成的数据包的质量——成功率[39]【发送和接收响应的数据包的比率,与模型生成的数据包总数成比例。换句话说,为了测量生成的数据包的质量,本文在实时网络中重放它们,并观察其中有多少被正确传输并接收到正确的响应。有效的响应应该是从ping请求的目的地接收到的ping应答,以及为DNS查询解析的主机名。这样就可以确保生成的数据包与真实的数据包具有相同的质量。】
      • 【5】CLI TOOL
        • 网络流是由一系列报文组成的网络流量。上述包生成器只能生成单独的、独立的包,并不能自己创建流。因此,本文实现了一个Python脚本来生成包生成器所需的网络流。该脚本是作为CLI tool开发的,它不仅能够生成流,还可以处理对包生成器模型的必要调用,本质上是对它们的包装。此外,它还提供了一些实用功能,例如将生成的数据包写入PCAP文件格式,并使用网络接口传输生成的数据包。


        • 图6是这个CLI工具及其一些选项的屏幕截图,说明如下:
          • •ip_file:流生成器在设置数据包中的发送方和接收方IP字段时使用的配置文件的路径。ip可以单独指定,也可以按子网指定。该文件还可以包含攻击者和受害者的ip地址,以防使用特定的恶意场景。
          • •output_file:包含生成的合成包的输出PCAP文件的保存路径。
          • •n:生成的包数。这个数字被用作近似值,因为流生成器还考虑了其他因素,比如场景,也因为包生成器创建的一些数据包是错误的,需要被忽略。
          • •protocol:需要生成数据包的网络协议。
          • •scenario:需要生成数据包的场景。选项包括:正常网络流量、ping smurf、ping flood和DNS flood。
          • •replay_packets:布尔选项,用于指示生成的数据包是否也应该在网络上重放。
        • 如上所述,CLI tool有许多用于创建流的选项。每种“scenario”都可以简单定义如下:
          • •Normal:表示网络中的流量正常,没有特定的网络攻击。具体来说,在这种模式下,流量根据指定的协议在网络中的所有节点之间随机生成。
          • •Ping of Death Attack:一种利用互联网控制消息协议(ICMP)的特定特征的网络攻击形式,该协议通常用于跨网络设备发送错误消息并帮助排除网络连接问题。ICMP在OSI (Open Systems Interconnection)模型的网络层工作,在该层处理IP数据包。ICMP协议包括用于诊断目的的请求-响应机制,通常称为“ping”操作。通常,发送方向目标发送回显请求,目标再发送回显应答。此操作有助于确保网络主机的可达性和确定往返数据包的时间。
          • •Ping of Death:攻击通过发送超过最大允许长度65,535字节的IP数据包来操纵这些无害的操作。这是通过将大数据包分割成更小的片段来实现的,这些片段分别符合Internet协议的最大传输单元(MTU),但在目标机器上重新组装时超过了它。
            当系统接收到如此超大的数据包时,可能会导致缓冲区溢出。根据系统对这些条件的脆弱性以及系统处理这些条件的方式,这可能导致系统崩溃或诱发未定义的行为,从而实现DoS(拒绝服务)攻击的目标。CLI tool处理此场景的方式是,除了为整个网络生成许多正常流量数据包(类似于正常场景)之外,还有一些使用所讨论的规范创建的恶意数据包,这些恶意数据包来自网络中指定的攻击者节点,目标是网络中的受害者节点。
          • •Ping Flood:在标准操作中,Ping报文通过发送ICMP Echo Request报文并等待ICMP Echo Reply报文来检测网络设备的可用性。但是在Ping Flood攻击中,攻击者不需要等待ICMP Echo Reply,就会向目标设备发送大量的Ping Flood报文。这种流入的数据包会使目标网络的带宽饱和,并消耗目标网络的资源来处理流入的流量,从而可能导致业务中断。对于这个场景,流的生成方式除了正常的网络流量之外,还有从攻击者的IP发送到受害者IP的ICMP Echo请求爆发。
          • •Ping Smurf:Ping Smurf攻击与Ping flood攻击类似,通过发送大量ICMP报文使系统过载,但实现方法不同。在Smurf攻击中,攻击者使用伪造的ICMP Echo Request报文和欺骗的源IP地址——通常是目标受害者的IP地址。该报文被发送到IP广播网络。IP广播网络由一系列IP地址组成,其中发送到该广播地址的任何数据包都会自动转发到该网络内的所有主机。主机按照预期行为,通过发送ICMP Echo Reply来响应Echo请求。但是,由于原始ICMP报文中的源IP地址已被欺骗为该地址,所有的回复都发送到受害者的IP地址。这可能导致流量泛滥,消耗网络带宽,并可能中断目标的服务。该攻击在CLI流生成器中进行模仿,生成大量的ICMP Echo - Request报文,源IP地址伪装成受害者的IP地址,目标地址设置为网络中的节点。并生成ICMP Echo Reply报文来响应请求。
          • •DNS Flood:域名系统(DNS)服务器是互联网基础设施的组成部分,负责将人类可读的域名转换为机器可读的IP地址。DNS Flood攻击是指攻击者通过大量的请求使DNS服务器不堪重负,从而耗尽服务器的处理能力和网络带宽等资源。在DNS Flood攻击中,攻击者通常使用多台设备向目标服务器发送大量DNS请求报文。这些请求可能是合法的,也可能是错误的;在任何一种情况下,目标都是淹没服务器并消耗其资源。这种请求洪流导致对合法请求的响应变慢,或者在严重的情况下,DNS服务器可能完全没有响应,从而中断目标网络对Internet的访问。这种类型的攻击是通过流量生成器模拟的,除了正常的流量数据外,攻击者的节点还会向受害者系统发出大量的DNS查询请求。
      • 【6】experiments & results
        • 问题一:How do transformers perform while tasked with generating different types of network packets?


          • 每个模型在训练过程中的损失:所有模型最终都达到了稳定。
          • 这些模型在处理ICMP报文生成任务时大多表现良好。2和4在经过微调后表现良好,有时会产生100%可传输的数据包,并且所有数据包都接收到响应。1在没有微调过程的情况下也取得了类似的效果。该模型能够仅通过预训练和提示工程技术生成同样高质量的数据包(尽管每个数据包的成本略高)。这也适用于涉及恶意场景的实验,例如ping flood攻击。假设恶意场景由流生成组件管理,并且数据包生成模型完全独立于流生成模块运行,那么这就是预期的结果。
          • 同样的性能水平并不能转化为DNS包生成过程。当被要求创建用于生成DNS数据包的代码时,所有模型的表现都明显不佳,1有最好的结果,但成功率仍然很低,只有10%。而这种性能不佳似乎与Scapy有关,Scapy是在模型的代码生成之后负责包生成的底层Python框架。与处理ICMP数据包相比,Scapy用于处理DNS数据包创建的语法要广泛得多(也更复杂)。考虑到DNS是一种比ICMP更复杂的网络协议,这是合理的。
          • 两种协议的集成似乎产生了稍微好一点的结果,通常模型接收到近一半数据包的响应。然而,这并不一定意味着模型已经提高了对DNS报头字段的理解。由于最终实验中有一半的数据集(即ICMP/DNS数据集)由ICMP数据包组成,因此模型可能只是更精通生成ICMP数据包。
        • 问题二 & 问题三:How useful is the tool for generating network packets, when considering various threat modeling frameworks? What impacts does synthetic network traffic generation have on the industry? Or more precisely, which type of end users could benefit (or suffer) from this tool?
          • 首先,该工具的主要用途,特别是包生成器,是合成网络流量的生成。这种合成流量可用于测试现有的网络架构和安全系统。例如,红队可以使用该模型生成大量数据包,以评估在网络上运行的IDS,或者使用特定数据包对网络的某些部分进行压力测试。
          • 有许多工具可以从不同方面评估网络,从性能测试(吞吐量、延迟、数据包丢失等)和网络流量分析到渗透测试和漏洞扫描。
            大多数这些工具的工作方式是通过系统中的预设脚本或内置网络功能生成特定类型的数据包;但是,作为一种替代方案,可以使用上述流量生成工具来生成为此目的所需的数据包。
          • 此外,开发的CLI工具可以帮助安全架构师/工程师通过生成定制的网络流量来开发适合定制的安全措施。
            这在实现基于机器学习的IDS/IPS(入侵检测系统或入侵防御系统)时尤其有用,因为这些系统需要开发大量的训练数据,而CLI工具可以轻松地为用户提供任意数量的网络数据。实现的“恶意场景”是专门为此目的而设计的,因为训练IDS/IPS需要正反两种样本数据(即正常和恶意流量)。在NIST威胁框架的意义上[70],这将工具置于检测层,其目的是检测网络中的异常情况,通常IDS驻留在该层以监视网络中的恶意活动。此外,它在保护层中也很有用,在保护层中,IPS不仅可以被训练来检测恶意活动,还可以采取主动措施来阻止任何此类尝试。
          • 最后,该工具的另一个潜在用例是培训和教育网络安全领域的安全人员。
            它使安全专业人员和学生能够获得分析、检测和响应不同类型的网络流量和安全事件的实践经验,而不会将真实的系统暴露在风险中。对公司来说,培训人员总是一项代价高昂的工作,不仅因为指导新员工需要时间和金钱,还因为允许未经培训的人员在生产环境和基础设施周围进行探测,有可能导致公司基础设施的重大中断。通过公司网络传输的数据通常是高度敏感和机密的,这一事实使这一挑战变得更加复杂。将这些信息暴露给新员工对大多数组织来说是不可接受的风险。相反,合成数据的可用性规避了这些问题。消除了人员无意(甚至可能是故意)干预现有基础设施的风险,并且当使用合成网络流量时,私人数据泄露的可能性变得微不足道。
          • 还应该提到的是,就像任何其他网络安全工具集一样,除了提到的潜在用例之外,还存在一些可能的“误用”案例。
            在最简单的情况下,恶意用户可以使用CLI工具生成大量流量并在网络上传输。如果没有采取必要的预防措施,这将使某些部分(甚至整个)网络由于超载瓶颈而无法操作。CLI工具的另一个更复杂的恶意用例是对基于ai的IDS/IPS进行逆向工程。与安全分析师非常相似,攻击者也可以使用合成数据开发自己的基于ml的IDS/IPS进行测试。然后,他们可以尝试在生产环境中找到漏洞来绕过这些系统。他们还可以深入了解这些系统的优点和缺点,因为他们可以探索和分析他们接受训练的数据。
        • 局限性
          • 只考虑了两个基本的网络协议,即ICMP和DNS
            这样做是因为这些协议更容易生成,因为它们不像其他TCP或用户数据报协议(UDP)子协议那样具有那么多的报头字段。但另一方面,这严重限制了该工具的有用性,因为除了我们工作中考虑的两个协议之外,大多数网络流量还由协议组成。未来的努力可以尝试通过包括ICMP和DNS以外的协议来改进这一点。
          • 所使用模型的训练数据量和训练持续时间
            GPT-3模型只训练了200对提示完成,这仅仅比OpenAI建议的最小训练样本数量多一点。在作者看来,大多数低结果和实现的性能也可以归因于这个错误,就像任何其他机器学习任务一样,更多的数据可以使一些(如果不是全部)模型受益。目前,这种高成本严重限制了该工具在实际环境中的潜力。
          • 使用CLI工具定义的场景数量
            到目前为止,这些实现只是为了指出此类流生成器的潜在用例,而绝不是基于人工智能的流生成器可以模仿的恶意网络场景的详尽列表。在这里考虑的恶意场景是最基本的,几乎不再被视为威胁。为了使该工具具有潜在的用途,未来的工作可能会对恶意场景进行大量扩展。
          • 评估的问题
            使用了许多方法和指标(包括内在的和外在的)来衡量所实现的模型和工具的性能和潜在效用。即便如此,在写这篇文章的时候,学术界并没有达成共识如何评估合成网络数据,每一项工作都提出了一种新的方法或度量来衡量这种性能。因此,这项工作的最终实用性仍有待于该领域的专家在以后的时间来确定。
          • 最后,必须指出的是,由于大型语言模型(LLM)的复杂性质及其文本生成能力的固有随机性,准确地再现本文进行的实验的某些方面可能被证明是极具挑战性的,甚至是不可行的。
          • 支持的网络协议
          • 扩展流生成器的功能和使用场景
          • 数据生成管道的流生成组件,使用更智能、更动态的流生成器(利用文本生成领域的最新进展)
          • 合成网络生成的验证/评估
    • 网络流量生成参考文献


      • [11]D. K. Kholgh, ‘‘Synthetic network traffic generation using generative modeling,’’ M.S. thesis, Univ. Oulu, Oulu, Finland, 2023
      • [39] A. Cheng, ‘‘PAC-GAN: Packet generation of network traffic using generative adversarial networks,’’ in Proc. IEEE 10th Annu. Inf. Technol., Electron. Mobile Commun. Conf. (IEMCON), Oct. 2019, pp. 728–734.
      • [40] B. Dowoo, Y. Jung, and C. Choi, ‘‘PcapGAN: Packet capture file generator by style-based generative adversarial networks,’’ in Proc. 18th IEEE Int. Conf. Mach. Learn. Appl. (ICMLA), Dec. 2019, pp. 1149–1154.
      • [41] M. Ring, D. Schlör, D. Landes, and A. Hotho, ‘‘Flow-based network traffic generation using generative adversarial networks,’’ Comput. Secur., vol. 82, pp. 156–172, May 2019.
      • [21] S. Bourou, A. El Saer, T.-H. Velivassaki, A. Voulkidis, and T. Zahariadis, ‘‘A review of tabular data synthesis using GANs on an IDS dataset,’’ Information, vol. 12, no. 9, p. 375, Sep. 2021.
      • [49] R. F. Bikmukhamedo and A. F. Nadeev, ‘‘Generative transformer framework for network traffic generation and classification,’’ T-Comm, vol. 14, no. 11, pp. 64–71, 2020.
  •  
posted @ 2024-04-09 09:39  阿洛萌萌哒  阅读(34)  评论(0编辑  收藏  举报