基于程序执行特征的网页木马检测方法

文档序号:6470723阅读:147来源:国知局
专利名称:基于程序执行特征的网页木马检测方法
技术领域
本发明属于计算机安全领域,涉及一种网页木马检测方法。
背景技术
计算机病毒、木马、间谍软件和恶意代码是近几年来计算机网络面对的最 主要的安全威胁。在计算机病毒、木马、间谍软件和恶意代码的传播途径中, 除垃圾邮件外,还有一条重要的途径就是通过构造特殊的网页将病毒、木马传 播到访问该网页的用户计算机中。这种特殊的网页主要利用操作系统、浏览器、 插件等的各种漏洞,将可执行的恶意代码传播到用户计算机上进行执行,或利 用系统中的解析器、控件的执行权限将网页中的恶意代码自动运行。由于这些 特殊网页的配置和编码较为复杂,并且为了能够躲避杀毒软件的查杀,大多由 人工配置并采用第三方软件进行加密变形处理,因而成为黑客用来传播木马病 毒较为有效的方法。
网页木马即利用特殊网页来传播的木马病毒,特殊网页是木马病毒的载体, 木马病毒通过特殊网页来达到传播的目的。这些特殊网页其本质在于网页而非 木马病毒本身,这些特殊网页通常是将木马病毒的执行代码编码成为该网页的 组成部分,并配合特殊网页自身的代码来激活木马程序,因此黑客群体、杀毒 软件公司和网络安全防御单位将其称之为网页木马。换而言之,网页木马是网 页中内嵌了一段能执行木马病毒的脚本程序,因此,网页木马的本质是内嵌特 殊脚本程序的网页。
据江民反病毒预警中心、江民全球病毒监测网提供的数据显示,截至12月 份,江民反病毒中心共截获计算机新病毒类型总数为363000余种,这一数字是 2006年的六倍多,至此江民杀毒软件KV系列病毒库总量己经超过80万。2007年 全年病毒累计感染电脑34414793台,新病毒感染电脑台数为28879529台,其中 木马病毒感染24875117台,占病毒总数的72.28%,而网页木马在木马病毒中又 占到了3/4强。由此可见,现在网络安全面临的主要威胁是木马病毒,尤其是网
3页木马。
随着计算机网络攻防技术的不断进步,网页木马的传播途径也在悄悄的发 生变化。近几年,利用微软系统漏洞传播一直是网页木马的最主要传播途径。 然而监测结果显示,目前越来越多的网页木马开始绕开微软的系统漏洞,转而 利用国产应用软件的漏洞来进行传播。由于国产软件的漏洞修复动作相对较慢, 因此中毒的机率就会增大,危害时间就会更长。
虽然在对网页木马的检测中杀毒软件公司积累了大量的经验和特征码,但 是由于系统漏洞、浏览器漏洞和第三方插件的漏洞层出不穷,而且黑客也在不 断地对网页木马进行更新升级,采用加密和插入干扰字符等手段来躲避检测。 用户要想躲避网页木马的攻击,必须不断的安装补丁程序或者升级系统,但是
每年每月甚至每一天都会有新的漏洞出现。就在2005年7月,国际报道美国微软 称黑客正在疯狂地试图利用Windows中的两处严重安全缺陷。其中的一个缺陷 影响〃色彩管理模块〃一处理颜色的一个Windows组件;另一个缺陷与微软"Java 虛拟机"的JViewProfiler部分有关,微软称,该缺陷可以被用于控制用户的个人 电脑。此外,在对漏洞信息的获取上,用户和黑客是不对等的。黑客会最先知 道和利用漏洞,而用户却不可能得到及时升级,这些用户的计算机很可能将长 期受到黑客的控制。因此,切断网络木马的传播途径成为防范网页木马最有效 的方法,而网页木马检测方法最主要的是要能检测出隐藏在网页代码中的漏洞 利用代码。随着新的漏洞的出现就会有新的网页木马产生,所以检测、查杀网 页木马将是个长期、艰巨的任务。
现有的网页木马检测方法主要采用的是构建一个庞大的挂马网页特征数据 库,然后对待检测网页进行逐个特征匹配。如果待检测网页中有和特征数据库
相匹配的特征的话,就判断该网页是挂马网页,如果没有的话就判断为非挂马 网页。这种方法存在着以下几个弊端
(1) 这种检测方法需要不断地更新特征数据库,然而随着特征数据库变得 越来越庞大,就会使系统的检测速度下降。
(2) 由于这种检测方法只是对网页进行匹配检测,并没有从木马运行机理 角度去分析,因此当木马病毒编写者对挂马网页屮的特征串进行随机替换时, 这种检测方法就无法检测出该网页是否为挂马网页,从而造成漏检。
(3) 由于这种检测方法采用的是特征匹配,所以在检测网页的时候,只要
4出现特征匹配,系统就会断定这个网页是挂马网页。但是,实际情况中有的网 页虽然和特征数据库的特征相匹配,但却并没有挂马,而是一个正常网页。对 于这种情况,这种检测方法就会造成误检。
因此,对于网页木马的检测,需要明确网页木马所要实现的功能,以及这 个功能在网页代码里是如何实现的。
网页木马的运行原理是利用浏览器本身或第三方软件的漏洞,网页木马编 写者通过编写漏洞利用代码来获得系统执行权限,从而执行下载木马等操作, 以实现木马的扩散。因此,网页木马实现的关键就是编写漏洞利用代码。
术语简介
Shellcode是一段机器指令,是溢出程序和当今多数网络病毒的核心,它通 常是和漏洞联系在一起的。当黑客发现系统漏洞或是第三方软件漏洞时,就会 编写溢出代码来使程序溢出,使得黑客获得程序的执行权限,这样黑客就可以 改变程序的流程,使程序跳转到预先编制好的一段能完成黑客所需要功能的机 器指令上,从而实现病毒的注入或执行。这段机器指令就是Shdlcode。
Heap Spray是一种溢出技术,它是用来描述一段能实现堆溢出的代码。通常 来说,这段代码是通过往进程堆里写入大量重复的字串来实现堆的溢出来获得 对程序执行指针的控制权,进而改变该指针所指向的下一条指令,使程序跳转 到事先定制好的Shellcode上,从而执行Shellcode代码来实现对系统的控制。

发明内容
本发明的目的是为了检测出用户访问的网页是否为网页木马,提出一种基 于程序执行特征的网页木马检测方法。
本发明的基本原理是当前的网页木马都是由溢出代码和一段Shdlcode组 成。如果能确定出被检测网页的源代码中存在溢出代码和Shellcode,就可以说 明这是一个网页木马,从而快速准确的检测一个网页是否为网页木马。
本发明提出的-种基于程序执行特征的网页木马检测方法,具体步骤如下
a. 使用网络爬虫软件获取被检测网页的HTML源代码;
b. 运行脚本解释模块对经步骤a获取得到的网页源代码进行多层解码处理,
从而得到可识别的脚本源码;
因为经步骤a所抓取到的网页源代码在大多数情况下会有多种编码存在,并且有可能出现经过一层解码之后还是个不可识别的脚本代码,因此,在这种情 况下为了能够自动获得可识别的脚本代码,就需要对抓取到的网页源代码进行 多层解码处理,从而来获得网页中可识别的脚本代码。c. 对经步骤b得到的脚本源码进行字节unicode解码(即字节反序解码),如 果解码结果屮出现明显的系统调用和URL下载连接,则说明该脚本要完成木马的 自动下载,告警值加l,然后进行步骤d;若未出现明显的系统调用和URL下载连 接,则直接进行步骤d。判断脚本源码是否存在系统调用,是通过对解码结果进行模式匹配来实现 的,如果解码结果出现LoadLibmryA等系统函数,就说明其存在着系统调用。由于网页木马程序中的Shellcode是以Unicode编码形式出现的,而Shellcode 的目的是为了下载木马病毒到本地机器,所以,为了能实现下载这一功能, Shellcode必须调用系统函数来实现下载,并且,由于这些,木马病毒是来自网 络,所以要给系统函数传递URL。,因此,如果是一个Shellcode程序的话就会有 调用系统函数和导入URL的痕迹出现。所以,在该步骤中,可对网页脚本程序 进行字节反序解码操作。如果解码后的结果中包含有系统函数和URL下载链接, 则说明脚本程序在实现某一文件的自动下载,初步确定该脚本程序屮存在 Shellcode 。d. 对经步骤b得到的可识别的脚本源码进行反汇编操作,然后判断该汇编代 码是否是可执行的,如果是,则说明这一脚本含有Shdlcode代码,告警值加l, 然后进行步骤e;若该汇编代码是不可执行的,则直接进行步骤e;判断汇编代码是否可执行的,是通过查找汇编码中的JMP和CALL指令之后 的地址值是否和指令地址空间相匹配来实现的。因为Shellcode本身是一段16进制的机器码,如果脚本代码中存在Shellcode, 那么把这段可识别的脚本代码进行反汇编后得到的汇编代码肯定是可执行的。 也就是说,如果脚本程序中存在Shellcode,那么经反汇编后所得到的汇编代码 中的JMP和CALL指令之后的地址肯定落在指令地址范围之内。因此,只要判断 汇编代码中的JMP和CALL指令之后的地址是否落在了指令地址范围之内,就可 以判断该汇编代码是否是可执行的,从而判断脚本中是否含有Shellcode。e. 对脚本源码进行程序流程分析,如果发现有明显的对内存写入大量数据 的操作,那么就说明这个脚本源码要实现某种溢出操作,告警值加l;判断对内存写入大量数据操作的步骤如下
1) 通过查找的方法来定位字符串对象和含有大量Unicode编码的对象;
2) 根据步骤1)得到的字符串变量来査找脚本程序中的循环操作。如果
该循环操作实现的功能是对步骤l)所得到的字符串变量进行非正常的自我累加 操作,那就说明是程序正在进行不正常的内存写入操作,从而判断出脚本源码 所要实现的功能之一就是要使堆栈溢出,目的是实现程序的非正常跳转。
含有网页木马的网页中的溢出代码主要采用的是Heap Spray技术。这一技术 的细节是首先使用JavaScript脚本创建很多个string对象,再在每个string对象中 写入一个长长的NOP或NOP-Like链以及紧接着它们的一段Shellcode,然后把这 些对象都存放到堆中。与NOP或NOP-Like链相比,Shdlcode的字串长度很短, 所以只要把溢出后的返回地址写成从堆中随意取出的地址就很有可能落入NOP 或NOP-Like链中,进而执行Shellcode。因此,根据这一思想,在网页木马检测 过程中,首先要定位string对象,判断该对象是否有明显的自我复制来构建 NOP-Like链;其次,检测在脚本程序中是否创建了许多由NOP-Like链和Shellcode 代码填充的string对象。如果这两个条件都满足的话,那就说明该脚本程序中包 含有溢出代码。
f.如果告警值为累计为3的话就说明该网页是一个网页木马,如果告警值 累计1或是2的话,说明该网页是个疑似网页木马,如果告警值累计为0的话
就说明该网页是个正常网页。 有益效果
本发明是利用网页爬虫软件把被检测网页的源代码抓取下来,通过对网页 源码就行多层解码处理,并从木马病毒程序运行机理出发,对解码后的网页源 码进行反汇编和程序流程分析来深层次的检测网页是否挂马,通过这种网页木 马检测方法,避开了进行大量的特征串匹配,免去了建立庞大的特征数据库, 并且,由于采取了从代码执行功能的角度来分析网页的方法,而不是单纯的特 征匹配,所以,如果网页代码所要实现的功能符合网页木马的功能特征,就可 以检测出待检网页是网页木马,这样和传统的检测方法相比大大降低了漏检率 和误检率。又由于免去了大量的特征串匹配操作,也使得检测速度也能相应的 得到提高。


图l为本发明方法的总体流程图。
具体实施例方式
当今网络环境中充斥着大量的挂马网站,而网页木马制造者为了能躲避主 流检测器的检测,对含有网页木马的网页代码进行了一系列精心的修饰来实现 对该网页木马的功能代码的隐藏,例如源码级的变形规避、变量名的替换等。
所以,这时候单纯依靠检测器的特征库来检测网页木马的话就会使漏报率 大为增加。本发明所提出的一种基于程序执行特征的网页木马检测方法,则是 从网页木马运行机理的角度出发来分析待检网页的,而不是简单的模式匹配, 因此具有一定的智能性。具体实现流程如图l所示。
具体实施例分成两个处理阶段,假设www.virus.com/virus.html是一个待 检测的网页。
一、 网页获取及预处理阶段
用户在浏览器地址框输入www.virus.com/virus.html,用户点击确定。在浏 览器对该网页进行解释加载之前,检测器自动启动,检测器用网页爬虫软件把 www.virus.com/virus.html的网页源代码抓取下来并以文本格式存入本地磁盘中, 然后调用脚本解释器对抓取到的网页源代码进行解码处理,来获得可识别的脚 本代码。如果网页源代码中没有不可识别的脚本代码,则跳过此步,进入程序 判决处理阶段。之所以利用脚本解释器是因为这些被挂马的网页的源代码存在 着多种非明文方式的代码来掩藏网页木马的功能代码,倘若对每一种编码方式 都进行处理的话,工作量太大,同时也无法考虑全面,又由于网页中能实现挂 马的代码肯定是用脚本语言编写的,所以不管网页代码如何变形,它们所要遵 循的一点必须是变形后的代码一定是可执行的,可以让浏览器的script引擎执 行的。因为如果变形后的代码是不可执行的话,那么该网页中的溢出代码就无 法被浏览器执行,从而也就使网页丧失了执行木马程序的功能。所以如果是个 网页木马,那么其代码必定是可执行的,也就是说能够被脚本解释器所解释的。 所以利用这一共性,就可以用脚本解释器把不可识别的脚本代码解释成可识别 的脚本代码。
二、 程序判决处理阶段对从网页获取及预处理阶段获得的网页明文代码进行如下步骤的处理
1、 对可识别的脚本代码进行Unicode字节反序解码,如果解码结果中有系 统调用函数和有明显的URL下载链接,则说明自动下载某个程序肯定是这段代 码所要实现的功能之一,因此使告警值加l,并把这个URL下载链接和系统调 用函数当作告警信息告知用户,并进入步骤2进行进一步判断。否则,直接进 入步骤2。
2、 对可识别的脚本代码的Unicode编码部分进行先两两反序后反汇编操作, 得到汇编码后把其中所有的JMP和CALL语句提取出来,分析这些JMP和CALL 指令之后的地址是否是处于指令空间范围之内,如果是,则说明该汇编码是可 执行的,如果这些JMP和CALL指令之后的地址没有落在指令控件范围之内, 则说明该汇编码是不可执行的。当判断出汇编码是可执行时,告警值加l,并进 入步骤3进行进一步的判断。否则,直接进入步骤3。
3、 对可识别的脚本代码的程序流程进行分析,对于脚本代码,先定位字符 串变量,对于正常脚本程序来说, 一个字符串变量一般不会出现超过300次的 自我增长,超过300次则说明该脚本程序正在构建NOP-Like数据块。如果待检 测的脚本程序有这样的操作那就说明这一脚本比较可疑,再进一步确认该脚本 是否创建了许多String对象,并且这些对象都是由NOP-Like链和Shdlcode链 来填充的。则说明这一脚本在进行Heap Spray操作,其目的是为了实现溢出。 这时令告警值加一,并给出相应的告警信息。
4、 最后,判断告警值,如果告警值为3的话,则说明www.virus.com/virus.html 是一个网页木马,如果告警值为小于3且大于等于1的话,则给出风险提示, www.virus.com/virus.html可能是网页木马。如果告警值为0的话,说明 www.virus.com/virus.html是一个正常网页。
9
权利要求
1.基于程序执行特征的网页木马检测方法,其特征在于具体步骤包括a.使用网络爬虫软件获取被检测网页的HTML源代码;b.运行脚本解释模块对经步骤a获取得到的网页源代码进行多层解码处理,从而得到可识别的脚本源码;c.对经步骤b得到的脚本源码进行字节unicode解码,如果解码结果中出现明显的系统调用和URL下载连接,则说明该脚本要完成木马的自动下载,告警值加1,然后进行步骤d;若未出现明显的系统调用和URL下载连接,则直接进行步骤d;d.对经步骤b得到的可识别的脚本源码进行反汇编操作,然后判断该汇编代码是否是可执行的,如果是,则说明这一脚本含有Shellcode代码,告警值加1,然后进行步骤e;若该汇编代码是不可执行的,则直接进行步骤e;e.对脚本源码进行程序流程分析,如果发现有明显的对内存写入大量数据的操作,那么就说明这个脚本源码要实现某种溢出操作,告警值加1;f.如果告警值为累计为3的话就说明该网页是一个网页木马,如果告警值累计1或是2的话,说明该网页是个疑似网页木马,如果告警值累计为0的话就说明该网页是个正常网页。
2. 如权利要求l所述的基于程序执行特征的网页木马检测方法,其特征在于步骤c中,判断脚本源码是否存在系统调用,是通过对解码结果进行模式 匹配来实现的,如果解码结果出现LoadLibraryA等系统函数,就说明其存在着 系统调用。
3. 如权利要求l所述的基于程序执行特征的网页木马检测方法,其特征在于步骤d中,判断汇编代码是否可执行的,是通过査找汇编码中的JMP和CALL 指令之后的地址值是否和指令地址空间相匹配来实现的。
4. 如权利要求l所述的基于程序执行特征的网页木马检测方法,其特征在于, 判断对内存写入大量数据操作的步骤如下1) 通过查找的方法来定位字符串对象和含有大量Unicode编码的对象;2) 根据步骤1)得到的字符串变量来查找脚本程序中的循环操作,如果该 循环操作实现的功能是对步骤1)所得到的字符串变量进行非正常的自我累加操 作,就说明是程序正在进行不正常的内存写入操作。
全文摘要
本发明属于计算机安全领域,涉及基于程序执行特征的网页木马检测方法。本发明利用网络爬虫抓取网页源码,然后经过多层解码后得到可识别的脚本程序,在保留脚本程序的同时对其进行反汇编处理得到汇编源码,再判断这些源码是否存在大量无效指令填充、调用系统级函数、明显的URL链接,最后通过汇编码来深层次的检测网页中是否含有木马。由于现有挂马网站相当一部分都植入了ShellCode,要使网页中的ShellCode能在本地机器中执行,需利用系统漏洞实现缓冲区溢出,使程序跳转到ShellCode代码段上。因此只要分析执行ShellCode的条件,并根据其执行特征来分析源码,就能对待检测网页是否是网页木马做出快速检测。
文档编号G06F21/00GK101673326SQ20081022221
公开日2010年3月17日 申请日期2008年9月11日 优先权日2008年9月11日
发明者昊 张, 李志勇, 华 杜, 越 王, 蔡镇河, 然 陶 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1