




已阅读5页,还剩63页未读, 继续免费阅读
(计算机系统结构专业论文)反病毒虚拟机关键技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 反病毒虚拟机技术是当今反病毒领域的核心技术之一,作为病毒检测的辅 助手段被广泛应用。由于理论和技术上的缺陷,目前的反病毒虚拟机对系统运 行机制的模拟不足、扩展能力差,对于变形病毒解密还原过程的模拟能力也相 当有限,并且只能进行己知病毒的检测。本文选择少有人研究的虚拟执行模型 和反病毒虚拟机运行流程作为研究对象,通过深入的分析和研究指出各项反虚 拟机技术的根源,并提出对虚拟执行模拟和虚拟机运行流程的改进,在此基础 上,还对反病毒虚拟机设计实现过程中的重要问题进行了分析和讨论。 本文的主要贡献如下: 1 提出一种改进的虚拟执行模型。在对传统模型总结归纳的基础上,通过 改变指令操作对象的虚拟方式,从根本上解决反病毒虚拟机扩展能力差的 问题。 2 对反病毒虚拟运行流程进行改进。通过对客户程序进行全程的虚拟执 行,提升反病毒虚拟机对病毒解密还原过程的模拟运行能力:采用静态特 征码扫描和行为分析相结合的病毒检测方式,增强对未知病毒的检测能力。 3 对常见的反虚拟机技术进行分析和总结,结合对虚拟执行模拟和反病毒 虚拟机运行流程的已有改进,给出反病毒虚拟机对异常处理和多线程运行 机制的模拟方案 4 在对w i n d o w s 操作系统p e 程序加载和执行过程进行大量反汇编研究的 基础上,对反病毒虚拟机在运行过程中如何进行文件映射和初始化、如何 协调指令翻译和指令执行任务、如何准确进行特征码扫描和行为数据采集 等问题进行讨论,从而保证虚拟执行结果的正确性,提升虚拟执行的效率, 增强病毒检测能力。 关键词:虚拟执行模型运行流程反虚拟机技术程序加载 a b s t r a c t a b s t r a c t a n t i v i r u sv i r t u a lm a c h i n ei so n eo fc r u c i a lt e c h n o l o g i e si nt h ed o m a i no f a n t i v i r u sn o w a d a y s ,w h i c hi sw i d e l yu s e da sas u p p l e m e n t a r ym e a n so fv i r u s d e t e c t i o n b e c a u s eo ft h ed r a w b a c k so ft h et h e o r ya n dt e c h n o l o g y , c u r r e n ta n t i - v i i u s v i r t u a lm a c h i n ei sl a c ko fa d e q u a t es u p p o r t st ot h eo p e r a t i n gm e c h a n i s m so fo p e r a t i n g s y s t e m ,p o o rs c a l a b i l i t y , a n dl i m i t e d i n s i m u l a t i n gt h ed e c r y p t i o np r o c e s so f p o l y m o r p h i cv i r u s v i r t u a le x e c u t i o nm o d e la n dt h ea n t i v i r u sv i r t u a lm a c h i n e r u n n i n gp r o c e s s e s ,w h i c hw e r ei g n o r e db yo t h e rr e s e a r c h e r s ,a r es t u d i e di nt h i sp a p e r t h r o u g hi n - d e p t ha n a l y s i sa n ds t u d yo ft h es o u r c eo ft h et r o u b l e so fa n t iv i r t u a l m a c h i n et e c h n o l o g y , i m p r o v e m e n t so fv i r t u a le x e c u t i o nm o d e la n dt h ea n t i v i r e s v i r t u a lm a c h i n er u n n i n gp r o c e s sa r ep r o p o s e d s o m ei m p o r t a n ti s s u e si nd e s i g na n d i m p l e m e n t a t i o no f a n t i v i r u sv i r t u a lm a c h i n ea r ea l s od i s c u s s e di nt h i sp a p e r t h em a i nc o n t r i b u t i o no ft h i sp a p e ri sa sf o l l o w s : 1 p r o p o s ea ni m p r o v e dv i r t u a le x e c u t i o nm o d e l s u m m a r i z et h et r a d i t i o n a l m o d e l ,c h a n g et h et r a d i t i o n a lw a yo fi n s t r u c t i o no p e r a t i o no b je c t sv i r t u a l i z a t i o n , f u n d a m e n t a l l ys o l v et h ep r o b l e mt h a ta n t i v i r u s v i r t u a lm a c h i n ei s p o o ri n e x p a n s i o nc a p a b i l i t y 2 m a k ei m p r o v e m e n t so nt h et r a d i t i o n a lr u n n i n gp r o c e s s v i r t u a le x e c u t et h e w h o l ec u s t o mp r o g r a m ,e n h a n c et h ea n t i v i r u sv i r t u a lm a c h i n e ss i m u l a t i n g a b i l i t y c o m b i n es t a t i cs i g n a t u r es c a n n i n ga n dm a l i c i o u sb e h a v i o ra n a l y s i s ; e n h a n c et h ec a p a c i t yo fd e t e c t i n gu n k n o w nv i r u s 3 c o m m o na n t i v i r t u a lm a c h i n et e c h n o l o g i e sa r ea n a l y z e da n ds u m m a r i z e d c o m b i n e dw i t ht h ei m p r o v e m e n t so nt h ev i r t u a le x e c u t i o nm o d e la n dr u n n i n g p r o c e s s ,p r o v i d es i m u l a t i o np r o g r a m sf o re x c e p t i o nh a n d l i n ga n dm u l t i - t h r e a d o p e r a t i n gm e c h a n i s m 4 l a r g er e s e a r c hw o r ko np ef o r m a ta n df i l el o a d i n gp r o c e s s d i s c u s sh o w t o m a pf i l ea n di n i t i a l i z e ,h o wt oc o o r d i n a t ei n s t r u c t i o nt r a n s l a t i o na n de x e c u t i o n , h o wt om a k es i g n a t u r es c a n n i n ga n dc o n d u c td a t ac o l l e c t i n gm o r ea c c u r a t e ,t o m a k et h ee x e c u t i n gr e s u l tc o r r e c t ,i m p r o v et h ee f f i c i e n c y , a n de n h a n c et h ev i r u s d e t e c t i n gc a p a b i l i t y k e yw o r d s :v i r t u a le x e c u t i o nm o d e l ,r u n n i n gp r o c e s s ,a n t i - v i r u sv i r t u a lm a c h i n e , p r o g r a ml o a d i n g i i 插图目录 插图目录 图1 1 反病毒虚拟机基本原理3 图1 2 反病毒虚拟机运行流程4 图1 3a p ih 0 0 k 原理6 图2 1 应用程序和操作系统指导c p u 动作行为9 图2 2 单步断点跟踪_ 9 图2 3 虚拟执行:1 0 图2 4 改进的虚拟执行1 4 图2 5 操作系统控制指令模拟1 6 图2 6 反病毒虚拟机基本运行流程2 2 图2 7 支持多重加密的反病毒虚拟机运行流程2 3 图2 8 被变形病毒感染的程序2 4 图2 9 壳对原程序的保护2 4 图2 1 0 一种改进的反病毒虚拟机运行流程2 6 图2 1 l 异常处理模拟的处理流程3 4 图2 1 2p e c r y p t 解密过程_ 3 5 图2 1 3 线程状态迁移3 6 图3 1 嵌入式反病毒虚拟机结构3 9 图3 2p e 文件加载到内存4 0 图3 3 文件加载时的r e l o c a t i o n 4 4 图3 4x 8 6 虚拟地址空间布局结构4 5 图3 5p e 文件期望映射内存区间统计图4 5 图3 6 被导入的n t d l l d l l 4 9 图3 7n t d l l d l l 的函数导出4 9 v 第1 章绪论 表格目录 表2 1 部分常用c p u 指令数据统计17 表2 2c p u 异常3 3 表3 1p e 文件数据目录4 3 表3 2 线程间同步和线程内同步时间对比5 3 v i 中国科学技术大学学位论文原创性和授权使用声明 本人声明所呈交的学位论文,是本人在导师指导下进行研究工 作所取得的成果。除已特别加以标注和致谢的地方外,论文中不包 含任何他人已经发表或撰写过的研究成果。与我一同工作的同志对 本研究所做的贡献均己在论文中作了明确的说明。 本人授权中国科学技术大学拥有学位论文的部分使用权,即: 学校有权按有关规定向国家有关部门或机构送交论文的复印件和电 子版,允许论文被查阅和借阅,可以将学位论文编入有关数据库进 行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论 文。 保密的学位论文在解密后也遵守此规定。 作者签名 汐7 嘶加 p p 2 驴 第1 章绪论 1 1 研究背景 第1 章绪论 反病毒虚拟机,作为病毒检测的辅助平台,模拟病毒的运行过程,为杀毒 引擎更准确的进行病毒检测提供便利。反病毒虚拟机技术,与加壳技术和变形 病毒的发展有着紧密的联系。 1 1 1 加壳技术和变形病毒 自计算机诞生以来,其技术的发展可谓日新月异,各种新技术、新思路不 断涌现。伴随着计算机硬件性能的飞速发展,各种应用软件从最初的几个、几 十个字节发展到现在的动辄几张光盘,成千上万的共享软件和商业软件越来越 庞大,技术内涵也日趋复杂。随着网络技术的兴起和发展,软件的复制和传播 变得越来越容易,盗版软件泛滥,极大损害了软件销售商和开发者的利益,直 接影响着软件业的发展。在国家不断出台相关政策法规的同时,软件保护也逐 步成为计算机安全领域的热点问题之一。 保护方案可以分成两类。一类是依赖硬件的加密保护方案 1 】,另一类是不 依靠硬件的软件加密保护方案。尽管硬件加密方案安全性高,但由于设计和制 造成本的问题,大部分商业软件和共享软件都采用软件加密的保护方案。常见 的软件加密保护方案有:序列号保护 2 ,3 1 、k e y f i l e 保护、网络验证、c d c h e c k 等。这些方案通过读取计算机内特定标示信息( 标示文件) 判断用户身份,根 据设定的规则控制软件执行流程。对于未授权或仅部分授权的用户,软件则表 现为:使用时间和次数限制、菜单功能限制、警告( n a g ) 窗口等。 尽管各种加密和散列算法【4 6 】的应用,使用户身份不能被轻易假冒,但破 解者依旧可以通过静态反编译的方法,修改程序中的比较和跳转指令,绕过软 件对用户身份的检测。因此,反反编译和反修改是软件保护最基础、最重要的 两个问题。对于大多数软件开发者来说,由于不熟悉软件保护的相关技术,导 致花费了大量人力和物力设计的保护方案不堪一击。术业有专攻,为了让软件 开发者从软件保护措施中脱离出来,专心致力于软件功能的设计和开发,便出 现了专门的软件保护软件,壳便是其中一种【7 】。 在自然界中,植物用壳来保护种子,动物用壳来保护身体。在计算机世界 第1 章绪论 里,壳则用于保护软件不被反编译、跟踪或者非法修改。它们附加在原程序上, 被操作系统加载到内存后,先于原程序执行,得到控制权,执行过程中对原程 序进行解密、还原,还原完成后再把控制权交还给原程序,执行原来的代码部 分。加壳之后,原程序文件中的代码在磁盘等存储介质中一般都是以加密后的 形式存在的,只在执行时在内存中还原,这样就能有效地的防止程序被静态反 编译,也可以防止破解者对程序文件进行非法修改。 随着加壳技术的发展,出现了大批优秀的加壳软件,花指令【8 ,9 】、c r c 校 验 1 0 】、s h e 、导入表处理、伪指令等技术层出不穷。由于加壳过程中会使用到 一些压缩算法,软件加壳也能在一定程度上起到减小程序体积的作用,加壳软 件行列中也产生了一类专攻于此的压缩壳。 经过加壳处理的软件,原程序的代码在执行前都会先被壳还原出来,因此 理论上不存在绝对安全的脱不掉的壳。不同的加壳技术只是通过各种方式为破 解者制造障碍,通过消磨破解者的耐性、推迟被破解的时间来最大限度的保护 软件产品【1 l 】。 特征码扫描是杀毒软件识别病毒的最主要的方式。针对这一特征,病毒采 取指令演化技术进行变形,逃避杀毒软件的识别。指令演化技术【1 2 】主要包括: 等价指令替换、等价指令序列替换、指令重排序、变量和寄存器替换、增加和 删除跳转指令、增加和删除调用指令、插入垃圾指令等。 使用指令演化变形技术的病毒能够逃脱杀毒软件的( b i t 位级) 特征码扫描, 但由于指令演化技术不会影响文件中对a p i 的调用序列。因此,静态a p i 调用 序歹i j 1 3 可以作为另一形式的特征码对类变形病毒进行描述,通过反编译病 毒程序文件进行a p i 调用序列扫描即可完成对已知病毒及其所有变种的识别。 至此,病毒也需要像普通软件一样,使用加壳技术来进行反编译保护。 由于不存在绝对安全的壳,越是有名的壳,研究的人也越多,其被脱壳和 破解的可能性也越大。对于一些流行的壳,杀毒引擎能对目标进行脱壳之后在 进行病毒检查。因此真正能逃脱杀毒软件识别的加壳变形病毒,往往使用的都 是那些水平一般的不常见的壳,甚至是病毒编写者自己编写的加壳算法。 对于被病毒程序使用的那些不常见的私人壳,尽管它们的技术水平可能不 高,但由于数目众多,杀毒软件一般都不为其开发脱壳引擎,而是直接把所有 加壳后的程序当作木马或病毒处理。由此带来的误报和误杀在一定程度上影响 用户的正常使用。另外一款脱壳引擎只能针对某个特定的壳,虽然针对性强、 脱壳效果好,但由于加壳软件层出不穷、不断出新,杀毒软件必须不断添加新 的脱壳引擎。因此,加壳技术使变形病毒在与杀毒软件的对抗中,再次处于优 势。 2 第1 章绪论 1 1 2 反病毒虚拟机 虚拟机技术 1 4 】是计算机领域中广泛运用的技术之一在平台移植、软硬件 测试和操作系统的实现等方面发挥着重要的作用。虚拟机是执行应用程序的虚 拟环境,是系统资源的一种仿真,在其之上的客户程序犹如运行在一个真实的 c p u 和操作系统环境之中。由于虚拟机能模拟程序的真实运行、动态跟踪程序 的运行状态,对客户程序运行期间的数据进行检测,它已经成功运用于反病毒 领域 1 5 1 7 。 反病毒虚拟机 1 8 2 1 】严格意义上不能称之为虚拟机,它主要是对c p u 的功 能进行模拟,由于主要被用作变形病毒的解密还原,它也被称为通用解密器。 由于反病毒界的习惯,本文沿用了虚拟机这一称呼。 1 1 2 1 基本原理 无论使用何种技术进行加壳,原程序代码在执行前都会先被壳还原出来。 反病毒虚拟机便针对壳的这一特征,为其提供虚拟的执行环境,在壳完成对原 程序代码的还原之后,再进行病毒检查。反病毒虚拟机仅模拟运行客户程序执 行初期的解密还原过程,不需要对客户程序的完整运行提供支持,因此在设计 上不同于v m w a r e 、q e m u 2 2 、b o c h s 2 3 、x e n 2 4 等虚拟机。事实上,反病 毒虚拟机主要是对c p u 功能和内存操作进行模拟。 图1 1 是反病毒虚拟机的基本原理,虚拟c p u 读取客户指令和数据,对其 进行解密还原,然后再由杀毒引擎对客户程序进行病毒检测。 t 昌 _ 指令读取 _ 解密还原 q 病毒检测 图1 1 反病毒虚拟机基本原理 3 第1 章绪论 图1 2 是反病毒虚拟机的基本运行流程,虚拟机先判断客户程序是否被加 壳,然后对解密还原过程进行模拟,最后进行病毒检测并结束运行。 图1 2 反病毒虚拟机运行流程 虽然虚拟机技术从2 0 世纪6 0 年代的v m 3 7 0 发展到今天已经快半个世纪 了,但真正的反病毒虚拟机还正在起步阶段。目前反病毒虚拟机除了面临反虚 拟机技术的挑战以外,还必须满足反病毒引擎提出的新的业务需求。 1 1 2 2 反虚拟机技术 病毒技术和反病毒技术相互对抗,不断发展和创新。随着反病毒虚拟机的 出现,反虚拟机技术也逐步发展起来,主要的反虚拟机 2 5 】技术有: 1 特殊指令。使用虚拟机不能识别的指令,干扰虚拟机的正常运行。随着 一代又一代高效c p u 的不断推出,c p u 指令集不断扩充 2 6 】,反病毒虚拟 机没有实现、也不可能实现对诸如m m x 、3 d n o w 、s s e 、s s e 2 、s s e 3 等所有指令的识别和模拟。当程序中出现这类没有被实现的指令时,虚拟 机将无法实现正确的模拟工作,甚至会引起虚拟机崩溃。 2 结构化异常。结构化异常是w i n d o w s 系统提供的用于处理程序异常行为 的服务。当线程发生异常时,操作系统会将这个异常通知给用户使用户, 并且调用用户为对应代码块注册的异常处理回调函数。虽然这个回调函数 一般用于修正异常状态、恢复程序正常运行或者完成程序退出前的清理工 作,但系统实际上对它的功能并未做任何限制,它可以做任何想做的事情, 比如变形病毒的加密和解密,或者更直接的破坏行为。对于没有实现异常 处理支持的虚拟机,当异常触发时,程序将改变原有执行流程,脱离虚拟 4 第1 章绪论 机的控制,或者没有程序执行流程的转移,虚拟机模拟的效果与客户程序 真实行为大相径庭 2 7 】。 3 多线程机制。传统的反病毒虚拟机只是模拟c p u 简单的功能,对于多 线程这类涉及到复杂系统调用的功能,并没有提供支持,因此不能实现对 多线程程序的模拟执行,也就不能完成多线程变形病毒的解密和识别工作。 4 入口点模糊技术。由于传统的反病毒虚拟机认为病毒程序会在程序入口 点附近的2 5 6 条指令内开始解密循环,而只对这部分指令进行模拟执行和 解密循环识别。病毒程序只需要在宿主程序执行过程中才进行跳转、开始 解密循环,即可避开反病毒虚拟机的跟踪和分析。 5 虚拟机主动识别。v m w a r e 、v i r t u a l p c 、b o c h s 、h y d r a 、q e m u 、x e n 等虚拟机由于设计和实现上的问题 2 8 】,都存在信息泄露,能被应用程序从 内部进行识别。 此外,还有其他根据特定指令运行时间比较分析的方法,来对虚拟机进行 识别的。 1 1 2 3 反病毒虚拟机的发展前景 随着病毒技术的复杂化和多样化,仅仅依靠静态分析已经存在较大的局限。 反病毒虚拟机对病毒程序的模拟执行只涉及壳的解密还原部分,对病毒的检测 依旧采用特征码扫描的方式。反病毒虚拟机的这种应用方式,并不能使杀毒引 擎突破静态分析的禁锢,病毒识别的固有局限性依然存在。 纵观目前流行的反病毒技术,除特征码扫描由于技术成熟和其高效性被广 泛使用外,主动防御和沙箱技术也发挥着越来越大的作用。 a p ih o o k 技术是主动防御和沙箱技术实现的基础,通过在系统调用执行 的过程中对操作进行截获,使得在系统调用真正执行前预先执行主动防御系统 或沙箱系统的h o o k 函数,从而实现对病毒恶意行为的阻断和重定向的目的。 a p ih o o k 的原理如图1 3 所示: 根据h o o k 函数执行特权的不同a p ih o o k 可以分为用户级a p ih o o k 和 内核级a p ih o o k 。用户级a p ih o o k 的实现方式包括:r i n 9 3i n l i n eh o o k ( 修 改函数的前5 个字节) ,修改函数输入表( i a t ) ,c o p yd l l ,修改函数输出表, 修改a p i 函数等;内核级a p ih o o k 方法包括:i d t o h o o k 、s y s e n t e r - h o o k 、 s s d t - h o o k 、i n l i n e h o o k 和h a l h o o k 等。不难发现,上述h o o k 技术都是以 对操作系统的修改为代价的,每个行动的截获都对应着系统内相应数据的修改。 在w i n d o w s 等操作系统中,由于代码未开源,对操作系统越是底层的修改对系 统的安全和稳定造成的影响的可能性就越大。事实上,内核级a p ih o o k 引起 5 第1 章绪论 系统崩溃的情况时有发生。 调用 图1 3a p ih o o k 原理 实际上,使用a p ih o o k 技术的主动防御并不能给系统以主动的安全保护。 虽然设置大量的h o o k 点去截获可能的恶意行为,但截获动作发生在应用程序 调用行为发生之后,一旦截获不成功或不完整,势必造成对系统和用户的威胁。 虚拟机为客户程序提供模拟的运行环境,先取指令分析,再进行模拟,因 此能够在调用行为触发前对恶意的行为进行识别和处理;由于不需要采用 h o o k 技术对操作系统进行修改,虚拟机能保证操作系统更稳定的运行。 1 2 论文主要内容 反病毒虚拟机作为一个工程化的问题,一直缺乏系统深入的理论研究。本 文对虚拟执行模型、反病毒虚拟机运行流程以及反病毒虚拟机设计实现过程中 的重要问题进行了分析和研究,并就反病毒虚拟机如何提升扩展能力、虚拟执 行效率、病毒识别能力等问题提出相应的改进和解决方案。 具体的研究工作主要有: 1 提出一种改进的虚拟执行模型。在对传统模型总结归纳的基础上,通过 改变指令操作对象的虚拟方式,从根本上解决反病毒虚拟机扩展能力差的 问题。 2 对反病毒虚拟运行流程进行改进。通过对客户程序进行全程的虚拟执 行,提升反病毒虚拟机对病毒解密还原过程的模拟运行能力;采用静态特 征码扫描和行为分析相结合的病毒检测方式,增强对未知病毒的检测能力。 3 对常见的反虚拟机技术进行分析和总结,结合对虚拟执行模拟和反病毒 虚拟机运行流程的已有改进,给出反病毒虚拟机对异常处理和多线程运行 6 第1 章绪论 机制的模拟方案。 4 对反病毒虚拟机在运行过程中如何进行文件映射和初始化、如何协调指 令翻译和指令执行任务、如何准确进行特征码扫描和行为数据采集等问题 进行讨论,从而保证虚拟执行结果的正确性,提升虚拟执行的效率,增强 病毒检测能力。 1 3 论文组织结构 本文共四章,组织结构如下: 第1 章阐述了反病毒虚拟机技术的起源、反虚拟机技术的挑战和发展前景, 并对论文主要内容和组织结构进行介绍。 第2 章对虚拟执行模型、反病毒虚拟机运行流程进行讨论,针对反病毒虚 拟机扩展能力差、对变形病毒解密还原过程的模拟能力有限等问题,对传统模 型和运行流程提出改进,并对常见反虚拟机技术进行总结和分类,完成对结构 化异常和多线程运行机制的模拟方案。 第3 章以x 8 6 体系结构w i n d o w s 操作系统为例,对反病毒虚拟机客户程序 加载、虚拟执行和病毒检测过程进行讨论,解决客户程序映射和初始化、指令 翻译和指令执行任务调度、特征码扫描和行为数据采集等问题。 第4 章对本文研究工作的总结,提出反病毒虚拟机进一步的研究方向 7 第2 章虚拟执行模型与反病毒虚拟机运行流程 第2 章虚拟执行模型与反病毒虚拟机运行流程 尽管虚拟机技术从2 0 世纪6 0 年代的v m 3 7 0 发展至今已近半个世纪,但 真正的反病毒虚拟机还处于起步阶段。由于设计和实现上的不足,目前的反病 毒虚拟机存在诸多问题,给病毒留下可乘之机。 本章对虚拟执行模型、运行流程进行讨论,针对反病毒虚拟机扩展能力差、 对变形病毒解密还原过程的模拟能力有限等问题,对传统模型和运行流程提出 改进,并对常见反虚拟机技术进行总结和分类,完成对结构化异常和多线程运 行机制的模拟方案。 2 1 虚拟执行模型的研究 2 1 1 虚拟机实现模型 在讨论虚拟机的实现模型之前,我们先对应用程序、操作系统和c p u 进行 一个简单的描述。应用程序作为将要被运行的对象,最重要的部分是其所包含 的c p u 指令,这些指令是二进制的机器语言,用来告诉计算机( c p u ) 如何实 现应用程序的行为。操作系统,与应用程序一样也是对c p u 行为的描述,其中 一部分是对应用程序中描述的解释和说明( 函数调用、系统调用等) ,另外一部 分是则是c p u 执行指令流程的控制( 中断、调度等) ,是c p u 在运行应用程序 指令过程中需要遵守的规则。c p u ( c e n t r a lp r o c e s s o r u n i t 中央处理器) ,则是真 正进行行为动作的功能部件,它不断的从内存中读取指令,并按照指令要求对 内存、寄存器和i o 端口进行操作。图2 1 展现了c p u 、应用程序、操作系统、 寄存器、i o 、内存之间的关系。 虚拟机的实现有两种模型:单步断点跟踪( 图2 2 ) 和虚拟执行( 图2 3 ) 。 单步断点跟踪模型中,虚拟机和客户程序以调试程序和被调试程序的形式 存在,通过设置单步标记或断点的方式,实现虚拟机程序和客户程序的交替执 行。在整个调试的过程中,虚拟机程序、客户程序和操作系统中的机器指令都 会得到执行。客户程序完成它自己想要的行为动作,虚拟机程序则控制c p u 去 记录和分析客户程序执行过程中各个对象数值的变化,从而实现对客户程序行 为的分析,操作系统除本来对虚拟机和客户程序单独运行的支持( 解释和说明) 以外,主要负责根据各种标记和断点设置,控制c p u 在虚拟机和客户程序之间 8 第2 章虚拟执行模型与反病毒虚拟机运行流程 的切换( 运行规则) 。 图2 1 应用程序和操作系统指导c p u 动作行为 图注:应用程序和操作系统中包含对c p u 动作行为的描述,c p u 对寄存器、i ,o 、进 程内存、系统内存等进行操作。 图2 2 单步断点跟踪 图注:虚拟机对客户程序进行调式。虚拟机程序、客户程序和操作系统都使用机器语 言对c p u 的动作进行表述。实线表示虚拟机程序和操作系统要求c p u 进行的 对虚拟机运行时对象的操作,虚线部分表示客户程序和c p u 要求c p u 进行的 对客户程序运行时对象的操作。 单步断点跟踪模型中,客户程序的行为,都被c p u 之间作用在真实的寄存 9 第2 章虚拟执行模型与反病毒虚拟机运行流程 器、内存和i o 上,尽管在运行过程中,虚拟机能通过单步标记和断点来暂停 或终止客户程序的运行,但由于虚拟机只能对已经发生的行为进行分析,因此 不能保证操作系统和用户信息在客户程序执行过程中的安全。 虚拟执行模型中,不同于单步断点跟踪中客户程序作为一个单独的进程直 接运行。虚拟执行时,客户程序一般是被作为数据文件进行加载,虚拟机控制 c p u 从客户程序中读取指令数据,通过一系列加工处理之后,再控制c p u 进 行对象操作。由于客户程序没有独立的运行环境,客户程序中对的c p u 指令, 一般都被c p u 作用在虚拟机的进程内存对象上,通过进程内存对象对客户程序 需要操作的内存对象、寄存器对象、i o 对象等进行模拟。 虚拟进程内存对象 虚拟寄存器对象 虚拟系统内存对象虚拟i o 对象 图2 3 虚拟执行 图注:虚拟机在操作系统的协助下控制c p o 进行内存、寄存器、1 1 0 等对象进行操作。 客户程序被加载到虚拟机地址空间内,也被作为内存对象进行操作。虚拟机控 制c p u 从客户程序中读取指令数据,进过加工处理后,变成自己的行为通过 c p u 作用在进程内存对象中,因此虚拟机的部分进程内存对象实际是对客户程 序进程内存对象、寄存器对象、系统内存对象和1 1 0 对象的模拟。 在虚拟执行模型中,客户程序对各对象的操作,都被作用在虚拟机的进程 内存对象之中,不会影响操作系统的正常运行,也不会造成用户信息的泄露或 破坏。因此,虚拟执行与单步断点跟踪相比其安全性更强。 此外,单步断点跟踪还存在着容易被识别的问题。在单步执行模式下c p u 标志寄存器中的t f 位会被置1 ,断点则需要对被调试程序指令内容进行修改, 因此客户程序只需要检测c p u 标志寄存器或对代码段指令内容进行检查就能 判断是否处于被调试状态下,甚至直接调用i s d e b u g p r e s e n t 函数进行判断。 反病毒虚拟机,对安全性和反识别能力都有很强的要求,因此采用虚拟执 1 0 第2 章虚拟执行模型与反病毒虚拟机运行流程 行作为其实现模型。 2 1 2 虚拟执行模型分析 在虚拟执行模型中,客户程序被作为数据文件加载到虚拟机内,尽管客户 程序中包含有c p u 指令,但它们不被c p u 直接运行。客户程序中的c p u 指令, 被c p u 以数据的形式读取,进行一系列加工和处理,然后再由c p u 执行。虚 拟机对客户程序指令的加工和处理,被称为指令翻译。指令翻译的目的是保证 指令运行时操作系统和用户信息的安全,目前的指令翻译主要是将客户程序指 令对进程内存对象、系统内存对象、寄存器对象和i o 对象的操作,作用在虚 拟机的进程内存对象上。改变c p u 操作的对象,就必须改变客户程序代码对 c p u 动作的描述,这便是目前反病毒虚拟机完成的最基本的工作。 根据指令翻译方式的不同,虚拟机可以被分为自含代码虚拟机( s c c e ) 和 缓冲代码虚拟机( b c e ) 。其中,自含代码虚拟机对每条客户程序指令进行完全 的译码,。解析出完整的操作码和操作对象,单独为每一条指令提供指令翻译。 缓冲代码虚拟机根据应用对指令分析的不同需求,将客户程序的指令分为特殊 指令和非特殊指令,对特殊指令它同自含代码虚拟机一样,提供完整全面的译 码和每条指令独有的指令翻译,对于非特殊指令它则对译码和指令翻译进行简 化,仅解析出指令长度,然后使用通用的处理过程完成对该指令的翻译。这两 种不同的指令翻译方式分别在行为控制能力和执行效率方面各有所长。 在应用程序运行的过程中操作系统为其提供运行支持,操作系统的指令块 作为对应用程序行为的解释和说明被c p u 执行,与应用程序指令操作同样的进 程内存对象、系统内存对象、寄存器对象和i o 对象。 虚拟执行模型下,客户程序同样需要操作系统提供运行支持,对客户程序 的行为进行解释,对客户程序的对象进行操作。但此时客户程序的进程内存对 象、系统内存对象、寄存器对象和i o 对象实际上不存在的,它们只是以虚拟 存在于反病毒虚拟机的进程内存对象中。操作系统的指令要对这些虚拟的对象 进行操作,必须经过反病毒虚拟机进行同样的指令翻译处理。 操作系统中还存在另一部分影响着应用程序指令执行流程的指令,它们是 c p u 运行应用程序指令过程中必须遵守的规则。指令执行流程的不同意味着应 用程序可能表现出截然不同的行为动作,通过操作系统指定的运行规则改变应 用程序运行过程中的指令执行流程,是对应用程序设计和实现的复杂化。在反 病毒虚拟机出现之前,由于当时特定的病毒编写水平,这样复杂化的行为在病 毒程序中是少有的,因此反病毒虚拟机在最初设计时也没有考虑到对操作系统 第2 章虚拟执行模型与反病毒虚拟机运行流程 在应用程序运行过程中的重要作用。 我们将操作系统中的指令分为两类,负责对客户程序的行为进行解释说明 的称为解释指令,负责控制应用程序执行流程的指令称为控制指令。解释指令 直接被应用程序调用,对进程内存对象、系统内存对象、寄存器对象和i o 对 象进行操作。控制指令一般没有显式的调用过程,尽管也会对寄存器和内存进 行操作,但操作目的是为了完成正确的指令流程转移,即对c s 和e i p 的改写, 以及执行上下文的切换等。 虚拟执行模型对于解释指令,有三种不同的处理方式:逐条翻译、块模拟 和跳过不执行。 解释指令对应用程序的行为进行解释和说明,因此也可以被看作客户程序 的一部分,进行逐条指令的翻译。逐条翻译是最简单的处理方式,但也存在诸 多需要改进完善的地方。解释指令采用规范的接口为应用程序提供运行支持, 因此客户程序所调用的每一个解释指令块的行为其实是可知的,通过对调用参 数的分析即可确定该调用是否会对操作系统和用户信息造成危害,因此对解释 指令进行逐条翻译是没有必要的。 块模拟没有逐条翻译存在的效率问题,它其实是将操作系统的解释指令实 现在虚拟机内部,因此需要对操作系统的该解释指令块的行为有全面的了解, 每一个解释指令块的模拟,意味着实现人员对该调用行为的学习和分析,也意 味着反病毒虚拟机体积的增加。因此,尽管块模拟有着较好的运行效率,但却 不适合大范围使用。 应用程序在运行过程中会进行各种不同的动作行为,而反病毒虚拟机只关 心其中对操作系统和用户信息有安全威胁的那一部分,不用影响客户程序正常 运行、与程序执行流程无关的、与安全无关的解释指令块可以被忽略跳过不执 行。 操作系统提供的解释指令有两种不同的类型,用户态下的( 链接库) 函数 调用和内核态下的系统服务,这两类操作系统解释指令都能被应用程序调用。 应用程序使用用户态下的链接库对自己的行为进行解释说明,是显式的函数调 用,因此选择上述三种方式直接进行处理即可。应用程序使用内核态的系统服 务时,c p u 在控制指令的影响下改变执行流程,搜索对应的系统服务程序并进 行跳转,因此不能使用逐条翻译的方式进行处理,而只能使用块模拟或者跳过 不执行。 由于反病毒虚拟机最初的设计目标仅是用于模拟运行变形病毒的解密还原 过程,因此尽管对解释指令的各种处理方式都或多或少的存在不足,但都没有 对反病毒虚拟机的设计和实际运行造成太大影响。 1 2 第2 章虚拟执行模型与反病毒虚拟机运行流程 病毒技术和反病毒技术的发展总是互相追赶的,随着反病毒虚拟机的出现 和发展,变形病毒也越来越多的通过控制指令的使用来干扰反病毒虚拟机的正 常工作,使其不能对变形病毒的解密还原过程的进行正确的模拟。 操作系统的控制指令对应用程序执行流程的影响是从中断开始的,保存原 有的执行上下文,搜索合适的中断处理程序,然后跳转到目标指令继续执行。 除了执行上下文的切换操作,控制指令主要是对c s 和e i p 的修改,是对应用 程序运行流程的改变,因此控制指令操作的对象其实在应用程序的运行流程。 在以线程为调度单位的操作系统中,程序的运行流程由线程的运行流程表示。 在虚拟执行模型中,客户程序是以数据文件的形式存在,因此不存在独立运行 的线程,客户程序的线程只虚拟的存在于虚拟机中,因此控制指令和解释指令 一样,面临着如何对虚拟对象进行操作的问题。 控制指令对执行流程的改变从中断开始,处理过程由系统内核态下的指令 完成,这些指令在普通权限( r i n 9 3 ) 下是不能进行读取的。因此目前反病毒虚 拟机对控制指令的处理,是通过类似块模拟的方式在虚拟机内部直接实现的。 操作系统控制指令对应用程序执行流程的转移是从应用程序到中断服务程序, 再到中断处理程序,然后再到应用程序的过程,其中涉及到对操作系统内部数 据结构的大量操作,因此要进行完整的模拟是比较困难的。在实际的应用中, 反病毒虚拟机都是对某个具体的中断转移过程进行独立的简化模拟。例如对结 构化异常进行模拟时,先通过对指令的分析识别出执行该指令可能触发的异常, 然后直接在异常处理函数链里搜索对应的处理函数,完成虚拟执行流程的转移。 块模拟的问题,前面已经提到过,它需要对原指令块的行为有全面的了解, 随着模拟块的增多,虚拟机会越来越庞大。操作系统的控制指令,是操作系统 最重要的核心部分之一,现代操作系统为了提供更高效更安全的运行服务,控 制指令已经越来越复杂和庞大,要掌握l i n u x 等开源操作系统的控制指令的行 为过程已经需要花费相当的功夫了,更何况不开源的w i n d o w s 操作系统,而 w i n d o w s 操作系统由于使用更普遍,面临着更多的安全威胁,也更需要反病毒 虚拟机的支持和保护。因此,尽管目前块模拟的方式还能应对少数的控制指令 处理需要,但从长远角度考虑,控制指令的处理已经面临着严峻的挑战。 2 1 3 改进的虚拟执行模型 目前虚拟执行所面临的操作系统指令处理的问题,其根源在于操作系统指 令需要操作的对象在虚拟执行的过程中并不真实存在。虚拟执行过程中,客户 程序指令所要操作的对象,都由反病毒虚拟机进程内存对象进行模拟。从保证 1 3 第2 章虚拟执行模型与反病毒虚拟机运行流程 虚拟执行安全性的角度,这是一种可行的方式,但并不是唯一的方式。 回顾虚拟机的两种实现方式:单步断点跟踪运行效果好,但存在安全隐患 且容易被识别;虚拟执行安全性能好,但指令操作对象使操作系统指令模拟过 程存在诸多问题。对于单步断点跟踪,可以通过加强对下一条指令的分析能力 来提升安全性能,还可以通过在虚拟机内部实现对客户程序的“调式 ( 客户程 序线程运行状态的记录和分析) 来达到反识别的效果。同样虚拟执行可以通过 改变使用虚拟机进程内存对象来虚拟客户程序指令操作对象的方式,将那些对 操作系统和用户程序没有危害的操作直接作用在真实的操作对象上,从而避免 客户程序和操作系统指令操作对象不一致的问题。从单步断点跟踪和虚拟执行 这两个方向进行的改进,其结果是一致的,我们称之为改进的虚拟执行( 图2 4 ) 。 图2 4 改进的虚拟执行 图注:改进的虚拟执行,客户程序依旧被作为数据文件加载到虚拟机进程地址空间内, 客户程序指令被读取后经过虚拟机分析处理后,也和虚拟机程序的指令一样, 对进程内存对象、系统内存对象、寄存器对象和1 1 0 对象进行操作。实线表示 虚拟机指令的行为,虚线表示客户程序指令的行为。 c p u 指令动作根据操作对象的不同可以被分为:普通寄存器操作、内存操 作、控制跳转操作、 j o 操作、标志寄存器操作、段寄存器操作等,这些操作有 着不同的行为特征,对操作系统和用户信息的威胁程度也是不相同的。下面将 介绍改进的虚拟执行在读取客户程序指令之后是如何对这六类操作进行处理保 证客户程序虚拟运行过程中操作系统和用户信息的安全。 1 普通寄存器操作。普通寄存器包括通用寄存器、浮点寄存器、m m x 寄 1 4 第2 章虚拟执行模型与反病毒虚拟机运行流程 存器和x m m 寄存器,是c p u 使用最多的操作对象。普通寄存器操作仅会 影响普通寄存器和标志寄存器( e f l a g s ) 中的o f 、s f 、z f 、a f 、p f 、 c f 等状态标记( s t a t u sf l a g ) 的值,因此单纯的普通寄存器操作对操作系 统和用户信息的安全都是没有威胁的;所以可以直接作用在普通寄存器上。 2 内存操作。内存是操作系统和应用程序的活动空间,尽管操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 写字安全知识培训
- 奇怪的表情课件
- 美丽的建筑课件
- 课件条例轻松学观后感
- 幼儿绘画小班课件
- 创伤包扎方法培训
- 课件显示调色盘
- 广东护自考试题及答案讲解
- 广东国际结算自考试题及答案
- 广东高压本自考试题及答案
- T/CECS 10128-2021不锈钢二次供水水箱
- 露营股份合作协议书
- 酒店物件赔偿协议书
- 职业技能考评员培训课件
- 护士职业暴露与防护 课件
- 2025年第十届“学宪法、讲宪法”竞赛题库(含答案)
- 四川产业振兴基金投资集团有限公司招聘笔试题库2025
- 光伏备案合同协议
- 法考历年真题答案2024
- 多器官功能障碍护理常规
- 【闵行区人民法院】上海市闵行区劳动人事争议调解仲裁与审判白皮书(2023-2024年)
评论
0/150
提交评论