一种Web恶意代码检测方法及系统的制作方法
【技术领域】
[0001]本发明涉及关于Web恶意代码检测及技术领域,特别是涉及Web类型的木马、病毒等恶意代码的实时检测方法及系统。
【背景技术】
[0002]随着互联网的飞速发展,针对互联网应用的网络攻击行为也愈加泛滥。在各种网络攻击行为中,针对网站进行恶意代码植入(网页挂马、网页病毒、Webshell后门等)成为最流行,危害也最广泛的攻击方式之一。
[0003]恶意代码(Unwanted Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的。恶意代码的分析方法有多种类型,一般传统恶意代码分析方法分为基于代码特征的分析方法、基于语义的分析方法、基于代码行为的分析方法三种,这些方法都具有一定的局限性:
人工检测:打开网页,点击右键查看源文件,根据网页恶意代码的种类也可以查看是否包含恶意代码,但这种方法局限性很大。
[0004]基于特征码的检测法:这是使用最广泛最古老的方法,通过提取恶意代码的样本分析采集他们的独有的特征指令序列,当检测软件扫描文件时,将当前的文件与特征码库进行对比,判断是否有文件片段与已知特征码是否匹配,这是将网页挂马的脚本按脚本病毒处理进行检测,但是网页脚本变形方式、加密方式比起传统的PE格式病毒更为多样,检测起来也更加困难。
[0005]启发式检测法:这种方法的思想是为恶意代码的特征设定一个阈值,扫描器分析,当文件的特征值类似恶意代码的特征程度,就将其看作是恶意代码。例如对于某种恶意代码,一般都会固定的调用特定的一些内核函数(尤其是那些与进程列表、注册表和系统服务列表相关的函数),通常这些函数在代码中出现的顺序也有一定的规律,因此通过对某种恶意代码调用内核函数的名称和次数进行分析。
[0006]基于行为的检测法:包括基于行为的精确匹配和模糊匹配。精确匹配主要针对一些比较直接的恶意行为,如在注册表启动项里添加项目,修改系统文件夹下的内容等。模糊匹配为主要的判别方法,大部分恶意程序在运行时调用到的API函数都是一些普通程序所用到的,但是对比一下就能发现恶意程序会以异常的频率调用某些特殊的或平时较少见得API函数,或者以某种特定组合调用相关函数,模糊匹配就是基于此点来进行判断,这种方法可与启发式检测法结合使用。
[0007]针对上述技术的不足之处,现有技术采用一些新的基于统计与特征分析并采用虚拟机技术,主要的新技术有:客户端蜜罐技术网页恶意代码隐藏在正常的WEB通信中,传统的基于端口的防火墙(F i r e w a 11)难以阻止它的传播,基于内容(P a y 1 ο a d )的防火墙或入侵检测系统(IDS)可以检测已知的网页恶意代码,但网页恶意代码更新很快,混淆或加密技术应用普遍,这就使传统的安全设备不能有效地检测。为了收集潜在威胁的信息,发现新的工具,确定攻击特征,以及研究攻击者的动机,出现了蜜罐技术(honeypot),就是通过精心布置网络陷阱来吸引黑客入侵。传统的蜜罐主要指的是服务器端蜜罐,但网页恶意代码是在客户机端运行,因此,Lance Spitzner首先提出了客户端蜜罐(client-side honeypot或honeyclient)这个概念。
[0008]与传统的蜜罐不同,客户端蜜罐针对客户端软件可能存在的安全薄弱性,通过主动地开启客户端软件来访问服务器,监控有无异常行为出现,对未知恶意程序进行跟踪分析,进而达到研究学习并保障安全的目的。客户端蜜罐主要针对的是Web浏览器和E-mail客户端,因此它需要数据源,面临着如何达到大的网络覆盖面的挑战。为了解决这一点,客户端蜜罐将蜜罐和爬虫(spider)结合在一起,用爬虫爬取网络url来寻找可能存在的通过客户端软件执行的恶意软件。基本上所有种类的客户端都包含有三个连续的处理步骤:首先,将所有的待处理对象放入一个队列中,接着,客户端来请求队列中的对象,最后通过分析来确定队列中的对象是否含有恶意成分。在请求与处理对象的同时,对象队列可以被扩展。
[0009]沙盒过滤技术网关级安全产品阻断恶意网页在技术上的一个主要问题就是如何判断一个网页是否是恶意网页。现在大多数恶意网页中的恶意代码是用JavaScript编写的,这些JavaScript通过HeapSpray技术触发本地ActiveX控件的漏洞而进行木马下载并运行,而这些恶意的JavaScript代码为了躲避检测一般都进行了混淆加密处理,如下是一段真实的恶意网页中的JavaScript代码:在面对混淆加密后的JavaScript代码,单纯的通过关键字搜索来识别恶意网页的办法将会失效,在这种情况下最有效的办法就是通过内置的HTML以及JavaScript解析引擎在一个虚拟环境中对网页中的JavaScript进行实际的解析执行,并在解析执行过程中跟踪JavaScript代码的行为,例如创建ActiveX控件并集中大量的申请内存等,从而准确识别恶意网页。这种检测方式称为沙盒检测(Sandbox),通过这种方法理论上检测率是很高的。
[0010]但在现实实现这种检测方案时,检测程序内置的HTML以及JavaScript解析引擎有可能在功能上没有实现完整,或者一些行为与真实的浏览器有偏差,还有运行环境毕竟和真实的客户机是不同的,总之会与浏览器有或多或少这样或那样的不同,而这些不同却可以被恶意网页的编写者所利用来躲避检测程序的跟踪检查,也就是说恶意网页在运行恶意代码之前首先检查看自己是否运行在真实的浏览器中,如果不是,那它会什么都不做,这样检测程序内置的HTML以及JavaScript解析引擎将无法察觉这是一个恶意网页,因为恶意代码根本没有运行。相反,当恶意网页检查发现自己是运行在真实的浏览器中时,它便会运行恶意代码了。下面就具体介绍几种可能的方式:
1.在D0M中,一些对象有许多别名,如:document.locat1n,window, locat1n,document.URL是等价的;window,window.window,window.self,window.parent,window.self.self.self.self是等价的;
任一个全局变量都自动成为window的成员。
[0011]恶意网页可以利用这一点来检测自己是否运行在真实的浏览器中,如果安全产品中自己实现的JavaScript解析引擎对D0M别名的特性实现不完整的话,就可被恶意代码发现,从而让恶意网页逃过检测。
[0012]2.通过使用HTMLtag的一些功能进行测试,已判断当前的运行环境是Sandbox还是浏览器,如meta在设定的Set-Cookie时使用了 HttpOnly属性,HTML协议规定在使用了HttpOnly属性后,这个meta设定的Cookie将不能被页面中的脚本访问到,如果安全产品的JavaScript解析引擎对meta的一些特性实现不完整的话,就可能被恶意网页利用逃过检测。
[0013]3.1mage对象是JavaScript的内建对象,可以通过语句var img = new Image()来创建对象,在创建Image对象后可以通过语句img.src=http: //www.exist.com/a.jpg来从网络上获取图片,当浏览器遇到这句话时,会向www.exist.com发出http请求,获取图片a.jpg,如果这个图片从www.exist.com成功获取,浏览器会调用img的onload()方法,如果这个图片在www.exist.com上不存在或者 www.exist.com 根本就不存在,浏览器会调用img的onerrorO方法,恶意网页可以利用这些特性来来判断当前的运行环境是Sandbox还是浏览器。
[0014]4.当javascript代码中出现语法错误或者函数的无穷递归调用的错误,浏览器会调用window.0nerror(),恶意网页中通过故意引入语法错误或无穷递归调
用的错误来判断当前的运行环境是Sandbox还是浏览器,如果安全产品的沙盒对错误处理的实现不完整的话,例如在遇到语法错误时可能停止解析了,而没有象真实的浏览器那样去调用window.0nerror,那么就可能被恶意网页利用逃过检测。
[0015]还有很多其它可以采用的方法如对Ajax的特性进行探测,对事件的处理顺序,对plug-1n的测试,对同源策略的测试等都可以用来探测当前的运行环境是在浏览器里还是在沙盒里。
[0016]通过以上分析可以看出要利用沙盒检测的方式对恶意网页进行检测,很重要的一点就是对浏览器的一些关键特性要尽可能模拟。
[0017]然而,无论是新技术还是传统技术,均存在一定的不足之处:
在目前的Web恶意代码检测技术中,通常使用的检测方法主要是基于与恶意代码特征库对比的定期检测,其测试的基本原理是,首先通过爬虫获取目标应用所有的链接地址及内容,或者在web应用服务器上定期获取网页源代码内容,然后按照事先定义的恶意代码特征库对内容逐一进行检测,对比匹配结果以判定是否存在安全漏洞。
[0018]此方法至少存在的如下问题:1)恶意代码特征库难以做到全面且更新滞后于恶意代码出现,检测结果将会产生漏报。2)检测动作为周期性行为,存在一定的滞后性。3)对于大规模部署环境下的恶意代码检测难以做到实时高效。
【发明内容】
[0019]本发明的目的在于:针对现有技术中存在的上述技术问题,提供一种能够快速准确的web恶意代码检测检测方法和系统,实现web恶意代码检测实时性,提高web恶意代码检测的覆盖率。
[0020]本发明是通过以下技术方案实现的:一种Web恶意代码检测方法,基于web应用源代码库、恶意代码特征库、网页代码行为分析、白名单和人工分析,综合检测并判定是否存在web恶意代码;包括以下步骤:
(1)在web应用服务器安装恶意代码检测代理工具,提供实时监控机制对特定的web网站目录中文件的写操作进行监控,当发现有新文件被写入、或者原有文件内容有变更时,则将变更文件标识与文件内容打包后实时传输到恶意代码检测服务器;
(2)恶意代码检测服务器接收到恶意代码检测代理的提交内容后,启动检测机制;
(3)检测结果判定步骤(2)的结果;
(4)可疑恶意代码报警;
(5)向恶意代码检测代理返回安全检测结果,并且恶意代码检测代理记录本次结果。
[0021]进一步,所述步骤(1)中的恶意代码检测代理工具在操作系统启动时自动运行。
[0022]进一步,所述步骤(2)中的检测机制包括如下步骤:
A,提取文件标识及内容,对比检测白名单;若文件匹配白名单则执行步骤(5);
B,依据文件标识到web应用源代码库获取此文件最新版本内容,并与恶意代码检测代理提交的文件内容进行对比,并记录对比结果;
C,将恶意代码检测代理提交的文件内容与恶意代码特征库进行匹配,记录结果;
D,将恶意代码检测代理提交的文件内容进行行为分析,判断网页是否含有恶意属性,并记录检测结果。
[0023]进一步,所述步骤(3)检测到步骤(2)中的步骤(b)、(c)、(d)中检测结果有任一项异常,则执行步骤(4)进行报警。
[0024]进一步,所述的可疑恶意代码报警为将检测结果进行实时报警并记录到数据库。
[0025]进一步,所述的可疑恶意代码报警为由人工处理检测结果,若判断为正常,则将此文件标识及内容加入恶意代码检测服务器白名单。
[0026]一种Web恶意代码检测系统,包括:恶意代码检测代理模块、恶意代码检测服务器白名单模块、源代码库查询及检测模块、恶意代码特征检测模块、恶意代码行为检测模块、检测结果判定及报警模块、检测结果查询模块和管理模块;
所述的恶意代码检测代理模块为用户监控Web服务器文件变更,并向恶意代码检测服务器提交变更文件标识及内容,获取检测结果;
所述的恶意代码检测服务器白名单模块用于对目标文件进行白名单查询,输出结果;所述的源代码库查询及检测模块用于对应用源代码进行文件查询并与目标文件进行对比,输出结果;
所述的恶意代码特征检测模块用于并对目标文件进行恶意代码特征检测,输出结果;所述的恶意代码行为检测模块:基于解析引擎,用于执行并跟踪目标文件行为,输出检测结果;
所述的检测结果判定及报警模块:用于对检测结果进行判断,并进行多种方式的报警; 所述的检测结果查询模块:用于管理员查询报警结果及历史检测结果;
所述的管理模块:用于管理和维护白名单、恶意代码特征库、恶意代码行为规则。
[0027]综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明通过综合运用web应用源代码库对比、恶意代码特征库、网页代码行为分析、白名单和人工分析,能够有效解决恶意代码检测的漏报行为,提高了恶意代码检测的准确率,平衡了恶意代码检测过程中误报率和漏报率存在的天然矛盾,优化了恶意代码检测过程中的响应效率,并解决了大规模应用部署场景下无法快速有效发现恶意代码的问题。
【附图说明】
[0028]本发明将通过例子并参照附图的方式说明,其中:
图1为本发明的检测方法流程示意图;
图2为本发明的系统模块关系示意图;
图3为本发明的白名单建立、维护过程示意框图;
图4为本发明的恶意代码特征库建立、维护过程示意框图。
【具体实施方式】
[0029]本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0030]本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0031]如图1和2所示的,一种Web恶意代码检测方法几系统,基于web应用源代码库、恶意代码特征库、网页代码行为分析、白名单和人工分析,综合检测并判定是否存在web恶意代码;包括以下步骤:
(1)在web应用服务器安装恶意代码检测代理工具。恶意代码检测代理工具在操作系统启动时自动运行,提供实时监控机制对特定的web网站目录中文件的写操作进行监控,当发现有新文件被写入、或者原有文件内容有变更时,则将变更文件标识与文件内容打包后实时传输到恶意代码检测服务器。
[0032]恶意代码检测代理工具可以部署在多台web服务器,同时向恶意代码检测服务器通信,以实现大规模web部署环境下的恶意代码检测。恶意代码检测服务器以IP和主机名为标识识别恶意代码检测代理工具。
[0033](2)恶意代码检测服务器接收到恶意代码检测代理的提交内容后,启动检测机制;恶意代码检测服务器接收到恶意代码检测代理的提交内容后,启动检测机制。具体步骤包括:
A,提取文件标识、文件路径、文件内容,并计算哈希后记录到文件数据库。然后对比检测白名单。若文件匹配白名单则执行步骤(5),否则继续执行步骤(b)。文件白名单由恶意代码检测服务器单独维护,记录文件标识、文件路径、文件哈希结果、文件详细内容等;
B,依据文件标识到web应用源代码库获取此文件最新版本内容,并与恶意代码检测代理提交的文件内容进行对比。记录对比结果。此功能由源代码库查询及检测模块实现,实现了对主流源代码维护工具的支持,如svn、git、SourceSafe等,不再--列举;
C,将恶意代码检测代理提交的文件内容与恶意代码特征库进行匹配,记录结果;
D,将恶意代码检测代理提交的文件内容进行行为分析,即通过内置的解析引擎在虚拟环境下进行解析执行并跟踪其行为,判断网页是否含有恶意属性,记录检测结果。目标代码的行为分析包
括两个层面内容,一个是基于程序代码执行后对web服务器的操作行为,以判定其对web服务器可能产生的危害;另一方面针对由其产生的HTML及JAVASCRIPT代码进行行为分析,以判定其对最终浏览用户可能产生的危害。
[0034](3)检测结果判定。具体包括,若步骤B、C、D中检测结果有任一项异常,则执行步骤
(4)进行报警. (4)可疑恶意代码报警,具体包括:首先检测结果进行实时报警并记录到数据库。其次由人工处理检测结果,若判断为正常,则将此文件标识及内容加入恶意代码检测服务器白名单。若判断为恶意代码,则分析特征加入恶意代码特征库。
[0035](5)向恶意代码检测代理返回安全检测结果。包括:向恶意代码检测代理返回检测结果,恶意代码检测代理记录本次结果。
[0036]如图3所示的,白名单建立过程,白名单库具体建立维护过程及规则如下。
[0037]文件白名单库由恶意代码检测服务器中的白名单模块维护,用户通过管理模块进行白名单库的建立。白名单可以基于步骤D中步骤7中的分析结果,也可以由用户直接发起建立。其步骤包括:
首先:用户在管理模块中发起添加或删除白名单,添加白名单可指定两种方式的白名单文件类型:基于文件具体路径、基于文件标识。文件具体路径为文件在业务服务器中的相对或绝对路径,若使用此种方式建立白名单,则白名单模块仅验证文件路径及文件名称而不验证文件哈希。文件标识为管理模块为每一个文件维护的唯一标识,文件标识与文件路径及文件哈希内容相关,若使用此种方式建立白名单,则白名单模块将验证文件标识,其中包括文件路径、文件名称、文件哈希等;
其次:白名单模块根据用户指定的文件路径或文件标识,从文件数据库提取文件标识、文件路径、文件哈希结果,并根据白名单类型,添加进入白名单数据库或从白名单数据库删除内容。此处文件数据库内容由步骤(2 )中步骤B建立。
[0038]如图4所示的,恶意代码特征库建立过程,恶意代码特征库建立维护过程及规则如下:
恶意代码特征库可以通过在管理模块中调用恶意代码行为检测模块维护,也可以通过基于恶意代码样本大数据建立特征进行外部数据导入。
[0039]首先,基于恶意代码样本大数据建立特征。通过针对网络中流行的针对web应用的恶意代码进行收集、检测得到初始大数据样本,针对其中样本进行统一的特征分析,建立初始恶意代码特征库;
其次,在系统运行过程中,针对步骤(4)中报警内容进行人工分析,若判定为恶意代码,通过提取恶意代码特征加入恶意代码特征库。
[0040]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
【主权项】
1.一种Web恶意代码检测方法,其特征在于:基于web应用源代码库、恶意代码特征库、网页代码行为分析、白名单和人工分析,综合检测并判定是否存在web恶意代码;包括以下步骤: (1)在web应用服务器安装恶意代码检测代理工具,提供实时监控机制对特定的web网站目录中文件的写操作进行监控,当发现有新文件被写入、或者原有文件内容有变更时,则将变更文件标识与文件内容打包后实时传输到恶意代码检测服务器; (2)恶意代码检测服务器接收到恶意代码检测代理的提交内容后,启动检测机制; (3)检测结果判定步骤(2)的结果; (4)可疑恶意代码报警; (5)向恶意代码检测代理返回安全检测结果,并且恶意代码检测代理记录本次结果。2.根据权利要求1所述的Web恶意代码检测方法,其特征在于,所述步骤(1)中的恶意代码检测代理工具在操作系统启动时自动运行。3.根据权利要求1所述的Web恶意代码检测方法,其特征在于,所述步骤(2)中的检测机制包括如下步骤: A,提取文件标识及内容,对比检测白名单;若文件匹配白名单则执行步骤(5); B,依据文件标识到web应用源代码库获取此文件最新版本内容,并与恶意代码检测代理提交的文件内容进行对比,并记录对比结果; C,将恶意代码检测代理提交的文件内容与恶意代码特征库进行匹配,记录结果; D,将恶意代码检测代理提交的文件内容进行行为分析,判断网页是否含有恶意属性,并记录检测结果。4.根据权利要求1所述的Web恶意代码检测方法,其特征在于,所述步骤(3)检测到步骤(2)中的步骤(b)、(c)、(d)中检测结果有任一项异常,则执行步骤(4)进行报警。5.根据权利要求1所述的Web恶意代码检测方法,其特征在于,所述的可疑恶意代码报警为将检测结果进行实时报警并记录到数据库。6.根据权利要求1所述的Web恶意代码检测方法,其特征在于,所述的可疑恶意代码报警为由人工处理检测结果,若判断为正常,则将此文件标识及内容加入恶意代码检测服务器白名单。7.—种Web恶意代码检测系统,其特征在于,包括:恶意代码检测代理模块、恶意代码检测服务器白名单模块、源代码库查询及检测模块、恶意代码特征检测模块、恶意代码行为检测模块、检测结果判定及报警模块、检测结果查询模块和管理模块; 所述的恶意代码检测代理模块为用户监控Web服务器文件变更,并向恶意代码检测服务器提交变更文件标识及内容,获取检测结果; 所述的恶意代码检测服务器白名单模块用于对目标文件进行白名单查询,输出结果; 所述的源代码库查询及检测模块用于对应用源代码进行文件查询并与目标文件进行对比,输出结果; 所述的恶意代码特征检测模块用于并对目标文件进行恶意代码特征检测,输出结果; 所述的恶意代码行为检测模块:基于解析引擎,用于执行并跟踪目标文件行为,输出检测结果; 所述的检测结果判定及报警模块:用于对检测结果进行判断,并进行多种方式的报警; 所述的检测结果查询模块:用于管理员查询报警结果及历史检测结果; 所述的管理模块:用于管理和维护白名单、恶意代码特征库、恶意代码行为规则。8.根据权利要求6所述的一种Web恶意代码检测系统,其特征在于,所述的恶意代码检测服务器白名单模块对报名单进行建立和维护,其具体步骤包括:首先,用户在管理模块中发起添加或删除白名单;其次,白名单模块根据用户指定的白名单将其添加进入白名单数据库或从白名单数据库删除内容。9.根据权利要求7所述的一种Web恶意代码检测系统,其特征在于,所述的添加白名单可指定两种方式的白名单文件类型,分别为基于文件具体路径和基于文件标识; 所述的文件具体路径为文件在业务服务器中的相对或绝对路径,若使用此种方式建立白名单,则白名单模块仅验证文件路径及文件名称而不验证文件哈希; 所述的文件标识为管理模块为每一个文件维护的唯一标识,文件标识与文件路径及文件哈希内容相关,使用此种方式建立白名单,则白名单模块将验证文件标识,所述的文件标识包括文件路径、文件名称、文件哈希。
【专利摘要】本发明涉及一种Web恶意代码检测方法及系统,基于web应用源代码库、恶意代码特征库、网页代码行为分析、白名单和人工分析,综合检测并判定是否存在web恶意代码;本系统包括:恶意代码检测代理模块、恶意代码检测服务器白名单模块、源代码库查询及检测模块、恶意代码特征检测模块、恶意代码行为检测模块、检测结果判定及报警模块、检测结果查询模块和管理模块。本发明通过综合运用web应用源代码库对比、恶意代码特征库、网页代码行为分析、白名单和人工分析,能够有效解决恶意代码检测的漏报行为,提高了恶意代码检测的准确率,平衡了恶意代码检测过程中误报率和漏报率存在的天然矛盾,优化了恶意代码检测过程中的响应效率。
【IPC分类】G06F21/56, H04L29/06, H04L29/08
【公开号】CN105491053
【申请号】CN201510967518
【发明人】郄军利
【申请人】用友网络科技股份有限公司
【公开日】2016年4月13日
【申请日】2015年12月21日