掌桥专利:专业的专利平台
掌桥专利
首页

一种XSS攻击识别方法、装置、设备及介质

文献发布时间:2023-06-19 11:42:32


一种XSS攻击识别方法、装置、设备及介质

技术领域

本发明涉及信息安全技术领域,特别涉及一种XSS攻击识别方法、装置、设备及介质。

背景技术

XSS(跨站脚本攻击)是目前非常普遍的Web应用安全漏洞。引发这种安全漏洞的原因往往是因为开发人员安全意识不高,过于相信客户提交的数据,在没有做任何过滤的情况下便将该数据呈现到前端页面上。这种数据经过攻击者精心构造,在客户端成功执行后,该代码将会盗取客户cookies或者进一步进行其他具有危害的操作。

攻击者在确认网站的某接口存在XSS漏洞后,将会有多种方法进行漏洞利用,常见的方法为:精心构造盗取cookies或者欺骗用户的js(即javascript)代码,将携带了攻击型payload(payload,即有效负载)的链接发送给受害者进行点击,从而进行盗取用户的cookies等操作。

目前,检测XSS攻击的技术主要有以下两种:

1.基于规则的方法。这种方法在检测XSS攻击时,常常需要用户编写数量非常多的正则表达式对其进行拦截,花费巨大的人力、物力和时间成本,并且往往会被攻击者抓住一个细微的点进行绕过,从而增加了误报的概率。

2.基于机器学习的方法。这种方法虽然在已有的训练集上会有较好的效果,但是由于客户环境是非常复杂,且训练集上的数据,跟不上日新月异的攻击数据,重新训练需要花费更大的人力、物力和时间成本,并且也很容易会被攻击者绕过,增加了误报的概率。

发明内容

有鉴于此,本发明的目的在于提供一种XSS攻击识别方法、装置、设备及介质,能够以较少的成本完成对XSS攻击的有效识别,并且具有较低的误检率。

其具体方案如下:

第一方面,本申请公开了一种XSS攻击识别方法,包括:

获取待检测流量;

提取所述待检测流量的有效载荷以得到待检测有效载荷;

根据所述待检测有效载荷的词法特征创建相应的指纹信息以得到待检测指纹信息;

利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量。

可选的,所述利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量,包括:

将所述待检测指纹信息与预设的指纹库进行匹配,以确定所述待检测流量是否为XSS攻击型流量。

可选的,所述将所述待检测指纹信息与预设的指纹库进行匹配,以确定所述待检测流量是否为XSS攻击型流量,包括:

将所述待检测指纹信息与预设的白指纹库进行第一次匹配;

如果所述第一次匹配成功,则判定所述待检测流量不是XSS攻击型流量;

如果所述第一次匹配失败,则将所述待检测指纹信息与预设的黑指纹库进行第二次匹配;

如果所述第二次匹配成功,则判定所述待检测流量为XSS攻击型流量。

可选的,如果所述第二次匹配失败,则还包括:

对所述待检测流量放行,并将所述待检测有效载荷记录至预设日志文件。

可选的,所述将所述待检测指纹信息与预设的指纹库进行匹配,以确定所述待检测流量是否为XSS攻击型流量之前,还包括:

利用合法客户端产生的合法流量创建所述白指纹库;

利用获取到的XSS攻击型有效载荷创建所述黑指纹库。

可选的,所述利用获取到的XSS攻击型有效载荷创建所述黑指纹库,包括:

收集当前已知的XSS攻击型有效载荷;

利用当前已知的绕过方法和攻击形式,并结合fuzz技术挖掘潜在的XSS攻击型有效载荷;

利用所述当前已知的XSS攻击型有效载荷和所述潜在的XSS攻击型有效载荷,创建所述黑指纹库。

可选的,所述将所述待检测指纹信息与预设的指纹库进行匹配,包括:

构建与预设的指纹库对应的AC自动机;

将所述待检测指纹信息输入至所述AC自动机,以完成所述待检测指纹信息与所述指纹库之间的匹配过程。

可选的,所述利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量,包括:

获取与所述待检测指纹信息相关的统计特征以得到待检测统计特征;

通过比对所述待检测统计特征和预设统计特征,以确定所述待检测流量是否为XSS攻击型流量;

其中,所述预设统计特征包括对XSS攻击型有效载荷和/或非XSS攻击型有效载荷对应的指纹信息进行统计后得到的统计特征。

可选的,根据任一有效载荷的词法特征创建相应的指纹信息的过程,包括:

以字符串的词性类型为分片依据,对该有效载荷进行分片操作,并按照字符串片段在该有效载荷中出现的先后顺序,依次记录分片操作后得到的所有字符串片段,以得到相应的字符串片段集;

利用预设的字符串的词性类型与类型标识符之间的对应关系,创建与所述字符串片段集对应的类型标识符序列,以得到相应的指纹信息。

第二方面,本申请公开了一种XSS攻击识别装置,包括:

待检测流量获取模块,用于获取待检测流量;

待检测有效载荷提取模块,用于提取所述待检测流量的有效载荷以得到待检测有效载荷;

指纹信息创建模块,用于根据所述待检测有效载荷的词法特征创建相应的指纹信息以得到待检测指纹信息;

流量类型确定模块,用于利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量。

第三方面,本申请公开了一种电子设备,包括:

存储器,用于保存计算机程序;

处理器,用于执行所述计算机程序,以实现前述公开的XSS攻击识别方法。

第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述公开的XSS攻击识别方法。

本申请中,在获取到类型不明的待检测流量时,需要先提取该待检测流量的有效载荷,然后根据该有效载荷的词法特征来创建相应的指纹信息,最后利用上述指纹信息来确定上述待检测流量是否是XSS攻击型流量。可见,本申请在得到待检测流量之后,是通过与该待检测流量的有效载荷对应的指纹信息来确定该待检测流量的类型的,并且上述指纹信息是基于有效载荷的词法特征来进行创建的。由于攻击者在创建XSS攻击型有效载荷时,通常会根据同一种词法特征来创建非常多不同的具体XSS攻击型有效载荷,如此一来,即便当前待检测有效载荷是攻击者新创建的一种XSS攻击型有效载荷,如果这种XSS攻击型有效载荷的词法特征的指纹信息在以前已经被成功识别出来,那么通过本申请的上述技术方案依然能够成功地识别出当前待检测有效载荷对应的待检测流量是一种XSS攻击型流量,从而提升了识别成功率,也即本申请具有较低的物价率。并且,相对于构建大量正则表达式或者进行复杂的模型训练,本申请中的基于词法特征构建指纹信息的过程所需要花费的时间成本和人力成本是非常低的。综上可见,本申请能够以较少的成本完成对XSS攻击的有效识别,并降低了误检率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请公开的一种XSS攻击识别方法流程图;

图2为本申请公开的一种具体的XSS攻击识别方法流程图;

图3为本申请公开的一种具体的XSS攻击识别方法流程图;

图4为本申请公开的一种具体的XSS攻击识别流程图;

图5为本申请公开的一种指纹信息生成过程示意图;

图6为一种具体的AC自动机实例结构示意图;

图7为本申请公开的一种XSS攻击识别装置结构示意图;

图8为本申请公开的一种电子设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,检测XSS攻击的技术主要有以下两种:第一种是基于规则的方法。这种方法在检测XSS攻击时,常常需要用户编写数量非常多的正则表达式对其进行拦截,花费巨大的人力、物力和时间成本,并且往往会被攻击者抓住一个细微的点进行绕过,从而增加了误报的概率。第二种是基于机器学习的方法。这种方法虽然在已有的训练集上会有较好的效果,但是由于客户环境是非常复杂,且训练集上的数据,跟不上日新月异的攻击数据,重新训练需要花费更大的人力、物力和时间成本,并且也很容易会被攻击者绕过,增加了误报的概率。为此,本申请提供了一种XSS攻击识别方案,能够以较少的成本完成对XSS攻击的有效识别,并且具有较低的误检率。

参见图1所示,本发明实施例公开了一种XSS攻击识别方法,包括:

步骤S11:获取待检测流量。

本实施例中,可以从目标网路中获取流量报文,然后通过传入参数的方式定位到流量报文中表单的相应传入数据,接着进行相应的解码操作,如url解码、base64解码等,从而得到相应的感兴趣流量作为本实施例中的待检测流量。

可以理解的是,上述目标网路可以是某个局域网内所有客户端使用的所有网路,也可以是某个客户端所使用的网路。本实施例可以为用户提供相应的网路指定接口,以便通过上述网路指定接口确定出用户希望后台进行监视的目标网路。

进一步的,为了提升本申请技术方案的泛化能力,在从目标网路中获取到待检测流量之后,还可以基于常见的绕过方式对上述待检测流量进行还原操作。

步骤S12:提取所述待检测流量的有效载荷以得到待检测有效载荷。

本实施例中,在提取待检测流量中的有效载荷时,需要提出待检测流量中的所有有效载荷作为该待检测流量的待检测有效载荷。

步骤S13:根据所述待检测有效载荷的词法特征创建相应的指纹信息以得到待检测指纹信息。

本实施例中,根据所述待检测有效载荷的词法特征创建相应的指纹信息的过程,具体可以包括:以字符串的词性类型为分片依据,对所述待检测有效载荷进行分片操作,并按照字符串片段在所述待检测有效载荷中出现的先后顺序,依次记录分片操作后得到的所有字符串片段,以得到相应的字符串片段集;利用预设的字符串的词性类型与类型标识符之间的对应关系,创建与所述字符串片段集对应的类型标识符序列,以得到相应的指纹信息。

也即,本实施例中待检测有效载荷的指纹信息具体是指待检测有效载荷中基于词性类型划分得到的各个字符串对应的词性类型标识符的序列。

步骤S14:利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量。

在一种具体实施方式中,可以通过将待检测指纹信息与指纹库进行比对的方式来确定待检测流量是否为XSS攻击型流量。也即,所述利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量,具体可以包括:将所述待检测指纹信息与预设的指纹库进行匹配,以确定所述待检测流量是否为XSS攻击型流量。

可以理解的是,上述指纹库中的指纹信息是按照类型已知的流量的有效载荷的词法特征创建的指纹信息。其中,指纹库中的指纹信息的创建过程所采用的方式与步骤S13中的指纹信息创建过程所采用的方式是相同的,也就是说,步骤S13中用于创建待检测流量的有效载荷对应的指纹信息的方法流程同样适用于创建类型已知流量的有效载荷对应的指纹信息,从而得到上述指纹库。另外,上述类型已知的流量既可以包括XSS攻击型流量,也可以包括合法客户端产生的合法流量,如客户的正常业务所产生的安全流量。

在另一种具体实施方式中,考虑到XSS攻击型流量对应的指纹信息和正常的合法流量对应的指纹信息之间,在一定时间段内所呈现出来的如出现次数、出现频率等统计特征是存在较大差异的,为此,本实施例也可以基于待检测指纹信息的统计特征来确定相应的待检测流量的类型。也即,所述利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量,具体可以包括:通过对待检测信息的相关统计特征进行分析,以确定相应的待检测流量是否为XSS攻击型流量。

本申请实施例中,在获取到类型不明的待检测流量时,需要先提取该待检测流量的有效载荷,然后根据该有效载荷的词法特征来创建相应的指纹信息,最后利用上述指纹信息来确定上述待检测流量是否是XSS攻击型流量。可见,本申请实施例在得到待检测流量之后,是通过与该待检测流量的有效载荷对应的指纹信息来确定该待检测流量的类型的,并且上述指纹信息是基于有效载荷的词法特征来进行创建的。由于攻击者在创建XSS攻击型有效载荷时,通常会根据同一种词法特征来创建非常多不同的具体XSS攻击型有效载荷,如此一来,即便当前待检测有效载荷是攻击者新创建的一种XSS攻击型有效载荷,如果这种XSS攻击型有效载荷的词法特征的指纹信息在以前已经被成功识别出来,那么通过本申请的上述技术方案依然能够成功地识别出当前待检测有效载荷对应的待检测流量是一种XSS攻击型流量,从而提升了识别成功率,也即本申请具有较低的物价率。并且,相对于构建大量正则表达式或者进行复杂的模型训练,本申请中的基于词法特征构建指纹信息的过程所需要花费的时间成本和人力成本是非常低的。综上可见,本申请实施例能够以较少的成本完成对XSS攻击的有效识别,并降低了误检率。

参见图2所示,本申请实施例公开了一种具体的XSS攻击识别方法,包括:

步骤S21:获取待检测流量。

步骤S22:提取所述待检测流量的有效载荷以得到待检测有效载荷。

步骤S23:根据所述待检测有效载荷的词法特征创建相应的指纹信息以得到待检测指纹信息。

其中,关于上述步骤S21至S23的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

步骤S24:将所述待检测指纹信息与预设的白指纹库进行第一次匹配。

可以理解的是,本实施例中的白指纹库是指用于记录基于合法客户端产生的合法流量创建的指纹信息的数据库。其中,基于合法流量创建相应指纹信息的过程与前述实施例中创建待检测流量对应的指纹信息的过程是类似的,在此不再进行赘述。

步骤S25:如果所述第一次匹配成功,则判定所述待检测流量不是XSS攻击型流量。

本实施例中,如果第一次匹配成功,则说明当前合法流量对应的指纹信息中包含有当前待检测流量对应的指纹信息,由此可以表明待检测流量是合法的流量,而非XSS攻击型流量。

步骤S26:如果所述第一次匹配失败,则将所述待检测指纹信息与预设的黑指纹库进行第二次匹配。

本实施例中,如果第一次匹配失败,则说明当前合法流量对应的指纹信息中不包含有当前待检测流量对应的指纹信息。考虑到白指纹库中的信息有可能不够齐全,为了降低误检率,本实施例在第一次匹配失败之后,会继续将待检测指纹信息与预设的黑指纹库进行第二次匹配。

可以理解的是,本实施例中的黑指纹库是指用于记录基于预先获取到的XSS攻击型有效载荷创建的指纹信息的数据库。其中,基于预先获取到的XSS攻击型有效载荷创建相应指纹信息的过程与前述实施例中创建待检测有效载荷对应的指纹信息的过程是类似的,在此不再进行赘述。

步骤S27:如果所述第二次匹配成功,则判定所述待检测流量为XSS攻击型流量。

本实施例中,如果第二次匹配成功,则说明基于预设获取到的XSS攻击型有效载荷创建的指纹信息中包含了当前待检测有效载荷对应的指纹信息,由此可以表明当前待检测有效载荷对应的待检测流量是XSS攻击型流量。

步骤S28:如果所述第二次匹配失败,则对所述待检测流量放行,并将所述待检测有效载荷记录至预设日志文件。

本实施例中,如果第二次匹配失败,则说明基于预先获取到的XSS攻击型有效载荷创建的指纹信息中不包含当前待检测有效载荷对应的指纹信息,这种情况下,待检测有效载荷对应的待检测流量是安全流量的可能性较高,所以此时可以对其放行,也即允许待检测流量正常流向相应的目的地,但是为了进一步提高安全性,在对上述待检测流量放行的同时,还需要记录相应的待检测有效载荷至预设日志文件,以便工作人员以后能够对上述预设日志文件中的有效载荷信息进行审计。

本实施例中,在将所述待检测指纹信息与上述白指纹库、黑指纹库进行匹配之前,还可以包括:利用合法客户端产生的合法流量创建所述白指纹库;以及利用获取到的XSS攻击型有效载荷创建所述黑指纹库。

其中,所述利用获取到的XSS攻击型有效载荷创建所述黑指纹库,具体可以包括:收集当前已知的XSS攻击型有效载荷;利用当前已知的绕过方法和攻击形式,并结合fuzz技术挖掘潜在的XSS攻击型有效载荷;利用所述当前已知的XSS攻击型有效载荷和所述潜在的XSS攻击型有效载荷,创建所述黑指纹库。其中,fuzz技术是一种模糊测试技术,它一种发现安全漏洞的有效的测试方法,模糊测试将随机的坏数据插入程序,观察程序是否能容忍杂乱输入,模糊测试是不合逻辑的,只是产生杂乱数据攻击程序,采用模糊测试攻击应用程序可发现其他采用逻辑思维来测试很难发现的安全漏洞。

也即,本实施例在创建上述黑指纹库时,除了收集当前已知的XSS攻击型有效载荷,还需要在收集当前为公众所知晓的XSS攻击型有效载荷之后,通过fuzz技术并根据当前已知的被攻击者所采用的绕过方法和攻击形式来挖掘出其他潜在的XSS攻击型有效载荷,然后利用上述两种途径所得到的XSS攻击型有效载荷来创建本实施例中的黑指纹库,通过这种方式可以进一步提升XSS攻击型流量的识别成功率。

进一步的,本实施例中,将所述待检测指纹信息与预设的指纹库进行匹配时,具体的过程可以包括:构建与预设的指纹库对应的AC自动机;将所述待检测指纹信息输入至所述AC自动机,以完成所述待检测指纹信息与所述指纹库之间的匹配过程。

也即,本实施例在将待检测指纹信息与指纹库进行匹配时,具体可以利用指纹库所对应的AC自动机来完成匹配过程。由于AC自动机的构建时间与指纹库的字符总长度是成正比的,并且匹配时间与待检测指纹信息的长度也成正比,因此,通过AC自动机完成上述匹配过程,在时间效率上具有非常大的优势,并且空间消耗也是比较小的。

本实施例中,是先利用白指纹库对待检测指纹信息展开匹配流程,当没有匹配成功时,再利用黑指纹库对待检测指纹信息展开匹配流程。也即,本实施例是将白指纹库匹配流程部署在黑指纹库匹配流程之前,这样能够过滤大量的合法流量,从而大幅降低了进入黑指纹库匹配流程的数据量,有利于提高识别效率和提升设备性能。

参见图3所示,本申请实施例公开了一种具体的XSS攻击识别方法,包括:

步骤S31:获取待检测流量。

步骤S32:提取所述待检测流量的有效载荷以得到待检测有效载荷。

步骤S33:根据所述待检测有效载荷的词法特征创建相应的指纹信息以得到待检测指纹信息。

其中,关于上述步骤S31至S33的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

步骤S34:获取与所述待检测指纹信息相关的统计特征以得到待检测统计特征。

步骤S35:通过比对所述待检测统计特征和预设统计特征,以确定所述待检测流量是否为XSS攻击型流量;其中,所述预设统计特征包括对XSS攻击型有效载荷和/或非XSS攻击型有效载荷对应的指纹信息进行统计后得到的统计特征。

考虑到XSS攻击型流量对应的指纹信息和正常的合法流量对应的指纹信息之间,在一定时间段内所呈现出来的如出现次数、出现频率等统计特征是存在较大差异的,也即它们各自对应不同的统计特征阈值,基于此,本实施例通过比对待检测指纹信息的相关统计特征与上述预先对XSS攻击型有效载荷和/或非XSS攻击型有效载荷对应的指纹信息进行统计后得到的统计特征,以确定待检测流量是否是XSS攻击型流量。本实施例中的统计特征包括但不限于同一指纹信息出现的次数和/或出现的频率等。

参见图4所示,本申请公开了一种具体的XSS攻击识别流程。本实施例中的XSS攻击识别流程主要包括以下内容:

A、基于词法生成指纹库:由于XSS漏洞可能会涉及多种语言,所以,基于语法特点来创建指纹库是不合适的。为此,本申请在检测XSS漏洞时所使用的指纹库是只使用词法特征来构建的指纹库。本申请中白指纹库的指纹信息、黑指纹库的指纹信息以及待检测有效载荷的指纹信息,均是采用词法来生成的。下面以图5所示的有效载荷为例说明指纹信息的生成过程。

首先根据流量数据包中的key-value提取用户传进来的参数,如图5中的id为key,等号后面接着的为一个value值。在获取到value值时进行的操作是将value值按顺序进行分片,如图5中,分别依次划分为:“<”、“BASE”、“HREF”、“=”、“””、“javascript”、“:”、“alert”、“(”、“1”、“)”,分片结束后,接下来是从词库中匹配出对应的词性类型。本实施例中,词库为预先创建的具有相同属性的字符串的集合,上述属性也即是字符串的词性类型。例如通过Symbol词库来保存词性类型为标点符号的字符串,上述Symbol词库中具体可以设有{,.?<>:;、*!~`$%}等字符串,本实施例中,标点符号这一词性类型的类型标识符可以设为S;另外,可以通过Lable词库来保存词性类型为html标签的字符串,上述Lable词库中具体可以设有{base、img、input、meta、link、address、svg、table、iframe、meta、div}等字符串,本实施例中,html标签这一词性类型的类型标识符可以设为L;再者,具有特殊含义的等于号,其对应的类型标识符可以设为E(Equal的缩写);javascript为js的语言声明,因此其对应的类型标识符可以设为J(Javascript的缩写);alert为XSS攻击中的弹窗关键词,其对应的类型标识符可以设为A(Alert的缩写);对于内容数字的字符串,其对应的类型标识符可以设为N(Number的缩写)。

本实施例中,在每一个分片找到自己对应的词性类型后,将每个分片的词性类型的类型标识符以先前顺序进行排列,组成对应的序列,并入库。如图5中的BASE对应的词性类型为Lable(“L”)、HREF对应的词性类型为Property(“P”)、数字“1”对应的词性类型为Number(“N”),符号则对应Symbol(“S”)。本实施例可以通过编写的脚本,来依据上述方法对有效载荷中的所有词进行词性匹配,匹配完词性后根据词性类型的顺序生成相应的指纹信息,如图5中对应的有效载荷生成的指纹信息为SLPESJSASNSSS。本实施例中,利用词法进行指纹库的生成的方法优于普通的字符串生成指纹,当攻击者使用不一样的字符时,当该字符与之前的字符具有相同的词性,那么生成的指纹还是一样的,由此可见,本实施例中的上述指纹生成过程具有一定的泛化能力。需要说明的是,本发明的词法分析生成指纹不限具体提取方法。

B、前置处理过程:如图4中的前置处理过程所示,前置处理过程主要包括有有效载荷提取,以及预处理两部分,首先第一步从网路中获取流量报文,根据传入的参数定位到表单传入的数据。第二步,对传入的数据进行解码如url、base64等。第三步,对常见的绕过进行简单的还原,此步骤能够提升方案的泛化能力,对常规的绕过能够有很好的检出。提取流量包中的全部有效载荷,根据词法生成指纹,生成指纹的过程如图5所示,最后将指纹传入后续流程进行匹配。

C、指纹库匹配过程:当黑白指纹库生成完之后,当新的数据包进入匹配流程时,通过键值对的方法定位到传入的参数,使用指纹生成算法对其进行指纹的生成,再生成指纹后,需要对其在黑白指纹库中进行匹配。对黑指纹库,白指纹库分别构建AC自动机,将待匹配的指纹分别在黑指纹库和白指纹库的AC自动机中进行匹配。匹配算法采用AC自动机进行匹配,简单的AC自动机如图6所示,图中的树为字符串she,he,say,her,sh生成的字典树,虚线为fail指针,简单来说就是对该树其进行查找,在树上查找失败时沿着fail指针继续进行查找,不必从新开始查找。AC自动机在时间效率上有很大的优势,它的构建时间与指纹库的字符总长度成正比,它的匹配时间与待匹配指纹的长度成正比,且空间的消耗不大。

如图4中的白指纹匹配流程所示,白指纹匹配流程包括两部分,分别为入库部分以及流量判断部分,指纹入库部分可以包括:将设备部署在客户环境,不开启拦截的功能,只开启生成指纹的功能,对客户的流量进行指纹生成,生成的过程参考图5,然后将生成后的客户白指纹及时入库。流量判断部分可以包括:将从前置处理流程获取到的指纹与白指纹库中的指纹进行比对,当匹配上白指纹库中的指纹时,将该流量放行;当遍历完一遍白指纹库时都没有匹配成功,那么此时将该指纹传递到黑指纹匹配流程。本申请将白指纹匹配流程部署在黑指纹匹配流程之前,在客户场景下能够过滤大量的白流量,使进入黑指纹匹配流程的流量相对较少,大大提升了设备的性能。

如图4中的黑指纹匹配流程所示,黑指纹匹配流程包括两部分,分别为指纹入库部分以及流量判断部分。指纹入库部分包括收集网上常见的攻击有效载荷、根据常见的绕过方法以及攻击形式fuzz出各种各样的的有效载荷,之后使用脚本生成指纹,指纹生成的方法如图5所示,在生成黑指纹后将黑指纹保存到黑指纹库里。需要注意的是,本申请并不限定有效载荷的来源、指纹的的提取实现方式以及检测模型的具体实现。流量判断部分包括:从白指纹匹配流程获取到未被该流程匹配到的流量包的指纹,将获取到的指纹与黑指纹库中的指纹进行对比,当从黑指纹库中匹配到相同的指纹时,本申请认为该流量为XSS攻击型流量,从而对其攻击进行拦截;当该指纹没有命中黑指纹库时,对流量包进行记录,记录方便后续审计,然后对其默认放行。

参见图7所示,本申请实施例还相应公开了一种XSS攻击识别装置,包括:

待检测流量获取模块11,用于获取待检测流量;

待检测有效载荷提取模块12,用于提取所述待检测流量的有效载荷以得到待检测有效载荷;

指纹信息创建模块13,用于根据所述待检测有效载荷的词法特征创建相应的指纹信息以得到待检测指纹信息;

流量类型确定模块14,用于利用所述待检测指纹信息确定所述待检测流量是否为XSS攻击型流量。

其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本申请实施例中,在获取到类型不明的待检测流量时,需要先提取该待检测流量的有效载荷,然后根据该有效载荷的词法特征来创建相应的指纹信息,最后利用上述指纹信息来确定上述待检测流量是否是XSS攻击型流量。可见,本申请实施例在得到待检测流量之后,是通过与该待检测流量的有效载荷对应的指纹信息来确定该待检测流量的类型的,并且上述指纹信息是基于有效载荷的词法特征来进行创建的。由于攻击者在创建XSS攻击型有效载荷时,通常会根据同一种词法特征来创建非常多不同的具体XSS攻击型有效载荷,如此一来,即便当前待检测有效载荷是攻击者新创建的一种XSS攻击型有效载荷,如果这种XSS攻击型有效载荷的词法特征的指纹信息在以前已经被成功识别出来,那么通过本申请的上述技术方案依然能够成功地识别出当前待检测有效载荷对应的待检测流量是一种XSS攻击型流量,从而提升了识别成功率,也即本申请具有较低的物价率。并且,相对于构建大量正则表达式或者进行复杂的模型训练,本申请中的基于词法特征构建指纹信息的过程所需要花费的时间成本和人力成本是非常低的。综上可见,本申请实施例能够以较少的成本完成对XSS攻击的有效识别,并降低了误检率。

图8是根据一示例性实施例示出的一种电子设备20的框图。如图8所示,该电子设备20可以包括:处理器21,存储器22。该电子设备20还可以包括多媒体组件23,输入/输出(I/O)接口24,以及通信组件25中的一者或多者。

其中,处理器21用于通过执行保存在存储器22中的计算机程序,以完成上述XSS攻击识别方法中的全部或部分步骤。存储器22用于存储各种类型的数据以支持在该电子设备20的操作,这些数据例如可以包括用于在该电子设备20上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件23可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器22或通过通信组件25发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器21和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件25用于该电子设备20与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件25可以包括:Wi-Fi模块,蓝牙模块,NFC模块。

在一示例性实施例中,电子设备20可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述XSS攻击识别方法。

在另一示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,该程序被处理器执行时实现上述XSS攻击识别方法步骤。例如,该计算机可读存储介质可以为上述包括程序的存储器22,上述程序可由电子设备20的处理器21执行以完成上述XSS攻击识别方法。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种XSS攻击识别方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种XSS攻击识别方法、装置、设备及介质
  • XSS攻击检测方法、装置、设备及机器可读存储介质
技术分类

06120113020206