CN102542201B - 一种网页中恶意代码的检测方法及系统 - Google Patents

一种网页中恶意代码的检测方法及系统 Download PDF

Info

Publication number
CN102542201B
CN102542201B CN201110442308.8A CN201110442308A CN102542201B CN 102542201 B CN102542201 B CN 102542201B CN 201110442308 A CN201110442308 A CN 201110442308A CN 102542201 B CN102542201 B CN 102542201B
Authority
CN
China
Prior art keywords
script
malicious code
code
phrase
function
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.)
Active
Application number
CN201110442308.8A
Other languages
English (en)
Other versions
CN102542201A (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 Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology 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 Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201110442308.8A priority Critical patent/CN102542201B/zh
Publication of CN102542201A publication Critical patent/CN102542201A/zh
Application granted granted Critical
Publication of CN102542201B publication Critical patent/CN102542201B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本申请提供了一种网页中恶意代码的检测方法及系统,以解决杀毒软件无法有效检测出网页中恶意代码的问题。所述的方法包括:捕获浏览器接口的接口函数;在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本;对脚本中的内容进行分析并检测恶意代码。无论是通过网页源代码来运行的脚本,还是由第三方来支持运行的脚本,本申请都可以将其捕获并对应脚本中的检测恶意代码,进而可以有效的阻断恶意代码在运行的脚本中触发漏洞,下载木马来危害操作系统的情况,使得用户可以正常的浏览和使用安全的网页。

Description

一种网页中恶意代码的检测方法及系统
技术领域
本申请涉及计算机安全技术,特别是涉及一种网页中恶意代码的检测方法及系统。
背景技术
黑客通常是在网页中使用恶意的动态脚本来构造的恶意网页代码,如通过在javascript脚本中书写恶意代码,脚本运行时其中的恶意代码会触发漏洞,然后在操作系统中运行下载病毒木马的程序,进而对操作系统造成危害。
因此需要查找出恶意代码并阻止其运行,才能阻止恶意代码后续对操作系统的危害。目前大部分杀毒软件都是通过检测特征码,即一个或多个特定的字符串特征,针对单个网页源代码的文本内容进行静态检测,所述静态检测是对恶意代码的文本进行静态分析的方法。
静态检测的具体做法是,首先打开一个网页时会先将网页下载到本地缓存中,然后再读取网页的源代码来显示网页,杀毒软件在读取源代码的过程中就会进行匹配检测,若匹配到上述的特征码,就认为该网页中含有恶意代码,会将该网页拦截不予显示。
但是黑客可以将恶意代码嵌入网页中由第三方来支持运行的脚本中,例如将恶意代码嵌入Flash支持运行的脚本中,Flash支持运行的脚本是通过虚拟机进行解析后,通过浏览器接口来动态运行的。Flash支持运行的脚本本身并不存在于网页的源代码中,因此杀毒软件没有办法检测Flash支持运行的脚本,也就不会执行拦截操作,使得嵌入Flash支持运行的脚本中的恶意代码能够触发漏洞,下载木马来危害操作系统,因此杀毒软件无法有效检测出网页中的恶意代码。
发明内容
本申请提供了一种网页中恶意代码的检测方法及系统,以解决杀毒软件无法有效检测出网页中恶意代码的问题。
为了解决上述问题,本申请公开了一种网页中恶意代码的检测方法,包括:
捕获浏览器接口的接口函数;
在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本;
对脚本中的内容进行分析并检测恶意代码。
优选的,所述对脚本中的内容进行分析并检测恶意代码,包括:
根据预置的词组规则将脚本中的内容进行分解为特定的词组;
根据特征码对所述特定的词组进行恶意代码检测。
优选的,所述根据预置的词组规则将脚本中的内容分解为特定的词组,包括:
以预置的词组规则中的词法分割符为分割标识,将脚本中的内容分割为多个代码块;
将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容。
优选的,所述特征码中包括恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合,所述根据特征码对所述特定的词组进行恶意代码检测,包括:
将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。
优选的,将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合以预置的公式进行计算;若计算结果超过恶意代码阈值,则该脚本中含有恶意代码。
优选的,若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码。
优选的,在IE内核浏览器中,所述捕获浏览器接口的接口函数,包括:
使用钩子函数捕获IE内核浏览器中IActiveScriptParse接口的ParseScriptText函数。
优选的,在IE内核浏览器中,所述在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本,包括:
在IActiveScriptParse接口调用ParseScriptText函数传递要运行的脚本给脚本解释引擎之前,通过所述钩子函数拦截要运行的脚本。
相应的,本申请还公开了一种网页中恶意代码的检测系统,包括:
捕获模块,用于捕获浏览器接口的接口函数;
拦截模块,用于在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本;
分析并检测模块,用于对脚本中的内容进行分析并检测恶意代码。
优选的,所述分析并检测模块,包括:
词组分解子模块,用于根据预置的词组规则将脚本中的内容分解为特定的词组;
恶意代码检测子模块,用于根据特征码对所述特定的词组进行恶意代码检测。
优选的,所述词组分解子模块,包括:
分割单元,用于以预置的词组规则中的词法分割符为分割标识,将脚本中的内容分割为多个代码块;
匹配并查找单元,用于将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容。
优选的,所述特征码中包括恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合,所述恶意代码检测子模块,包括:
匹配单元,用于将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。
优选的,所述恶意代码检测子模块,还包括:
计算单元,用于将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合以预置的公式进行计算;
比较单元,用于若计算结果超过恶意代码阈值,则该脚本中含有恶意代码。
优选的,阻断并报告模块,用于若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码特征。
优选的,在IE内核浏览器中,所述捕获模块,用于使用钩子函数捕获IE内核浏览器中IActiveScriptParse接口的ParseScriptText函数。
优选的,在IE内核浏览器中,所述拦截模块,用于在IActiveScriptParse接口调用ParseScriptText函数传递要运行的脚本给脚本解释引擎之前,通过所述钩子函数拦截要运行的脚本。
与现有技术相比,本申请包括以下优点:
首先,针对杀毒软件无法有效检测出网页中恶意代码的问题,本申请首先捕获浏览器接口的接口函数,在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本,再对脚本中的内容进行分析并检测恶意代码。无论是通过网页源代码来运行的脚本,还是由第三方来支持运行的脚本,本申请都可以将其捕获并对应脚本中的检测恶意代码,进而可以有效的阻断恶意代码在运行的脚本中触发漏洞,下载木马来危害操作系统的情况,使得用户可以正常的浏览和使用安全的网页。
其次,现有技术中只要检测到网页的源代码中包含特征码中的任意一种字符串,就会认为网页中含有恶意代码,然后执行拦截操作。但是所检测的字符串可能是编程人员配置的,而非恶意代码的,因此也会产生误报的情况。恶意代码中不会只包含一两个字符串,还会有其他的特征,因此现有技术中仅检测字符串还可能会产生漏报的情况,而本申请通过预置的词组规则将脚本中的内容分割为多个代码块,并对每个代码块进行匹配以查找函数名、关键字和变量内容。然后与特征码检测恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合进行匹配,若检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合,还需要计算其超过恶意代码阈值,才会认为脚本中含有恶意代码。使得恶意代码的检测更智能化和合理化,大大的提升了恶意代码检测的粒度和准确性,不会产生误报和漏报的情况,使恶意代码检测技术上升了一个台阶。
附图说明
图1是本申请实施例所述一种网页中恶意代码的检测方法流程图;
图2是本申请优选实施例所述一种网页中恶意代码的检测方法中分析并检测恶意代码流程;
图3是本申请优选实施例所述IE内核浏览器的网页中恶意代码的检测方法流程图;
图4是本申请实施例所述一种网页中恶意代码的检测系统结构图;
图5是本申请实施例所述一种网页中恶意代码的检测系统中分析并检测模块结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
现有技术中,杀毒软件仅可以检测嵌入网页的源代码中的恶意代码,而针对网页中由第三方来支持运行的脚本,杀毒软件没有办法检测其中嵌入的恶意代码,也就不会执行拦截操作,使得脚本运行时嵌入其中的恶意代码能够触发漏洞,下载木马来危害操作系统,因此杀毒软件无法有效检测出网页中的恶意代码。
本申请提供一种网页中恶意代码的检测方法,无论是通过网页源代码来运行的脚本,还是由第三方来支持运行的脚本,本申请都可以将其捕获并对应脚本中的检测恶意代码,进而可以有效的阻断恶意代码在运行的脚本中触发漏洞,下载木马来危害操作系统的情况,使得用户可以正常的浏览和使用安全的网页。
参照图1,给出了本申请实施例所述一种网页中恶意代码的检测方法流程图。
步骤101,捕获浏览器接口的接口函数;
在浏览器中会通过浏览器接口的接口函数传递要运行的脚本给脚本解释引擎,然后通过脚本解释引擎来解析并运行所述脚本,为了可以获得要运行的脚本,因此可以首先捕获浏览器接口的接口函数。例如,通过钩子函数对所述接口函数进行HOOK处理,即通过钩子函数捕获所述接口函数,在接口函数传递要运行的脚本给脚本解释引擎之前,获得要运行的脚本的实时控制权。当然还可以使用其他的方法捕获所述接口函数,本申请对此不做限定。
步骤102,在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本;
捕获所述接口函数后,可以在接口函数传递要运行的脚本给脚本解释引擎之前,获得要运行的脚本的实时控制权,拦截到要运行的脚本。
步骤103,对脚本中的内容进行分析并检测恶意代码。
拦截到要运行的脚本后,可以对脚本中的内容进行分析,并且检测其中的恶意代码。
步骤103中分析并检测的步骤可以分为:
步骤1031,根据预置的词组规则将脚本中的内容进行分解为特定的词组;
本申请中预置了词组规则,例如通过所述词组规则可以分析出脚本中的函数名、变量内容等,因此可以根据预置的词组规则将脚本中的内容分解为特定的词组,如函数名、变量内容等。
步骤1032,根据特征码对所述特定的词组进行恶意代码检测。
本申请中还设置了特征码,所述特征码中可以包括恶意代码中常用的词组习惯,例如正常编程中会根据一些约定对函数进行命名,而恶意代码中的函数名比较不常见,或有其特殊的命名习惯,还包括一些恶意代码中需要用到的变量内容等。
因此可以根据所述特征码对所述特定的词组进行恶意代码检测,例如从脚本中分解出函数名和变量内容后,与特征码进行匹配,检测脚本中是否含有恶意代码。
一个网页中往往包含各种资源文件,如CSS样式表、HTML文件和多个javascript文件,还包括第三方来支持运行的脚本,如Flash运行的脚本等。恶意代码存在各种文本变形和文本分片情况,黑客可以将恶意代码分散于网页中的各个资源文件中。而现有的杀毒软件通常只针对单个HTML文件或单个固定的javascript文件进行静态分析,因此若黑客将恶意代码嵌入Flash运行的脚本中,或CSS样式表运行的脚本中,此时现有的杀毒软件不会对其进行静态分析,因此有可能会导致恶意代码触发漏洞,下载木马危害操作系统。
综上所述,针对杀毒软件无法有效检测出网页中恶意代码的问题,本申请首先捕获浏览器接口的接口函数,在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本,再对脚本中的内容进行分析并检测恶意代码。无论是通过网页源代码来运行的脚本,还是由第三方来支持运行的脚本,本申请都可以将其捕获并对应脚本中的检测恶意代码,进而可以有效的阻断恶意代码在运行的脚本中触发漏洞,下载木马来危害操作系统的情况,使得用户可以正常的浏览和使用安全的网页。
参照图2,给出了本申请优选实施例所述一种网页中恶意代码的检测方法中分析并检测恶意代码流程图。
步骤201,以预置的词组规则中词法分割符为分割标识,将脚本中的内容分割为多个代码块;
预置的词组规则中包含词法分割符,所述词法分割符是指换行、空格、分号(;)、下划线(_)和百分号(%)等脚本代码语句的分割字符。通常在编程中,换行和分号用于表示语句的结束,空格用于区分每个词,因此根据所述的词法分割符可以将将脚本中的内容分割为多个代码块。
词组规则中设置词法分割符的语句如:
#define _ps_isspace(c)(c==″‖c==′\t′‖c==′\r′‖c==′\n′)
#define _ps_iskwchar(c)((c>=′0′&&c<=′9′)‖(c>=′a′&&c<=′z′)‖(c>=′A′&&c<=′Z′)‖c==′_′)
#define_ps_isstrchar(c)(_ps_iskwchar(c)‖c==′%′)
……
步骤202,将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容。
将预置的词组规则中的词组定义分别与每个代码块进行匹配,来查找特定的词组,所述特定的词组包括函数名、关键字和变量内容。
所述函数名是脚本代码中具有特定功能代码段的函数的名称。如fuctionabc(){…}中,所述abc就是函数名。
所述关键字是指脚本代码中内置的关键语法词。如function abc(){…}中,所述function就是关键字。
所述变量内容是指脚本代码中某个变量所被赋予的值。如a=1,b=’abc’,其中1和abc就是变量内容,所述变量内容具体可以分为整型串和字符串等。
因此具体实施中,根据程序编写的规则,可以分析出脚本代码中的函数名、关键字和变量内容。
例如,在代码中关键字是确定的,因此可以在所述词组定义中规定出这些关键字,首先分别对每个代码块进行匹配来查找关键字。
所述关键字中的一个是function,则function后面以空格区分的代码块就是函数名,如上例中function abc(){…},function和abc以空格区分,则abc就是函数名。
对于变量内容的查找而言,在代码的编写中通常一个变量是通过等号(=)被赋予某个变量内容的,因此首先会查找等号(=),而后查找后面的数字“0”到“9”这10个数字,或查找26个英文字母即“a”到“z”,“A”到“Z”,此时由所述字母或数字组成的变量内容可能会用单引号(’)或双引号(”)和其他代码区分开。
步骤203,将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。
所述特征码可以包括:1)黑客常用的函数名;2)恶意代码中常见的变量内容(如字符串和整型串等);3)恶意代码中必须使用的关键字;4)函数名、变量内容和关键字的特定组合等内容。
上述脚本代码分解出了特定的词组,包括函数名、关键字和变量内容,因此可以将所述特征码和所述特定的词组进行匹配,以检测出分析后的内容中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。
其中,恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合代表:恶意代码中惯用的1)函数名、2)关键字、3)变量内容和4)函数名、变量内容和关键字的特定组合其中任意几项的组合,既可以包括全部4项,也可以包括其中的任意3项或2项或1项。
步骤204,将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合以预置的公式进行计算;
本申请预置了一个恶意代码计算公式,用于将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合进行计算,对所述计算结果再进行后续的处理。
例如,预先设置在恶意代码的计算中恶意代码中惯用的函数名占20%,关键字占30%,变量内容占20%,函数名、变量内容和关键字的特定组合占30%。脚本1检测中含有恶意代码中惯用的函数名、变量内容和函数名、变量内容和关键字的特定组合,即计算结果为20%+20%+30%=70%。脚本2检测中含恶意代码中惯用的有函数名和关键字,即计算结果为20%+30%=50%。
步骤205,若计算结果超过恶意代码阈值,则该脚本中含有恶意代码。
本申请还会预先设置恶意代码阈值,若上述的计算结果超过该恶意代码阈值,则脚本中含有恶意代码,否则不含有恶意代码。
例如,将恶意代码阈值设置为60%,则上例中脚本1的计算结果为70%>60%,则脚本1中含有恶意代码,脚本2的计算结果为50%<60%,则脚本2中不含有恶意代码。
优选的,若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码。
若经过上述分析和检测步骤后,检测到脚本中含有恶意代码,则会阻断脚本的运行以恶意代码的执行,并且报告检测到的恶意代码,具体实施中可以报告给用户和杀毒软件的服务器端。
例如上例中检测到脚本1中含有恶意代码,则会阻断脚本1的执行,并且报告脚本1中含有恶意代码中惯用的函数名、变量内容和某个函数名、变量内容和关键字的特定组合。而脚本2中不含有恶意代码,因此会正常运行脚本2。
现有技术中只要检测到网页的源代码中包含特征码中的任意一种字符串,就会认为网页中含有恶意代码,然后执行拦截操作。但是所检测的字符串可能是编程人员配置的,而非恶意代码的,因此也会产生误报的情况。恶意代码中不会只包含一两个字符串,还会有其他的特征,因此现有技术中仅检测字符串还可能会产生漏报的情况,而本申请通过预置的词组规则将脚本中的内容分割为多个代码块,并对每个代码块进行比配以查找函数名、关键字和变量内容。然后与特征码检测恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合进行匹配,若检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合,还需要计算其超过恶意代码阈值,才会认为脚本中含有恶意代码。使得恶意代码的检测更智能化和合理化,大大的提升了恶意代码检测的粒度和准确性,不会产生误报和漏报的情况,使恶意代码检测技术上升了一个台阶。
本申请所述的方法适用于检测各种浏览器的网页中的恶意代码,但是不同浏览器中浏览器接口的接口函数不同,因此在具体实施的处理中存在不同之处,下面以IE内核浏览器为例具体论述。
参照图3,给出了本申请优选实施例所述IE内核浏览器的网页中恶意代码的检测方法流程图。
步骤301,使用钩子函数捕获IE内核浏览器中IActiveScriptParse接口的ParseScriptText函数;
例如,具体实施中可以使用函数HookIDispatch,针对IDispatch接口的成员函数Invoke的调用进行HOOK处理。然后使用函数Hooked_QueryInterface,针对IUnknown接口(查询接口)的成员函数QueryInterface进行HOOK处理。经过上述处理后,最终就可以通过COMInterface Hook的方法,将vbscript.dll/jscript.dll提供的IActiveScriptParse接口的ParseScriptText函数进行HOOK处理。
步骤302,在IActiveScriptParse接口调用ParseScriptText函数传递要运行的脚本给脚本解释引擎之前,通过所述钩子函数拦截要运行的脚本;
步骤303,以预置的词组规则中的词法分割符为分割标识,将脚本中的内容分割为多个代码块;
步骤304,将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容;
步骤305,将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合;
步骤306,将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合以预置的公式进行计算;
步骤307,若计算结果超过恶意代码阈值,则该脚本中含有恶意代码;
步骤308,若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码特征。
参照图4,给出了本申请实施例所述一种网页中恶意代码的检测系统结构图。
相应的,本申请还提供了一种网页中恶意代码的检测系统,包括捕获模块11、拦截模块12和分析并检测模块13,其中,
捕获模块11,用于捕获浏览器接口的接口函数;
拦截模块12,用于在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本;
分析并检测模块13,用于对脚本中的内容进行分析并检测恶意代码。
优选的,所述分析并检测模块13,包括:
词组分解子模块131,用于根据预置的词组规则将脚本中的内容分解为特定的词组;
恶意代码检测子模块132,用于根据特征码对所述特定的词组进行恶意代码检测。
优选的,所述的系统还包括:
阻断并报告模块14,用于若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码特征。
参照图5,给出了本申请实施例所述一种网页中恶意代码的检测系统中分析并检测模块结构图。
优选的,所述词组分解子模块131,包括:
分割单元1311,用于以预置的词组规则中的词法分割符为分割标识,将脚本中的内容分割为多个代码块;
匹配并查找单元1312,用于将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容。
优选的,所述特征码中包括恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合,所述恶意代码检测子模块132,包括:
匹配单元1321,用于将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。
计算单元1322,用于将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合以预置的公式进行计算;
比较单元1323,用于若计算结果超过恶意代码阈值,则该脚本中含有恶意代码。
优选的,在IE内核浏览器中,所述捕获模块11,用于使用钩子函数捕获IE内核浏览器中IActiveScriptParse接口的ParseScriptText函数。
优选的,在IE内核浏览器中,所述拦截模块12,用于在IActiveScriptParse接口调用ParseScriptText函数传递要运行的脚本给脚本解释引擎之前,通过所述钩子函数拦截要运行的脚本。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种网页中恶意代码的检测方法及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (12)

1.一种网页中恶意代码的检测方法,其特征在于,包括: 
捕获浏览器接口的接口函数; 
在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本; 
对脚本中的内容进行分析并检测恶意代码; 
其中,所述对脚本中的内容进行分析并检测恶意代码,包括:根据预置的词组规则将脚本中的内容分解为特定的词组;根据特征码对所述特定的词组进行恶意代码检测;所述特征码中包括恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合;
所述根据预置的词组规则将脚本中的内容分特定的词组,包括:以预置的词组规则中的词法分割符为分割标识,将脚本中的内容分割为多个代码块;将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容,其中,所述词法分割符是指脚本代码语句的分割字符。 
2.根据权利要求1所述的方法,其特征在于,所述根据特征码对所述特定的词组进行恶意代码检测,包括: 
将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。 
3.根据权利要求2所述的方法,还包括: 
将检测到的恶意代码中惯用的函数名、关键字、变量内容或其中若干项的组合以预置的公式进行计算; 
若计算结果超过恶意代码阈值,则该脚本中含有恶意代码。 
4.根据权利要求3所述的方法,其特征在于,还包括: 
若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码。 
5.根据权利要求1所述的方法,其特征在于,在IE内核浏览器中,所述捕获浏览器接口的接口函数,包括: 
使用钩子函数捕获IE内核浏览器中IActiveScriptParse接口的 ParseScriptText函数。 
6.根据权利要求5所述的方法,其特征在于,在IE内核浏览器中,所述在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本,包括: 
在IActiveScriptParse接口调用ParseScriptText函数传递要运行的脚本给脚本解释引擎之前,通过所述钩子函数拦截要运行的脚本。 
7.一种网页中恶意代码的检测系统,其特征在于,包括: 
捕获模块,用于捕获浏览器接口的接口函数; 
拦截模块,用于在浏览器接口调用所述接口函数传递要运行的脚本给脚本解释引擎之前,拦截所述要运行的脚本; 
分析并检测模块,用于对脚本中的内容进行分析并检测恶意代码; 
其中,所述分析并检测模块,包括:词组分解子模块,用于根据预置的词组规则将脚本中的内容分解为特定的词组;恶意代码检测子模块,用于根据特征码对所述特定的词组进行恶意代码检测,所述特征码中包括恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合; 
所述词组分解子模块,包括:分割单元,用于以预置的词组规则中的词法分割符为分割标识,将脚本中的内容分割为多个代码块;匹配并查找单元,用于将每个代码块分别与所述词组规则中的词组定义进行匹配,以查找特定的词组,所述特定的词组包括函数名、关键字和变量内容,其中,所述词法分割符是指脚本代码语句的分割字符。 
8.根据权利要求7所述的系统,其特征在于,所述特征码中包括恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合,所述恶意代码检测子模块,包括: 
匹配单元,用于将所述特征码分别与所述特定的词组进行匹配,检测所述特定的词组中是否存在恶意代码惯用的函数名、关键字、变量内容或其中若干项的组合。 
9.根据权利要求8所述的系统,其特征在于,所述恶意代码检测子模块,还包括: 
计算单元,用于将检测到的恶意代码中惯用的函数名、关键字、变量内 容或其中若干项的组合以预置的公式进行计算; 
比较单元,用于若计算结果超过恶意代码阈值,则该脚本中含有恶意代码。 
10.根据权利要求7所述的系统,其特征在于,还包括: 
阻断并报告模块,用于若检测到脚本中含有恶意代码,则阻断恶意代码的执行并报告检测到的恶意代码特征。 
11.根据权利要求7所述的系统,其特征在于,在IE内核浏览器中,所述捕获模块,用于使用钩子函数捕获IE内核浏览器中IActiveScriptParse接口的ParseScriptText函数。 
12.根据权利要求11所述的系统,其特征在于,在IE内核浏览器中,所述拦截模块,用于在IActiveScriptParse接口调用ParseScriptText函数传递要运行的脚本给脚本解释引擎之前,通过所述钩子函数拦截要运行的脚本。 
CN201110442308.8A 2011-12-26 2011-12-26 一种网页中恶意代码的检测方法及系统 Active CN102542201B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110442308.8A CN102542201B (zh) 2011-12-26 2011-12-26 一种网页中恶意代码的检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110442308.8A CN102542201B (zh) 2011-12-26 2011-12-26 一种网页中恶意代码的检测方法及系统

Publications (2)

Publication Number Publication Date
CN102542201A CN102542201A (zh) 2012-07-04
CN102542201B true CN102542201B (zh) 2015-01-21

Family

ID=46349067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110442308.8A Active CN102542201B (zh) 2011-12-26 2011-12-26 一种网页中恶意代码的检测方法及系统

Country Status (1)

Country Link
CN (1) CN102542201B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778365B (zh) 2012-10-18 2015-05-13 腾讯科技(深圳)有限公司 一种检测网页隐藏内容的方法,及设备
CN105791293B (zh) * 2012-11-07 2019-05-24 北京奇虎科技有限公司 多核浏览器中恶意网址拦截方法和装置
CN103870752B (zh) * 2012-12-18 2018-04-20 百度在线网络技术(北京)有限公司 一种用于检测Flash XSS漏洞的方法、装置与设备
CN103425931B (zh) * 2012-12-27 2017-07-18 北京安天网络安全技术有限公司 一种网页异常脚本检测方法及系统
CN103259790B (zh) * 2013-04-28 2017-09-08 深信服科技股份有限公司 网络安全的防护方法及装置
CN103401845B (zh) * 2013-07-15 2017-08-25 Tcl集团股份有限公司 一种网址安全性的检测方法、装置
CN103413092A (zh) * 2013-09-10 2013-11-27 深圳市共进电子股份有限公司 一种网络终端禁止恶意代码注入的方法
CN103699840B (zh) * 2013-12-12 2017-07-11 北京奇虎科技有限公司 网页劫持的检测方法和装置
CN104484603A (zh) * 2014-12-31 2015-04-01 北京奇虎科技有限公司 网站后门的检测方法及装置
CN105224870B (zh) * 2015-09-15 2019-04-26 百度在线网络技术(北京)有限公司 可疑病毒应用上传的方法和装置
CN106599684A (zh) * 2015-12-30 2017-04-26 哈尔滨安天科技股份有限公司 一种无实体文件恶意代码的检测方法及系统
CN105550585B (zh) * 2016-03-02 2020-09-04 腾讯科技(深圳)有限公司 一种应用程序安全性测试方法、装置和系统
CN106529292A (zh) * 2016-10-31 2017-03-22 北京奇虎科技有限公司 病毒查杀的方法及装置
CN108228680A (zh) * 2016-12-22 2018-06-29 广州市动景计算机科技有限公司 页面防劫持方法、装置及客户终端
CN106778276B (zh) * 2016-12-29 2020-06-19 北京安天网络安全技术有限公司 一种检测无实体文件恶意代码的方法及系统
CN106650450A (zh) * 2016-12-29 2017-05-10 哈尔滨安天科技股份有限公司 基于代码指纹识别的恶意脚本启发式检测方法及系统
CN106650453B (zh) * 2016-12-30 2019-11-05 北京启明星辰信息安全技术有限公司 一种检测方法和装置
CN108319822B (zh) * 2018-01-05 2020-05-12 武汉斗鱼网络科技有限公司 一种保护网页代码的方法、存储介质、电子设备和系统
CN108563946A (zh) * 2018-04-17 2018-09-21 广州大学 一种浏览器挖矿行为检测的方法、浏览器插件和系统
CN108875378A (zh) * 2018-06-12 2018-11-23 珠海市君天电子科技有限公司 脚本病毒检测方法、装置、电子设备及存储介质
CN110008707A (zh) * 2019-03-22 2019-07-12 杭州优云软件有限公司 一种it系统自动化运维脚本执行的安全保障方法
CN112860564A (zh) * 2021-02-24 2021-05-28 深圳海付移通科技有限公司 代码检测方法、服务器、用户端、计算机设备和存储介质
CN116383835B (zh) * 2023-06-06 2023-09-19 北京比瓴科技有限公司 基于多安全工具的软件漏洞监测方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101459548A (zh) * 2007-12-14 2009-06-17 北京启明星辰信息技术股份有限公司 一种脚本注入攻击检测方法和系统
CN101471781A (zh) * 2007-12-24 2009-07-01 北京启明星辰信息技术股份有限公司 一种脚本注入事件处理方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8201245B2 (en) * 2007-12-05 2012-06-12 International Business Machines Corporation System, method and program product for detecting computer attacks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101459548A (zh) * 2007-12-14 2009-06-17 北京启明星辰信息技术股份有限公司 一种脚本注入攻击检测方法和系统
CN101471781A (zh) * 2007-12-24 2009-07-01 北京启明星辰信息技术股份有限公司 一种脚本注入事件处理方法和系统

Also Published As

Publication number Publication date
CN102542201A (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN102542201B (zh) 一种网页中恶意代码的检测方法及系统
CN108763928B (zh) 一种开源软件漏洞分析方法、装置和存储介质
Gupta et al. Enhancing the browser-side context-aware sanitization of suspicious HTML5 code for halting the DOM-based XSS vulnerabilities in cloud
KR101083311B1 (ko) 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법
CN105491053A (zh) 一种Web恶意代码检测方法及系统
CN109768992B (zh) 网页恶意扫描处理方法及装置、终端设备、可读存储介质
US20110030060A1 (en) Method for detecting malicious javascript
JP2014203464A (ja) クライアントベースローカルマルウェア検出方法
CN111191246A (zh) 一种基于Spring注解的安全开发校验方法
Dhaya et al. Detecting software vulnerabilities in android using static analysis
CN103986731A (zh) 通过图片匹配来检测钓鱼网页的方法及装置
US10242189B1 (en) File format validation
KR20210084204A (ko) 악성 코드 수집 방법 및 시스템
US20220004643A1 (en) Automated mapping for identifying known vulnerabilities in software products
CN101895517B (zh) 一种脚本语义提取方法和提取装置
US9569335B1 (en) Exploiting software compiler outputs for release-independent remote code vulnerability analysis
CN107103243B (zh) 漏洞的检测方法及装置
CN108830082B (zh) 一种基于输出点位置的xss漏洞检测参数自动选取方法
CN105488399A (zh) 一种基于程序关键字调用序列的脚本病毒检测方法及系统
CN114626061A (zh) 网页木马检测的方法、装置、电子设备及介质
CN103390129A (zh) 检测统一资源定位符安全性的方法和装置
CN103152356A (zh) 检测文件样本安全性的方法、服务器和系统
US11886599B2 (en) Method and system for data flow monitoring to identify application security vulnerabilities and to detect and prevent attacks
CN106372508B (zh) 恶意文档的处理方法及装置
TW202219789A (zh) 資料處理方法、裝置、設備及介質

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant