存储 频道

云安全支撑技术之本机程序行为判断技术

  【IT168 资讯】今天非常高兴,在这边跟大家一起探讨一下技术。今天我要讲的是 基于行为的恶意代码检测系统,这个技术大家都不陌生,这个技术成为我们瑞星安全策略整个实施辅助的资深技术。在讲恶意行为检测系统之前我先讲一讲传统的检 测系统,这个从病毒软件出现就已经有了,首先这个技术是一个静态的识别技术,然后这个病毒特征码是来自于什么地方呢?从病毒体内提取的原始数据片断以及该 片断的位置信息,这个相信大家都很容易理解。病毒特征码这个技术在这么多年的应用中也有了许多的变化和改进,我列了三点,大家可以看一下,第一个是全自 动,就是把病毒中的物质信息给去了,这样的话,反病扫描器在扫描病毒的时候,会进行一个全方位的搜索,这个好处是当特征码的位置变换的时候也可以检测到。 但是缺点是相对来说速度慢一点。第二个变化是更多的位置的描述,这个什么意思呢? 我举了两个,一个是基于格式分析和代码分析。基于格式分析,第一个搞出函数,我可以定义一个导出函数PE3的地方,这是一个位置的描述,这个地方有需要支 持我就必须首先做一遍PE的格式,这是位置描述的一点。第二点是代码分析,我还是举PE文件,我第三个被调用的函数,偏移三个地方这也是一个位置描述,这 个位置描述我们需要怎么样得到?需要进行一次简单的代码分析。所以说这两点都是特征码位置方面的变化和改进。第三点是更灵活的数据改进,这就是大家常听到 的广谱特征。另外还提供了满足更丰富的数据片断描述,这就是传统的技术。这个技术的缺点和优点我们看一下,优点非常明显的,不然的话也不会被应用于这么多 年,这么多产品当中。它的优点第一个是精确,误报很少,一般情况误报都是由病毒分析源造成的;第二扫描速度快。缺点呢,第一点我们从病毒特征的来源考虑, 提取自病毒体,所以说这就导致了一个缺点是滞后于病毒的出现的,只有有了病毒体、病毒样本才可以提取病毒码。第二个,抗特征变化性有限,病毒特征码其实是 原始数据片断,当这个数据片断变化的时候,或者说位置变化的时候,虽然有以下的改进可以在一定范围内控制变化,但是其实在我们这个互联网病毒时代,其实已 经远远不够了。各种各样的代码变形,还有重编译等等等等,都已经导致了特征码检测技术越来越吃力。

  下面我给大家讲一下人类社会的特征码技术,为什么讲这个?我想告诉大家,反病毒这个行业和人类社会定罪什 么其实是非常接近的。首先看一下人的指纹技术,指纹技术认可度高步初犯的时候截取指纹,就像我们发现了一个病毒,截获它的样子,然后再犯的时候就可以从指纹库 提取指纹,然后对照一下,确定到底是不是病毒。既然人类社会所运用的技术和我们的反病毒技术如此相近,我们就来看一下人类社会是怎么判罪的,这张图有五个 角色我简单的讲一下,首先在最底下可以看到人和监视器,人可以理解为目击证人,作用就是搜集信息,这边是监视器我想大家虽然对公共场所的监视器应该非常熟 悉了,连地铁里都有,都可以看到,这两个是最底下的,负责搜集信息。搜集到信息会提交给警察机构,警察机构做的事情就是录口供,破案的时候要找证据这都是 搜集和组织证据的过程,最后警察机构对犯罪嫌疑人提起诉讼,移交到法院,法院根据民法或者刑法来判罪。这个就是一个人类社会判罪定罪的大致过程和简单的模 型,可能讲的有不太准的地方,但是大致 过程是这样的这里面最重要的一点就是民法和刑法,就是法怎么样判出来的不是一样的,最重要的是法。那么我们就提出一问题,是不是可以给一个程序来判罪呢? 答案是肯定的。

  那我们要怎么做呢?第一步首先把程序看成一个人,接着就可以制定适用于这些人的法律,必须是适用于这些人 的而不是我们人类社会的法律,第三监视这些人的动作,第四把这些动作整理归纳、搜集,最后再根据法律,就是刚才适用于这些人的法律来判定这个人到底是好是 坏,过程非常简单,而且思维的逻辑也非常的简单。

  下面我开始对这个行为分析,就是恶意代码检测技术做一个简单的介绍。首先是定义,将一系列已经定义好的恶 意行为进行规范,根据规范监视做了什么,然后再根据这个规范判定是好是坏。我想说一下,其实这个技术并不是什么新技术,因为思考的过程非常简单的话,这个 过程出现的比较早,我相信今天早上大家听过“云安全”计划的话,我相信大家都应该已经知道,其实瑞星在01年和03年都有出过基于行为的病毒技术产品。另 外,行为分析技术是分析专家判定病毒经验的应用。

  下面我来讲一下行为分析的模型,是一个简单的模型,在这里我把整个行为分析分成了三层:一判定层,二组织 层,三监控层。这三层都必须工作于恶意行为库这个范畴之内,就好象法官判罪,警察搜集证据等等,都必须在法律框架下。这张图就比较明显一点了,首先我们看 到底下一排是程序,把它画成了人的样,离程序最近的是监控层,里面有很多的监控点,再上来一点是组织层,组织层经过了监控层对程序的监视搜集信息,搜集之 后要做两点:一、把相关的程序组成一个团伙——程序的团伙,有团伙之后,必须整理出这个团伙做过的哪些事情,记下来,就是犯罪证据。我们可以看到七个程 序,经过监控层和组织层之后组成了三个团伙。最后是判定层,就是法官,他会对这三个团伙分别根据恶意行为库来判定到底什么过错。恶意行为库我们必须把这三 层牢牢的控制在恶意行为库的指导下这三层才能正常的工作,我们不需要去组织没有用的数据。既然恶意行为库这么重要,我们就来看一下恶意行为库怎么制定?恶 意行为库里面最重要的元素——恶意动作和恶意行为,本身是一个病毒分析经验的应用,因为病毒看到最多的是病毒分析,所以说除了病毒分析专家之外,没有再合 适的人可以做这个人选了,只有病毒分析专家才能记住这个恶意行为。

  下面简单的讲一下三层模型中,他们的职能还有实践时应该注意什么。判定层的职责是将组织层提供的数据和恶意进行 比对,判定它是不是恶意行为。我们需要考虑在满足需求的情况下,恶意行为是如何判定的?这里面我列了两组,第一个是基于持续或者并重,基于动作的持续,也 就是说这个程序做的动作是有先后顺序的,或者说没有先后顺序,只要你做了我就认为你是,所以说前者的精确度肯定比后者高。第二是实施判定和事后判定,程序 每做一个动作就判定,直到发现你是的时候,就可以结束你。可以做一个行为的阻断,事后判定是让你所有程序全部跑完,然后再做抽象的判定。

  下面我来讲一下组织层,组织层的职能是组织存在国际关系的发起者,记录其必要的动作信息。我们需要考虑什么呢?首先必须满足我们的需求,然后 在满足这个需求的情况下怎么样组织这些动作发起者。在程序创建完以后我们要比对一下创建出来的文件和动作发起者的文件是不是一样?第二点我们是不是可以把 抽象成文件感染?如果说一个程序或者说一个PE文件进行修改,那修改什么?这时候我们可以粗糙的判定为是一个文件感染动作。这是举两个例子说明动作怎么加 工怎么抽象。

  第三点需要记录什么?把东西记录下来就是为了找到他曾经干过什么?影响的东西是什么?我们可以把修改的注册表和其他系统资源记录下来,这样好处是我们事后可以进行一个回顾操作。

  这边我对刚才说的以什么方式来组织,三个方式做了比较,可以看一下。我来给大家讲一下,首先看这个发起者,我们可以发现木马和它的伙伴进程,这 个就是木马的辅助进程,这时候如果以这种方式来组织这些动作发起者的话,就和木马关联到一块儿了。以线程的看一下,我们可以看到很多木马会向正常的系统插 入恶意代码,然后通过远程线路的方式来启动这个代码,这时候如果我们站在进程的角度看的话,没有任何关系。如果说我们按照通过连接线上的创建,我们可以知 道这个线程是谁创建的,我们发现这个线程是木马创建的,当它做坏事的时候,我们可以找到它,是由木马发起的,这个就是线程的好处,我可以精确到线程的精确 度上面。代码块的典型关系是木马和他安装的APA钩子,APA钩子是被动代码,它的启动不依赖于木马,而是依赖于被他启动的钩子。当正常进行一个文件操作 的时候就自然而然的进入到APA钩子,这时候这个APA钩子代码执行的时候,它的上下文都是正常进行的PIT还有TIT等等,但是他确实在搞无疑代码。那 么如果我们跟踪所有代码块的流向,我们发现这个恶意代码的调用是来自这个代码块的,我们就可以根据代码块从哪里来?反向的追踪过去就可以找到了,这其实是 一个恶意代码之间的逻辑关系的反追踪。我想大家听“云安全”的时候,也注意到了,一个威胁发现的时候,我们去追诉它的来源是非常重要的,可以让我们提前预 防,所以在本机里面有这样一个让我们主动去追诉恶意行为的发起者。

  下面我们来看一下监控层,监控层的职能是在满足需求的情况下搜集程序做过什么。三种实践方式,环境模拟、实施监控、虚拟机和环境模拟,这张图是 进行比较一下,实施监控和环境模拟都是与真实运行,代码真实的在CPU上面跑,所以说速度是很快的,而虚拟机加环境模拟比较慢一点。实施监控可以完全的跑 下来,就是我们平常的跑程序一样,而环境模拟,虚拟机和环境模拟要看这个环境模拟真实不真实,还要看CPU内存等等模拟的真实不真实。危险性这里面要提醒 的是,如果说一个木马跑起来,实施监控,必然已经对系统造成了影响。那么环境模拟可能是比较危险,因为这个东西总的来说,环境模拟是控制不住代码的运行 的。再看监控力度,实施监控和环境模拟可以定位函数级,就是调用级别,最常用的是APL,虚拟机和环境模拟,可以把监控的力度缩小到指令级,当然函数级也 是可以的,复杂度来说,实施监控是最简单的,环境模拟还有虚拟机加模拟是比较困难的,首先我们要看被模拟的环境还要看我们的需求。比如说DOS这个系统要 虚拟出来的话非常简单,因为里面的工作非常小。但是如果是NT,NT有这么多的APL机构,我们要模拟出来的话是非常困难的,还要看CPU的复杂结构。然 后新的指令等等,也要做架构,最终可能就比较困难了。

  产品化趋势,虚拟机加环境模拟可以应用于扫描器,就是动态的扫描病毒。代表技术,实施监控的代表技术就是木马行为防御,这是采用了实施监控来实 现监控行为的。环境模拟代表技术是自动分析技术,这是瑞星用的,对整个Windows系统做了一个桥梁。虚拟机加环境模拟这是DOS检测,这个技术里面有 一个完整的DOS的CPU模拟,还有未知的Windows95是一样的。

  刚才我讲的技术的模型以及模型的一般性的实现,那现在看一下这个技术的优缺点,首先讲一下优点,其实脚本的行为监控的时候就提到了,优点是检测 率高,最主要的是可以检测还没有检测到的样本。另外是后期的代价比较小,不像病毒测试码需要每天升级。所以说后期的维护代价是比较小的。再看看缺点,一他 的整个运作方式是依赖于程序的执行的,假如说一个程序的执行是有条件的,好比一个病毒只有星期五的时候才执行,那么其他的时间就不是病毒吗?是的,但是我 不能把星期一到星期五都模拟一遍,所以这个行为技术如果是依赖于程序执行的话,必然会造成一个优化。反病毒行业的基本要求就是精确,不应该把误报、询问用 户等等都让用户来做,那么在这个基础上这个缺点已经被放大了,而且可能已经遮住了他所体现出的优点。

  我们看一下技术实力,就是瑞星的木马行为防御,讲这个之前,我们首先要明白瑞星的木马行为防御目的是什么?目的是检测木马、蠕虫等以进程为单位 的恶意代码,发现并组织恶意进程以及相关文件。那么在这种情况下,恶意行为库这里面有恶意动作和恶意行为,最后一个是自释放钩子,木马起来以后,发现动态 库放一个钩子进去,然后这个动态库就自然而然的被加载到游戏进程里面然后就可以盗密码。有了这些内置以后还有一个可拓展的恶意动作,就是一个正常的程序动 作加上一个约束,我们叫自定义特征。我们发现有很多情况下我们无法用内置的动作来对恶意行为进行描述,为什么要加约束呢?其实是这样的,当我把手伸向一个 人的脸的时候有两种情况一可以慢慢的伸,而很快的伸,慢慢地温柔地伸的话就是爱护,如果快快的话就是打巴掌了。

  恶意行为我们定义为是多个不重复的内置恶意动作和一组有先后顺序的扩展恶意动作,这就是恶意行为的描述。然后讲一下木马行为防御的判定层的实 现,根据我们的目标,我们的判定是根据进程集进行判定的,为了实现这个,实施比对,我们必须每个进程集合进行配合,然后对内置的恶意动作,我们的命令要求 就是发生即可,是采用被动的方式,是顺序无关的,而拓展的恶意动作就是顺序有关的。

  木马行为防御的组织层的实现,我们把组织层组织动作发起者的时候,我们采用了进程,相关进程。相关进程的关系一是创建关系,二是释放关系,创建 关系是非常好理解,就是天然提供的关系,数字进程。释放关系是为了弥补创建关系的,我举一个例子,A点EXE释放了一个B点EXE,在系统内某个时间B点 启动了,这不是它启动的,这时候如果光从创建关系来看的话,我们已经丢失了,无法找到A和B的关系,我们只能知道A曾经释放出来一个文件。第二点在组织实 践的时候,我们把所有的可见层都忽略了,相信没有木马起来的时候会特地弹一个截面你中木马了,所以我们把可见层都忽略了。第三必要时将程序动作加工成恶意 动作。

  最后来看三层里面的最后一层,监控层,监控层没有什么可说的,就是有一些传统的四大监控,文件监控、进程监控、注册表监控及关键API调用监控,如果有了这四个监控整个木马防御实施起来是非常容易的,没有一点难度。

  下面看一下怎么弥补这个行为分析的缺点的,首先本地白名单是肯定有的,需要厂商来维护做一个定制的升级,用户可以按照自己的需求往名单里面添加 文件。在今年“云安全”策略上来之后,我们又增加了一个基于“云安全”的威胁信息参考认证,这是我觉得作为一个白名单来说最需要的一个特点,就是广阔的软 件覆盖面,不管是工业方面的、特殊方面的都可以覆盖到,只要这些专业领域的人员参与了我们“云安全”,就可以获得这类软件的威胁信息参考认证。

  我们看看怎么样扬长?首先把瑞星的木马防御系统定位,定位为“云安全”辅助支撑技术,可以找到互联网之间的代码逻辑关系,木马行为防御可以找本 机内的恶意行为代码逻辑关系。由于程序分析找到的样板是经过一次恶意行为判定的,所以就极大的缩小了威胁恶意行为的样板关系,可以帮我们缩小这个寿命的范 围,不仅能缩小范围更重要的是提高了质量。另外如果说我们可以程序指定的时候,干了什么事记录下来,为我们的制作分析系统提供一些预处理,那么我们的制作 分析系统,在范围小、样板质量高又有依据的情况下,我们就可以获得更快的响应速度。综上几点使木马行为防御系统有了支撑“云安全”的辅助支撑技术。

  看一下未来要做什么?需要实现一个快速虚拟机,因为虚拟机目前来说跑的比较慢,要快速虚拟机的实现是有必要的。另外模拟环境的实现,他们在跑起 来的时候,会掉很多无关紧要的API,所以模拟环境的实现也是有必要的。更细力度的信息组织,要修改一些代码的时候,可能先会把WPV去掉,这只是非常简 单的指令,我们也可以把它说成一个动作,那就是去芯片那写保护。要实现这样细的一个东西,就需要一个虚拟机,虚拟机可以拦截到指令级别,就可以分析指令也 可以抽象的去做修改API的工作了。

0
相关文章