一种基于强化学习的不安全XSS防御系统识别方法论文和设计-魏林锋

全文摘要

本发明提供了一种基于强化学习的不安全跨网站脚本(XSS)防御系统识别方法,包括:对XSS攻击载荷进行特征提取;定义免杀操作;将判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据;构建强化学习环境;通过DQNAgent对象实现强化学习DQN算法;完成模型训练,判断XSS防御系统是否安全。当所有未变形的XSS攻击载荷样本都变形完毕,如果没有成功绕过XSS防御系统的载荷,则说明该XSS防御系统安全,否则说明该XSS防御系统不安全,同时获得变形模型,利用该模型可以生成绕过该XSS防御系统的载荷。本发明加强了XSS防御系统的防御能力,进一步提高了目前网络环境安全,同时可以避免因为采取了一定的防御措施就掉以轻心而造成损失。

主设计要求

1.一种基于强化学习的不安全XSS防御系统识别方法,其特征在于,包括如下步骤:S1、对XSS攻击载荷进行特征提取;S2、定义免杀操作;S3、将判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据;S4、根据定义的免杀操作构建强化学习环境;S5、通过DQNAgent对象实现强化学习DQN算法;S6、完成模型训练,判断XSS防御系统是否安全;其中,步骤S5中通过DQNAgent对象实现强化学习算法过程为:加载未变形的XSS攻击载荷样本并初始化后,如果判断不是XSS攻击,且达到免杀效果则标记完成此轮学习,如果判断时仍是XSS攻击,则反馈新状态给DQNAgent对象,DQNAgent对象受到反馈后继续进行下一步免杀操作,实现循环;当所有未变形XSS攻击载荷样本都变形完毕,如果没有成功绕过XSS防御系统的XSS攻击载荷,则说明该XSS防御系统安全,否则说明该XSS防御系统不安全,同时获得变形模型,利用该变形模型生成能绕过XSS防御系统的攻击载荷。

设计方案

1.一种基于强化学习的不安全XSS防御系统识别方法,其特征在于,包括如下步骤:

S1、对XSS攻击载荷进行特征提取;

S2、定义免杀操作;

S3、将判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据;

S4、根据定义的免杀操作构建强化学习环境;

S5、通过DQNAgent对象实现强化学习DQN算法;

S6、完成模型训练,判断XSS防御系统是否安全;

其中,步骤S5中通过DQNAgent对象实现强化学习算法过程为:加载未变形的XSS攻击载荷样本并初始化后,如果判断不是XSS攻击,且达到免杀效果则标记完成此轮学习,如果判断时仍是XSS攻击,则反馈新状态给DQNAgent对象,DQNAgent对象受到反馈后继续进行下一步免杀操作,实现循环;当所有未变形XSS攻击载荷样本都变形完毕,如果没有成功绕过XSS防御系统的XSS攻击载荷,则说明该XSS防御系统安全,否则说明该XSS防御系统不安全,同时获得变形模型,利用该变形模型生成能绕过XSS防御系统的攻击载荷。

2.根据权利要求1所述的不安全XSS防御系统识别方法,其特征在于,步骤S2为:根据XSS常见的绕过方法定义多种操作函数;将多种操作函数集合在一张操作表中,如需要则查找该操作表;对选择好的操作利用动作转换表获得对应的操作函数名称,并获取操作函数入口进行对应的操作。

3.根据权利要求2所述的不安全XSS防御系统识别方法,其特征在于,所述多种操作函数包括:

charTo16:随机选择标签内容中的字符,将其转换为对应的十六进制编码并进行替换;

charTo10:随机选择标签内容中的字符,将其转换为对应的十进制编码并进行替换;

charTo10Zero:将字符转换为对应的十进制编码,在转换为十进制编码的同时在前面多增加若干个0;

addComment:随机选择标签内容中的字符,并在该字符后面随机增添随机生成的注释;

addTab:随机选择标签内容中的字符,并在该字符前添加\\t字符;

addZero:随机选择标签内容中的字符,并在该字符前添加\\0字符;

addEnter:随机选择标签内容中的字符,并在该字符前面添加回车字符。

4.根据权利要求1所述的不安全XSS防御系统识别方法,其特征在于,步骤S4包括如下步骤:

S41、加载未变形的XSS攻击载荷样本,并对强化学习环境进行初始化操作;

S42、更新所需操作,定义每次强化学习环境进入下一状态所进行的操作Step;

S43、重置操作,每次强化学习完成后需要重置强化学习环境,在XSS攻击载荷样本列表中随机选择一个样本作为当前样本,并将该样本对应的特征向量作为初始状态。

5.根据权利要求4所述的不安全XSS防御系统识别方法,其特征在于,步骤S41中强化学习环境的初始化操作包括初始化免杀操作的操作空间大小、可进行的免杀操作、设置当前使用样本为空样本、设置空样本对应的特征、初始化用于判断是否安全的XSS防御系统检测机制。

6.根据权利要求4所述的不安全XSS防御系统识别方法,其特征在于,步骤S42中操作Step根据输入的操作对当前样本进行修改并更新特征,然后以判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据,如果判断为不是XSS攻击载荷,则说明免杀变形成功,标记完成此轮学习;否则需要继续进行下一轮强化学习。

7.根据权利要求1所述的不安全XSS防御系统识别方法,其特征在于,步骤S5包括如下步骤:

S51、获取操作空间大小并对强化学习环境进行初始化;

DQN算法所需要创建的深度学习网络采用多层感知机模型,并选用两层隐层,第一层隐层节点数为5,第二层隐层节点数为2,激活函数采用α为1的指数线性单元函数,输出层节点数为可选取的操作数;

在创建记忆体之后,创建DQNAgent对象并指定所使用的多层感知机模型、操作空间大小、记忆体、所使用的玻尔兹曼算法策略以及批处理大小;

S52、定义nb_max_episode_steps作为最大阈值,如果超过最大阈值则强制退出,避免在某一轮学习中由于异常情况一直进行强化学习而不终止;

S53、在nb_max_episode_steps的变形次数内,DQNAgent根据多层感知机模型选择操作进行变形,重新计算特征并判断变形后的攻击载荷是否能被待检验的XSS防御系统判断为非XSS攻击载荷,如果判断为非XSS攻击载荷,DQNAgent被奖励10积分并进行下一轮学习,否则返回0积分。

8.根据权利要求7所述的不安全XSS防御系统识别方法,其特征在于,步骤S6中,在XSS攻击载荷变形步骤完成后取下一条未变形的XSS攻击载荷重复步骤S5进行变形,如果没有未变形的XSS攻击载荷则模型训练完成;模型训练完成后,如果该模型训练过程有在nb_max_episode_steps变形次数内变形成功且绕过XSS防御系统检测的载荷,则说明该XSS防御系统不安全,同时获得绕过该XSS防御系统的变形模型,利用该变形模型获得绕过该XSS防御系统的攻击载荷,否则说明该XSS防御系统安全。

9.根据权利要求1所述的不安全XSS防御系统识别方法,其特征在于,步骤S1通过字节直方图方法对XSS攻击载荷进行特征提取;将XSS攻击载荷字符串转换为字节直方图,并把字符串转换为字节数组,统计每个字符出现的次数,同时增加一个维度表示字符串长度,使用定义的字符串长度对所有字节出现次数计算得到出现频率。

设计说明书

技术领域

本发明涉及网络安全技术领域,具体涉及一种基于强化学习的不安全XSS防御系统识别方法。

背景技术

互联网在为大众提供方便与快捷的同时也暴露出越来越严重的问题,有些问题带来了巨大的网络安全风险。其中尤为突出的是Web应用程序安全的问题。由于Web应用服务的广泛应用,不少黑客将攻击重点放在Web应用及其后台数据上,而XSS漏洞是“Web 2.0”时期的一种常见且极具危害的漏洞。

XSS漏洞对Web安全有着极大的威胁,利用XSS漏洞可实现窃取Cookie、劫持会话、发起钓鱼攻击等。不少国内外大平台已经遭受过XSS攻击。2011年6月,大型社交平台新浪微博在1小时内超过3万用户遭受了XSS攻击,而国外的大型社交网站如Facebook、Twitter等也都曾因为XSS攻击受到过巨大的损失。根据开放式Web应用安全项目组织OWASP公布的数据,在2013年,XSS漏洞在十大安全漏洞中位居第三。由此可见XSS攻击检测是目前网络安全中的重中之重。

为了防范XSS攻击带来的危害,需要采取一定的防御措施。然而XSS攻击方式变化多端,即使使用了XSS防御系统也存在被绕过的可能,从而被攻击成功。为了更全面地对黑客攻击进行防御,同时避免因为采取了一定的防御措施就掉以轻心而造成损失,需要对XSS防御系统是否安全进行判断。

强化学习是机器学习的重点研究领域之一,强调如何基于不同的环境而采取行动,以此获得最大化的预期利益,也就是能够使机器利用环境进行学习,在与环境交互的过程中改进策略,这种特殊的学习方法在某些环境下能够取得良好的效果。强化学习的学习过程是从环境状态到操作映射的学习过程,与监督学习过程不同,强化学习过程通过试错,进行模型训练,使得操作从环境中累积获得奖励值最大并发现最优的操作策略。强化学习与监督学习不同,它没有监督学习带有标记的训练数据集,也不同于无监督学习,因为其有延迟的回报信号,该回报信号是一种反馈,能用于说明智能体(agent)在当前做得是否好,并使得智能体得到最大回报值。

DQN(Deep Q Network)算法的基本要素如下,强化学习过程就是训练一个智能体(agent)在某种状态(state)下采取何种操作(action)以获得最大回报(reward),其中从某种状态映射到采取操作的映射称之为策略(policy),将处于特定状态s下选择操作a带来的未来奖励称为Q函数,Q函数表示为Q(s,a)。

Q-Learning算法是基于∈-贪婪算法进行选择的算法,对于每一对状态和该状态下执行的操作都有唯一确定的奖励估计值,即可以得到唯一一张记录奖励的Q表,随着决策系统每次选择操作进行决策,Q表可以通过每次学习不断进行更新,直到达成目标。

在状态空间和操作空间是连续的,或者状态空间和操作空间处于高维的情况下,由于难以进行训练难以构造Q表而不能使用Q-Learning算法,因此选择使用DQN算法,不再使用Q表来记录Q值,而是利用神经网络算法的数据对Q值进行预测,并不断更新神经网络,从而学习到最优行动路径。因此DQN算法实际上就是将Q-Learning算法与神经网络算法两者结合,利用神经网络算法进行训练,直至收敛。

在DQN算法中,还需要定义一段称为记忆体的信息,其中保存有具体某一时刻的当前状态、奖励、操作、迁移到的下一个状态、状态是否结束等信息,记忆体中的信息会定期被随机选择出一段用于神经网络算法。

发明内容

为解决现有技术所存在的问题,本发明提供一种基于强化学习的不安全XSS防御系统识别方法,加强了XSS防御系统的防御能力,提高了网络环境安全。

根据本发明的基于强化学习的不安全XSS防御系统识别方法,包括如下步骤:

S1、对XSS攻击载荷进行特征提取;

S2、定义免杀操作;

S3、将判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据;

S4、根据定义的免杀操作构建强化学习环境;

S5、通过DQNAgent对象实现强化学习DQN算法;

S6、完成模型训练,判断XSS防御系统是否安全;

其中,步骤S5中通过DQNAgent对象实现强化学习算法过程为:加载未变形的XSS攻击载荷样本并初始化后,如果判断不是XSS攻击,且达到免杀效果则标记完成此轮学习,如果判断仍是XSS攻击,则反馈新状态给DQNAgent对象,DQNAgent对象受到反馈后继续进行下一步免杀操作,实现循环;当所有未变形XSS攻击载荷样本都变形完毕,如果没有成功绕过XSS防御系统的XSS攻击载荷,则说明该XSS防御系统安全,否则说明该XSS防御系统不安全,同时获得变形模型,利用该变形模型生成能绕过XSS防御系统的攻击载荷。

在优选的实施例中,步骤S2为:根据XSS常见的绕过方法定义多种操作函数;将多种操作函数集合在一张操作表中,如需要则查找该操作表;对选择好的操作利用动作转换表获得对应的操作函数名称,并获取操作函数入口进行对应的操作。

在优选的实施例中,步骤S4包括如下步骤:

S41、加载未变形的XSS攻击载荷样本,并对强化学习环境进行初始化操作;

S42、更新所需操作,定义每次强化学习环境进入下一状态所进行的操作Step;

S43、重置操作,每次强化学习完成后需要重置强化学习环境,在XSS攻击载荷样本列表中随机选择一个样本作为当前样本,并将该样本对应的特征向量作为初始状态。

其中,步骤S41中强化学习环境的初始化操作包括初始化免杀操作的操作空间大小、可进行的免杀操作、设置当前使用样本为空样本、设置空样本对应的特征、初始化用于判断是否安全的XSS防御系统检测机制。

而步骤S42中操作Step根据输入的操作对当前样本进行修改并更新特征,然后以判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据,如果判断为不是XSS攻击载荷,则说明免杀变形成功,标记完成此轮学习;否则需要继续进行下一轮强化学习。

本发明与现有技术相比,具有如下优点和有益效果:能够对XSS防御系统是否安全进行判断,加强了XSS防御系统的防御能力,进一步提高了目前网络环境安全,同时可以避免因为采取了一定的防御措施就掉以轻心而造成损失。

附图说明

图1是本发明基于强化学习的不安全XSS防御系统识别方法的流程图;

图2是本发明步骤S4-S6的实现流程图;

图3是特征向量的结构示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

如图1所示,本发明提供一种基于强化学习的不安全XSS防御系统识别方法,包括如下步骤:

S1、通过字节直方图(Bytes Histogram)方法对XSS攻击载荷进行特征提取,特征提取的目的在于将XSS攻击载荷进行向量化提取特征,以XSS攻击载荷的特征向量作为状态进行传递。

将XSS攻击载荷字符串转换为字节直方图(Bytes Histogram),并把字符串转换为字节数组,统计每个字符出现的次数,同时增加一个维度表示字符串长度,使用定义的字符串长度对所有字节出现次数计算得到出现频率,以避免出现过多的字符对模型产生不利的影响。

以<script>alert(\/1\/)<\/script>为例,通过字节直方图转化得到如图3所示的257维特征向量。

S2、定义免杀操作,根据XSS常见的绕过方法定义如下七种操作函数;将七种操作函数都集合在一张操作表(ACTION TABLE)中,如需要可以查找该操作表;对选择好的操作利用动作转换表获得对应的操作函数名称,并获取操作函数入口进行对应的操作。

charTo16:随机选择标签内容中的字符,将其转换为对应的十六进制编码并进行替换,替换进行1~3次;

charTo10:随机选择标签内容中的字符,将其转换为对应的十进制编码并进行替换;

charTo10Zero:将字符转换为对应的十进制编码,在转换为十进制编码的同时在前面多增加若干个0,例如字符a使用charTo10函数转换为&#97,而使用charTo10Zero函数转换为&#00000097;

addComment:随机选择标签内容中的字符,并在该字符后面随机增添随机生成的注释;

addTab:随机选择标签内容中的字符,并在该字符前添加\\t字符;

addZero:随机选择标签内容中的字符,并在该字符前添加\\0字符;

addEnter:随机选择标签内容中的字符,并在该字符前面添加回车字符。

S3、将判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据。

本实施例选择基于规则检测的传统非安全方法,对下列关键字符进行忽略大小写检索,判断是否为XSS攻击载荷:prompt;alert;confirm;expression;javascript;script;eval;onload;onerror;onfocus;onclick;ontoggle;onmousemove;ondrag;String.fromCharCode;base64;onblur;xlink:href。

S4、根据定义的免杀操作构建强化学习环境。

更具体地,本步骤S4包括如下步骤:

S41、加载未变形的XSS攻击载荷样本,并对强化学习环境进行初始化操作。

强化学习环境的初始化操作包括初始化免杀操作的操作空间大小、可进行的免杀操作、设置当前使用样本为空样本、设置空样本对应的特征、初始化用于判断是否安全的XSS防御系统检测机制。

S42、更新所需操作,定义每次强化学习环境进入下一状态所进行的操作Step。操作Step根据输入的操作对当前样本进行修改并更新特征,然后以判断是否为安全的XSS防御系统作为判断是否为XSS攻击载荷的依据,如果判断为不是XSS攻击载荷,则说明免杀变形成功,奖励10积分,并标记完成此轮学习;否则返回0积分,需要继续进行下一轮强化学习。

S43、重置操作,每次强化学习完成后需要重置强化学习环境,在XSS攻击载荷样本列表中随机选择一个样本作为当前样本,并将该样本对应的特征向量作为初始状态。

S5、通过DQNAgent对象实现强化学习DQN算法。

如图2所示,通过DQNAgent对象实现强化学习算法过程为:加载未变形的XSS攻击载荷样本并初始化后,如果判断为不是XSS攻击,且达到免杀效果则奖励10积分并标记完成此轮学习,如果判断时仍是XSS攻击,则反馈0积分和新状态给DQNAgent对象,DQNAgent对象受到反馈后继续进行下一步免杀操作,实现循环。当所有未变形XSS攻击载荷样本都变形完毕,如果没有成功绕过XSS防御系统的XSS攻击载荷,则说明该XSS防御系统安全,否则说明该XSS防御系统不安全,同时获得变形模型,利用该变形模型可以生成能绕过该XSS防御系统的攻击载荷。其中,XSS攻击载荷样本变形为:根据选择的免杀操作,对XSS攻击载荷样本进行变形,然后通过特征部分重新计算特征。DQNAgent对象基于当前状态和相关策略选择免杀操作,利用XSS防御系统进行判断。具体步骤如下:

S51、获取操作空间大小并对强化学习环境进行初始化。

DQN算法需要创建深度学习网络,本实施例中的深度学习网络采用的是多层感知机(MLP)模型,在兼顾效果与效率的前提下选用两层隐层,第一层隐层节点数为5,第二层隐层节点数为2,激活函数采用α为1的指数线性单元函数(Exponential Linear Unit,ELU),输出层节点数为可选取的操作数。

在创建大小为256的记忆体之后,创建DQNAgent对象并指定所使用的多层感知机模型、操作空间大小、记忆体、所使用的玻尔兹曼算法策略以及批处理大小等参数。

S52、定义nb_max_episode_steps作为最大阈值,用于保证在学习过程中有一种退出机制,如果超过最大阈值就进行强制退出,避免在某一轮学习中由于异常情况一直进行强化学习而不终止。在本实施例中,若使用安全的XSS防御系统便找不到获得奖励的操作。

S53、在nb_max_episode_steps的变形次数内,DQNAgent根据MLP模型选择操作进行变形,重新计算特征并判断变形后的攻击载荷是否能被待检验的XSS防御系统判断为非XSS攻击载荷,如果判断为非XSS攻击载荷,DQNAgent被奖励10积分并进行下一轮学习,否则返回0积分。

S6、完成模型训练,判断XSS防御系统是否安全。

在XSS攻击载荷变形步骤完成后取下一条未变形的XSS攻击载荷重复步骤S5进行变形,如果没有未变形的XSS攻击载荷则模型训练完成。模型训练完成后,如果该模型训练过程有在nb_max_episode_steps变形次数内变形成功且可以绕过XSS防御系统检测的载荷,则说明该XSS防御系统不安全,同时获得绕过该XSS防御系统的变形模型,利用该变形模型可以获得绕过该XSS防御系统的攻击载荷,否则说明该XSS防御系统安全。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

设计图

一种基于强化学习的不安全XSS防御系统识别方法论文和设计

相关信息详情

申请码:申请号:CN201910567203.1

申请日:2019-06-27

公开号:CN110309658A

公开日:2019-10-08

国家:CN

国家/省市:81(广州)

授权编号:授权时间:主分类号:G06F 21/57

专利分类号:G06F21/57;H04L29/06;G06N3/08

范畴分类:40A;33C;

申请人:暨南大学

第一申请人:暨南大学

申请人地址:510632 广东省广州市天河区黄埔大道西601号

发明人:魏林锋;黎琳;宣建通

第一发明人:魏林锋

当前权利人:暨南大学

代理人:林梅繁

代理机构:44245

代理机构编号:广州市华学知识产权代理有限公司

优先权:关键词:当前状态:审核中

类型名称:外观设计

标签:;  ;  ;  ;  

一种基于强化学习的不安全XSS防御系统识别方法论文和设计-魏林锋
下载Doc文档

猜你喜欢