科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道刘锋:支撑“云安全”的核心技术——网页脚本行为判断技术

刘锋:支撑“云安全”的核心技术——网页脚本行为判断技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

最后给大家介绍一下我们智能脚本监控技术的应用,第一个应用就是我们在瑞星2009里面做了一个智能木马防御,查杀功能,阻止木马的下载。

作者:瑞星 来源:瑞星 2008年11月18日

关键字: 瑞星 瑞星安全大会

  • 评论
  • 分享微博
  • 分享邮件

    主持人:各位嘉宾大家下午好!上午我们已经见过面了,所以下午的论坛我希望大家气氛活跃一点,参加这个论坛的大多数嘉宾都是搞技术的,既然是这样,希望大家有问题的话积极的提问,使我们的“云安全”计划给大家讲解的清楚一点。我介绍一下我的同事,一位是瑞星研发部分病毒部经理刘锋先生,还有一位工程师是瑞星研发部的资深的工程师叶超先生,还有一位更隆重的嘉宾是我们研发部的领导,刘刚刘总。刘总穿得很随意,平时也是很低调的人。

    今天下午的论坛的主要议题是智能行为判断技术在安全计划中的应用,这个主题有两个演讲,第一个演讲有请瑞星研发部反病毒部经理刘锋先生给大家带来智能行为判断技术之网页脚本行为判断技术。

图:瑞星研发部反病毒部经理刘锋

    刘锋:各位朋友下午好,非常高兴能够在这里做讲解,今天上午介绍了08的病毒趋势以及当前的病毒传播方式,在这我给大家介绍一下“云安全”的智能网应用。在整个介绍,我们按照几个问题的流程,分成几大块。首先看看我们的目标,游戏网站、论坛还有其他的热点是挂马网页传播的站点。早期的挂马的出发形式一般是A1,但是随着A1控件的出现,还有游戏、播放器这类互联网上常用的软件是挂马运行的重要的途径。我们面对这个问题要解决的首要的目标,实际上首先我们要解决主机安全问题,对于单个的主机我们首先要防御不被挂马入侵。安装了瑞星可能只装了杀毒软件,防火墙这个产品没有安装,所以说我们第二个目标是把我们的信息充分应用。接下来具体看一看问题,分别从三个方面,第一个网马入侵的途径,是挂马网页脚本的关系和挂马脚本的运行特点。首先我们来看一看网马入侵的途径,Windows控件用的越来越广泛了,这些结果提供一些功能,使用脚本或者程序都可以进行简单变成应用,但是这些控件存在一些问题,这些问题是什么呢?它本身的功能的调用有很多是没有经过验证的,是合法调用的还是非法的无法进行判断。正是因为这些原因,所以导致漏洞,比如说百度的漏洞就是他的升级版本许多得到验证,从网站上下载自己的程序运行,这就是所谓的空间漏洞。第二个是运输工具漏洞,这是利用微软通过运行代码,来下载代码。第三种挂马方式是文件型挂马,这种挂马方式实际上在网页的页面本身不存在任何问题,而是下载的文件有问题,比如说大部分的漏洞,都是网马页面。运行文件导致本地的运行程序产生问题。

    挂马的方式分为直接挂马、框架挂马和RGP挂马,直接挂马非常简单,黑客直接入侵网站,把用户网站上的页面修改了,把自己的页面挂上去。框架挂马是放一个连接或者其他的来做。RGP挂马是对用户的访问进行劫持,比如说你访问了某一个页面,他会在页面里面直接插入。接下来我们看看挂马页面的生成方式,早期的是入侵者自己写的,但是随着产业链的发展,这种简单的工作已经交给专门的页面来做。而先进的挂马页面往往是针对多个漏洞的,为什么会出现这种情况,因为漏洞是存在与用户的主机上的并不是网站。针对个人得机器是为什么?为了提高被挂木马感染的范围,采取了自动脚本的方式,首先看你装了什么软件,然后看哪些控件是有用的,然后针对你装的空间来进行针对性的代码。我们再来看看挂马的脚本本身的特点,挂马脚本本身的特点在早期实际上是一个明马,如果是明马的话,我们可以非常简单的看出来,首先看一下这一段脚本,通过这一段脚本,我们可以很明显的看到首先创造一个对象,即使不懂程序也知道它在干什么,然后打开了一个连接,下载程序,不懂,把这个文件保存下来,下载,接着把这个程序运行起来,如果这是一个木马程序的话,很简单这是一个利用漏洞下载木马的简过程,我们对它加密以后,这个代码即使让程序员来看也不知道什么意思,只有让代码跑开才知道。就是如果没有看到程序代码,可能都没有办法判断它是做什么的。

    然后我们在前面介绍了我们的问题以及这个问题的一些具体细节性的东西,接下来我给大家介绍一下我们传统的方法对这个问题有辅助性帮助的技术。我们把这些技术分成了两类,一类是运行拦截的,包括了恶意网址拦截和网页脚本的杀毒,恶意网址拦截就是防火墙,网页脚本的杀毒,比如说文件监控,挂完以后漏了一个文件下来,利用文件监控把文件杀一遍,判断是不是病毒,这都属于静态杀毒范围,时效性和有效性不高,网页脚本杀毒这一块本身存在对加密定型没有办法处理,文件监控,如果是挂马型的话,监控的第一是我下载的文件你能查到,我稍微做一点希望改变你能查到吗?这是不可能的。然后看一下运营式的拦截,网页脚本监控不是说我们现在的智能脚本技术,这是两、三年前就出现的技术,实际上基本的原理拦截了Windows架构中的脚本执行系统,一旦发现有脚本执行就把脚本块取出来去查杀这类似于文件监控的概念。这种技术我们个人认为在目前的状况下本身是一个积累,因为脚本可能是分块的,在你监控导脚本块的时候,拿到的不是完整的脚本,所以对说病毒你拿到一块不可能判断出来是病毒还是不是病毒。

    然后我们再来看看主动防御技术,大家都很熟悉了我也不做特别详细的介绍当然这一块的优点是可以目前差到未知的病毒,是基于行为规则来判断的,但是也存在一些问题,比如说我定的很宽松,对于用户来说存在一种情况,就是说他没有这方面的专业知识,没有变化办法判定。第二我直接告诉你这是有危险的,直接删除,这存在误报的问题。

    90%的网马感染机器是需要利用到脚本的,这是第一个信息,第二个信息我们基本上可以得出一个结论,如果能够把脚本问题解决了让这些脚本没有办法跑起来,那么网马是不是还可以下载到用户机器上呢?第三我们要解决脚本问题,判断它是不是恶意的脚本,首先面对的一个问题是脚本的加密和变形导致的问题,这个问题是非常复杂的,因为脚本本身是一种程序,是一种编程,我可以很简单的编写一些算法,你如果利用虚拟执行,对加密和变形了我们可以参考原来旧的PE的杀毒方式,一个是广谱特征,还有比较非常有效的虚拟机,我通过虚拟机可以经过这个程序的流程,可以把加密的代码解开,但是对于脚本来说这不是特别现实的,因为脚本只是一个文本性的语言,它的很多的功能调用依赖于系统,第二脚本的方便性它本身就是提供非常方便的编写语言和工具,它的门槛低。第二他可以调动非常多的第三方的CAM控件,你如果要做到虚拟执行,实现它的紧密动作那就意味着你必须要有非常多的第三方控件,这在效率上、代价上还有精力上是没有办法来处理的。

    然后我们分析了这个问题以及我们的一些想法,我们发现用特征法没有办法搞定这个事情用虚拟执行方式也存在很大的问题,再看看我们提到的主观防御。这有点类似于警察办案,第一步收集证据,第二步通过专家经验来匹配勘定这个行为是不是恶意的,也就是说类似于法律,什么能做什么不能做如果做了不能做的事情就是违法犯罪。如果我们能够了解脚本的行为以及动作,是不是可以用规则来进行匹配了?这个答案是肯定的,如果我们能够拦截到脚本的行为是可以做到这一点的。因为漏洞还有挂马脚本本身实际上是依赖于第三方控件或者是系统漏洞来做的,这些漏洞实际上都是有限的,可能是100个、200个,代码都是有特定的,流程也是持续的过程,所以说只要我们能抓住脚本的行为就可以制订专家经验规则来进行行为判定。

    接下来介绍智能行为技术的实现。在这一部分,我们首先给大家介绍一下Windows脚本的运行模型,通过这一块的介绍让大家对整个脚本运行的框架有一个大致的了解,接着介绍一下我们的监控体系架构。最后再介绍一下我们的行为判定规则,就是说里面用到的三项的最主要的技术。首先我们来看看Windows脚本执行架构,分成两大块,一块是脚本数字,第二是脚本引擎,他们两是相互独立,而且有通讯关系的两个模块,脚本数字是整个脚本运行的发起者,也就是说它发起脚本运行,给脚本运行提供环境,这也就是为什么我们发现有很多脚本,比如说ABS、JS可以是混合编程的,在ABS里的变量在JS也可以使用,为什么?因为他们的民族空间是同一个而不是多个。然后提供的另外一个功能,就是说它会接受和响应脚本的系统调用和脚本的一些事件,比如说脚本我需要调用系统的某些功能比如说要改变窗口大小,这些都是通过脚本数字来做的。脚本引擎第一个功能是提供脚本的代码解释执行,第二个他会通知脚本数据脚本引擎本身的一些状态以及脚本执行的状态,第三会调用系统的一些功能。我们通过仔细观察脚本数字和脚本引擎我发现几个有趣的特点:首先脚本数字提供了整个脚本运行环境,脚本数字和脚本引擎之间的通讯是需要用COM接口来实现的。脚本引擎也有一个非常鲜明的特点,他里面的函数都是由COM口构成的,这是我们发现的第二个特点。接下来我们介绍了脚本引擎和脚本数字的关系,脚本引擎和脚本数字通讯的特点,然后再来看看脚本监控系统的模型架构。这是系统提供的脚本数字,这是脚本引擎,我们在中间插入了一个脚本待定引擎,在传统的脚本监控里面,这个脚本产生的事件和系统调用是没有进行系统监控的这就导致了系统无法获取它的监控,所以说传统的不是智能的监控,只是一个脚本块的监控,所以说没有办法进行系统处理。但是大家可能有一个疑问,如果说我只是做一个安全浏览机做一个其他的东西不是一样的吗?在一年多前,我们瑞星实际上做了一个脚本挂马页面的砂箱,当时我们对这个已经有了比较深入的研究了,我们利用了AE盒,自己编写了一个浏览器,然后利用这个浏览器运行我们认为可疑的挂马页面,发现我们可以拦截到非常多的系统相关的调用,原理是基本上一致的,但是最终为什么放弃了?因为里面有两个问题,一个是脚本的加密和解密是脚本引擎自身实现的,他内部做的事情我没有办法拦截掉,那么作为产品出去的话还是有问题的,如果作为自己的砂箱没有办法拦截到所有的数据。第二个我们还发现一个特点,脚本引擎我们曾经提到过,它的系统功能的调用都是通过脚本数字来做的,但是我们发现理论和实践往往是有区别的,脚本引擎可以通过自己的函数来创建系统提供的第三方控件,或者系统提供的一些标准控件。虽然说脚本引擎可以通过脚本数字本身来创建这个对象,但是很多的木马的编写者不这样做他直接通过脚本引擎来做,那这样的话还是没有办法,还是实现不了我们的行为监控。

    然后第三个缺点,我们发现如果把脚本数字替换了,那么在微软的概念里面,利用IE类盒的程序我们是没有办法进行处理的,该下载木马还下载木马,该感染用户还是感染用户,我们就考虑到对Windows脚本的架构来说,不管你脚本数字是什么,脚本引擎是固定的,不可能存在多个脚本引擎,我可以写一个自己的其他的引擎,所以说我们通过脚本代理可以拦截到Windows所有的ABS和JS和系统之间的通讯。我们解决了这个问题之后接下来还有一个问题,脚本引擎本身是可以创建对象,可以调动COM创建第三方控件那就存在一个问题,我们必须对脚本引擎自身的函数进行了解,我们在前面说过,脚本引擎本身是一个COM对象的话,我们就可以做一些手脚和处理了。大家看一下我们的脚本引擎代理,首先脚本数字创造脚本引擎的时候,脚本代理引擎创造一个真正的脚本引擎,接着他会获取脚本引擎的函数的COM对象,这是我们所关心的,我们都可以获取到,但是我们获取的只是我们关心的对象。第三它把COM对象进行了替换,替换成我们自己使用的,这样就等于我们在脚本引擎里面实现了动作监控。我们再来看看我们挂接以后的执行流程,挂接以后的执行流程,我们的脚本引擎,就是说这是脚本代理引擎,调用函数的时候,首先调用的是代理提供的COM对象,代理提供的COM对象如果发现有问题可以直接回去,如果没有问题可以再继续调用使用。

    接下来看就下我们脚本监控的具体的监控技术,我们的脚本监控主要判定技术,给大家介绍三种,一种是溢出攻击防御技术,还有一种是恶意行为的监控体系,还有智能启发监控的扫描技术。首先看看溢出攻击防御技术,溢出代码的入口上,通过执行溢出代码可以做一些特殊的事情,比如说下载程序,获取系统信息,当然这都看溢出者想做什么,也就是说它想做什么就可以做什么。然后对于溢出攻击我们进行过分析,溢出攻击首先必须要有溢出代码,你利用脚本进行溢出,那是不是要有溢出代码?这些溢出代码本身都有一些具体的特征,比如说0704他有自己的特征,可以里面是一个目录、参数,因为不同的溢出有不同的函数,函数有不同的特点,所以这种溢出的特点是很容易找到。第二点这个溢出的代码在脚本中始终存在的,不管你做任何的加密和解密,我们只需要拦截到函数的执行底,在函数执行前检查他的参数和溢出的特征性能匹配,这样就可以非常容易的判定出这个代码是不是溢出代码,然后进行拦截组织整个代码运行。这个技术它的特点就是它对溢出判断是非常准确的,因为主要是两点,一点可以拿到溢出代码,第二点所有的溢出都有典型的特征,我们通过典型的特征进行判断,这是它的优点。第二在脚本的执行中,函数是非常多的,我们在前期的技术里面,基本上是非常多的拦截的,所以这个技术本身对脚本执行的速度有一定的影响,可能会导致脚本运行比较慢。

    接下来介绍一下行为监控技术,首先我们拦截到了脚本运行是调用系统函数的功能,然后在功能执行前,我们检查已经存在的行为序列,执行有一个行为序列,我们把所有的执行的过程可以保留下来,保留下来我们就形成一个行为链,这个行为链保存在这我们怎么检查?在执行之前首先我们有一个专家的经验数据库,这是怎么产生的?我们病毒分析源可以对脚本病毒进行分析,知道某一类的脚本病毒行为序列是什么样的,只要这个行为序列匹配上了我们就可以认为它是一个危害程序,是处于恶意代码,我们就可以终止这个函数的执行,而且也终止后面的任意函数的调用,这样我们就达到了阻止木马下载的目的。但是这个行为监控本身有一个天然的缺陷,因为正常程序也存在行为程序,如果比较宽松的话,很多恶意的就放进去了,起不到防御作用。如果过于严格的话本身存在误报,比如说我定一个非常严格的定义,脚本创造文件我就认为是危害程序就不让你形成,这怎么办呢?我们实际上对这个问题本身也做了一个考虑,然后我们在安全系统中会有一个校验的东西,通过网络进行校验,非常严格准确的规则实际上直接报给用户,确认它是一个恶意行为。对于我们不确定的规则,我们实际上只是提出它本身可能是一个恶意行为。

    然后给大家介绍一下第三种技术,智能启发扫描监控,我们为什么会使用它?它从原理上本身是一个特征码,大家可以会用,你本身就是行为监控的技术,怎么会用到特征码?这是很简单的问题,因为很多利用漏洞的程序在用户的主机上是不存在一些漏洞的,因为现在很多安全工具辅助用户打补丁,用户的安全意识也提高了,大部分的网马起效的可能是一、两个起效,那为什么还要做特征码?这时候比如说一个用户利用QQ漏洞,但是这个漏洞在用机上都不存在,都不存在,代码就跑不起来,我们恶意行为监控,通过行为监控的时候发现它没有异常行为,就认为这个是正常的,很显然用户这个机器上不会中毒。但是换一个用户,如果有这个漏洞,我们就可以抓住他。但是并不是所有的用户都安装了我们的程序,我们的目的是在获取更多的信息,比如说恶意网址,拿过来可以加到防火墙库里面,可以保护更多的用户。所以说针对这一块我们做了一些处理,因为大部分的时候我们看到的是明码而不是加密过后的代码,这样的话,利用漏洞也好、其他方式也好,它的代码和漏洞本身是有限的,每个漏洞它的代码特征、明码特征实际上是非常相似的,这时候就可以利用我们的广谱特征进行差,而不是说加密以后几十个特征变成几十万个特征,这样我们可以用非常少的代价来实现功能。因为是一个明码查毒,准确是非常高的,但是因为脚本是文本式的你要做广谱杀毒要做智能匹配这需要花费一定的代价,而且我们这样做对脚本本身有影响。

    我们在前面给大家简单介绍一下脚本监控的技术,接下来看一下智能网页脚本监控的优缺点,第一个优点非常明确,可以把网络威胁阻止在外。第二个优点因为我们是基于行为,不用产生网址库或者非常大的病毒库,所以这是一个轻量级的行为监控系统,所以升级维护的代价都是非常小的。第三因为我们是拦截在脚本引擎这一块,而不是脚本数字,脚本数字可以由非常多,比如说基本上所有的工具,像IE、QQ、MSN,实际上都包括了,还有一些现场直播的工具,游戏类的有大话西游,还有CS,CS我们曾经发展过它本身被挂马,玩游戏的时候中毒。如果用我们的智能脚本监控系统,只要他利用到IE类盒都可以监控到。它的缺点,这只是一个监控技术,它执行时肯定会导致一些系统问题,还需要我们在里面加入一些特征匹配和漏洞,漏洞溢出攻击这种匹配是比较耗时的,会拖慢整个脚本运行的速度。

    第二个问题,我们提了三种挂马类型,其中有一个是文件型挂马,利用网页连接、恶意网址我们可以拦到,但是对于光标文件和动画文件,本身文件内部的架构和脚本是没有关系的,这种是没有办法做到拦截的。当然这两种文件有非常明显的特征,它的运行结构是非常  类似的,我们可以简单的利用文件特征在病毒库里面添加进去。

    最后给大家介绍一下我们智能脚本监控技术的应用,第一个应用就是我们在瑞星2009里面做了一个智能木马防御,查杀功能,阻止木马的下载。第二个它是一个网络威胁的探针,可以把它收集到的怀疑为病毒或者确认为病毒的网址,或者由这个网址下产生的下载地址传输到我们的安全系统,在我们的安全系统里进行深入的挖掘,然后传入我们的自动分析和处理系统,然后快速的加到病毒库里以保护更多的人。我的讲解基本上就到这,谢谢大家!

    主持人:非常感谢刘锋的精采演讲,也非常的卖力气,喝了好几次水。下面我们有10分钟的茶歇时间,茶歇过后我们会请叶超先生进行下一阶段的演讲。刚才我看到大家拍我们的PPT这没有必要,我们的PPT会下载给你们的。谢谢大家!

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章