首页> 中国专利> 一种检测VBScript漏洞利用的方法、装置及设备

一种检测VBScript漏洞利用的方法、装置及设备

摘要

本发明公开了一种检测VBScript漏洞利用的方法、装置及设备,该方法包括:如果需要检测VBScript漏洞利用,则确定所述VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,并判断所述内存区域的大小是否大于预设空间阈值;如果所述内存区域的空间大小大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中存在漏洞利用;如果所述内存区域的空间大小不大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中不存在漏洞利用。本申请根据VBScript漏洞利用的原理实现VBScript漏洞利用的检测,便捷高效。

著录项

  • 公开/公告号CN112422553A

    专利类型发明专利

  • 公开/公告日2021-02-26

    原文格式PDF

  • 申请/专利权人 杭州安恒信息技术股份有限公司;

    申请/专利号CN202011284721.1

  • 发明设计人 金权;范渊;吴卓群;

    申请日2020-11-17

  • 分类号H04L29/06(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人张春辉

  • 地址 310000 浙江省杭州市滨江区西兴街道联慧街188号

  • 入库时间 2023-06-19 10:00:31

说明书

技术领域

本发明涉及网络安全技术领域,更具体地说,涉及一种检测VBScript漏洞利用的方法、装置及设备。

背景技术

随着互联网技术的不断发展,人们对于网络的使用愈加频繁,通过网络可以进行工作、学习、生活、娱乐等多方面的事宜,给人们带来了极大的便利。然而,人们在使用互联网的过程中所用到的很多文件存在漏洞,这些文件的漏洞给了恶意开发者以可乘之机,恶意开发者可以利用这些文件的漏洞对打开这些文件的应用程序进行攻击。

VBScript脚本引擎漏洞(以下简称为VBScript漏洞)是一种攻击媒介,VBScript是IE浏览器早期支持的脚本文件,这些脚本文件被广泛用于网页功能实现,从而被广泛地嵌入在网页中。但是由于存在VBScript零日漏洞被用于攻击,IE浏览器用户或者Word用户(Word可以被用于远程加载网页)的安全荡然无存,因此迫切需要一套VBScript漏洞利用检测的方式,这不仅能防住当前已知的漏洞攻击,还能预防可能出现的潜在性威胁。

发明内容

本发明的目的是提供一种检测VBScript漏洞利用的方法、装置及设备,能够根据VBScript漏洞利用的原理实现VBScript漏洞利用的检测,便捷高效。

为了实现上述目的,本发明提供如下技术方案:

一种检测VBScript漏洞利用的方法,包括:

如果需要检测VBScript漏洞利用,则确定所述VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,并判断所述内存区域的大小是否大于预设空间阈值;

如果所述内存区域的空间大小大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中存在漏洞利用;

如果所述内存区域的空间大小不大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中不存在漏洞利用。

优选的,确定是否需要检测VBScript漏洞利用,包括:

在应用程序的VBScript模块的运行过程中,监听对所述VBScript模块中的tagSAFEARRAY对象进行访问操作的事件;

当监听到对所述tagSAFEARRAY对象进行访问操作的事件时,确定需要检测VBScript漏洞利用。

优选的,还包括:

确定所述VBScript模块所运行的VBScript脚本中存在漏洞利用之后,禁止执行对所述tagSAFEARRAY对象进行访问操作的事件;

确定所述VBScript模块所运行的VBScript脚本中不存在漏洞利用之后,允许执行对所述tagSAFEARRAY对象进行访问操作的事件。

优选的,还包括:

在所述VBScript模块运行之前,确定所述VBScript模块中对所述tagSAFEARRAY对象进行访问操作的数据访问函数;

对应的,监听对所述VBScript模块中的tagSAFEARRAY对象进行访问操作的事件,包括:

监听所述数据访问函数的调用事件,当监听到所述数据访问函数的调用事件时,确定监听到对所述VBScript模块中的tagSAFEARRAY对象进行访问操作的事件。

优选的,禁止执行对所述tagSAFEARRAY对象进行访问操作的事件,包括:

通过所述钩子函数强制结束调用消息的继续传递;所述钩子函数挂载于所述数据访问函数上,能够拦截指示调用所述数据访问函数的调用消息;

允许执行对所述tagSAFEARRAY对象进行访问操作的事件,包括:

通过所述钩子函数放行所述调用消息,使得所述调用消息继续传递。

优选的,确定所述VBScript模块中对所述tagSAFEARRAY对象进行访问操作的数据访问函数,包括:

对所述VBScript模块进行静态分析,基于静态分析所得结果确定所述VBScript模块中对所述tagSAFEARRAY对象进行访问操作的数据访问函数。

优选的,确定所述VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,包括:

确定所述tagSAFEARRAY对象中包含的、用于表示所述tagSAFEARRAY对象所能够操作的内存区域的大小的长度元素的值;

判断所述内存区域的空间大小是否大于预设的预设空间阈值,包括:

判断所述长度元素的值是否大于预设元素阈值。

优选的,判断所述长度元素的值是否大于预设元素阈值,包括:

将所述tagSAFEARRAY对象中cElements元素的值与cbElements元素的值进行相乘,判断相乘所得的结果是否大于所述预设元素阈值。

一种检测VBScript漏洞利用的装置,包括:

判断模块,用于:如果需要检测VBScript漏洞利用,则确定所述VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,并判断所述内存区域的大小是否大于预设空间阈值;

第一确定模块,用于:如果所述内存区域的空间大小大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中存在漏洞利用;

第二确定模块,用于:如果所述内存区域的空间大小不大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中不存在漏洞利用。

一种检测VBScript漏洞利用的设备,包括:

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

处理器,用于执行所述计算机程序时实现如上任一项所述检测VBScript漏洞利用的方法的步骤。

本发明提供了一种检测VBScript漏洞利用的方法、装置及设备,该方法包括:如果需要检测VBScript漏洞利用,则确定所述VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,并判断所述内存区域的大小是否大于预设空间阈值;如果所述内存区域的空间大小大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中存在漏洞利用;如果所述内存区域的空间大小不大于所述预设空间阈值,则确定所述VBScript模块所运行的VBScript脚本中不存在漏洞利用。本申请在需要检测VBScript漏洞利用时,判断所述VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小是否大于预设空间阈值,如果是,则确定VBScript模块所运行的VBScript脚本中存在漏洞利用,否则,确定VBScript模块所运行的VBScript脚本中不存在漏洞利用;根据漏洞攻击原理可以确定恶意攻击者能够通过将VBScript模块中tagSAFEARRAY对象所能够操作的内存区域设置为较大的值来获取任意内存地址的读写能力,因此本申请通过判断VBScript模块中tagSAFEARRAY对象所能够操作的内存区域是否过大来实现VBScript漏洞利用的检测,也即本申请根据VBScript漏洞利用的原理实现VBScript漏洞利用的检测,便捷高效。

附图说明

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

图1为本发明实施例提供的一种检测VBScript漏洞利用的方法的流程图;

图2为本发明实施例提供的一种检测VBScript漏洞利用的方法在一种具体应用场景中VBScript模块的汇编代码示意图;

图3为本发明实施例提供的一种检测VBScript漏洞利用的装置的结构图。

具体实施方式

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

请参阅图1,其示出了本发明实施例提供的一种检测VBScript漏洞利用的方法的流程图,可以包括:

S11:如果需要检测VBScript漏洞利用,则确定VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,并判断内存区域的大小是否大于预设空间阈值。

本发明实施例提供的一种检测VBScript漏洞利用的方法的执行主体可以为对应的装置;其中,脚本是一段用VBScript编程语言编写的代码,通常嵌入于网页对应的超文本标记语言中;漏洞是指一个系统存在的弱点或缺陷,系统对特定威胁攻击或危险事件的敏感性,或进行攻击的威胁作用的可能性;VBScript是一个脚本引擎,被广泛应用于IE浏览器等;VBScript模块为执行VBScript脚本的模块;VBScript漏洞为VBScript脚本引擎漏洞。

在需要实现VBScript漏洞利用的检测时,本申请实施例先确定VBScript模块中tagSAFEARRAY对象所能够操作的内存区域的大小,进而将该内存区域的大小与根据实际需要设定的预设阈值进行比对。需要说明的是,攻击者必须要获得任意地址内存地址的读写能力,进而才能够完成剩余的攻击过程;对于应用程序中的VBScript模块来说,其中正常的tagSAFEARRAY对象当然不能进行任意地址的内存读写,它们自身都有着所能操作的内存范围的限制,但是如果攻击者利用某种方法对这种限制进行了修改,他们就有了操作任意内存的能力,也就是说,如果tagSAFEARRAY对象所能够操作的内存区域过大,则根据漏洞攻击原理可以确定恶意攻击者通过将tagSAFEARRAY对象所能够操作的内存区域设置为较大的值来获取任意内存地址的读写能力,即VBScript模块所属的应用程序运行VBScript脚本的文件时存在漏洞利用,否则,可以确定VBScript模块所属的应用程序运行VBScript脚本的文件时存在不漏洞利用;其中,判断tagSAFEARRAY对象所能够操作的内存区域是否过大可以通过判断tagSAFEARRAY对象所能够操作的内存区域大小是否大于根据实际需要设定的预设空间阈值实现,也即如果tagSAFEARRAY对象所能够操作的内存区域的大小大于预设控件阈值,则认为tagSAFEARRAY对象所能够操作的内存区域过大,否则,认为tagSAFEARRAY对象所能够操作的内存区域正常。

S12:如果内存区域的空间大小大于预设空间阈值,则确定VBScript模块所运行的VBScript脚本中存在漏洞利用。

S13:如果内存区域的空间大小不大于预设空间阈值,则确定VBScript模块所运行的VBScript脚本中不存在漏洞利用。

本申请在需要检测VBScript漏洞利用时,判断VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小是否大于预设空间阈值,如果是,则确定VBScript模块所运行的VBScript脚本中存在漏洞利用,否则,确定VBScript模块所运行的VBScript脚本中不存在漏洞利用;根据漏洞攻击原理可以确定恶意攻击者能够通过将VBScript模块中tagSAFEARRAY对象所能够操作的内存区域设置为较大的值来获取任意内存地址的读写能力,因此本申请通过判断VBScript模块中tagSAFEARRAY对象所能够操作的内存区域是否过大来实现VBScript漏洞利用的检测,也即本申请根据VBScript漏洞利用的原理实现VBScript漏洞利用的检测,便捷高效。

本发明实施例提供的一种检测VBScript漏洞利用的方法,确定是否需要检测VBScript漏洞利用,可以包括:

在应用程序的VBScript模块的运行过程中,监听对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件;

当监听到对tagSAFEARRAY对象进行访问操作的事件时,确定需要检测VBScript漏洞利用。

需要说明的是,对于VBScript漏洞利用的检测可以根据实际需要选择定时实现,也可以在某种条件出发下实现,均在本发明的保护范围之内。其中,在应用程序中打开VBScript脚本的过程是:应用程序先加载VBScript脚本内容,加载完成后,将所加载的VBScript脚本发送至应用程序的VBScript模块,由VBScript模块解析该VBScript脚本,开始VBScript模块对VBScript脚本的执行过程。基于此,本申请可以是在应用内程序的VBScript模块的运行过程中监控对VBScript模块中tagSAFEARRAY对象进行访问操作的事件,进而当监听到对VBScript模块中tagSAFEARRAY对象进行访问操作的事件时则触发检测VBScript漏洞利用的条件,也即确定需要检测VBScript漏洞利用;可见,本申请中在VBScript模块的运行过程中,通过对VBScript模块中tagSAFEARRAY对象进行访问操作的事件的监听,确定是否需要检测VBScript漏洞利用,从而通过这种方式自动触发VBScript漏洞利用的检测,方便有效。

本发明实施例提供的一种检测VBScript漏洞利用的方法,还可以包括:

确定VBScript模块所运行的VBScript脚本中存在漏洞利用之后,禁止执行对tagSAFEARRAY对象进行访问操作的事件;

确定VBScript模块所运行的VBScript脚本中不存在漏洞利用之后,允许执行对tagSAFEARRAY对象进行访问操作的事件。

本申请实施例在确定出VBScript模块所运行的VBScript脚本中是否存在漏洞利用之后,可以基于该结果确定是否允许执行对VBScript模块中tagSAFEARRAY对象进行访问操作的事件的执行,也即是否允许对VBScript模块中tagSAFEARRAY对象进行访问操作的继续执行,从而在确定出VBScript模块所运行的VBScript脚本中存在漏洞利用之后,禁止对tagSAFEARRAY对象进行访问操作的继续执行,在确定出VBScript模块所运行的VBScript脚本中不存在漏洞利用之后,允许对tagSAFEARRAY对象进行访问操作的继续执行;可见,本申请在VBScript模块所运行的VBScript脚本中存在漏洞利用时禁止继续执行对tagSAFEARRAY对象进行访问操作,而在VBScript模块所运行的VBScript脚本中不存在漏洞利用时才允许继续执行对tagSAFEARRAY对象进行访问操作,由此不仅能够防范当前已知的漏洞利用手法,还能预防可能出现的潜在性威胁,具有很高的可实施性。

本发明实施例提供的一种检测VBScript漏洞利用的方法,还可以包括:

在VBScript模块运行之前,确定VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数;

对应的,监听对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件,可以包括:

监听数据访问函数的调用事件,当监听到数据访问函数的调用事件时,确定监听到对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件。

本申请实施例可以在VBScript模块中设置数据访问函数,进而使得通过调用数据访问函数实现对VBScript模块中tagSAFEARRAY对象的访问操作;在此基础上,本申请实施例可以在应用程序的VBScript模块运行之前,先获知VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数;进而可以监听数据访问函数的调用事件,在监听到数据访问函数的调用事件,也即数据访问函数被调用时,说明要对VBScript模块中的tagSAFEARRAY对象进行访问操作,也即可以确定监听到对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件,不仅便捷且监听结果的准确性较高。

本发明实施例提供的一种检测VBScript漏洞利用的方法,禁止执行对tagSAFEARRAY对象进行访问操作的事件,可以包括:

通过钩子函数强制结束调用消息的继续传递;钩子函数挂载于数据访问函数上,能够拦截指示调用数据访问函数的调用消息;

允许执行对tagSAFEARRAY对象进行访问操作的事件,包括:

通过钩子函数放行调用消息,使得调用消息继续传递。

需要说明的是,为了实现调用数据访问函数的消息的拦截,本申请实施例中可以预先在数据访问函数上挂载钩子函数,钩子函数能够拦截指示对数据访问函数进行调用的消息,如果钩子函数放行该消息,则可以使得调用消息继续传递,进而实现数据访问函数的调用,如果钩子函数不放行该消息,则可以使得调用消息不再继续传递,也即强制结束该消息的继续传递,进而停止数据访问函数的调用;基于此,本申请在禁止执行tagSAFEARRAY对象进行访问操作的事件时,可以直接通过钩子函数强制结束调用消息(调用数据访问函数的消息)的继续传递,而在允许执行tagSAFEARRAY对象进行访问操作的事件时,可以通过钩子函数放行调用消息,以使得调用消息继续传递,从而通过这种方式以一种简单有效的方式实现对tagSAFEARRAY对象进行访问操作的事件的控制。

本发明实施例提供的一种检测VBScript漏洞利用的方法,确定VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数,可以包括:

对VBScript模块进行静态分析,基于静态分析所得结果确定VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数。

需要说明的是,在确定数据访问函数时,本申请实施例可以对VBScript模块进行静态分析,进而基于静态分析所得的结果获知VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数;从而通过静态分析的方式有效实现数据访问函数的获知。

本发明实施例提供的一种检测VBScript漏洞利用的方法,确定VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,可以包括:

确定tagSAFEARRAY对象中包含的、用于表示tagSAFEARRAY对象所能够操作的内存区域的大小的长度元素的值;

判断内存区域的空间大小是否大于预设的预设空间阈值,可以包括:

判断长度元素的值是否大于预设元素阈值。

本申请在获取VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小时,可以是获取VBScript模块中的tagSAFEARRAY对象中包含的能够表示tagSAFEARRAY对象所能够操作的内存区域的大小的长度元素的值,如果该值大于根据实际需要设置的预设元素阈值,则确定tagSAFEARRAY对象所能够操作的内存区域的大小大于预设内存阈值,否则,确定tagSAFEARRAY对象所能够操作的内存区域的大小不大于预设内存阈值,从而通过对tagSAFEARRAY对象中长度元素的值进行比对分析,以判断该长度元素中的长度元素的值是否被恶意篡改为较大的值,也即tagSAFEARRAY对象所能够操作的内存区域是否被恶意设置为较大的值,实现对tagSAFEARRAY对象所能够操作的内存区域是否被恶意设置为较大的值的有效简便的判断。

本发明实施例提供的一种检测VBScript漏洞利用的方法,判断长度元素的值是否大于预设元素阈值,可以包括:

将tagSAFEARRAY对象中cElements元素的值与cbElements元素的值进行相乘,判断相乘所得的结果是否大于预设元素阈值。

需要说明的是,tagSAFEARRAY对象的pvData、cElements和cbElements三个域一起限制了该tagSAFEARRAY对象所能操作的tagSAFEARRAY数据内存区域的大小,pvData元素代表tagSAFEARRAY对象能用来操作的内存起始地址,cElements元素代表能用来操作的数组成员数量,cbElements元素代表能用来操作的每个数组成员的大小(单位为字节);假设tagSAFEARRAY对象A的cbElements为1,cElements为2,pvData为B,则正常情况下通过A能读写的地址范围只有:[B,B+1*2],如果有方法能将cElements值伪造为100,则A能读写的地址范围为:[B,B+1*100],因此如果攻击者能伪造一个假的tagSAFEARRAY对象,只要令伪造的tagSAFEARRAY对象中的cbElements为1,并将cElements伪造得足够大,那么就能操作任意范围的内存,攻击者也能借此来恶意篡改关键内存地址的数据,布置出自己的代码来影响程序执行的流程,完成漏洞利用;此外,攻击者也可以在伪造的tagSAFEARRAY对象中,将cbElements伪造为大于1的值,并将cElements伪造为足够大的值,这样也可以操作符合cbElements步进的任意内存地址。总之,在整个漏洞利用的过程中,攻击者可以通过精心设计的VBScript脚本来触发漏洞,从而伪造应用程序中用于运行VBScript脚本的VBScript模块中的tagSAFEARRAY对象的pvData、cbElements和cElements,为此,本方案对于VBScript漏洞利用的检测思路便是通过对VBScript模块中的tagSAFEARRAY对象的cElements与cbElements的乘积加以监控,从而判断当前进程是否有漏洞被恶意利用;具体来说,只要攻击者能够将cElements元素的值与cbElements元素的值设置为两者的值的乘积足够大,则攻击者能够操作任意范围的内存,因此本申请可以通过上述两个元素的值的乘积确定长度元素的值是否大于预设元素阈值,即长度元素的值是否大于预设元素阈值,也即tagSAFEARRAY对象所能操作的内存区域的大小是否大于预设内存阈值,从而简单方便的实现tagSAFEARRAY对象所能操作的内存区域大小是否大于预设内存阈值的判断;其中,如果cElements元素的值与cbElements元素的值相乘所得结果大于预设元素阈值,则确定长度元素的值大于预设元素阈值,tagSAFEARRAY对象所能操作的内存区域的大小大于预设内存阈值。

以一个具体应用场景中的例子来说明本申请公开的技术方案的实施过程:由于VBScript脚本中,常被攻击者用来操作任意内存地址的结构是tagSAFEARRAY对象,因此本例中以tagSAFEARRAY对象进行说明:

在应用程序加载VBScript脚本但应用程序的VBScript模块还未开始运行之前,对VBScript模块进行静态分析,分析VBScript模块中的主要功能模块代码,找到对tagSAFEARRAY对象进行访问的重点函数AccessArray(数据访问函数);VBScript模块开始运行之前,在找到的数据访问函数上挂载钩子函数,即对找到的数据访问函数进行HOOK,当出现对该数据访问函数的调用操作时,检查访问的tagSAFEARRAY对象的cElements元素和cbElements元素,其中cElements元素指定tagSAFEARRAY对象的数组成员个数,cbElements元素指定tagSAFEARRAY对象的数组成员大小;如果cbElements和cbElements之乘积大于一定阈值,则判定为出现漏洞利用,需要进行进一步的防护处理。

图2示出了在一种具体应用场景中本发明实施例的VBScript模块的汇编代码示意图,如图2所示,在这一段汇编代码中,①标示的部分位于VBScript模块的AccessArray函数中,①标示的部分表示了在VBScript模块运行过程中,对VBScript模块中的tagSAFEARRAY对象进行访问操作,其中,esi寄存器在①处标示的代码逻辑执行前,存储有tagSAFEARRAY对象的指针;在该处代码执行前,获取esi寄存器,将对应的指针类型转换为tagSAFEARRAY对应的指针类型,随后获取tagSAFEARRAY对象内的cDims元素,该元素指明当前tagSAFEARRAY对象所代表的数组的维度,例如,若cDims为1,则代表当前数组为一维数组;若cDims为2,则代表当前数组为二维数组。由于目前所有出现过的漏洞案例伪造一维或二维数组,所以本发明仅讨论当tagSAFEARRAY为一维或二维数组时的漏洞利用检测方案。下面分别说明:

当cDims为1时,tagSAFEARRAY数组对象代表一个一维数组,先读取tagSAFEARRAY对象游标0x04处的四字节(即cbElements元素),随后读取tagSAFEARRAY对象游标0x10处开始的八字节,并将这八字节转化为tagSAFEARRAYBOUND结构体,得到一个tagSAFEARRAYBOUND对象,随后获取tagSAFEARRAYBOUND对象游标0x0处的四字节(即cElements元素),然后计算前述获取的两个元素的乘积,如果该乘积不超过一定阈值,则说明在访问权限内,可正常往下执行,进入后续的代码逻辑,反之不能正常往下执行。

当cDims为2时,tagSAFEARRAY数组对象代表一个二维数组,先读取tagSAFEARRAY对象游标0x04处的四字节(即cbElements元素),随后读取tagSAFEARRAY对象游标0x18处开始的八字节,并将这八字节转化为tagSAFEARRAYBOUND结构体,得到一个tagSAFEARRAYBOUND对象,随后获取tagSAFEARRAYBOUND对象游标0x0处的四字节(即cElements元素),然后计算前述获取的两个元素的乘积,如果该乘积不超过一定阈值,则说明在访问权限内,可正常往下执行,进入后续的代码逻辑,反之不能正常往下执行。

综上,本发明提供的技术方案在应用程序的VBScript模块运行VBScript脚本的过程中,通过监听对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件,来实现VBScript模块中的tagSAFEARRAY对象被进行访问操作时判断tagSAFEARRAY对象的长度元素的值是否被恶意篡改为较大的值的过程,当发现tagSAFEARRAY对象的长度元素的值过大时,根据漏洞攻击原理确定恶意攻击者通过将tagSAFEARRAY对象的长度元素改为较大的值来获取任意内存地址的读写能力,即应用程序的VBScript模块所运行的VBScript脚本中存在漏洞利用,反之,确定VBScript模块所运行的VBScript文件没有问题,进而实现了对于VBScript漏洞利用的动态检测。可见,本方案根据VBScript漏洞利用的原理制宜地提出相应的通用应对措施,便捷高效,不仅能够防范当前已知的漏洞利用攻击,还能预防可能出现的潜在性威胁,具有很高的可实施性。

请参阅图3,其示出了本发明实施例提供的一种检测VBScript漏洞利用的装置,可以包括:

判断模块11,用于:如果需要检测VBScript漏洞利用,则确定VBScript模块中的tagSAFEARRAY对象所能够操作的内存区域的大小,并判断内存区域的大小是否大于预设空间阈值;

第一确定模块12,用于:如果内存区域的空间大小大于预设空间阈值,则确定VBScript模块所运行的VBScript脚本中存在漏洞利用;

第二确定模块13,用于:如果内存区域的空间大小不大于预设空间阈值,则确定VBScript模块所运行的VBScript脚本中不存在漏洞利用。

本发明实施例提供的一种检测VBScript漏洞利用的装置,还可以包括:

第三确定模块,用于:在应用程序的VBScript模块的运行过程中,监听对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件;当监听到对tagSAFEARRAY对象进行访问操作的事件时,确定需要检测VBScript漏洞利用。

本发明实施例提供的一种检测VBScript漏洞利用的装置,还可以包括:

控制模块,用于:确定VBScript模块所运行的VBScript脚本中存在漏洞利用之后,禁止执行对tagSAFEARRAY对象进行访问操作的事件;以及确定VBScript模块所运行的VBScript脚本中不存在漏洞利用之后,允许执行对tagSAFEARRAY对象进行访问操作的事件。

本发明实施例提供的一种检测VBScript漏洞利用的装置,还可以包括:

第四确定模块,用于:在VBScript模块运行之前,确定VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数;

对应的,第三确定模块可以包括:

监听单元,用于:监听数据访问函数的调用事件,当监听到数据访问函数的调用事件时,确定监听到对VBScript模块中的tagSAFEARRAY对象进行访问操作的事件。

本发明实施例提供的一种检测VBScript漏洞利用的装置,控制模块可以包括:

控制单元,用于:通过钩子函数强制结束调用消息的继续传递;以及通过钩子函数放行调用消息,使得调用消息继续传递;钩子函数挂载于数据访问函数上,能够拦截指示调用数据访问函数的调用消息。

本发明实施例提供的一种检测VBScript漏洞利用的装置,第四确定模块可以包括:

分析单元,用于:对VBScript模块进行静态分析,基于静态分析所得结果确定VBScript模块中对tagSAFEARRAY对象进行访问操作的数据访问函数。

本发明实施例提供的一种检测VBScript漏洞利用的装置,判断模块可以包括:

确定单元,用于:确定tagSAFEARRAY对象中包含的、用于表示tagSAFEARRAY对象所能够操作的内存区域的大小的长度元素的值;

判断单元,用于:判断长度元素的值是否大于预设元素阈值。

本发明实施例提供的一种检测VBScript漏洞利用的装置,判断单元可以包括:

判断子单元,用于:将tagSAFEARRAY对象中cElements元素的值与cbElements元素的值进行相乘,判断相乘所得的结果是否大于预设元素阈值。

本发明实施例还提供了一种检测VBScript漏洞利用的设备,可以包括:

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

处理器,用于执行计算机程序时实现如权上任一项检测VBScript漏洞利用的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上任一项检测VBScript漏洞利用的方法的步骤。

需要说明的是,本发明实施例提供的一种检测VBScript漏洞利用的装置及设备中相关部分的说明请参见本发明实施例提供的一种检测VBScript漏洞利用的方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。

在本发明所提供的若干实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电机,机械或其他的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中,包括若干指令用以使得一台机计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号