没有合适的资源?快使用搜索试试~ 我知道了~
阵列11(2021)100077深度学习在代码注入检测中的应用综述Stanislav Abaimova,*,Giuseppe Bianchiba意大利罗马大学Tor Vergata/英国意大利罗马Tor Vergata大学A R T I C L EI N FO保留字:机器学习深度学习网络入侵检测代码注入预处理A B S T R A C T代码注入是当今世界最重要的网络安全攻击载体之一。为了克服传统的基于签名的检测技术的局限性,并在适当的时候补充它们,已经提出了多种机器学习方法。在分析这些方法的同时,调查主要集中在一般的入侵检测上,可以进一步应用于特定的漏洞。此外,在机器学习步骤中,数据预处理在数据分析过程中非常关键,在网络入侵检测的背景下,即在代码注入中,似乎研究得最少。本调查的目标是通过分析和分类现有的应用于代码注入攻击检测的机器学习技术来填补这一空白,特别关注深度学习。我们的分析表明,输入数据的预处理方式对性能和攻击检测率有很大影响。所提出的完整的预处理周期演示了用于检测代码注入攻击的各种基于机器学习的方法如何利用不同的输入数据预处理技术。还确定了最常用的机器学习方法和预处理阶段1. 介绍代码注入是最流行和最具影响力的攻击,位于OWASP漏洞列表的顶部。传统上使用基于签名/模式的识别技术进行的代码注入攻击的检测,最近已经通过应用先进的机器学习方法得到补充。这种技术的优点是类似的算法,例如,深度或卷积神经网络可以在各种威胁检测场景中找到应用。事实上,大型网络安全公司正在投入大量资金研究和部署机器学习算法,用于网络威胁检测目的,包括恶意软件分析,易受攻击的代码检测和入侵检测(即漏洞利用尝试)。 AI增强的安全采用是快速增长,1以及一系列用于入侵的机器学习方法多年来的检测已经积累在现有的大量方法和技术中,哪些机器学习方法更适合于代码注入攻击检测,它们的应用是否具有一致性? 哪种方法是增强数据集组合的最佳方法性能和/或准确性?我们将在本文中深入研究的假设是,深度学习最适合代码注入攻击检测。我们还认为,输入数据的预处理方式(清理,减少,重塑,编码等)。可能显著地影响和影响用于检测代码注入攻击的机器学习技术的性能和有效性。一般来说,这当然是预期的,因为数据输入中存在的一些特征可能在本质上是随机的,并破坏输出结果,或者类似地,一些特征可能会引入偏差。但是,我们认为,我们的调查的一个优点,以及我们在相关主题的同伴调查中的工作的明显多样化,是总结和分类不同的基于机器学习的代码注入攻击检测技术如何利用(或依赖)不同的输入数据预处理技术。研究的相关性很高,因为数据预处理似乎是一般网络入侵检测背景下研究最少的,特别是在代码注入中,并且在整个数据分析过程中通常涉及更多的工作和时间(超过总工作量的50%)[1,2]。大约150篇与机器学习相关的学术出版物,* 通讯作者。电子邮件地址:stanislav. uniroma2.it(S.Abaimov)。1Reinventing Cybersecurity with Artificial Intelligence,The new frontier in digital security,Capgemini Research Institute,2019,https://www.capgemini.com/research/reinventing-cybersecurity-with-artificial-intelligence/.https://doi.org/10.1016/j.array.2021.100077接收日期:2021年2月27日;接收日期:2021年6月9日;接受日期:2021年7月4日2021年7月17日在线提供2590-0056/© 2021作者。爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表阵列期刊主页:www.sciencedirect.com/journal/arrayS. Abaimov和G. 比安奇阵列11(2021)1000772网络安全(具体来说,网络入侵检测)已经进行了分析,其中只有20个足够详细地涵盖了代码注入检测的预处理(见第4.4节)。进一步的修订揭示了各种各样的预处理方法,这些方法也将在稍后的调查中更详细地说,机器学习处理基于四个关键步骤,每个步骤都有自己独特的挑战。1. 数据收集通常是初始步骤,即获取原始数据,这在很大程度上取决于客观或主观的选择标准。2. 预处理是数据分析过程中的一个非常关键的步骤,它为待训练的神经网络塑造数据,形成结构化的多维数据集。预处理可能会根据多种因素增加或降低所应用方法的准确性,稍后将在调查中讨论。例如,重复会使神经模型产生偏差。3. 选择、应用和微调机器学习算法(例如,状态向量机、神经网络、决策树等)是另一个挑战,因为这些算法都不是通用的。所选算法的配置成为主要基于试错法的子任务,以提高所选方法的准确性。4. 机器学习过程的最后一步是读取输出数据,评估并以一种可供其他系统进一步使用或可视化表示以供人类理解的方式呈现。例如,在一个示例中,测试数据集的不正确选择会影响输出性能的度量。本调查的目的是为最大限度地提高入侵检测中采用的机器学习技术的性能和有效性,特别是在代码注入攻击检测方面的知识体系做出贡献。广泛使用的深度学习已经被选择用于分析,并由允许针对所选任务的潜在最小或以其他方式计算上最优的步骤的技术来补充。调查的目标包括修订最新学术出版物(文章和调查)中提出的方法,确定其方法的共同步骤,进行分析和分类。特别注意从数据采集到启动训练过程的数据准备模块化步骤,以及机器学习方法的选择。调查范围仅限于审查未加密的数据传输和功能,不涉及对加密数据包有效载荷、流量报头或两者的操作。加密流量的问题与我们的研究分开,因为它与其他技术有关(例如,密码分析)。后处理和结果可视化方法没有审查,因为它们已经在几个作品中广泛覆盖(例如,参考文献10)。[3鉴于上述目标、目的和局限性,为了以结构化的方式介绍工作,调查的组织如下:第1第2超参数优化,以最大限度地提高所选方法的性能或准确性。第4第5参考文献列出了本调查中审查的出版物。2. 背景根据OWASP,“代码注入是攻击类型的通用术语,包括注入然后由应用程序解释/执行的代码”。2在本调查中,代码注入攻击是被理解为对不可预见的软件功能的有意或无意的使用,由有效或无效的恶意输入数据的处理引起。作为攻击方法的代码注入被恶意行为者用于将恶意代码和系统命令输入到软件中的易受攻击的入口点(例如,通过web应用程序中的输入字段或请求中的报头)并改变执行过程。代码注入的算法定义,可用于传统的入侵检测系统,已更新和改进的参考。[6]的文件。2.1. 代码注入攻击代码注入攻击3依赖于可由目标程序或应用执行的代码的输入。代码注入利用了不正确的处理和缺乏数据验证,这可能包括非限制字符、数据格式或分配的内存空间。恶意行为者受到应用程序语言功能的限制。例如,如果恶意行为者能够将HTML代码注入到Web应用程序中,并且该代码存储在页面文件中,则它们仅限于HTML和JavaScript注入,在某些情况下,它们仍然可以升级为远程命令执行。或者,恶意代码可以通过应用程序注入到有关文件的数据或命令行中。尽管通常在Web应用程序的上下文中提到,但代码注入攻击可以针对应用程序输出或应用程序使用的内存。代码注入攻击可以分为两类:二进制攻击和源代码攻击[7]。最常见的源代码注入漏洞类型是SQL注入、PHP注入和JavaScript注入。代码可以通过可见或隐藏的输入字段、手动、自动或通过上传或寻址的文件注入。如果代码被注入到系统命令行中,则此攻击将被定义为命令注入。二进制代码注入可以通过外壳代码注入到可执行文件输入中发生,并导致堆栈或堆溢出。2.1.1. 示例:动态代码评估漏洞当使用PHP eval()函数时,它会传递攻击者可以修改的不受信任的数据,从而允许代码注入。以代码块为例:射弹攻击特异性和常规防御。它还具体说明了与调查专题有关的术语和概念部分 3 “机器 学习 应用 为 的 代码注入检测方法,特别关注深度学习。它还强调了数据选择的具体要求,并讨论了2https://owasp.org/www-community/attacks/Code_Injection。3https://owasp.org/www-community/attacks/Code_Injection。S. Abaimov和G. 比安奇阵列11(2021)1000773在呈现的代码中,输入验证不存在;因此,上面的代码容易受到代码注入攻击。然后攻击者可以更进一步并执行系统命令。在这种情况下,代码注入也可以用于命令注入和进一步未经授权访问托管Web应用程序的系统(或虚拟容器)攻击者可以使用URL输入字段插入本地或远程文件:以类似的方式,通过向进程提供恶意文件,可以在已经受到危害的系统上执行注入,其方式在第2.1.4节中的命令注入示例中描述。2.1.2. 示例:SQL注入SQL注入可以通过输入字段或URL进行。以易受攻击的代码4为例:如果攻击者成功注入值为105或1/41的查询,那么已经注入的查询inputSQL将如下所示:通过将“or 1 = 1“语句替换为“DROP TABLE Users”,输出应返回中的页面。4https://www.w3schools.com/sql/sql_injection.asp。S. Abaimov和G. 比安奇阵列11(2021)1000774将要执行的结果将删除名为“用户”:2.1.3. 示例:exif代码注入可变图像文件格式(exif)数据包含有关文件的信息:例如,文件源、创建和修改日期、GPS坐标、相机型号、时间、压缩类型等。在绝大多数情况下,这些数据存在于每张图像或照片中。创 建 的 文 件 ( malicious_upload.png ) 可 以 重 命 名 为 mali-cious_upload.php.png,这样攻击者就可以避开基本的防御机制。上传完成后,必须对文件进行寻址:NetCat侦听器将从被利用的Web服务器接收回调。要利用这一点的要求是在目标Web服务器上解释PHP。如果没有PHP解释器,NetCat侦听器仍然会接收到反向shell,但它将发送到攻击者自己的系统。2.1.4. 示例:命令注入以一个简单的main函数为例,它以root身份运行,通过接受参数中的文件名,使用系统命令此功能可用于显示特定的特权数据,而无需用户与具有提升权限的系统进行交互。由于整个程序以最高权限执行,因此system()以根权限执行。当用户或其他程序提供了合法的文件名时,调用将按预期工作。如果攻击者传递参数这样,system()在执行cat命令后,将以root权限执行rm -rf/,从而损坏系统。或者,攻击者可以传递2.2. 代码注入防御代码注入发生在应用程序的输出具有更改的语法结构时。Ray和Ligatti [6]认为,代码注入的定义并不完整,因为还有两种情况需要解决:不改变输出语法结构的代码注入和改变输出语法结构的非代码注入攻击。这使得使用常规方法检测代码注入攻击变得复杂。恶意代码在逻辑层面上与非恶意代码没有区别,这使得使用传统的非机器检测变得更加困难。学习检测方法。根据解释器,进入输入字段的所有内容都是合法的,可以处理,也可以没有错误。通常认为,代码注入可以通过以下方式检测:签名识别或经由恶意访问检测(例如, 金丝雀)。 作为一种不需要检测的对策,消毒是一种以这样一种方式处理输入的技术,即转义符号不能被注入到应用程序的代码中。自动技术,如输入验证和输入编码,可以用于附加的安全性;以及输出编码可以用于防止系统泄露敏感信息(例如,系统版本、错误、成功注入输出)。作为一种良好做法,在应用程序开发阶段,应避免使用易受攻击的功能,或者,如果使用,应避免使用易受攻击的功能。根据既定的安全开发实践。5Mitropoulos等人的调查[8]分类了41种针对SQL注入,XSS和其他Web应用程序攻击的防御方法,其中大多数不使用机器学习。SQL预防技术包括使用参数化配置的预准备语句、转义所有用户提供的输入、Hibernate查询语言预准备语句(命名参数)、白名单输入验证。根据[9],为了成功检测Web应用程序中的SQL注入漏洞,应满足一组条件:1)从应用程序输入到易受攻击的函数的路径应存在,2)使用参数函数,3)攻击者可以通过查询传播的反馈访问数据库查询的结果,5安全开发和部署指南,英国国家网络安全中心,https://www.ncsc.gov.uk/collection/developers-collection。S. Abaimov和G. 比安奇阵列11(2021)1000775表1基于机器学习的代码注入检测方法。年纸学习语言2005[19]第十九话NDFASQL2007Swaddler[35]lib异常PHP2008[24日]OC-SVMPHP,SQL2009[30个]聚类SQL2013[20个]贝叶斯SQL2017[26]第二十六话混合JavaScript2017[25日]CNN,RNNSQL2017AMODS(Y [11].SVMSQL、XSS2018[28]第二十八话LSTMXSS2018WIRECAML [44]DT、RF、LR、Naïve Bayse、TANSQL、XSS2019[33个]AutoencoderSQL2020 [74] CNN,RNN,DT,RF SQL2021 [81] MLP,CNN SQL泄漏功能。RFC 2616 [10]中URI的一般语法定义了不应该出现在良性查询中的不安全字符。Dong等人提出,任何不安全的字符都被认为是恶意的,需要过滤器来删除这些查询,例如过滤器(Y [11]。例如,XSS预防技术通常包括用HTML、JavaScript、CSS等对不可信输入进行编码以及对标记进行消毒。还有反XSS头可用于额外的安全性。一般来说,OWASP提供的查询语言、编译语言和网络协议的技术6包括输入验证、安全API和用户数据的上下文转义为了直观地说明在防止代码注入的过程中,Ray和Ligatti将伪代码中的基本算法与他们自己的方法进行了比较[6]。机器学习入侵检测要有效地对抗代码注入,应该考虑其上述特性,并调整相关步骤以最大限度地提高效率。3. 机器学习在代码注入检测中的应用机器学习方法可以分为有监督(回归和分类)、无监督(聚类和密度估计)、半监督和强化学习。Bishop将[12]监督学习定义为这样的应用,其中训练数据包括与其相应输出值配对的值的输入模式的示例。Goodfellow等人将无监督学习[13]定义为算法必须学习“在没有指导的情况下理解数据”的过程。半监督学习包含了两者的混合特征,而再监督学习是一种本质上不同的机器学习类型[14]。在强化学习中,学习者没有获得任何关于要采取的行动的信息,而是必须通过尝试来发现哪些行动会产生最大的回报在机器学习应用于网络安全的背景下,Web和HTTP攻击的异常检测方法的思维导图已在出版物中提出(Y [15]。在这些方法中,深度学习是最常用于检测代码相关漏洞的方法。它被应用于深度神经网络(DNN),深度信念网络(DBNN),递归神经网络(RNN)和卷积神经网络(CNN)等类型的人工神经网络[16]。例如,Gu et al.[17]对CNN架构和技术的进步进行了全面同时,代码注入链接需要时间分布分析,并且必须使用RNN甚至长短期记忆(LSTM)。Nagpal et al.[18]为机器学习SQL注入检测。作者回顾了所有现有的SQL6注射预防作弊表,OWASP,https://cheatsheetseries.owasp。org/cheatsheets/Injection_Cheat_Sheet.html。注入攻击类型及其检测方法、方法和工具,包括Web应用程序中易受攻击代码的部署前检测。2019年,Mitropoulos等人[8]发表了一项调查,回顾了Web应用程序攻击检测的方法,其中包括一类混合方法,其中一些基于机器学习(例如,健忘症)。关于这些工具,2005年发布了关于使用深度学习进行SQL注入检测的第一个常见出版物之一。它概述了使用神经网络检测SQL注入攻击的方法,该工具被命名为AMNESIA [19]。Cai等人概述了使用DNN将自然语言转换为SQL查询的方法。这两份出版物还详细介绍了输入数据和查询的预处理。Cheon [20]也研究了SQL注入攻击检测,这次使用贝叶斯分类器,通过数据集随机化进行预处理。Uwagbole等人。[21]训练支持向量机(SVM)分类器来检测SQLIA是否存在于Web请求中。为了训练模型的高性能,作者提出了一种算法,数据集项目的标签类的输入。它也是为数不多的几个提供SQL注入检测的实际实现的出版物之一,使用一个PROXy拦截Web请求,使用分类器对它们进行分析。在他们的调查中,Alwan和Younis [22]列出并分类了SQLIA检测的途径和方法。作者声称,没有一个列举的工具解决了最近类型的SQLIA的问题,例如,快速流感XSQLIA。在非典型注射的高级情况下,数据预处理可以帮助成功检测。Valeur等人[23]提出了一种方法来识别在运行时与典型查询的多个模型不匹配的查询由于这是早期的方法之一,它没有达到像现代方法那样高的准确率,但是该方法已经显示出深度学习在恶意查询检测中的潜力。除了在2005年和2007年发表的工作,并在参考文献中分类。[22]我们添加了专门定义基于机器学习的方法的出版物中的方法,用于代码注入检测。表1列出了这一清单。上面的列表显示了应用于代码注入检测的各种机器学习方法。大多数方法都是有监督的,其中一半是深度学习方法,如CNN。深度学习方法证明了自己的通用性,允许使用卷积(CNN)或LSTM分析2D,3D或4D数据,因为它们保留了数据集或网络会话中先前项目的记忆。检测时间传播的恶意行为可以触发入侵防御机制,提高应用程序的整体安全性机器学习方法各不相同,下面将从代码分析和入侵检测的角度对其中使用最广泛的方法进行审查。3.1. 监督学习监督学习需要一个带有标记样本的数据集,为了IDS的最佳性能,必须收集和标记这些样本。在 在代码注入的情况下,数据集应该包含恶意(代码注入查询)和非恶意样本(良性查询)。在多种类型的模型中,有支持向量机,深度神经网络,决策树和随机森林,朴素贝叶斯等,在审查的出版物中,其中两个模型得到了更广泛的覆盖。支持向量机(SVM)是有监督的学习模型,具有相关的学习算法,用于分析用于分类和回归分析的数据。对于代码注入检测,Dussel等人应用[24]和Dong et al.(Y [11]。深度神经网络(DNN)是一种人工神经网络,它在输入层和输出层之间有层例如,Cai et al.[25]使用CNN和RNN,而Yan等人。[26]第二十六话S. Abaimov和G. 比安奇阵列11(2021)1000776神经网络(HDNN)使用多个隐藏层,以便在监督设置中实现其系统的更好准确性。娇惯[27] 分别使用多种类型的DNN进行测试,而Fang et al.[28] 使用LSTM。Ferrag等人详细回顾了用于入侵检测的更多深度学习方法[29].3.2. 无监督学习无监督学习(也称为聚类)不需要标记的数据集,并允许系统在模式识别中具有更高的独立性,从而实现更高的自主性。 无监督学习在网络安全中的主要应用领域是通过行为分析进行异常检测(例如,用户和机器网络活动)。或者,无监督学习可以用于畸形代码检测,这只能通过适当的预处理来保证。因此,学习器可以区分恶意和非恶意查询或代码字符串之间的差异。换句话说,如果没有足够的预处理,机器学习方法将无法对符号模式进行聚类,并检测两个(恶意和良性)查询之间的任何明显差异。例如,Bockermann等人[30]将聚类技术应用于SQL注入检测。为了更深入地理解DNN,引入了自编码器。Autoencoder是一个对称DNN,训练目标值等于给定的输入值[31]。自动编码器由两个DNN组成,编码器和解码器,并且可以容易地应用于解决数据压缩的问题(例如,图像和视频识别、大数据传输、特定类型网络攻击的分析)。此外,自动编码器允许研究人员输入原始数据,包括软件代码和脚本。例如,Pan等人[32]提出了一种基于鲁棒软件建模工具(RSMT)的Web应用程序攻击检测方法,该方法将调用跟踪分析为Web应用程序的运行时行为。RSMT使用自动编码器进行分析,并将调用图作为数据。在RSTM(F. [33],Pan等人使用。少量的标记数据用于计算自动编码器的重建误差,并建立一个数值(阈值)以区分正常和异常行为。聚类 可以 可以说 被 更 高效 比 被监督学习以检测先前未知的攻击。3.3. 强化学习根据[14],强化学习是学习从输入情况(事件)到输出动作的映射,以便最大化可测量的奖励或强化信号。在实践中,它是一个基于奖励的系统,作为一种半监督的学习方法。基于机器学习的系统从环境中学习,并因正确的预测而获得奖励,并因不正确的预测而受到惩罚。就我们所知,强化学习在入侵检测中的成功应用只是最近才开始的,目前还没有任何应用到代码注入检测中。2020年,Lopez-Martin等人[34]提出了一项关于强化学习在网络入侵检测问题中的应用的调查。他们指出,对于代码注入检测,强化必须仅限于一个数字强化值,即成功检测。3.4. 对抗性方法和数据集生成大多数经审查的出版物证实,每天都需要更复杂的攻击、更大和更全面的数据集。通常,代码注入训练样本的获取需要手动组合数据集。数据可以来自各种收集方法,这些方法可以如下:• 从教程和公共访问中手动收集(例如,Cheat Sheets,GitHub,蜜罐日志自动工具的有效载荷和记录(例如,SQLmap、SQLninja、OWASPXenotiX XSS EX ploit Framework、XSSer、Meta- sploit Framework等)公开提供的数据集(例如,CIC IDS、NSL-KDD等)样本生成方法,如生成对抗网络(e。例如,在一个实施例中,PyGenerator 7)。各种自动化工具可用于数据收集。例如,对于事件收集,Cova等人[35]使用修改的Zend引擎。Aceto等人[36]从移动服务提供商和Android设备上的各种应用程序收集数据,这导致了Yao等人发表的二进制数据集[37]。在收集或生成完成后,必须对原始数据进行预处理,然后必须提取特征,将任何类型的数据转换为数字形式,以便在未来阶段进行分析迄今为止,网络安全领域最受欢迎的数据集之一是KDDCUP '99 8。大量研究人员分析了它,许多类型的网络攻击和机器学习实现。例如,使用Li等人的数据集(Y[38].提出了一种基于自编码器和深度信度网络的方法,最终准确率达到92.1%。提出了一种基于AutoEncoder和Deep Belief Networks的混合恶意代码检测方案,利用AutoEncoder进行查询处理。Molina-Coronado等人已经详细回顾了KDD的预处理[39 ]第39段。在代码注入攻击的背景下,良性和恶意查询的收集可以产生有限数量的样本,这不足以进行有效的模型训练。从现有数据生成新数据集可以解决这一挑战。近年来的一个趋势是使用生成对抗网络(GAN),然而,有多种方法可以成功地从现有样本中生成新样本。生成方法(使用GAN或任何其他算法)的问题之一与工作样本的生成有关。例如,在图像识别设置中,图像中的差异可能是不可行的,而在网络入侵设置中,并非所有生成的恶意样本都可以成功攻击。通过从现有数据集引入模式排列而创建的对抗性输入可以很容易地颠覆他们的预测。Biggio等人的2017年报告[40]强调了与评估机器学习方法和安全应用方法相关的常见误解。3.4.1. 数据集生成当数据不足以进行DNN充分训练时,研究人员可能会寻求收集更大的数据集,或者通过添加特定值的排列来从现有数据集生成额外的数据。Cheon等人。[20]通过随机化数字,用户名,密码,电子邮件地址等,开发了他们自己的基于现有查询模板生成样本的方法。Edalat等人。[9]概述了使用concolic输入生成[41]乘以恶意样本数量的数据集生成方法。数据集仍然是网络机器学习的最大问题之一安全性,这也在Ferrag等人最近的调查中得到了证实。[29]。为特定类型的网络攻击寻找合适的数据集是一项复杂的任务。随着许多数据集的开发和出现,7Isao Takaesu,PyGenerator,GitHub,2017,https://github.com/13o-bbr-bbq/machine_learning_security/tree/master/Generator.8 https://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html。····S. Abaimov和G. 比安奇阵列11(2021)1000777Uwagbole等人[21]探索了使用已知攻击模式(例如注入过程中存在的SQL令牌和符号)生成新数据集的方法。与SQL注入不同,生成整个流量单元是一项更复杂的任务。特定流量对象的定义决定了如何将原始流量分割为多个流量单元[42]并呈现为不同类型的流量。出版物描述深度学习的应用 为交通 分析9 [43-45]除了Lotfollahi等人[46]之外,将流或双向流视为分类的对象,其中分类的对象是单个分组。在所有上述情况下,可能出现比所考虑的固定长度数据输入更长或更短的实例。在这种情况下,较长的实例被截断到字节或数据包的设计长度,而在较短的实例的情况下,填充被应用在大多数调查的作品。生成的代码注入有效载荷可用于IDS的开发,但也可用于设计高级攻击框架和模糊器,从而绕过最复杂的传统过滤器和IDS。一些数据集可能很大,大学和研究中心提供已经预处理的数据集和预训练的模型用于进一步研究(例如, 新不伦瑞克大学10)。3.4.2. 非机器学习样本生成方法还存在基于非机器学习的方法,其包括用于攻击生成和实验测试的模糊化。系统它们也可以用于创建数据集,通常存储在文本文件或数据库文件中。模糊SQL数据库中最流行的工具之一是SQLmap,11由Damele和Stampar提出。 SQLmap是现在是大多数现有安全测试工具包和操作系统的一部分。这个非机器学习工具包可用于攻击生成,以测试原型系统是否受到现实攻击。Cheon等人。[20]使用SQLmap来评估他们的方法。Edalat等人。[9]在研究SQL注入检测的同时,而不是使用机器学习方法,使用污点分析来评估他们的ConsiDroid。自动脚本、工具集和虚拟网络可用于生成攻击样本像TCPReplay这样的工具可以用来从现有的*.pcap文件模拟流量活动。更进一步,为了生成CICIDS2017数据集,不伦瑞克大学使用了一个带有Kali LinuX的虚拟机作为攻击站。在虚拟网络上进行的几天模拟期间记录了网络流量。之后,IP地址从数据集(CSV文件)中删除,使数据匿名化。2018年和2020年的新版本也可用。3.4.3. 样本的复杂性增加使用对抗方法,可以创建额外的排列并乘以数据集,增加样本的数量并提高IDS的检测能力。然而,在现实生活中的攻击,恶意行为者可以使用复杂的技术,以避免简单的IDS。为了能够检测更复杂的恶意查询,可以使用生成对抗方法来增加恶意和非恶意代码样本的复杂性。Salgado [47]概述了优化和混淆SQLIA的技术,提供了关于如何潜在地生成先进的SQLIA用于训练IDS的神经模型。据我们所知,没有公开提到这种方法的应用,尽管它在生成对抗性代码注入样本方面有很好的效果。3.4.4. 攻击模拟用于数据集生成的机器学习应用程序从使用现有较小数据集的样本复用到各种攻击模拟[40]和合成有效载荷[48]。Kreuk等人。[48]介绍了一种为离散输入集(如二进制)生成对抗样本的方法。通过向二进制源文件引入一小段字节序列来修改功能性恶意二进制文件。然后,IDS将修改后的文件检测为良性,同时保留其恶意特征。该方法被应用于端到端CNN恶意软件检测器,并呈现出很高的规避率。他们的研究还表明,生成的恶意负载可以放置在同一文件的不同位置,也可以跨不同文件放置。Russell等人[49]提出了一种对抗性学习方法,不需要成对的标记示例或源和目标域进行注入。他们将他们的方法与其他需要标记对的方法进行了比较,并报告了几乎相似的性能。作为通过对抗性机器学习方法解决的特定漏洞的示例,我们可以提到返回导向编程(ROP)。ROP攻击是一种利用技术(通常基于缓冲区溢出漏洞),允许攻击者在存在安全防御(如可执行空间保护和代码签名)的情况下执行代码。Li等人(X [50]. Ropnn,它使用地址空间布局引导的反汇编和DNN来检测HTTP请求、PDF文件和图像中的ROP有效载荷。反汇编程序将输入数据视为代码指针。在使用对抗数据集时,这种方法的报告检测率为98.3%。Sun等人(Y [51].研究了基于强化学习的视觉数据注入攻击。这项研究与代码注入和网络安全没有直接关系,但它提供了将任何数据注入到方法中的可能性和方法。对抗方法还可以创建攻击记录的数据集还没有被公开使用。例如,Biggio和Roli [40,52]提出了逃避攻击的时间,以及一些常见的误解,突出了机器学习检测和分类算法对新攻击的脆弱性。3.5. 参数微调参数微调是机器学习的重要步骤。它可以被定义为调整模型的参数,以获得最佳性能。参数或超参数是影响学习过程的值。每个机器学习方法都有一组这样的(有时是唯一的)参数。例如,人工神经网络(ANN)具有不同类型的不同层、神经元的数量、每层的激活函数、优化器、输出层的损失函数、批量大小和时期的数量。调整超参数旨在提高速度并克服小数据集的限制[53]。截断:方法之一是截断已经训练好的ANN的输出层,并用与所选问题直接相关的具有相同激活的9https://www.blackhat.com/docs/us-15/materials/us-15-Wang-The-Applications-Of-Deep-Learning-On-Physiic-Identification-wp.pdf。学习 额定值: 许多 方法 有 一 可变 参数调用“learning10入侵检测评估数据集(CICIDS 2017),新不伦瑞克大学,https://www.unb.ca/cic/datasets/index.html。11 Bernardo Damele,A. G.,Stampar,M.: Sqlmap:自动SQL注入和数据库接管工具,2012年,SQLmap,http://sqlmap.sourceforge.net/。12入侵检测评估数据集(CICIDS 2017),新不伦瑞克大学,https://www.unb.ca/cic/datasets/index.html。或者减少以解决某些情况下的模型过拟合问题冻结权重:此外,DNN的初始几层的权重可以被固定或冻结,因为它们表示为特定任务预先训练的曲线和边缘。在此之后,“冻结”权重不会改变,网络将只重新调整与特定数据集相关的子层的权重。S. Abaimov和G. 比安奇阵列11(2021)1000778图1.一、 数据预处理方法。资料来源:作者。机器学习超参数的可调性已经被由Probst等人在参考文献中审查和计算。[54][55][56 ][57][58]超参数微调可以使用编程库和内置函数自动完成,例如Keras Tuner。13微调 是 也 可访问 经由 在线 服务 像 彗星ml,14OpenML,15和权重&偏差。16文献回顾显示,机器学习的过程在现代出版物中得到了广泛的报道。其中最广泛的审查领域是机器学习的一般方法,算法,训练,后处理和结果可视化方法(例如,参考文献。[3,29,57然而,在网络入侵检测领域,对数据预处理的研究却是最少的。同时,它也是整个数据分析过程中最关键、最耗费人力和时间的步骤之一(占总工作量的50%以上)[1,2]。下一节将概述预处理方法及其应用,并强调其在增强检测方面的关键作用。4. 预处理在提高检测率中的关键作用预处理是数据转换及其转换为另一种形式的过程,有助于神经网络的学习过程。它以允许机器学习算法分析数据的方式改变初始数据。预处理可以包括在相关过程之前涉及数据操纵的任何过程(使用机器学习或任何其他算法),并且是特定于任务的,因为神经网络的架构可以针对检测(任何类型的)、分类(检测和攻击识别)或聚类而定制。例如,它可以包括数据清理和细化(过滤、减少、整形、编码等)、处理丢失的属性、不平衡的数据集和消除噪声或噪声。13 Keras Tuner,https://keras-team.github.io/keras-tuner/。14https://www.comet.ml/site/。15https://www.openml.org/。16https://wandb.ai/site。异常值Chitraa和Davamani [60]将预处理定义为对Web日志文件的一系列处理,包括数据清理、用户识别、会话识别、路径完成和事务识别。Tomar和Agarwal在他们的调查[3]中将预处理定义为一个步骤,用于提高收集数据的可靠性。一些作者(例如参考文献[61])实际上从未使用术语ScaPy)。对所选学术出版物的修订揭示了各种各样的预处理方法,需要进行总结和分类,以有效地用于入侵检测。输入数据的预处理方式(清理、缩减、整形、编码等)显著地影响和影响用于检测代码注入攻击的机器学习技术的性能。例如,数据集中的一些特征可能在本质上是随机的,并破坏输出结果,或者类似地,可能更有影响力并引入偏差。为了本次调查的目的,并根据审查的规范,我们建议将预处理细分为数据预处理,然后是实际的数据处理,包括基于特征的预处理和基于编码的预处理,作为两种不同的数据优化和转换方式。下面的小节将更详细地讨论数据预处理、基于数据库的预处理和基于编码的预处理,并强调它们与入侵检测表2数据预处理中标记化的分类分类清单开始标签脚本>、框架>、img>、正文>等End Label/script>、/frame>、/body>等Windows事件onerror=、onload=、onblur=、oncut=等函数名alert(,prompt(,String.fromCharCode(,etc脚本URL JavaScript:、vbscript:等其他>)、\#等来源[28]。S. Abaimov和G. 比安奇阵列11(2021)1000779==有效性接下来将总结和分类不同的基于机器学习的代码注入攻击检测技术如何利用(或依赖)不同的输入数据预处理技术。4.1. 预防预处理可以被定义为准备原始数据以用于任何进一步的操作和关联的过程,包括其清理和创建数据库。这个过程遵循输入数据收集,一旦为数据集选择了输入数据,就必须组成并准备好用于神经网络训练。根据文献综述,我们对目 前 使 用 的预处理方法进行 了以 下分类(见图1)。①的人。预防可包括以下几个或所有步骤:删除Inf、NaN和Inf删除不完整的信息删除重复项,因为它们会使神经模型产生偏差删除具有不同输出的重塑(例如, numpy数组整形)平衡(使神经网络无偏)洗牌(许多数据集是排序的,在拆分之前,它们可以随机洗牌以进行实验)培训和测试如果一个神经网络被分析用于增量学习,或者多个神经网络被训练用于集成,则进一步拆分训练数据集。标记可以完成预处理过程,随后进行数据分类和创建数据集。值得注意的是,预处理不涉及数据值的任何变换。在特定情况下,在基于特征和基于编码的预处理之后也可以重复预处理的一些步骤。例如,在数据清洗(预处理)及其进一步编码(预处理)产生重复的情况下,必须再次去除重复(预处理)。Dong等人(Y [11]。提到数据标准化,其可以通过诸如解码ASCII字符、转换为ASCII、非转义、移除长度小于四个符号的查询等技术来减
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功