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

脚本检测方法、装置、设备和存储介质

文献发布时间:2023-06-19 16:04:54



技术领域

本申请实施例涉及信息安全技术领域,特别是涉及一种脚本检测方法和装置、一种电子设备和一种存储介质。

背景技术

随着计算机技术的不断发展,信息安全越来越受到人们的重视。脚本检测就是用来主动防御发生数据泄漏、数据篡改等安全事件安全的重要方式,对开发人员编写的脚本进行检测,可以在被攻击之前发现异常脚本/恶意脚本,减少损失。

恶意脚本防护是主机防护的重要方面,相关技术中,恶意脚本主要通过静态检测,常见的静态检测方法主要有基于相似性的检测方法和基于机器学习的检测方法。具体地,基于相似性的检测方法,具体来讲,通过代码表征和代码段级别抽象地描述代码段,然后利用比较待检测的代码段的表征和已知的恶意脚本的表征判断它们的相似性,常见的表征有文本、度量、标记、树和图,其中,基于图的表征包含了语义和语法信息,信息最为全面,表征最为准确。基于机器学习的检测方法,是通过提取代码的属性特征对文本进行分类,从而检测出恶意脚本,常见的属性特征有系统函数调用信息等等,基于机器学习的检测方法的属性特征提取阶段依赖主观经验,需要针对脚本漏洞具体分析,并且检测结果不够直观,错报率较高。

针对上述检测方法存在的问题,亟需提出一种脚本检测方法,以提高脚本匹配正确率、检测效率,以及检测方法的可扩展性。

发明内容

本申请实施例提供了一种基于子图匹配的脚本检测方法,以解决提高脚本匹配正确率、效率以及可扩展性问题。

相应的,本申请实施例还提供了一种脚本检测装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。

为了解决上述问题,本申请实施例公开了一种脚本检测方法,所述方法包括:

获取待检测的目标脚本的目标代码属性图和已知的恶意脚本的恶意代码属性图;所述目标代码属性图包括目标节点和连接所述目标节点的边,所述恶意代码属性图包括恶意节点和连接所述恶意节点的边,其中,节点具有对应的节点信息,边具有对应的边信息;

针对所述恶意代码属性图确定匹配序列;所述匹配序列中包括恶意代码属性图的所有恶意节点;

根据所述恶意代码属性图预处理获取相应父节点信息;所述父节点信息结合了所述匹配序列和所述恶意节点之间的连接信息;

根据所述匹配序列和所述父节点信息确定下一匹配节点对,并添加至当前状态空间;

当所述当前状态空间满足预设条件时,确定所述恶意脚本与所述目标脚本匹配。

可选地,所述方法还包括:

获取待检测的脚本;

对所述脚本进行混淆转换处理,得到混淆转换后的目标脚本;所述混淆转换处理至少包括变量转换、别名转换、相对路径转换为绝对路径和混淆语义转换。

可选地,所述针对所述恶意代码属性图确定匹配序列,包括:

比较所述恶意代码属性图中恶意节点的节点映射度;

若所述节点映射度相同,则比较所述恶意节点的节点概率;所述节点概率根据节点信息、边信息、节点入度和节点出度生成;

若所述节点概率相同,则比较恶意节点的节点入度和节点出度;

通过比较将所述恶意代码属性图中所有恶意节点依次添加至匹配序列中。

可选地,所述恶意节点的父节点是所述匹配序列中所述恶意节点之前最早出现的相邻节点,根据所述匹配序列和所述恶意父节点信息确定下一匹配节点对,包括:

获取上一状态空间,所述上一状态空间中包括已匹配节点对,所述已匹配节点对包括上一匹配节点对,所述上一匹配节点对包括上一匹配恶意节点和上一匹配目标节点;

确定所述上一匹配恶意节点的下一匹配恶意节点,所述下一匹配恶意节点为所述匹配序列中的所述上一匹配恶意节点对应的下一恶意节点;

确定所述上一匹配目标节点的候选匹配目标节点;所述候选匹配目标节点为所述目标代码图中不在所述上一状态空间中且与所述下一匹配恶意节点的节点信息相同的目标节点;

当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的后继节点,则从所述候选匹配目标节点中随机选取所述上一匹配恶意节点对应节点的后继节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;

当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的前驱节点,则从所述候选匹配目标节点中随机选取为所述上一匹配恶意节点对应节点的前驱节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;

将所述下一匹配恶意节点和所述下一匹配目标节点,作为下一匹配节点对添加至上一状态空间,得到当前状态空间。

可选地,所述方法还包括:

当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点为空时,从所述候选匹配目标节点中随机选取节点信息匹配的节点为下一匹配目标节点。

可选地,所述当所述当前状态空间满足预设条件时,确定所述恶意脚本与所述目标脚本匹配,包括:

当所述当前状态空间满足预设语义信息规则和预设拓扑结构信息,且所述当前状态空间中的下一匹配恶意节点为所述匹配序列中的最后一个恶意节点,则确定所述恶意脚本与所述目标脚本匹配。

可选地,所述节点信息包括节点标签,所述边信息包括边标签。

本申请实施例还公开了一种脚本检测装置,所述装置包括:

代码属性图获取模块,用于获取待检测的目标脚本的目标代码属性图和已知的恶意脚本的恶意代码属性图;所述目标代码属性图包括目标节点和连接所述目标节点的边,所述恶意代码属性图包括恶意节点和连接所述恶意节点的边,其中,节点具有对应的节点信息,边具有对应的边信息;

匹配序列确定模块,用于针对所述恶意代码属性图确定匹配序列;所述匹配序列中包括恶意代码属性图的所有恶意节点;

父节点信息获取模块,用于根据所述恶意代码属性图预处理获取相应父节点信息;所述父节点信息结合了所述匹配序列和所述恶意节点之间的连接信息;

当前状态空间确定模块,用于根据所述匹配序列和所述父节点信息确定下一匹配节点对,并添加至当前状态空间;

脚本匹配确定模块,用于当所述当前状态空间满足预设条件时,确定所述恶意脚本与所述目标脚本匹配。

可选地,所述装置还包括:混淆转换模块,用于获取待检测的脚本;对所述脚本进行混淆转换处理,得到混淆转换后的目标脚本;所述混淆转换处理至少包括变量转换、别名转换、相对路径转换为绝对路径和混淆语义转换。

可选地,所述匹配序列确定模块,用于比较所述恶意代码属性图中恶意节点的节点映射度;若所述节点映射度相同,则比较所述恶意节点的节点概率;所述节点概率根据节点信息、边信息、节点入度和节点出度生成;若所述节点概率相同,则比较恶意节点的节点入度和节点出度;通过比较将所述恶意代码属性图中所有恶意节点依次添加至匹配序列中。

可选地,所述恶意节点的父节点是所述匹配序列中所述恶意节点之前最早出现的相邻节点,所述当前状态空间确定模块,用于获取上一状态空间,所述上一状态空间中包括已匹配节点对,所述已匹配节点对包括上一匹配节点对,所述上一匹配节点对包括上一匹配恶意节点和上一匹配目标节点;确定所述上一匹配恶意节点的下一匹配恶意节点,所述下一匹配恶意节点为所述匹配序列中的所述上一匹配恶意节点对应的下一恶意节点;确定所述上一匹配目标节点的候选匹配目标节点;所述候选匹配目标节点为所述目标代码图中不在所述上一状态空间中且与所述下一匹配恶意节点的节点信息相同的目标节点;当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的后继节点,则从所述候选匹配目标节点中随机选取所述上一匹配恶意节点对应节点的后继节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的前驱节点,则从所述候选匹配目标节点中随机选取为所述上一匹配恶意节点对应节点的前驱节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;将所述下一匹配恶意节点和所述下一匹配目标节点,作为下一匹配节点对添加至上一状态空间,得到当前状态空间。

可选地,所述当前状态空间确定模块,用于当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点为空时,从所述候选匹配目标节点中随机选取节点信息匹配的节点为下一匹配目标节点。

可选地,所述脚本匹配确定模块,用于当所述当前状态空间满足预设语义信息规则和预设拓扑结构信息,且所述当前状态空间中的下一匹配恶意节点为所述匹配序列中的最后一个恶意节点,则确定所述恶意脚本与所述目标脚本匹配。

本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的脚本检测方法。

本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的脚本检测方法。

与现有技术相比,本申请实施例包括以下优点:

在本申请实施例中,获取待检测的目标脚本的目标代码属性图和已知的恶意脚本的恶意代码属性图,针对恶意代码属性图确定匹配序列,根据恶意代码属性图预处理获取相应父节点信息,其中,父节点信息结合了匹配序列和恶意节点之间的连接信息,根据匹配序列和父节点信息确定下一匹配节点对,并添加至当前状态空间,当当前状态空间满足预设条件时,确定恶意脚本与目标脚本匹配。本申请实施例基于父节点信息来修剪当前状态空间,减少了匹配的内容,从而提高脚本匹配正确率、检测效率。此外,本发明实施例具有可扩展性。

附图说明

图1是本申请的一种脚本检测方法实施例的步骤流程图;

图2是本申请的一种基于shell脚本构成的代码属性图;

图3是本申请的一种获取下一匹配节点对的代码示意图;

图4是本申请的一种获取匹配节点的示意图;

图5是本申请的一种匹配的代码示意图;

图6是本申请的一种shell脚本转化为代码属性图的流程图;

图7是本申请的一种匹配的流程图;

图8是本申请的一种脚本检测装置实施例的结构框图;

图9是本申请一实施例提供的装置的结构示意图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

在相关技术中,恶意脚本常用的检测方法,有基于代码相似性的检测方法和基于机器学习的检测方法,其中,基于代码相似性的检测方法通过对比待检测代码和恶意代码库来检测恶意代码,常见基于代码表征的方式有基于文本、树和图等表征方式。在这些表征方式中,在基于图的表征中表征的代码信息最为全面,其中图的节点表示表达式或语句,边表示控制流、控制依赖或数据依赖。通过分析源代码的语法结构以及函数调用关系、控制依赖关系、数据流等,构建程序依赖图,进行子图匹配来发现恶意代码。目前的子图匹配漏洞检测方法需要综合考虑程序的语法和语义特征,有很好的检测能力,但建立图结构代价非常高,寻找图相似的匹配算法复杂度高,时空效率低。

基于机器学习的检测方法需要人工定义特征属性,然后采用机器学习方法,如支持向量机、k近邻等进行分类。该类方法依赖于专家手工定义特征属性,并且由于输入机器学习模型的代码粒度通常较粗,无法确定漏洞行的确切位置,检测结果不够直观。比如:一种基于支持向量机的恶意脚本静态检测方法,该方法包含以下步骤:1.从互联网抓取网页,获得网页链接;2.获取链接对应的Javascript脚本内容;3.对基于脚本的web入侵如sql注入等特征分析,得到入侵相关的特征,并根据入侵特征对获取的脚本内容进行特征提取,将每个脚本转化成基于特征的特征的向量;4.利用分类算法svm获得分类模型,并利用该模型对所获得的特征向量进行分类。

为此,本申请实施例采用了提出了一种基于子图匹配的脚本检测方法,该方法通过修剪状态空间,提高脚本匹配正确率、检测效率。

参照图1,是本申请的一种脚本检测方法实施例的步骤流程图,包括如下步骤:

步骤102、获取待检测的目标脚本的目标代码属性图和已知的恶意脚本的恶意代码属性图;所述目标代码属性图包括目标节点和连接所述目标节点的边,所述恶意代码属性图包括恶意节点和连接所述恶意节点的边,其中,节点具有对应的节点信息,边具有对应的边信息。

在具体实现中,本申请实施例的脚本检测方法可以在终端设备或服务器实现。其中,终端设备可以是一个专门用于的脚本检测的终端,也可以是一台普通的计算机终端,其上安装有用于脚本检测的应用程序。终端设备的体现形式包括台式电脑、便携式电脑、手机、个人数字助理(PDA)、车载设备。服务器可以是独立服务器,也可以是多个服务器组成的服务器集群。

其中,脚本(脚本代码/代码)可以是shell脚本。代码属性图(code propertygraph)是一种描述代码的数据结构,结合了代码的抽象语法树、控制流程图和程序依赖图三部分信息。代码属性图包括节点和用于连接节点的边,其中,节点具有对应的节点信息,边具有对应的边信息,节点信息包括节点标签,边信息包括边标签。具体来说,代码属性图中的节点是一个或多个边的交汇点,节点通过边连接到邻居节点(例如节点通过边连接到其父节点或者其子节点),边表示与边连接的节点和该节点的邻居节点之间的关联关系。

在本申请实施例中,待检测的目标脚本的代码属性图为目标代码属性图,已知的恶意脚本的代码属性图为恶意代码属性图。作为一个可选示例,用户可以向终端设备或服务器上传目标代码属性图和恶意代码属性图,或者,终端设备或服务器可以从指定位置中抓取目标代码属性图和恶意代码属性图。其中,恶意代码属性图是被寻找的对象,目标代码属性图是在其中寻找恶意代码属性图的同构图的对象。

在本申请实施例中,针对恶意代码库和目标检测代码分别构造代码属性图,具体分析过程包括:分析脚本,构建语法分析树、函数流程图和程序依赖图,结合三部分信息构建代码属性图,其中,代码属性图中节点主要有shell命令节点、函数节点、变量节点以及操作符节点等等,边主要有语法树边、函数依赖边、控制流程边等等。

示例性地,下面shell脚本:

参照图2,是基于shell脚本构成的代码属性图,其中202的边表示数据流,204的边表示控制关系,其余的边表示语法树中的联系。具体地,FunDecl表示语法树中的函数定义节点,Assign表述赋值节点,ForClause表示for循环语句,Loop表示For语句中的判断语句,Do节点表示For语句中的执行体部分,CallExpr表示方法调用。当然,在实际中语法树中节点和边还有很多,这里不一一列举,但应当理解本申请实施例并不局限于上述示例。

步骤104、针对所述恶意代码属性图确定匹配序列;所述匹配序列中包括恶意代码属性图的所有恶意节点。

步骤106、根据所述恶意代码属性图预处理获取相应父节点信息;所述父节点信息结合了所述匹配序列和所述恶意节点之间的连接信息。

步骤108、根据所述匹配序列和所述父节点信息确定下一匹配节点对,并添加至当前状态空间。

其中,匹配序列是包括恶意代码属性图的所有的恶意节点的序列列表。父节点信息是恶意代码属性图中恶意节点之间的连接信息,例如,针对一个恶意节点,基于父节点信息可以确定其父节点。

在开始进行脚本检测时,创建状态空间,并在脚本检测过程中,不断将恶意代码属性图的恶意节点和目标代码属性图的目标节点组合成的匹配节点对,添加至状态空间。在本申请实施例中,构建恶意代码属性图中每个恶意节点的父节点信息,方便之后脚本检测过程中,快速获得待添加至状态空间的匹配节点。

步骤110、当所述当前状态空间满足预设条件时,确定所述恶意脚本与所述目标脚本匹配。

在本发明实施例中,当前状态空间满足预设条件时,可以确定为恶意脚本与目标脚本匹配,则可以将该目标脚本,也确定为恶意脚本。当然,如果当前状态空间不满足预设条件时,可以确定为恶意脚本与目标脚本不匹配,则可以将该目标脚本,也确定为正常脚本

本申请实施例基于子图的脚本检测方法,通过自动化的流程将待检测代码和恶意代码库进行匹配,整个过程不需要提取脚本特征,不需要依赖主观经验,结果可解释性强,准确性更高。

在上述脚本检测方法中,获取待检测的目标脚本的目标代码属性图和已知的恶意脚本的恶意代码属性图,针对恶意代码属性图确定匹配序列,根据恶意代码属性图预处理获取相应父节点信息,其中,父节点信息结合了匹配序列和恶意节点之间的连接信息,根据匹配序列和父节点信息确定下一匹配节点对,并添加至当前状态空间,当当前状态空间满足预设条件时,确定恶意脚本与目标脚本匹配。本申请实施例基于父节点信息来修剪当前状态空间,减少了匹配的内容,从而提高脚本匹配正确率、检测效率。此外,本发明实施例具有可扩展性。

在一示例性实施例中,所述方法还可以包括如下步骤:

获取待检测的脚本;

对所述脚本进行混淆转换处理,得到混淆转换后的目标脚本;所述混淆转换处理至少包括变量转换、别名转换、相对路径转换为绝对路径和混淆语义转换。

在具体实现中,很多恶意脚本都采用了千变万化的脚本混淆技术伪装真实执行的命令,为此,在本申请实施例中,搭建一个沙箱用于分析脚本得到真实执行的命令。

具体地,在沙箱中执行待检测脚本,可以得到目标脚本,其中,目标脚本代码是经过语法解释器解析、转换了混淆且逻辑清晰的脚本,之后的脚本检测过程为针对转换后的目标脚本进行,使得后续基于目标脚本进行匹配,可以提高正确率。

作为一个可选示例,在沙箱中针对待检测的脚本执行的混淆转换的步骤至少可以包括:1、词法分析;语法分析,即通过分析得到抽象语法树;2、变量替换;3、别名替换;4、相对路径转换为绝对路径;5、个别混淆语义替换,比如echo“/fr-mr”|rev|bash,去掉其中的rev命令。

在一示例性实施例中,所述步骤104、根据所述目标代码属性图和所述恶意代码属性图确定匹配序列,可以包括如下步骤:

比较所述恶意代码属性图中恶意节点的节点映射度;

若所述节点映射度相同,则比较所述恶意节点的节点概率;所述节点概率根据节点信息、边信息、节点入度和节点出度生成;

若所述节点概率相同,则比较恶意节点的节点入度和节点出度;

通过比较将所述恶意代码属性图中所有恶意节点依次添加至匹配序列中。

在本申请实施例中,在进行脚本检测之前,先计算匹配序列N

作为一个具体示例,节点概率的公式可以是:

其中,u表示节点,公式中P

d

其中,d

在一示例性实施例中,所述恶意节点的父节点是所述匹配序列中所述恶意节点之前最早出现的相邻节点,所述步骤108、所述根据所述匹配序列和所述恶意父节点信息确定下一匹配节点对,可以包括如下步骤:

获取上一状态空间,所述上一状态空间中包括已匹配节点对,所述已匹配节点对包括上一匹配节点对,所述上一匹配节点对包括上一匹配恶意节点和上一匹配目标节点;

确定所述上一匹配恶意节点的下一匹配恶意节点,所述下一匹配恶意节点为所述匹配序列中的所述上一匹配恶意节点对应的下一恶意节点;

确定所述上一匹配目标节点的候选匹配目标节点;所述候选匹配目标节点为所述目标代码图中不在所述上一状态空间中且与所述下一匹配恶意节点的节点信息相同的目标节点;

当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的后继节点,则从所述候选匹配目标节点中随机选取所述上一匹配恶意节点对应节点的后继节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;

当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的前驱节点,则从所述候选匹配目标节点中随机选取为所述上一匹配恶意节点对应节点的前驱节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;

将所述下一匹配恶意节点和所述下一匹配目标节点,作为下一匹配节点对添加至上一状态空间,得到当前状态空间。

在本申请实施例中,构建恶意脚本中每个恶意节点的父节点信息,方便之后匹配过程中快速获得状态空间的候选节点,其中,恶意节点的父节点是匹配序列中该恶意节点之前最早出现的相邻节点。需要注意的是,在父节点信息中除了除了记录了每个恶意节点的父节点之外,还记录相关连接边的类型信息,方便进一步修剪状态空间。

具体地,假设在上一状态空间中已经保存了多个已匹配节点对,其中,已匹配节点对中包括上一匹配节点对(u

其中,节点u

其中,M

其中,

其中,λ

在一示例性实施例中,所述方法还可以包括如下步骤:

当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点为空时,从所述候选匹配目标节点中随机选取节点信息匹配的节点为下一匹配目标节点。

当然,如果根据父节点信息,确定下一匹配恶意节点的父节点为空时,则可以从候选匹配目标节点中随机选取节点信息,即节点标签匹配的节点为下一匹配目标节点,从而可以与下一匹配恶意节点组成下一匹配节点对,并添加至状态空间中。

作为一个具体示例,参照图3,获取下一匹配节点对(u

输入数据:上一状态空间S

输出结果:下一匹配节点对(u

如果u

如果u

如果u

如果u

参照图4,是本申请的一种获取匹配节点的示意图,在已经匹配的状态空间中,包括匹配节点对(u

在一示例性实施例中,所述步骤110、当所述当前状态空间满足预设条件时,确定所述恶意脚本与所述目标脚本匹配,可以包括如下步骤:

当所述当前状态空间满足预设语义信息规则和预设拓扑结构信息,且所述当前状态空间中的下一匹配恶意节点为所述匹配序列中的最后一个恶意节点,则确定所述恶意脚本与所述目标脚本匹配。

在本申请实施例中,构建命令向量化模型。以shell命令为例,首先将shell命令转化为功能描述短文本,其中,短文本从man手册中获取,然后采用TFI-DF(term frequencyinverse document frequency,词频-逆文本频率指数)提取文本中的关键动词,使用word2vec模型对关键动词进行向量化表示,最终得到shell命令的向量化表示。

作为本申请的的一个可选示例,构建可行规则,可行规则主要考虑两个方面:节点的语义信息规则F

IsFeasible(s

F

其中,s

在本申请实施例中进行子图匹配,子图匹配的过程即是进行状态空间搜索,初始化状态空间为空,之后每一步根据匹配序列添加候选节点对到当前状态空间,然后根据可行规则判断状态空间的有效性,如果有效,递归搜索下一步的状态空间,如果无效,则返回;当状态空间的节点对数目等于该恶意脚本属性图的节点数目时,就表明在待检测脚本中存在与恶意脚本库中脚本同构的函数属性图。

作为一个具体示例,参照图5,子图匹配具体过程为:

输入数据:当前状态空间S

输出结果:是否匹配,true or false;

如果当前状态空间S

如果当前状态空间S

参照图6,是本申请的一种shell脚本转化为代码属性图的流程图,1shell脚本转化为代码属性图的具体包括:1、简易沙箱执行shell脚本,得到目标脚本;2、分析目标脚本,构造代码属性图;3、构建shell命令向量化模型;4、预处理代码属性图。

在本申请实施例中,在得到代码属性图后,还可以对代码属性图进行预处理,以进一步提高脚本匹配的效率。具体分为三步:1、删除普通文本节点的节点信息,只保留节点类型,从而排除普通文本信息对匹配环节的影响;2、对shell脚本的命令节点进行词向量表示,用于之后匹配过程计算shell命令的相似度;3、对函数节点以及变量节点等进行合并,保证图中相同节点的唯一性(即就是相同的节点在代码属性图中只能出现一次);对处理过的恶意代码库中的代码进行序列化表示,并存储,得到处理好的恶意代码库,方便之后的子图匹配过程使用。

参照图7,子图匹配过程具体包括:1、恶意脚本序列化表示并存储;2、加载恶意脚本;3、获取待检测的目标脚本;4、将目标脚本转换为代码属性图;5、计算匹配序列;6、构建恶意脚本的恶意脚本的父节点信息;7、基于匹配序列、父节点信息和状态空间进行子图匹配。

综上可知,1、提出了一种新的恶意脚本检测方法,该方法主要包含了三个阶段,首先将shell脚本转化为目标脚本,然后构建代码属性图,最后与恶意代码库进行同构子图匹配;2、针对shell命令提供了一种向量化方法,首先将shell命令转化为功能描述短文本,这里的短文本从man手册中获取;然后采用TF-IDF提取文本中的关键动词,使用word2vec对关键动词进行向量化表示;最终得到shell命令的向量化表示;针对同构子图匹配,提出了一种新的匹配方法VF3+,VF3+是在VF3的基础上,结合了边的信息对状态空间进行修剪,通过修剪状态空间,以提高了匹配速度。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。

在上述实施例的基础上,本实施例还提供了一种脚本检测装置,应用于终端设备、服务器等电子设备中。

参照图8,示出了本申请的一种脚本检测装置实施例的结构框图,具体可以包括如下模块:

代码属性图获取模块802,用于获取待检测的目标脚本的目标代码属性图和已知的恶意脚本的恶意代码属性图;所述目标代码属性图包括目标节点和连接所述目标节点的边,所述恶意代码属性图包括恶意节点和连接所述恶意节点的边,其中,节点具有对应的节点信息,边具有对应的边信息;

匹配序列确定模块804,用于针对所述恶意代码属性图确定匹配序列;所述匹配序列中包括恶意代码属性图的所有恶意节点;

父节点信息获取模块806,用于根据所述恶意代码属性图预处理获取相应父节点信息;所述父节点信息结合了所述匹配序列和所述恶意节点之间的连接信息;

当前状态空间确定模块808,用于根据所述匹配序列和所述父节点信息确定下一匹配节点对,并添加至当前状态空间;

脚本匹配确定模块810,用于当所述当前状态空间满足预设条件时,确定所述恶意脚本与所述目标脚本匹配。

在一示例性实施例中,所述装置还包括:混淆转换模块,用于获取待检测的脚本;对所述脚本进行混淆转换处理,得到混淆转换后的目标脚本;所述混淆转换处理至少包括变量转换、别名转换、相对路径转换为绝对路径和混淆语义转换。

在一示例性实施例中,所述匹配序列确定模块,用于比较所述恶意代码属性图中恶意节点的节点映射度;若所述节点映射度相同,则比较所述恶意节点的节点概率;所述节点概率根据节点信息、边信息、节点入度和节点出度生成;若所述节点概率相同,则比较恶意节点的节点入度和节点出度;通过比较将所述恶意代码属性图中所有恶意节点依次添加至匹配序列中。

在一示例性实施例中,所述恶意节点的父节点是所述匹配序列中所述恶意节点之前最早出现的相邻节点,所述当前状态空间确定模块,用于获取上一状态空间,所述上一状态空间中包括已匹配节点对,所述已匹配节点对包括上一匹配节点对,所述上一匹配节点对包括上一匹配恶意节点和上一匹配目标节点;确定所述上一匹配恶意节点的下一匹配恶意节点,所述下一匹配恶意节点为所述匹配序列中的所述上一匹配恶意节点对应的下一恶意节点;确定所述上一匹配目标节点的候选匹配目标节点;所述候选匹配目标节点为所述目标代码图中不在所述上一状态空间中且与所述下一匹配恶意节点的节点信息相同的目标节点;当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的后继节点,则从所述候选匹配目标节点中随机选取所述上一匹配恶意节点对应节点的后继节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点不为空时,若所述下一匹配恶意节点为其父节点的前驱节点,则从所述候选匹配目标节点中随机选取为所述上一匹配恶意节点对应节点的前驱节点且与所述下一匹配恶意节点的节点信息、边信息相同的节点作为下一匹配目标节点;将所述下一匹配恶意节点和所述下一匹配目标节点,作为下一匹配节点对添加至上一状态空间,得到当前状态空间。

在一示例性实施例中,所述当前状态空间确定模块,用于当根据所述恶意父节点信息确定所述下一匹配恶意节点的父节点为空时,从所述候选匹配目标节点中随机选取节点信息匹配的节点为下一匹配目标节点。

在一示例性实施例中,所述脚本匹配确定模块,用于当所述当前状态空间满足预设语义信息规则和预设拓扑结构信息,且所述当前状态空间中的下一匹配恶意节点为所述匹配序列中的最后一个恶意节点,则确定所述恶意脚本与所述目标脚本匹配。

在一示例性实施例中,所述节点信息包括节点标签,所述边信息包括边标签。

本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。

本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务器(集群)等各类型的设备。

本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务器(集群)等电子设备。图9示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置900。

对于一个实施例,图9示出了示例性装置900,该装置具有一个或多个处理器902、被耦合到(一个或多个)处理器902中的至少一个的控制模块(芯片组)904、被耦合到控制模块904的存储器906、被耦合到控制模块904的非易失性存储器(NVM)/存储设备908、被耦合到控制模块904的一个或多个输入/输出设备910,以及被耦合到控制模块904的网络接口912。

处理器902可包括一个或多个单核或多核处理器,处理器902可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置900能够作为本申请实施例中所述终端设备、服务器(集群)等设备。

在一些实施例中,装置900可包括具有指令914的一个或多个计算机可读介质(例如,存储器906或NVM/存储设备908)以及与该一个或多个计算机可读介质相合并被配置为执行指令914以实现模块从而执行本公开中所述的动作的一个或多个处理器902。

对于一个实施例,控制模块904可包括任意适当的接口控制器,以向(一个或多个)处理器902中的至少一个和/或与控制模块904通信的任意适当的设备或组件提供任意适当的接口。

控制模块904可包括存储器控制器模块,以向存储器906提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。

存储器906可被用于例如为装置900加载和存储数据和/或指令914。对于一个实施例,存储器906可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器906可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。

对于一个实施例,控制模块904可包括一个或多个输入/输出控制器,以向NVM/存储设备908及(一个或多个)输入/输出设备910提供接口。

例如,NVM/存储设备908可被用于存储数据和/或指令914。NVM/存储设备908可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。

NVM/存储设备908可包括在物理上作为装置900被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备908可通过网络经由(一个或多个)输入/输出设备910进行访问。

(一个或多个)输入/输出设备910可为装置900提供接口以与任意其他适当的设备通信,输入/输出设备910可以包括通信组件、音频组件、传感器组件等。网络接口912可为装置900提供接口以通过一个或多个网络通信,装置900可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。

对于一个实施例,(一个或多个)处理器902中的至少一个可与控制模块904的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器902中的至少一个可与控制模块904的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器902中的至少一个可与控制模块904的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器902中的至少一个可与控制模块904的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。

在各个实施例中,装置900可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置900可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置900包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。

其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括包括网络接口。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程脚本检测终端设备的处理器以产生一个机器,使得通过计算机或其他可编程脚本检测终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程脚本检测终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程脚本检测终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

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

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

相关技术
  • 一种存储型跨站脚本攻击漏洞检测方法、装置、设备及存储介质
  • 脚本检测方法、装置、计算机设备及存储介质
技术分类

06120114693691