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

攻击检测方法、模型训练方法、装置、服务器及存储介质

文献发布时间:2023-06-19 11:29:13


攻击检测方法、模型训练方法、装置、服务器及存储介质

技术领域

本申请涉及JS DDoS攻击处理技术领域,具体而言,涉及一种攻击检测方法、模型训练方法、装置、服务器及存储介质。

背景技术

DDoS (Distributed Denial of Service,分布式拒绝服务攻击)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。攻击者利用“肉鸡”对目标网站在较短的时间内发起大量请求,大规模消耗目标服务器的主机资源,让它无法正常服务,不仅会影响用户的正常使用,同时会造成巨大的经济损失。

而随着Web(网页)应用的日益增多,一种利用JS(Javascript)脚本发起DDoS的攻击逐渐被攻击者广泛利用。JS DDoS攻击基于HTTP(Hyper Text Transfer Protocol,超文本传输协议),通过巧妙构造各种不同类型的JS脚本,和目标Web服务器建立TCP(Transmission Control Protocol,传输控制协议)连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,导致服务器产生大量负载,拒绝为其他用户提供正常服务。由于Web用户群体庞大,一但被攻击者利用,会产生恶劣的影响。

目前,为实现对于JS DDoS攻击的检测,一种方案是通过预先设定JS钩子程序,利用钩子程序检测、判断浏览器端各个页面是否存在DDOS攻击,并在Web请求发送的页面阻止DDOS攻击的再次发生的方案。但是,该方案由于需要在页面利用JS钩子程序检测DDOS攻击,因此需要将一段附加功能的代码嵌入到Web页面中,这就导致了该方法仅能应用于特定的可允许篡改植入JS钩子程序的Web应用中。而针对目前普遍存在的采用HTTPS(Hyper TextTransfer Protocol over Secure Socket Layer,超文本传输安全协议)的Web应用,则无法篡改植入JS钩子程序,方案应用受限。另外该方案还会增加额外的流量消耗,引入不安全的因素。

发明内容

本申请实施例的目的在于提供一种攻击检测方法、模型训练方法、装置、服务器及存储介质,用以解决现有方案应用受限,且不安全的问题。

本申请实施例提供了一种攻击检测方法,包括:获取待检测的JS代码;解析所述JS代码的抽象语法树,得到所述JS代码的CFG(Control Flow Graph,控制流图)和DFG(DataFlow Graph,数据流图);将所述CFG和所述DFG转换为特征向量;将所述特征向量输入至预先训练好的攻击检测模型中,得到所述JS代码的类型;所述JS代码的类型包括:JS DDoS攻击对应的类型,以及正常JS代码对应的类型。

在上述实现过程中,通过解析JS代码的抽象语法树得到JS代码的CFG和DFG,进而以CFG和DFG作为JS代码的和核心特征,实现对于JS代码的分类识别。由于不同类型的JSDDoS攻击的JS代码之间,具有不同的控制流和/或数据流特性,且用于JS DDoS攻击的JS代码与正常的JS代码之间,也具有不同的控制流和/或数据流特性,因此本申请实施例利用JS代码的CFG和DFG进行检测,可以有效实现对于正常JS代码以及各类型的JS DDoS攻击的区分识别,从而可以实现对于JS DDoS攻击的可靠检测。此外,本申请所采用的攻击检测方法无需在Web应用中植入额外的JS钩子程序,只需在服务器上训练好攻击检测模型即可,对于各类Web应用均适用,方案应用场景很广泛,且由于无需在Web应用中植入额外的JS钩子程序,不会增加额外的流量消耗,不会引入不安全的因素。

进一步地,将所述CFG和所述DFG转换为特征向量,包括:遍历所述CFG和所述DFG,形成所述CFG和所述DFG的流路径;对所述CFG和所述DFG的流路径进行数值化处理,得到所述CFG和所述DFG对应的特征向量。

在上述实现过程中,通过遍历CFG和DFG,形成CFG和DFG的流路径,进而进行数值化处理,这就使得得到的特征向量可以完整、全面地反映出JS代码的控制流和数据流特性,从而保证本申请实施例中输出的JS代码的类型的准确性。

进一步地,在得到所述JS代码的类型后,所述方法还包括:根据预设的与所述类型对应的处理策略,对所述JS代码进行处理。

在上述实现过程中,通过预先设定好各类型对应的处理策略,从而可以在确定出JS代码的类型后,实现针对性的处理,从而保证对于JS DDoS攻击的有效处理。

本申请实施例还提供了一种模型训练方法,包括:获取各类JS DDoS攻击的JS代码,以及正常的JS代码;解析各所述JS代码的抽象语法树,得到各所述JS代码的CFG和DFG;将各所述JS代码的所述CFG和所述DFG转换为特征向量,并根据各所述特征向量对应的JS代码的类型,标记各所述JS代码的特征向量的标签;将各所述JS代码的特征向量,以及各所述JS代码的特征向量的标签输入至预设的攻击检测模型中进行训练,得到训练好的攻击检测模型。

通过上述实现过程训练得到的攻击检测模型,可以利用JS代码的CFG和DFG,实现JS代码的可靠性分类。而在采用上述实现过程训练得到的攻击检测模型进行JS DDoS攻击检测时,无需在Web应用中植入额外的JS钩子程序,对于各类Web应用均适用,方案应用场景很广泛,且由于无需在Web应用中植入额外的JS钩子程序,不会增加额外的流量消耗,不会引入不安全的因素。

进一步地,所述攻击检测模型为深度学习算法模型。

在本申请实施例中,采用深度学习算法模型来作为攻击检测模型,从而可以使得进行检测处理时,无需进行复杂的特征工程,且可以具有较高的识别精度。

进一步地,所述获取各类JS DDoS攻击的JS代码,包括:获取各类JS DDoS攻击当前已有的第一JS代码;按照预设的代码生成规则,在各类JS DDoS攻击的第一JS代码的基础上,生成各类JS DDoS攻击的第二JS代码;所述第二JS代码包括明文JS代码和/或混淆的JS代码。

在实际应用过程中,目前发现的JS DDoS攻击相对于其余各类型的DDoS攻击而言,数量较少,这就导致目前针对JS DDoS攻击的样本数量可能存在不足。为此,在本申请实施例中,可以基于预设的代码生成规则,对当前已有的第一JS代码进行内容变换,从而生成各类JS DDoS攻击的第二JS代码以满足模型训练的样本需求。

本申请实施例还提供了一种攻击检测装置,包括:第一获取模块、第一解析模块、第一转换模块和检测模块;所述第一获取模块,用于获取待检测的JS代码;所述第一解析模块,用于解析所述JS代码的抽象语法树,得到所述JS代码的控制流图CFG和数据流图DFG;所述第一转换模块,用于将所述CFG和所述DFG转换为特征向量;所述检测模块,用于将所述特征向量输入至预先训练好的攻击检测模型中,得到所述JS代码的类型;所述JS代码的类型包括:JS DDoS攻击对应的类型,以及正常JS代码对应的类型。

本申请实施例还提供了一种模型训练装置,包括:第二获取模块、第二解析模块、第二转换模块和训练模块;所述第二获取模块,用于获取各类JS DDoS攻击的JS代码,以及正常的JS代码;所述第二解析模块,用于解析各所述JS代码的抽象语法树,得到各所述JS代码的控制流图CFG和数据流图DFG;所述第二转换模块,用于将各所述JS代码的所述CFG和所述DFG转换为特征向量,并根据各所述特征向量对应的JS代码的类型,标记各所述JS代码的特征向量的标签;所述训练模块,用于将各所述JS代码的特征向量,以及各所述JS代码的特征向量的标签输入至预设的攻击检测模型中进行训练,得到训练好的攻击检测模型。

本申请实施例还提供了一种服务器,包括处理器、存储器及通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;所述处理器用于执行存储器中存储的一个或者多个程序,以实现上述任一种的攻击检测方法,或实现上述任一种的模型训练方法。

本申请实施例中还提供了一种可读存储介质,所述可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一种的攻击检测方法,或实现上述任一种的模型训练方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种攻击检测模型训练方法的流程示意图;

图2为本申请实施例提供的一种攻击检测方法的流程示意图;

图3为本申请实施例提供的一种实现本申请方案的软件系统的内部模块层级示意图;

图4为本申请实施例提供的一种攻击检测装置的结构示意图;

图5为本申请实施例提供的一种攻击检测模型训练装置的结构示意图;

图6为本申请实施例提供的一种服务器的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

实施例一:

为了实现对于JS DDoS攻击的可靠检测,在本申请实施例中提供了一种攻击检测方法,通过预先训练好攻击检测模型,从而利用该攻击检测模型实现对于JS DDoS攻击的检测。应理解,在前述攻击检测方法中,攻击检测模型的训练效果将直接影响JS DDoS攻击的检测可靠性。为此,在本申请实施例中还提供了一种模型训练方法。

为了便于理解本申请实施例的方案,下面先对本申请实施例中提供的模型训练方法进行介绍。

可以参见图1所示,图1为本申请实施例中提供的模型训练方法的流程示意图,包括:

S101:获取各类JS DDoS攻击的JS代码,以及正常的JS代码。

在本申请实施例中,可以预先按照各JS DDoS攻击的攻击特征,进行JS DDoS攻击的分类。示例性的,在本申请实施例中可以分为:直接带宽消耗类、资源伪造消耗类、业务性能消耗类、协议栈性能消耗类、控件资源消耗类、基础设施性能消耗类六类JS DDoS攻击。分类依据可以参见下表一所示:

表一

应理解,在本申请实施例中,可以依据所分类别,获取相应造成类别的JS DDoS攻击的JS代码。同时还获取不产生JS DDoS攻击的正常JS代码。

需要注意的是,在实际应用过程中,目前发现的JS DDoS攻击相对于其余各类型的DDoS攻击而言,数量较少,这就导致目前针对JS DDoS攻击的样本数量可能存在不足。为此,在本申请实施例中,可以在当前已有的第一JS代码的基础上,按照代码生成规则对第一JS代码的内容进行变换,生成各类JS DDoS攻击的第二JS代码,从而满足模型训练的样本需求。

在本申请实施例中,可以在已有的各类JS代码生成器中定义好代码生成规则,从而基于已有的各类JS DDoS攻击的第一JS代码,生成各类JS DDoS攻击的第二JS代码。

示例性的,在本申请实施例中可以对已有的第一JS代码进行诸如重命名局部变量、移除代码空白、代码压缩,比如去掉末尾分号、常量替换等常规变换操作。此外也可以将第一JS代码关键字(如字符常量等)提取出来放到数组中,并配置调用方式为数组下标方式,从而增加代码阅读难度。此外,还可以对第一JS代码关键字进行编码、加密等操作。此外,还可以依据第一JS代码的CFG对控制流的逻辑进行变换,利用代码注入机制,随机注入无效代码。

应理解,在实际应用中,可以根据实际需要选择采用上述示例中的部分或全部操作,或者采用上述示例中未示出的其他可以实现对于JS代码内容变换的方式,从而生成第二JS代码。

需要注意的是,在本申请实施例中可以设定生成的第二JS代码为明文JS代码,或者为混淆的JS代码。此外,也可以同时生成明文JS代码和混淆的JS代码,以保证训练效果。

在本申请实施例中,生成的第二JS代码在语法结构或变量定义上,与第一JS代码都不完全相同,但第二JS代码的功能逻辑和第一JS代码一致。

还应理解,以上为本申请发明人研究后进行的分类,在实际应用过程中,也可以各JS DDoS攻击的攻击特征,将JS DDoS攻击区分为其他的类别,只要其给出的分类依据合理即可,在本申请实施例中并不做限制。

S102:解析各JS代码的抽象语法树,得到各JS代码的CFG和DFG。

在本申请实施例中,可以对步骤S101中获取到的各JS代码建立AST(AbstractSyntax Tree,抽象语法树),从而通过构建语法树,将JS代码中的语句映射到AST树中的每一个节点上。

需要说明的是,在本申请实施例中,构建AST可以才有各种已有的AST构建方式实现,在本申请实施例中并不做限制。

在构建好各JS代码的抽象语法树之后,可以解析各JS代码的抽象语法树,实现CFG和DFG的构建。应理解,CFG是程序的抽象表现,代表了程序执行过程中会遍历到的所有路径,而DFG则从数据传递和加工角度出发,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。而通过解析AST的每个点,可以找到对应的控制流目标或数据流目标,在每个节点上将节点连接到其它流目标,例如根据代码的具体情况,IF语句可以连接到THEN流目标和ELSE流目标,从而根据这些流目标形成CFG和DFG。

S103:将各JS代码的CFG和DFG转换为特征向量,并根据各特征向量对应的JS代码的类型,标记各JS代码的特征向量的标签。

应当理解的是,CFG和DFG均是图形形式,而为了便于模型进行处理,则需要将CFG和DFG转换为特征向量。

在本申请实施例中,可以遍历CFG和DFG,形成CFG和DFG的流路径,然后对CFG和DFG的流路径进行数值化处理,得到CFG和DFG对应的特征向量。

需要说明的是,前文所述的流路径是指,对CFG和DFG按照树结构遍历形成的节点序列。在流路径中,包含了被解析的JS代码的基本语法结构信息、控制流信息、数据流信息等,如:JS代码中的括号、等号、分号、函数名、变量名等。

在本申请实施例中,在得到了CFG和DFG的流路径后,可以采用数值化标记处理技术,将流路径中的各字符或字符串分别用唯一的数字ID标识,得到CFG和DFG对应的特征向量。

应理解,在本申请实施例中,可以预先设定一个参考字典,并在参考字典中设定好各字符对应的唯一的数字ID标识,例如a对应1208,b对应1367等,从而利用参考字典可以实现将流路径转换为特征向量。

需要理解的是,在本申请实施例中,可以分别对CFG转换得到一个特征向量,对DFG转换得到一个特征向量,进而以这两个特征向量作为同一次的输入,用作进行攻击检测模型的训练。此外,也可以在分别转换得到CFG的特征向量和DFG的特征向量后,将CFG的特征向量和DFG的特征向量组合成为一个特征向量(例如将CFG的特征向量和DFG的特征向量直接拼接成一个特征向量),用作进行攻击检测模型的训练。

需要注意的是,在本申请实施例中,为了进行攻击检测模型的训练,需要明确转换得到的各特征向量对应的类型。为此,一种可行的方式是,电子设备在将各JS代码的CFG和DFG转换为特征向量,自动根据各特征向量对应的JS代码的类型,标记各特征向量的标签为相应JS代码的类型。比如,将正常JS代码对应的标签标记为“正常”,将“直接带宽消耗类”JS代码对应的标签标记为“直接带宽消耗类”等。

应理解,对于各特征向量的标签也可以采用“0”、“1”、“2”等等数字,或者“a”、“b”、“c”等等字符表示,只要预先关联好各数字或字符对应的实际类型即可。

当然,在本申请实施例中,也可以采用人工标记的方式,标记各特征向量的标签。

S104:将各JS代码的特征向量,以及各JS代码的特征向量的标签输入至预设的攻击检测模型中进行训练,得到训练好的攻击检测模型。

在本申请实施例中,攻击检测模型可以采用深度学习算法模型来实现,例如,可以采用卷积神经网络模型、循环神经网络模型、递归神经网络模型、LSTM(Long short-termmemory,长短期记忆网络)模型来实现。

在本申请实施例中,可以采用分类交叉熵等函数来作为攻击检测模型的损失函数,从而计算训练过程中的损失值。

此外,在本申请实施例中,还可以采用梯度下降算法、AdamOptimizer算法、Adadelta,Adagrad 等算法作为优化器,来更新和计算攻击检测模型的网络参数。

此外,在本申请实施例中,可以采用F1、ROC(receiver operatingcharacteristic curve,受试者工作特征曲线)等指标来评估每一次迭代训练出的攻击检测模型,从而确定攻击检测模型是否可以结束训练。

应理解,以上描述的损失函数、优化器和评估指标仅是本申请实施例中所示例出的几种可采用的损失函数、优化器和评估指标,并不作为本申请实施例的限制。

在训练好攻击检测模型后,即可采用该训练好的攻击检测模型实现对于JS DDoS攻击的检测。请参见图2所示,图2为本申请实施例中所提供的攻击检测方法的流程示意图,包括:

S201:获取待检测的JS代码。

需要理解的是,在本申请实施例中,可以在Web(网页)应用的入口服务器等位置处设置该攻击检测模型,从而实现对于收到的各JS代码的检测。

S202:解析JS代码的抽象语法树,得到JS代码的CFG和DFG。

本步骤中,得到JS代码的CFG和DFG的具体过程,与前述训练过程中获取到各JS代码的CFG和DFG的具体过程一致,故在此不再赘述。

S203:将CFG和DFG转换为特征向量。

本步骤中,将CFG和DFG转换为特征向量的具体过程,与前述训练过程中将CFG和DFG转换为特征向量的具体过程一致,故在此也不再赘述。

S204:将特征向量输入至预先训练好的攻击检测模型中,得到该JS代码的类型。

需要说明的是,若训练过程中是将CFG的特征向量和DFG的特征向量作为一对儿输入对攻击检测模型进行训练的,那么此时将待检测的JS代码的CFG的特征向量和DFG的特征向量作为一对儿输入,一起输入至预先训练好的攻击检测模型中。若训练过程中是将CFG的特征向量和DFG的特征向量合并得到的特征向量作为输入对攻击检测模型进行训练的,那么此时需要先按照同样的合并方式,将待检测的JS代码的CFG的特征向量和DFG的特征向量进行合并得到一个特征向量,再将该合并得到的特征向量输入至预先训练好的攻击检测模型中。

在本申请实施例中,攻击检测模型将会输出待检测的JS代码的类型。

在本申请实施例中,还可以预先配置好各类型的JS代码所对应的处理策略,进而在输出待检测的JS代码的类型后,按照该类型对应的处理策略对该JS代码进行处理。

示例性的:在JS代码的类型为“正常”,可以正常执行该JS代码;在JS代码的类型为“直接带宽消耗类”时,可以丢弃攻击源IP发起的HTTP GET/POST请求;在JS代码的类型为“资源伪造消耗类” 时,可以过滤伪造的HTTP Header头部信息;在JS代码的类型为“业务性能消耗类” 时,可以阻断攻击源IP;在JS代码的类型为“协议栈性能消耗类” 时,可以阻断攻击源IP发起的WebSocket连接;在JS代码的类型为“控件资源消耗类” 时,可以缓存控件资源或阻断攻击源IP请求的控件资源;在JS代码的类型为“基础设施性能消耗类” 时,可以缓存DNS。

在本申请实施例中,在检测到JS代码为除“正常”这一类型外的其他某一种类型时,还可以获取该JS代码的相关信息,比如JS代码的发起源IP(Internet ProtocolAddress,互联网协议地址)地址、源端口,请求的URL(Uniform Resource Locator,统一资源定位符)地址、请求方法、请求时间、Refer信息、浏览器UserAgent字段等信息。

对于获取到的该JS代码的相关信息,可以保存并可视化,从而便于为JS DDoS攻击溯源提供线索支撑。

除此之外,在本申请实施例中,还可以对前端用户的配置管理,以及JS DDoS攻击的告警等进行可视化,从而便于进行管理和溯源。

本申请实施例所提供的攻击检测方法和攻击检测模型训练方法,通过解析JS代码的抽象语法树得到JS代码的CFG和DFG,进而以CFG和DFG作为JS代码的和核心特征,实现对于JS代码的分类识别。由于不同类型的JS DDoS攻击的JS代码之间,具有不同的控制流和/或数据流特性,且用于JS DDoS攻击的JS代码与正常的JS代码之间,也具有不同的控制流和/或数据流特性,因此本申请实施例利用JS代码的CFG和DFG进行检测,可以有效实现对于正常JS代码以及各类型的JS DDoS攻击的区分识别,从而可以实现对于JS DDoS攻击的可靠检测。此外,本申请所采用的攻击检测方法无需在Web应用中植入额外的JS钩子程序,只需在服务器上训练好攻击检测模型即可,对于各类Web应用均适用,方案应用场景很广泛,且由于无需在Web应用中植入额外的JS钩子程序,不会增加额外的流量消耗,不会引入不安全的因素。

实施例二:

本实施例在实施例一的基础上,以一种攻击检测模型为LSTM模型,方案在软件系统上实现的情况为例,为本申请做进一步示例说明。

参加图3所示,软件系统可以划分为样本数据生成模块、样本数据预处理模块、模型构建模块、识别阻断模块、可视化展示模块五个部分。其中:

样本数据生成模块主要包含原始的JS DDoS攻击的JS代码样本分类和明文或混淆JS DDoS攻击的JS代码样本数据生成两部分。

参见表一所述,本实施例中将造成JS DDoS攻击的JS代码分为直接带宽消耗类、资源伪造消耗类、业务性能消耗类、协议栈性能消耗类、控件资源消耗类、基础设施性能消耗类六类。这六类JS代码与正常JS代码一起,构成本实施例的七类JS代码样本。

根据不同的JS代码类型,分别生成大量明文或者混淆的JS DDoS攻击的JS代码,生成的JS代码的语法结构或变量定义上,与原始的JS DDoS攻击的JS代码都不完全相同,但代码的功能逻辑上和原始的JS DDoS攻击的JS代码一致。同时,从开源网站上选取大量正常的非攻击性的JS代码。生成后的大量JS代码数据和正常的非攻击性的JS代码放到一起,用于代码的特征提取和模型训练。

样本数据预处理模块对生成的大量JS代码建立抽象语法树,从而对JS代码的结构进行分析。

建立抽象语法树后,解析抽象语法树,实现CFG和DFG的构建。

对于各JS代码的CFG、DFG,按深度优先遍历的树结构搜索算法形成节点序列(即流路径),节点序列的组成包含了载荷的基本语法结构信息、控制流信息、数据流信息,如:括号、等号、分号、函数名、变量名等,将这些序列化的信息进行数值化标记处理,形成特征向量输入到LSTM模型中。

在样本数据预处理模块对样本进行预处理后,模型构建模块采用预处理得到的各特征向量以及各特征向量对应的JS代码的类型,对LSTM模型进行训练。

在本实施例中,LSTM模型输入的张量维度可以为[batch_size(批量大小),sequence_length(序列长度), input_dimension(输入维度)],输出的张量维度可以为[batch_size,output_dimension(输出维度)]。

在本实施例中,在训练中每次更新时,将输入单元按比率随机设置为0,以助于防止过拟合。

在本实施例中,LSTM模型可以包含100个记忆单元,输出层可以包含7个分类的全连接层,激活函数可以设置为softmax,损失函数可以为分类交叉熵Categorical CrossEntropy,且可以选用AdamOptimizer作为优化器,目标是使LSTM模型的损失值最小化。在本实施例中,可以采用F1、ROC等指标来评估训练的LSTM模型的好坏。

在训练完成后,识别阻断模块可采用训练好的LSTM模型进行JS DDoS攻击的识别。LSTM模型的输入为未知类型的JS代码通过解析AST并进行数值化处理后的CFG和DFG的特征向量,输出即为前述直接带宽消耗类、资源伪造消耗类、业务性能消耗类、协议栈性能消耗类、控件资源消耗类、基础设施性能消耗类、正常代码这七类中的一类。

如果属于正常类的JS代码,则识别阻断模块无需做任何处理;如果检测到JS代码属于其它六类的某一类,则触发JS DDoS攻击预警,根据具体的攻击类别进行分类处置阻断,例如在防火墙下发载荷代码特征规则进行阻断等。

在本实施例中,可视化展示模块可以通过构建JS DDoS攻击的监控平台,对LSTM模型检测到的JS DDoS攻击进行可视化展示,包括前端用户的配置管理,以及攻击的告警等可视化,发起JS DDoS攻击请求的源IP、源端口,请求的URL地址、请求方法、请求时间、Refer信息、浏览器UserAgent字段等的可视化,可为JS DDoS攻击溯源提供线索支撑。

需要理解的是,在本申请实施例中,各模块的命名可以按照实际需要自行设定,只要其可以实现上述各模块的功能即可。

本实施例的上述方案,利用JS代码的CFG和DFG进行检测,可以有效实现对于正常JS代码以及各类型的JS DDoS攻击的区分识别,从而可以实现对于JS DDoS攻击的可靠检测。此外,本申请所采用的攻击检测方法无需在Web应用中植入额外的JS钩子程序,只需在服务器上训练好攻击检测模型即可,对于各类Web应用均适用,方案应用场景很广泛,且由于无需在Web应用中植入额外的JS钩子程序,不会增加额外的流量消耗,不会引入不安全的因素。

实施例三:

基于同一发明构思,本申请实施例中还提供攻击检测装置100和模型训练装置200。请参阅图4和图5所示,图4示出了采用图2所示的方法的攻击检测装置,图5示出了采用图1所示的方法的模型训练装置。应理解,装置100和装置200具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。装置100和装置200包括至少一个能以软件或固件的形式存储于存储器中或固化在装置100、装置200的操作系统中的软件功能模块。具体地:

参见图4所示,装置100包括:第一获取模块101、第一解析模块102、第一转换模块103和检测模块104。其中:

所述第一获取模块101,用于获取待检测的JS代码;

所述第一解析模块102,用于解析所述JS代码的抽象语法树,得到所述JS代码的控制流图CFG和数据流图DFG;

所述第一转换模块103,用于将所述CFG和所述DFG转换为特征向量;

所述检测模块104,用于将所述特征向量输入至预先训练好的攻击检测模型中,得到所述JS代码的类型;所述JS代码的类型包括:JS DDoS攻击对应的类型,以及正常JS代码对应的类型。

在本申请实施例中,所述第一转换模块103具体用于,遍历所述CFG和所述DFG,形成所述CFG和所述DFG的流路径,对所述CFG和所述DFG的流路径进行数值化处理,得到所述CFG和所述DFG对应的特征向量。

在本申请实施例中,装置100还包括处理模块,用于在得到所述JS代码的类型后,根据预设的与所述类型对应的处理策略,对所述JS代码进行处理。

参见图5所示,装置200包括:第二获取模块201、第二解析模块202、第二转换模块203和训练模块204。其中:

所述第二获取模块201,用于获取各类JS DDoS攻击的JS代码,以及正常的JS代码;

所述第二解析模块202,用于解析各所述JS代码的抽象语法树,得到各所述JS代码的控制流图CFG和数据流图DFG;

所述第二转换模块203,用于将各所述JS代码的所述CFG和所述DFG转换为特征向量,并根据各所述特征向量对应的JS代码的类型,标记各所述JS代码的特征向量的标签;

所述训练模块204,用于将各所述JS代码的特征向量,以及各所述JS代码的特征向量的标签输入至预设的攻击检测模型中进行训练,得到训练好的攻击检测模型。

在本申请实施例中,所述攻击检测模型为深度学习算法模型。

在本申请实施例中,所述第二获取模块201具体用于,获取各类JS DDoS攻击当前已有的第一JS代码,按照预设的代码生成规则,在各类JS DDoS攻击的第一JS代码的基础上,生成各类JS DDoS攻击的第二JS代码;所述第二JS代码包括明文JS代码和/或混淆的JS代码。

需要理解的是,出于描述简洁的考量,部分实施例一中描述过的内容在本实施例中不再赘述。

还需要理解的是,装置100和装置200的功能可以利用一个或多个处理芯片实现。

实施例四:

本实施例提供了一种服务器,参见图6所示,其包括处理器601、存储器602以及通信总线603。其中:

通信总线603用于实现处理器601和存储器602之间的连接通信。

处理器601用于执行存储器602中存储的一个或多个程序,以实现上述实施例一中的攻击检测方法和/或攻击检测模型训练方法。

可以理解,图6所示的结构仅为示意,服务器还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。

本实施例还提供了一种可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD(SecureDigital Memory Card,安全数码卡)卡、MMC(Multimedia Card,多媒体卡)卡等,在该可读存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器执行,以实现上述实施例一中的攻击检测方法和/或攻击检测模型训练方法。在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

在本文中,多个是指两个或两个以上。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 攻击检测方法、模型训练方法、装置、服务器及存储介质
  • 模型训练方法、网络攻击检测方法、装置、设备及介质
技术分类

06120112941201