CN101667230A - 一种监控脚本执行的方法和装置 - Google Patents

一种监控脚本执行的方法和装置 Download PDF

Info

Publication number
CN101667230A
CN101667230A CN200810213379A CN200810213379A CN101667230A CN 101667230 A CN101667230 A CN 101667230A CN 200810213379 A CN200810213379 A CN 200810213379A CN 200810213379 A CN200810213379 A CN 200810213379A CN 101667230 A CN101667230 A CN 101667230A
Authority
CN
China
Prior art keywords
script
interface object
return results
privately owned
judge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200810213379A
Other languages
English (en)
Other versions
CN101667230B (zh
Inventor
刘峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing net an Technology Limited by Share Ltd
Original Assignee
Beijing Rising International Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Rising International Software Co Ltd filed Critical Beijing Rising International Software Co Ltd
Priority to CN2008102133799A priority Critical patent/CN101667230B/zh
Publication of CN101667230A publication Critical patent/CN101667230A/zh
Application granted granted Critical
Publication of CN101667230B publication Critical patent/CN101667230B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明提出了一种监控脚本执行的方法和装置。该方法包括:获得脚本宿主返回给脚本引擎的一个返回结果;判断所述返回结果是否是一个特定接口对象,其中通过所述特定接口对象所述脚本引擎可访问所述脚本宿主公开的属性、方法或事件通知;如果判断结果为是,则通过封装所述特定接口对象,创建一个私有接口对象,并将所述私有接口对象返回给所述脚本引擎;其中,所述私有接口对象具有与所述特定接口对象相同的函数形式,并且封装有用于监控所述私有接口对象的操作的监控功能;接收所述脚本引擎对所述私有接口对象的函数调用;利用所述私有接口对象的所述监控功能,根据所述函数调用的信息,确定所述正在执行的脚本是否属于恶意程序。

Description

一种监控脚本执行的方法和装置
技术领域
本发明涉及一种用于监控脚本执行的方法和装置,尤其涉及一种通过监控脚本执行而防止网页挂马的方法和装置。
背景技术
随着计算机的普及,以及互联网技术的发展,人们越来越多地依赖于网络进行信息交互。然而,随之而来的是,网络也成为计算机病毒传播的一个便利途径。
比如,近期越来越多的用户计算机受到了恶意木马的侵袭。这些恶意木马大部分是通过网页挂马的方式来传播的。具体而言,黑客往往利用网站漏洞,将恶意代码强行嵌入所攻击的Web网页代码中,从而形成网页挂马。一旦用户访问被挂马的Web网页,用户计算机的操作系统就会在后台按照这段恶意代码的指令进行一系列的破坏行为,诸如跳转到指定的网络服务器下载木马、病毒等等,从而导致用户计算机受到感染。
网页挂马是将恶意代码嵌入在Web网页中,因而其隐蔽性很强,难以识别。再者,由于挂接在Web网页中的恶意代码是利用脚本语言编写的,其很容易生成不同的衍生变种,因而难以利用特征码扫描方法来加以识别。另外,现今的脚本恶意代码往往以加密形式嵌入在Web网页中,而且只有自解密后才能暴露出真正的恶意代码。这就又给网页挂马的监控与检测设置了一个困难。此外,随着越来越多的应用程序支持脚本程序,木马也可能以与上述类似的方式挂接在这些非Web网页的应用程序上。这就使得木马病毒的检测更加困难。
为此,需要提出一种能够及时、准确地检测出恶意脚本代码的方法,以防止用户的计算机系统受到网页挂马病毒的侵袭。
发明内容
本发明的一个目的在于提供一种通过监控脚本执行来检测恶意病毒的方法和装置。
本发明的另一个目的在于提供一种监控脚本执行的方法和装置,利用该方法和装置能够检测出脚本执行时是否进行了解密操作,并对解密后的脚本内容进行病毒扫描。
本发明的又一个目的在于提供一种监控脚本执行的方法和装置,利用该方法和装置能够检测出脚本代码是否包含了脚本挂马代码,并且发现木马下载的地址。
根据本发明一个方面,本发明提出一种监控脚本执行的方法。该方法包括:获得脚本宿主返回给脚本引擎的一个返回结果;判断所述返回结果是否是一个特定接口对象,其中通过所述特定接口对象所述脚本引擎可访问所述脚本宿主公开的属性、方法或事件通知;如果判断结果为是,则通过封装所述特定接口对象,创建一个私有接口对象,并将所述私有接口对象返回给所述脚本引擎;其中,所述私有接口对象具有与所述特定接口对象相同的函数形式,并且封装有用于监控所述私有接口对象的操作的监控功能;接收所述脚本引擎对所述私有接口对象的函数调用;利用所述私有接口对象的所述监控功能,根据所述函数调用的信息,确定所述正在执行的脚本是否属于恶意程序。
根据本发明的另一个方面,本发明一种监控脚本执行的装置。该装置包括:获取模块,用于获得脚本宿主返回给脚本引擎的一个返回结果;第一判断模块,用于判断所述返回结果是否是一个特定接口对象,其中通过所述特定接口对象所述脚本引擎可访问所述脚本宿主公开的属性、方法或事件通知;创建模块,如果判断结果为是,则通过封装所述特定接口对象,创建一个私有接口对象,并将所述私有接口对象返回给所述脚本引擎;其中,所述私有接口对象具有与所述特定接口对象相同的函数形式,并且封装有用于监控所述私有接口对象的操作的监控功能;接收模块,接收所述脚本引擎对所述私有接口对象的函数调用;确定模块,利用所述私有接口对象的所述监控功能,根据所述函数调用的信息,确定所述正在执行的脚本是否属于恶意程序。
通过参考以下结合附图的说明以及权利要求书中的内容,并且随着对本发明的更全面的理解,本发明的其他目的及效果将变得更加清楚和易于理解。
附图简述
下面将参考附图以例示方式更详细地解释本发明,其中:
图1示出了现有Windows操作系统中脚本执行的基本过程;
图2示出了根据本发明一个实施例的脚本监控的总体架构;
图3示出了根据本发明一个实施例的脚本监控方法的基本流程图;
图4示出了根据本发明一个实施例的行为查毒的基本流程图。
在所有附图中,相同的参考数字指示相似或对应的特征或功能。
具体实施方式
如前面所述,网页挂马是脚本病毒的一种形式,其利用了用户计算机系统能够自动解释和运行脚本代码的特点,在用户不知情的情况下运行嵌入在诸如网页中的恶意脚本代码,从而使用户计算机感染病毒。
通过以上对网页挂马运行过程的分析不难发现:防止网页挂马的关键在于如何阻止嵌入在正常脚本中的恶意脚本代码的执行。为此,在本发明中提出了一种监控脚本执行的方法,用以检测和终止恶意脚本代码的执行。
为了便于描述本发明提出的方法,下面首先介绍现有计算机操作系统中脚本执行的一般过程。图1示出了在Windows操作系统下脚本执行的过程。这里需要说明的是,虽然以下实施例均以Windows操作系统为例来描述本发明,但是本领域技术人员应该理解的是,本发明所提出的监控脚本执行的思想并不局限于Windows操作系统,其也可以应用到其他操作系统,比如UNIX操作系统中。
参见图1,在Windows操作系统下,脚本的执行是由脚本宿主100和脚本引擎200两个部分构成的。其中,脚本宿主100提供脚本的运行环境和回调,其可以是一个应用程序,比如IE浏览器。脚本引擎200是由脚本宿主100创建的标准COM对象,其提供对脚本宿主100中包含的脚本内容的解释和执行,并且脚本引擎200可根据需要回调脚本宿主100提供的属性和方法。
图1具体示出了Windows操作系统下脚本执行的过程。如图1所示,首先,在步骤S110,脚本宿主100创建一个脚本引擎对象200。该脚本引擎对象200实现有一个IActiveScript接口和一个可选的IPersist*/IActiveScriptParse接口。其中IActiveScript接口提供对脚本引擎的控制,比如运行脚本、关闭脚本等等。脚本宿主在创建脚本引擎后调用IActiveScript::Init()对脚本引擎进行初始化。IPersist*/IActiveScriptParse接口用于从脚本宿主接收脚本内容并装载。脚本宿主100实现有一个IActiveScriptSite接口,其用于为脚本引擎创建一个站点,该站点包括脚本引擎所需的所有对象,并且该接口可用于检测脚本的开始、终止和脚本出错等事件。
继而,在步骤S120中,脚本宿主100通过调用IPersist*/IActiveScriptParse向脚本引擎中装入待执行的脚本内容,并向脚本引擎注册IActiveScriptSite对象。然后,在步骤S130中,脚本宿主通过调用脚本引擎的IActiveScript::AddNamedItem()函数,向脚本引擎的命名空间中加入相关的一个或多个命名对象,该命名对象可以是网页、窗体或文档,其可以支持属性、方法或事件。现在,脚本引擎已经取得了运行脚本所需的一切。
接着,在步骤S140中,脚本宿主通过调用脚本引擎的IActiveScript::SetScriptState(SCRIPTSTATE_CONNECTED)来启动脚本,即开始运行脚本。在脚本引擎真正运行脚本之前,在步骤S150中,脚本引擎通过调用脚本宿主提供的IActiveScriptSite::GetItemInfo,查询脚本引擎中各个元素(变量)是否是脚本宿主中的对象。如果是,则返回属性或相应对象提供的IDispatch接口。这里,IDispatch接口是由脚本宿主中的对象实现的,用于向其他对象公开自己的属性、方法等,以便其他对象使用。此外,在步骤S160中,脚本引擎使用IConnectionPoint接口为每一个需要接收事件通知的脚本项建立与相应事件的连接。这样,脚本宿主发出的事件通知就可以传递到脚本引擎的相应脚本项处进行处理。在以上准备工作完成后,脚本引擎真正开始运行脚本。
在运行过程中,脚本引擎可以访问与脚本宿主中的对象相关联的属性、方法或事件通知。这时,在步骤S170中,脚本引擎可通过IConnectionPoint接口获得事件通知。并且,在步骤S180中,脚本引擎可调用脚本宿主中对象的IDispatch::Invoke()函数,该函数会向脚本引擎暴露所查询的命名对象的属性、方法以及事件通知,从而脚本引擎可获得所需的功能。
根据以上结合图1介绍的Windows操作系统下脚本的执行过程不难发现:在脚本执行时,如果需要使用脚步宿主中的对象提供的属性、方法或事件,脚本引擎可根据脚本宿主加入的命名对象的名称,通过IActiveScriptSite接口查询所需的对象,并利用对象提供的IDispatch接口来得到所需的属性和方法。因此,为了监控脚本执行过程中的操作,在本发明实施例中提出了:将一个具有监控功能的自定义脚本引擎插入在图1所述的脚本宿主与脚本引擎之间,这样,从脚本宿主侧来看,用这个具有监控功能的自定义脚本引擎(后面简称为监控脚本引擎)替换Windows提供的标准脚本引擎,同时从脚本引擎来看,在脚本宿主向脚本引擎注册IActiveScriptSite对象时,用一个自定义的IActiveScriptSite对象替换脚本宿主实现的IActiveScriptSite对象。由此,所插入的监控脚本引擎能够截获脚本宿主与脚本引擎之间的所有函数调用,从而能够监控整个脚本执行的过程。
图2示出了根据本发明上述思想的监控脚本执行的机制的总体框架。如图2所示,插入在脚本宿主与脚本引擎之间的监控脚本引擎起到中间隔离的作用,即,切断了图1中脚本宿主与原脚本引擎(此后称之为标准脚本引擎)之间的直接联系。由此,监控脚本引擎可以得到分别来自脚本宿主与标准脚本引擎双方的函数调用请求以及函数返回结果。从而,该插入的监控脚本引擎可全程监控脚本的执行,也就是说,监控脚本引擎可以获得脚本执行过程中所进行的操作和函数参数,并可根据这些信息确定该脚本是否属于恶意程序。
具体而言,图2中的监控脚本引擎是一个脚本引擎COM控件,其封装有Windows提供的标准脚本引擎控件的内容,并且具有与标准脚本引擎相同的函数形式和接口形式。此外,该监控脚本引擎控件还封装有监控功能,用于监控脚本的执行,比如行为查毒功能等。在实现时,该监控脚本引擎控件替换了标准脚本引擎控件,并将其自身注册为标准的VB Script和JavaScript脚本引擎。这样,当脚本宿主创建脚本引擎时,调用的是替换后的监控脚本引擎,因而实际上创建的是一个监控脚本引擎300(步骤S210a)。所创建的监控脚本引擎再调用标准脚本引擎控件中的函数创建一个标准脚本引擎200(步骤S210b)。这里,监控脚本引擎300向脚本宿主提供与标准脚本引擎相同的IActiveScript接口,同时向标准脚本引擎提供与脚本宿主相同的IActiveScriptSite接口。由此,脚本宿主100能够以与创建步骤类似的方式经由监控脚本引擎300完成对标准脚本引擎的初始化(步骤S220)、站点注册和脚本装载(步骤S230)、命名对象的添加(步骤S240)、运行脚本(步骤S250)。
在上述步骤中,特殊的是,在步骤S230中,脚本宿主向监控脚本引擎注册脚本站点(步骤S230a)。这时,监控脚本引擎300创建自身的IActiveScriptSite对象,并向标准脚本引擎注册这个监控站点(步骤S230b)。当标准脚本引擎试图得到与某个脚本项相关的信息时,标准脚本引擎200利用监控站点的GetItemInfo函数进行查询(步骤S260a)。监控脚本引擎300再进一步调用脚本宿主注册的脚本站点的GetItemInfo函数,来获得真正与之相关联的脚本宿主中的对象的属性或IDispatch接口(步骤S260b)。同时,采用类似的方式关联事件通知(步骤S270)。由此,通过以上方式,经由监控脚本引擎可真正开始在标准脚本引擎中运行脚本。
由于监控脚本引擎用自己创建的监控站点替换了脚本宿主实现的站点对象,在脚本运行过程中,一旦标准脚本引擎试图访问脚本宿主中的对象的属性、方法和事件,标准脚本引擎经由监控脚本引擎向脚本宿主查询,并且如果脚本宿主返回一个IDispatch对象,则由监控脚本引擎所获取。继而,监控脚本引擎创建一个私有的IDispatch对象,并将所获取的脚本宿主的IDispatch对象替换成所创建的私有IDispatch对象。然后,将私有IDispatch对象返回给标准脚本引擎。这里,私有IDispatch对象与脚本宿主中对象的IDispatch对象具有相同的函数形式和接口形式,并且封装有监控功能,因而可以监控脚本代码和脚本宿主间的调用,即脚本所执行的动作(步骤S280)。通过对这些动作的扫描可以确定正在执行的脚本是否为恶意程序。
图3示出了在图2所示实施例中的监控脚本引擎在脚本执行过程中的处理流程图。
在图3中,流程从标准脚本引擎试图调用IActiveScriptSite::GetItemInfo函数来查询与脚本项相关的信息开始,即图2中的步骤S260。由于在标准脚本引擎中注册的是监控脚本引擎提供的监控站点,因而在标准脚本引擎执行上述步骤时,监控脚本引擎接收这个GetItemInfo函数调用,并相应地调用脚本宿主的IActiveScriptSite::GetItemInfo函数(步骤S310)。作为响应,脚本宿主返回一个函数返回结果。在步骤S320中,监控脚本引擎接收到来自脚本宿主的返回结果,并判断该返回结果是否为一个IDispatch对象。如果不是IDispatch对象,则将该返回结果作为对标准脚本引擎调用GetItemInfo函数的返回结果,传递给标准脚本引擎(步骤S393)。如果该返回结果是一个IDispatch对象(称为原IDispatch对象),监控脚本引擎通过对该原IDispatch对象进行封装,创建一个新的IDispatch对象(称为私有IDispatch对象),并将其返回给所述标准脚本引擎(步骤S330)。这个新的IDispatch对象具有与原IDispatch对象相同的函数形式和接口形式,并且封装有监控功能,能够监控IDispatch对象的每一个操作。
随后,标准脚本引擎会调用所接收到的私有IDispatch对象的Invoke函数,以访问脚本宿主中对象的属性或方法(步骤S340)。这时,私有IDispatch对象中的监控功能对这一调用行为进行行为查毒(步骤S350)。具体而言,监控功能进行行为查毒的具体步骤如图4所示。在图4中,当有调用行为发生时,监控功能先将动作类型和相关参数保存到一个行为链中(步骤S410),然后将行为链和已知的漏洞的行为序列、恶意行为序列(比如修改系统文件、在系统目录下保存文件、执行程序等)进行行为特征匹配(步骤S420),并判断是否与恶意行为库中的某一序列相匹配(步骤S430)。如果匹配上了则确定为有毒(步骤S430),否则确定为无毒(步骤S440)。如果经过行为查毒,判断为有毒,则通知用户、根据用户的选择阻止脚本继续执行(步骤S392)
如果经过行为查毒,发现无毒(步骤S360)则该私有IDispatch对象调用原IDispatch对象的Invoke函数,并等待来自脚本宿主的返回结果(步骤S370)。随后,私有IDispatch对象判断该Invoke函数的返回结果是否为另一个IDispatch对象(步骤S380)。如果是,则重复执行步骤S330,即创建一个新的私有IDispatch对象来封装该另一个IDispatch对象。否则,在步骤S390中根据Invoke函数的输入参数以及所得到返回结果进行查毒。这里的查毒除了包括如图4所示的行为查毒之外,还可以包括其他查毒方式,比如脚本挂马代码查毒,后面将具体描述其他的查毒方式。如果查毒结果为有毒(步骤S391)则通知用户并终止脚本的继续执行(步骤S392),否则将返回结果返回给标准脚本引擎(步骤S393)。
附图3中的步骤S390可以有多种实现方式,以下示例性地列举几种解决方案。
实例1:解密特征码判定
一般而言,很多脚本病毒和脚本挂马程序的代码是加密的,因而在解密前单纯用特征码进行查毒难以查出病毒。为此,提出以下几种判定方法。
方法1:首先确定在函数调用前的输入参数和函数返回结果(指返回的输出字符串)是否都是字符串;然后确定输入的字符串是否比返回结果的字符串长;如果输入的字符串比返回结果的字符串长,则进一步判断返回结果的字符串是否超出一个预定阈值,比如64个字符;如果超出预定阈值则表明该函数调用执行了解密操作。
方法2:首先确定在函数调用前的输入参数和函数返回结果(指返回的字符串)的字符串变量值是否发生了变化;如果发生了变化则判断返回结果的字符串长度是否超出了一个预定阈值,比如64个字符;如果超出预定阈值则表明该函数调用执行了解密操作。
在通过以上两种方法之一确定函数调用执行了解密操作后,对解密后的字符串进行病毒特征码扫描。如果经过扫描确定解密后的字符串与病毒特征相匹配,则判定正在执行的脚本为恶意程序。
实例2:脚本挂马代码判定与下载地址获取流程
一般而言脚本挂马漏洞主要是第三方(非微软的)软件产生的,主要的原理是利用软件厂商的控件代码的缺陷,进行堆栈溢出攻击,这一类的攻击的特点是利用字符串解密生成的。以下提供几种确定脚本中包含了脚本挂马的方法。
方法1:
首先,根据函数调用前的输入代码的长度,计算理论的返回结果(即解密代码)的代码长度;然后比较理论和实际的返回结果的代码长度;如果实际长度比理论长度短,则分析返回结果的代码是否包含了二进制代码;如果返回结果包含了二进制代码,而所述返回结果被声明为字符串类型,则判定该脚本中包含有脚本挂马代码。继而,可在返回结果中搜索URL下载地址;如果没有搜索到,则检查脚本执行上下文的变量中是否有URL下载链接;如果有,则该找到的URL地址则为木马或病毒的下载地址。
方法2:
首先,搜索返回结果的代码中是否包含了二进制代码;如果包含了二进制代码,则在解密代码中搜索是否包含了URL下载地址;如果有,则可以判定为脚本挂马代码。其中所搜索到的URK下载地址也就是木马或病毒的下载地址。
如果根据上述两个方法之一确定了脚本中含有脚本挂马代码,则停止脚本执行,并把相关的URL地址链接发送给防火墙加入黑名单中,以防止病毒通过其他渠道下载。此外,还可以把所找到的URL下载地址和URL下载地址所在网页的网页地址回传给反病毒公司作进一步分析。
以上结合附图2-4详细描述了本发明提出的监控脚本执行的方法。在以上实施例中,由于每次发现脚本宿主返回IDispatch对象都用封装有监控功能的私有IDispatch对象进行替换,因而在本发明中能够全程跟踪脚本引擎对于脚本宿主的函数调用,从而能够从行为上准确判定出正在执行的脚本是否为病毒。此外,在本发明中还提出了简便的判断是否进行了解密操作的方法,以及确定包含了脚本挂马代码的方法,从而可以方便地确定危险代码并且确定出木马或病毒的下载地址。
此外,在上述实施例中均以脚本宿主提供的IDispatch对象为例来描述本发明提出的方法,但是这里的IDispatch对象仅仅是一个具体的实例。在其他实施例中,脚本宿主返回给脚本引擎的对象还可以是用于公开对象本身的属性、方法或事件的其他接口。比如,在高版本脚本引擎和脚本宿主中,脚本宿主就可以返回一个IDispatchEx对象。这个IDispatchEx对象是IDispath对象的扩展对象,其包含了IDispatch对象所有接口,并在IDispatch对象的基础上扩展了增强功能。如果在上述实施例中,脚本宿主返回了IDispatchEx对象,则相应地高版本脚本引擎可以调用IDispathEx的扩展接口IDispatchEx::InvokeEx(),这个函数也是IDispatch::Invoke()函数的一个扩展函数。在返回IDispathEx的情况下,以上所述的对象拦截、监控、处理流程均可保持不变,只是拦截时创建的接口对象为IDispatchEx。除此之外,本领域技术人员还可以想到,根据操作系统的不同,脚本宿主所返回的用于公开对象本身的属性、方法或事件的接口也会有所不同。这些接口对象均在本发明的范围内。
以上结合附图详细描述了本发明的具体实施例。应当注意的是,上述实施例用于说明、而非限制本发明,并且,在不脱离所附权利要求的保护范围的前提下,本领域技术人员应当理解,对上述本发明所公开的方法及其装置,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。此外,不应当将权利要求中的任何参考标记解释为限制权利要求的保护范围。

Claims (16)

1.一种监控脚本执行的方法,包括:
A:获得脚本宿主返回给脚本引擎的一个返回结果;
B:判断所述返回结果是否是一个特定接口对象,其中通过所述特定接口对象所述脚本引擎可访问所述脚本宿主公开的属性、方法或事件通知;
C:如果判断结果为是,则通过封装所述特定接口对象,创建一个私有接口对象,并将所述私有接口对象返回给所述脚本引擎;其中,所述私有接口对象具有与所述特定接口对象相同的函数形式,并且封装有用于监控所述私有接口对象的操作的监控功能;
D:接收所述脚本引擎对所述私有接口对象的函数调用;
E:利用所述私有接口对象的所述监控功能,根据所述函数调用的信息,确定所述正在执行的脚本是否属于恶意程序。
2.如权利要求1所述的方法,其中,所述确定所述正在执行的脚本是否属于恶意程序的步骤包括:
根据所述函数调用的名称和参数,确定行为类型,进行行为检查,以判断该接口调用行为是否属于恶意行为;
如果判断结果为恶意行为,则确定所述正在执行的脚本是否属于恶意程序。
3.如权利要求1所述的方法,还包括:
如果确定出所述正在执行的脚本属于恶意程序,则终止所述脚本的执行;
如果确定出所述正在执行的脚本不属于恶意程序,则调用封装在所述私有接口对象中的所述特定接口对象的相应函数,并等待返回结果。
4.如权利要求3所述的方法,还包括:
H:如果所述返回结果不是一个特定接口对象,则根据调用所述相应函数的输入参数和所接收到的返回结果,判断所述脚本是否是恶意程序。
5.如权利要求4所述的方法,其中,所述步骤H包括:
判断所述输入参数和所接收到的返回结果是否均为字符串;
如果所述返回结果的字符串长度小于所述输入参数的字符串长度,且返回结果的字符串长度大于预定值,则判断出所述脚本执行了解密操作。
6.如权利要求5所述的方法,其中,所述步骤H还包括:
如果判断出所述脚本执行了解密操作,则对解密后的字符串进行病毒扫描,以确定所述脚本是否为恶意程序。
7.如权利要求5所述的方法,其中,在判断出所述脚本执行了解密操作之后,所述步骤H还包括:
获得所述输入参数和所接收到的返回结果的代码长度;
根据输入参数代码长度,按照解密方法,计算出理论上的解密代码长度;
如果所述理论解密代码长度短于所接收到的返回结果的代码长度,则判断所接收到返回结果是否包含二进制代码;
如果所接收到返回结果包含二进制代码,而所述返回结果的声明类型为字符串,则确定所接收到返回结果包含了脚本挂马代码。
8.如权利要求7所述的方法,其中,还包括:
搜索所接收到返回结果,以判断是否包含URL地址;
如果没有找到URL地址,在所述脚本执行上下文的变量中查找是否包含有URL地址。
9.如权利要求4所述的方法,其中,所述步骤H包括:
搜索所接收到的返回结果,以判断所接收到的返回结果是否包含二进制代码;
如果所接收到返回结果包含二进制代码,则搜索所接收到返回结果并判断所接收到的返回结果是否包含URL下载地址;
如果判断出包含URL下载地址,则确定所接收到返回结果包含网页挂马代码。
10.如权利要求7-9所述的方法,还包括:
如果判断出所接收到返回结果包含网页挂马代码,则确定所述脚本为恶意程序,以及
如果找到URL下载地址,则向安全软件上报所述找到的URL下载地址和与所述脚本相关的网页地址。
11.如权利要求1所述的方法,其中,所述特定接口对象为IDispatch对象。
12.如权利要求1所述的方法,其中,所述函数调用为对IDispatch对象的Invoke函数的调用。
13.一种监控脚本执行的装置,包括:
获取模块,用于获得脚本宿主返回给脚本引擎的一个返回结果;
第一判断模块,用于判断所述返回结果是否是一个特定接口对象,其中通过所述特定接口对象所述脚本引擎可访问所述脚本宿主公开的属性、方法或事件通知;
创建模块,如果判断结果为是,则通过封装所述特定接口对象,创建一个私有接口对象,并将所述私有接口对象返回给所述脚本引擎;其中,所述私有接口对象具有与所述特定接口对象相同的函数形式,并且封装有用于监控所述私有接口对象的操作的监控功能;
接收模块,接收所述脚本引擎对所述私有接口对象的函数调用;
确定模块,利用所述私有接口对象的所述监控功能,根据所述函数调用的信息,确定所述正在执行的脚本是否属于恶意程序。
14.如权利要求13所述的装置,其中,所述确定模块包括:
行为检查模块,用于根据所述函数调用的名称和/或参数,进行行为检查,以判断该接口调用行为是否属于恶意行为;
第二判断模块,如果判断结果为恶意行为,则确定所述正在执行的脚本是否属于恶意程序。
15.如权利要求13所述的装置,还包括:
终止模块,如果第二判断模块确定出所述正在执行的脚本属于恶意程序,则终止所述脚本的执行;
调用模块,如果第二判断模块确定出所述正在执行的脚本不属于恶意程序,则调用封装在所述私有接口对象中的所述特定接口对象的相应函数,并等待返回结果。
16.如权利要求15所述的装置,还包括:
第三判断模块,如果所述返回结果不是一个特定接口对象,则根据调用所述相应函数的输入参数和所接收到的返回结果,判断所述脚本是否是恶意程序。
CN2008102133799A 2008-09-02 2008-09-02 一种监控脚本执行的方法和装置 Active CN101667230B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102133799A CN101667230B (zh) 2008-09-02 2008-09-02 一种监控脚本执行的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102133799A CN101667230B (zh) 2008-09-02 2008-09-02 一种监控脚本执行的方法和装置

Publications (2)

Publication Number Publication Date
CN101667230A true CN101667230A (zh) 2010-03-10
CN101667230B CN101667230B (zh) 2013-10-23

Family

ID=41803850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102133799A Active CN101667230B (zh) 2008-09-02 2008-09-02 一种监控脚本执行的方法和装置

Country Status (1)

Country Link
CN (1) CN101667230B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819698A (zh) * 2011-12-27 2012-12-12 腾讯科技(深圳)有限公司 检测网页中恶意代码的方法及装置
CN102916937A (zh) * 2012-09-11 2013-02-06 北京奇虎科技有限公司 一种拦截网页攻击的方法、装置和客户端设备
CN103034503A (zh) * 2012-12-25 2013-04-10 北京奇虎科技有限公司 一种脚本执行方法、系统及浏览器
CN103488519A (zh) * 2013-09-27 2014-01-01 上海野火网络科技有限公司 一种交互式脚本语言解释器的实现方法
CN103514403A (zh) * 2012-06-18 2014-01-15 北京一铭昌和科技发展有限公司 在js中主动进行安全保护的方法及装置
CN103634366A (zh) * 2012-08-27 2014-03-12 北京千橡网景科技发展有限公司 用于识别网络机器人的方法和设备
CN103729594A (zh) * 2013-12-31 2014-04-16 山东中创软件商用中间件股份有限公司 一种防护规则生成方法及装置
CN104252593A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 脚本监控方法和装置
CN104252596A (zh) * 2013-06-28 2014-12-31 贝壳网际(北京)安全技术有限公司 一种脚本病毒的监控方法及装置
CN104504125A (zh) * 2014-12-30 2015-04-08 北京国双科技有限公司 网页数据监测方法和装置
CN104537306A (zh) * 2015-01-13 2015-04-22 百度在线网络技术(北京)有限公司 识别病毒文件的方法及装置
CN105630526A (zh) * 2014-11-03 2016-06-01 阿里巴巴集团控股有限公司 脚本的加载控制方法及装置
CN106815524A (zh) * 2015-11-27 2017-06-09 阿里巴巴集团控股有限公司 恶意脚本文件的检测方法及装置
CN108351941A (zh) * 2015-11-02 2018-07-31 日本电信电话株式会社 分析装置、分析方法、以及分析程序
CN108416214A (zh) * 2018-03-16 2018-08-17 北京奇虎科技有限公司 网页挖矿防护方法及装置
CN108776604A (zh) * 2018-05-23 2018-11-09 网易(杭州)网络有限公司 目标任务的执行方法及系统
CN109145598A (zh) * 2017-06-19 2019-01-04 腾讯科技(深圳)有限公司 脚本文件的病毒检测方法、装置、终端及存储介质
CN109711171A (zh) * 2018-05-04 2019-05-03 360企业安全技术(珠海)有限公司 软件漏洞的定位方法及装置、系统、存储介质、电子装置
CN113688358A (zh) * 2020-05-18 2021-11-23 网神信息技术(北京)股份有限公司 系统安全的检测方法、装置、电子设备、介质和产品
CN113688358B (zh) * 2020-05-18 2024-06-07 奇安信网神信息技术(北京)股份有限公司 系统安全的检测方法、装置、电子设备、介质和产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103200A1 (en) * 2002-11-23 2004-05-27 Microsoft Corporation Method and system for improved internet security via HTTP-only cookies
US20070113282A1 (en) * 2005-11-17 2007-05-17 Ross Robert F Systems and methods for detecting and disabling malicious script code

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103200A1 (en) * 2002-11-23 2004-05-27 Microsoft Corporation Method and system for improved internet security via HTTP-only cookies
US20070113282A1 (en) * 2005-11-17 2007-05-17 Ross Robert F Systems and methods for detecting and disabling malicious script code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
魏建平 等.: "网页病毒防御系统的设计", 《计算机应用研究》 *

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819698B (zh) * 2011-12-27 2015-05-20 腾讯科技(深圳)有限公司 检测网页中恶意代码的方法及装置
CN102819698A (zh) * 2011-12-27 2012-12-12 腾讯科技(深圳)有限公司 检测网页中恶意代码的方法及装置
CN103514403A (zh) * 2012-06-18 2014-01-15 北京一铭昌和科技发展有限公司 在js中主动进行安全保护的方法及装置
CN103514403B (zh) * 2012-06-18 2017-02-08 北京一铭昌和科技发展有限公司 在js中主动进行安全保护的方法及装置
CN103634366A (zh) * 2012-08-27 2014-03-12 北京千橡网景科技发展有限公司 用于识别网络机器人的方法和设备
CN102916937A (zh) * 2012-09-11 2013-02-06 北京奇虎科技有限公司 一种拦截网页攻击的方法、装置和客户端设备
CN102916937B (zh) * 2012-09-11 2015-11-25 北京奇虎科技有限公司 一种拦截网页攻击的方法、装置和客户端设备
CN103034503A (zh) * 2012-12-25 2013-04-10 北京奇虎科技有限公司 一种脚本执行方法、系统及浏览器
CN104252593B (zh) * 2013-06-27 2019-07-30 贝壳网际(北京)安全技术有限公司 脚本监控方法和装置
CN104252593A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 脚本监控方法和装置
CN104252596A (zh) * 2013-06-28 2014-12-31 贝壳网际(北京)安全技术有限公司 一种脚本病毒的监控方法及装置
CN104252596B (zh) * 2013-06-28 2019-01-25 贝壳网际(北京)安全技术有限公司 一种脚本病毒的监控方法及装置
CN103488519B (zh) * 2013-09-27 2016-05-25 上海野火网络科技有限公司 一种交互式脚本语言解释器的实现方法
CN103488519A (zh) * 2013-09-27 2014-01-01 上海野火网络科技有限公司 一种交互式脚本语言解释器的实现方法
CN103729594A (zh) * 2013-12-31 2014-04-16 山东中创软件商用中间件股份有限公司 一种防护规则生成方法及装置
CN103729594B (zh) * 2013-12-31 2016-05-18 山东中创软件商用中间件股份有限公司 一种防护规则生成方法及装置
CN105630526A (zh) * 2014-11-03 2016-06-01 阿里巴巴集团控股有限公司 脚本的加载控制方法及装置
CN105630526B (zh) * 2014-11-03 2019-04-19 阿里巴巴集团控股有限公司 脚本的加载控制方法及装置
CN104504125A (zh) * 2014-12-30 2015-04-08 北京国双科技有限公司 网页数据监测方法和装置
CN104504125B (zh) * 2014-12-30 2018-02-02 北京国双科技有限公司 网页数据监测方法和装置
CN104537306A (zh) * 2015-01-13 2015-04-22 百度在线网络技术(北京)有限公司 识别病毒文件的方法及装置
CN108351941A (zh) * 2015-11-02 2018-07-31 日本电信电话株式会社 分析装置、分析方法、以及分析程序
CN106815524A (zh) * 2015-11-27 2017-06-09 阿里巴巴集团控股有限公司 恶意脚本文件的检测方法及装置
CN106815524B (zh) * 2015-11-27 2020-05-15 阿里巴巴集团控股有限公司 恶意脚本文件的检测方法及装置
CN109145598A (zh) * 2017-06-19 2019-01-04 腾讯科技(深圳)有限公司 脚本文件的病毒检测方法、装置、终端及存储介质
CN109145598B (zh) * 2017-06-19 2021-01-22 腾讯科技(深圳)有限公司 脚本文件的病毒检测方法、装置、终端及存储介质
CN108416214A (zh) * 2018-03-16 2018-08-17 北京奇虎科技有限公司 网页挖矿防护方法及装置
CN109711171A (zh) * 2018-05-04 2019-05-03 360企业安全技术(珠海)有限公司 软件漏洞的定位方法及装置、系统、存储介质、电子装置
CN109711171B (zh) * 2018-05-04 2021-07-20 360企业安全技术(珠海)有限公司 软件漏洞的定位方法及装置、系统、存储介质、电子装置
CN108776604A (zh) * 2018-05-23 2018-11-09 网易(杭州)网络有限公司 目标任务的执行方法及系统
CN113688358A (zh) * 2020-05-18 2021-11-23 网神信息技术(北京)股份有限公司 系统安全的检测方法、装置、电子设备、介质和产品
CN113688358B (zh) * 2020-05-18 2024-06-07 奇安信网神信息技术(北京)股份有限公司 系统安全的检测方法、装置、电子设备、介质和产品

Also Published As

Publication number Publication date
CN101667230B (zh) 2013-10-23

Similar Documents

Publication Publication Date Title
CN101667230B (zh) 一种监控脚本执行的方法和装置
Akiyama et al. Design and implementation of high interaction client honeypot for drive-by-download attacks
US8201245B2 (en) System, method and program product for detecting computer attacks
US8464318B1 (en) System and method for protecting web clients and web-based applications
Egele et al. Defending browsers against drive-by downloads: Mitigating heap-spraying code injection attacks
JP5094928B2 (ja) 偽装仮想マシン情報を利用したインテリジェントボット対応方法及び装置
CN103065092B (zh) 一种拦截可疑程序运行的方法
CN100527147C (zh) 一种网页安全信息检测系统及方法
US20100071063A1 (en) System for automatic detection of spyware
CN108664793B (zh) 一种检测漏洞的方法和装置
CN103384888A (zh) 用于恶意软件的检测和扫描的系统和方法
WO2016058489A1 (zh) 一种用于提供访问页面的方法与设备
CN103065089B (zh) 网页木马的检测方法和装置
CN103051627B (zh) 一种反弹式木马的检测方法
CN102402620A (zh) 一种恶意网页防御方法和系统
CN109347882B (zh) 网页木马监测方法、装置、设备及存储介质
US7930744B2 (en) Methods for hooking applications to monitor and prevent execution of security-sensitive operations
WO2018006241A1 (en) Method and apparatus to detect security vulnerabilities in web application
WO2012148517A1 (en) System and method for detecting infectious web content
CN101964026A (zh) 网页挂马检测方法和系统
WO2017056121A1 (en) Method for the identification and prevention of client-side web attacks
JP2013508823A (ja) リンクファイルを使用したマルウェアの検出およびマルウェアへの対応
CN107770125A (zh) 一种网络安全应急响应方法及应急响应平台
CN106250761B (zh) 一种识别web自动化工具的设备、装置及方法
US10645107B2 (en) System and method for detecting and classifying malware

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: BEIJING RISING INTERNATIONAL TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: BEIJING RISING INTERNATIONAL SOFTWARE CO., LTD.

Effective date: 20100413

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100190 ROOM 1305, ZHONGKE BUILDING, NO.22, ZHONGGUANCUN AVENUE, BEIJING CITY TO: 100190 ROOM 1301, ZHONGKE BUILDING, NO.22, ZHONGGUANCUN AVENUE, HAIDIAN DISTRICT, BEIJING CITY

TA01 Transfer of patent application right

Effective date of registration: 20100413

Address after: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Applicant after: Beijing Rising Information Technology Co., Ltd.

Address before: 100190, room 1305, Zhongke building, 22 Zhongguancun street, Beijing

Applicant before: Beijing Rising International Software Co., Ltd.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1142147

Country of ref document: HK

C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Liu Feng

Inventor before: Liu Feng

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee after: Beijing Rising Information Technology Co., Ltd

Address before: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee before: Beijing Rising Information Technology Co., Ltd.

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1142147

Country of ref document: HK

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee after: Beijing net an Technology Limited by Share Ltd

Address before: 100190 Beijing City, Haidian District Zhongguancun Street Branch No. 22 building, room 1301

Patentee before: Beijing Rising Information Technology Co., Ltd