(转载)反病毒引擎设计 --- 虚拟机查毒篇

(转载)反病毒引擎设计 --- 实时监控 反病毒引擎设计之实时监控作者:NJUE    文章来源:安全焦点  2004年01月15日        编者按:绪论《反病毒引擎设计虚拟机查毒》我们重点对虚拟机查毒进行了阐述。下面看看如何对病毒实时监控。  目    录3.1实时监控概论3.2病毒实时监控实现技术概论3.3 WIN9X下的病毒实时监控  3.3.1实现技术详解  3.3.2程 阅读详情

反病毒引擎设计之虚拟机查毒篇

作者:NJUE 发文时间:2004.01.14

 

编者按:绪论《反病毒引擎设计之绪论篇》我们介绍了病毒技术的发展状况和一些病毒的特点和感染机制。下面我们重点对虚拟机查毒进行阐述。

 

 

2.1虚拟机概论

2.2加密变形病毒

2.3虚拟机实现技术详解

2.4虚拟机代码剖析

  2.4.1不依赖标志寄存器指令模拟函数的分析

  2.4.2依赖标志寄存器指令模拟函数的分析

2.5反虚拟机技术

 

 

2.虚拟机查毒

2.1虚拟机概论

近些年,虚拟机,在反病毒界也被称为通用解密器,已经成为反病毒软件中最引人注目的部分,尽管反病毒者对于它的运用还远没有达到一个完美的程度,但虚拟机以其诸如"病毒指令码模拟器""Stryker"等多变的名称为反病毒产品的市场销售带来了光明的前景。以下的讨论将把我们带入一个精彩的虚拟技术的世界中。

 

首先要谈及的是虚拟机的概念和它与诸如Vmware(美国VMWARE公司生产的一款虚拟机,它支持在WINNT/2000环境下运行如Linux等其它操作系统)和WIN9X下的VDMDOS虚拟机,它用来在32位保护模式环境中运行16实模式代码)的区别。其实这些虚拟机的设计思想是有渊源可寻的,早在上个世纪60年代IBM就开发了一套名为VM/370的操作系统。VM/370在不同的程序之间提供抢先式多任务,作法是在单一实际的硬件上模式出多部虚拟机器。

 

典型的VM/370会话,使用者坐在电缆连接的远程终端前,经由控制程序的一个IPL命令,模拟真实机器的初始化程序装载操作,于是 一套完整的操作系统被载入虚拟机器中,并开始为使用者着手创建一个会话。这套模拟系统是如此的完备,系统程序员甚至可以运行它的一个虚拟副本,来对新版本进行除错。Vmware与此非常相似,它作为原操作系统下的一个应用程序可以为运行于其上的目标操作系统创建出一部虚拟的机器,目标操作系统就象运行在单独一台真正机器上,丝毫察觉不到自己处于Vmware的控制之下。当在Vmware中按下电源键(Power On)时,窗口里出现了机器自检画面,接着是操作系统的载入,一切都和真的一样。

 

WIN9X为了让多个程序共享CPU和其它硬件资源决定使用VMs(所有Win32应用程序运行在一部系统虚拟机上;而每个16DOS程序拥有一部DOS虚拟机)。VM是一个完全由软件虚构出来的东西,以和真实电脑完全相同的方式来回应应用程序所提出的需求。从某种角度来看,你可以将一部标准的PC的结构视为一套API。这套API的元素包括硬件I/O系统,和以中断为基础的BIOSMS-DOSWIN9X常常以它自己的软件来代理这些传统的API元素,以便能够对珍贵的硬件多重发讯。在VM上运行的应用程序认为自己独占整个机器,它们相信自己是从真正的键盘和鼠标获得输入,并从真正的屏幕上输出。稍被加一点限制,它们甚至可以认为自己完全拥有CPU和全部内存。实现虚拟技术关键在于软件虚拟化和硬件虚拟化,下面简要介绍WIN9X下的DOS虚拟机的实现。

 

Windows移往保护模式后,保护模式程序无法直接调用实模式的MS-DOS处理例程,也不能直接调用实模式的BIOS。软件虚拟化就是用来描述保护模式Windows部件是如何能够和实模式MS-DOSBIOS彼此互动。软件虚拟化要求操作系统能够拦截企图跨越保护模式和实模式边界的调用,并且调整适当的参数寄存器后,改变CPU模式。WIN9X使用虚拟设备驱动(VXD)拦截来自保护模式的中断,通过实模式中断向量表(IVT),将之转换为实模式中断调用。

 

做为转换的一部分,VXD必须使用置于保护模式扩展内存中的参数,生成出适当的参数,并将之放在实模式(V86)操作系统可以存取的地方。服务结束后,VXD在把结果交给扩展内存中保护模式调用端。16DOS程序中大量的21H13H中断调用就此解决,但其中还存在不少直接端口I/O操作,这就需要引入硬件虚拟化来解决。虚拟硬件的出现是为了在硬件中断请求线上产生中断请求,为了回应INOUT指令,改变特殊内存映射位置等原因。硬件虚拟化依赖于Intel 80386+的几个特性。其中一个是I/O许可掩码,使操作系统可能诱捕(Trap)对任何一个端口的所有IN/OUT指令。另一个特性是:由硬件辅助的分页机制,使操作系统能够提供虚拟内存,并拦截对内存地址的存取操作,将Video RAM虚拟化是此很好的例证。最后一个必要的特性是CPU的虚拟8086V86)模式 ,让DOS程序象在实模式中那样地执行。

 

我们下面讨论用于查毒的虚拟机并不是象某些人想象的:如Vmware一样为待查可执行程序创建一个虚拟的执行环境,提供它可能用到的一切元素,包括硬盘,端口等,让它在其上自由发挥,最后根据其行为来判定是否为病毒。当然这是个不错的构想,但考虑到其设计难度过大(需模拟元素过多且行为分析要借助人工智能理论),因而只能作为以后发展的方向。我设计的虚拟机严格的说不能称之为虚拟机器,而叫做虚拟CPU,通用解密器等更为合适一些,但由于反病毒界习惯称之为虚拟机,所以在下面的讨论中我还将延续这个名称。

 

查毒的虚拟机是一个软件模拟的CPU,它可以象真正CPU一样取指,译码,执行,它可以模拟一段代码在真正CPU上运行得到的结果。给定一组机器码序列,虚拟机会自动从中取出第一条指令操作码部分,判断操作码类型和寻址方式以确定该指令长度,然后在相应的函数中执行该指令,并根据执行后的结果确定下条指令的位置,如此循环反复直到某个特定情况发生以结束工作,这就是虚拟机的基本工作原理和简单流程。设计虚拟机查毒的目的是为了对付加密变形病毒,虚拟机首先从文件中确定并读取病毒入口处代码,然后以上述工作步骤解释执行病毒头部的解密段(decryptor),最后在执行完的结果(解密后的病毒体明文)中查找病毒的特征码。这里所谓的“虚拟”,并非是创建了什么虚拟环境,而是指染毒文件并没有实际执行,只不过是虚拟机模拟了其真实执行时的效果。这就是虚拟机查毒基本原理,具体介绍请参看后面的相关章节。

 

 

当然,虚拟执行技术使用范围远不止自动脱壳(虚拟机查毒实际上是自动跟踪病毒入口的解密子将加密的病毒体按其解密算法进行解密),它还可以应用在跨平台高级语言解释器,恶意代码分析,调试器。如刘涛涛设计的国产调试器Trdos就是完全利用虚拟技术解释执行被调试程序的每条指令,这种调试器比较起传统的断点式调试器(Debug,Softice等)具有诸多优势,如不易被被调试者察觉,断点个数没有限制等。

 

2.2加密变形病毒

前面提到过设计虚拟机查毒的目的是为了对付加密变形病毒。这一章就重点介绍加密变形技术。

 

早期病毒没有使用任何复杂的反检测技术,如果拿反汇编工具打开病毒体代码看到的将是真正的机器码。因而可以由病毒体内某处一段机器代码和此处距离病毒入口(注意不是文件头)偏移值来唯一确定一种病毒。查毒时只需简单的确定病毒入口并在指定偏移处扫描特定代码串。这种静态扫描技术对付普通病毒是万无一失的。

 

随着病毒技术的发展,出现了一类加密病毒。这类病毒的特点是:其入口处具有解密子(decryptor),而病毒主体代码被加了密。运行时首先得到控制权的解密代码将对病毒主体进行循环解密,完成后将控制交给病毒主体运行,病毒主体感染文件时会将解密子,用随机密钥加密过的病毒主体,和保存在病毒体内或嵌入解密子中的密钥一同写入被感染文件。由于同一种病毒的不同传染实例的病毒主体是用不同的密钥进行加密,因而不可能在其中找到唯一的一段代码串和偏移来代表此病毒的特征,似乎静态扫描技术对此即将失效。但仔细想想,不同传染实例的解密子仍保持不变机器码明文(从理论上讲任何加密程序中都存在未加密的机器码,否则程序无法执行),所以将特征码选于此处虽然会冒一定的误报风险(解密子中代码缺少病毒特性,同样的特征码也会出现在正常程序中),但仍不失为一种有效的方法。

 

由于加密病毒还没有能够完全逃脱静态特征码扫描,所以病毒写作者在加密病毒的基础之上进行改进,使解密子的代码对不同传染实例呈现出多样性,这就出现了加密变形病毒。它和加密病毒非常类似,唯一的改进在于病毒主体在感染不同文件会构造出一个功能相同但代码不同的解密子,也就是不同传染实例的解密子具有相同的解密功能但代码却截然不同。比如原本一条指令完全可以拆成几条来完成,中间可能会被插入无用的垃圾代码。这样,由于无法找到不变的特征码,静态扫描技术就彻底失效了。下面先举两个例子说明加密变形病毒解密子构造,然后再讨论怎样用虚拟执行技术检测加密变形病毒。

 

著名多形病毒Marburg的变形解密子:

00401020: movsx edi,si ;病毒入口

  00401023: movsx edx,bp

  00401026: jmp 00408a99

  ......

  00407400: ;病毒体入口

  加密的病毒主体

  00408a94: ;解密指针初始值

  ......

【读书小结】—— 基于虚拟机的启发式扫描反病毒技术 既然谈得是虚拟机的启发式扫描反病毒技术,那么就该介绍下虚拟机、启发式扫描的概念。 虚拟机(VM),在反病毒界被称为通用解密器。具体做法是:用程序代码虚拟一个CPU来,同样也虚拟CPU的各个寄存器,甚至将硬件端口也虚拟出来,用调试程序调入被调的样本,将每一条语句放到虚拟环境中执行,这样就可以通过内存和寄存器以及端口的变化来了解程序的执行。这样的一个虚拟环境就是一个虚拟机虚拟机作为原操作系统下 阅读详情

相关推荐

虚拟机技术详解 病毒与反病毒技术

虚拟机技术详解 病毒与反病毒技术 这里的虚拟机不是像VMWare那种虚拟系统的,而是虚拟脱壳,相当于OD式的动态加载脱壳,与OD的不同是目标文件确实不会运行,也就是说她集合了静态脱壳和动态脱壳的优点,做到了扬长避短,最适合脱壳分析病毒木马类程序

反病毒专家谈虚拟机技术 面临两大技术难题

 转载地址:http://www.cnxhacker.com/Article/news/trade/200612/7178.html在目前新病毒及变种层出不穷的今天,如何防御新病毒成为目前反病毒业界一个新的研究课题。12月5日,继江民杀毒软件推出未知病毒主动防御技术后,瑞星也宣布在新品当中应用了虚拟机脱壳技术,从而再次提出了对未知病毒的主动防御问题。在种种防范未知病毒技术面前,虚拟机技术一直在

巅峰测试 1305

虚拟机设计与实现——C_C++&反病毒虚拟机的研究与实现

虚拟机设计与实现——C_C++PDF格式.pdf 反病毒虚拟机的研究与实现.pdf 希望对大家有用。

反病毒引擎设计之实时监控

3.1实时监控概论3.2病毒实时监控实现技术概论3.3WIN9X下的病毒实时监控3.3.1实现技术详解3.3.2程序结构与流程3.3.3HOOKSYS.VXD逆向工程代码剖析3.3.3.1钩子函数入口代码3.3.3.2取得当前进程名称代码3.3.3.3通信部分代码 3.4 WINNT/2000下的病毒实时监控3.4.1实现技术详解3.4.2程序结构与流程...

weixin_30750335的博客 295

卡巴虚拟机启发式查毒的绕过方法

卡巴虚拟机启发式查毒的绕过方法 据我了解在卡巴7中就有虚拟启发式查毒的功能。国内就有人在BLOG上发表了一如何突破卡巴7的虚拟机启发式查毒的文章[1]。卡巴8和最新的卡巴2010中仍然具有该功能。卡巴斯基不用我多说了,大家都知道。 我最近在网上查到有人说卡巴斯基是俄罗斯国家科学院合作开发的,军方和克里姆林宫专用。这个我还真的不清楚了,请原谅我的无知。我先来说下什么是虚拟机

ljmwork的专栏 1332

什么是虚拟机杀毒技术

虚拟机 杀毒 加壳

beefreesky的博客 736

病毒放虚拟机里,就不会出问题吗

综上所述,虽然虚拟机可以在一定程度上隔离病毒,但并不能完全保证不会出问题。在处理病毒等恶意软件时,仍需采取多种防护措施,如及时更新虚拟机软件、谨慎配置共享资源等。虚拟机逃逸漏洞是指恶意软件或攻击者从虚拟机内部突破到宿主机或其他虚拟机的安全漏洞。通过以上措施,可以在很大程度上降低虚拟机逃逸漏洞带来的风险,保障虚拟机和宿主机的安全。通过以上步骤,可以有效地应对虚拟机逃逸事件,减少损失并防止类似事件再次发生。

m0_71322636的博客 5444

反病毒引擎设计

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载文章。分享知识,造福人民,实现我们中华民族伟大复兴!                本文将对当今先进的病毒

jgftyfc的博客 1449

(转载)反病毒引擎设计 --- 实时监控

编者按:绪论《反病毒引擎设计虚拟机查毒》我们重点对虚拟机查毒进行了阐述。下面看看如何对病毒实时监控。  目    录3.1实时监控概论3.2病毒实时监控实现技术概论3.3 WIN9X下的病毒实时监控 3.3.1实现技术详解 3.3.2程序结构与流程 3.3.3 HOOKSYS.VXD逆向工程代码剖析    3.3.3.1钩子函数入口代码    3.3

CoolGe 专栏 943

反病毒引擎设计《转》

创建时间:2003-10-02文章属性:转载文章提交:NJUE (admin_at_ourmm.com)本文将对当今先进的病毒/反病毒技术做全面而细致的介绍,重点当然放在了反病毒上,特别是虚拟机和实时监控技术。文中首先介绍几种当今较为流行的病毒技术,包括获取系统核心态特权级,驻留,截获系统操作,变形和加密等。然后分五节详细讨论虚拟机技术:第一节简单介绍一下虚拟机的概论;第二节介绍加密变形病毒,作者...

weixin_30552811的博客 201

超级简单的8位虚拟机源代码、程序和文档

自己写的虚拟机,8位,带文档、源代码和程序,有专用汇编语言

虚拟机(完整源代码)

虚拟机(完整源代码),实现了win XP的所有功能!

安装cheat engine之后reason security engine长期占用cpu和内存

在任务管理器中发现一个叫reason security engine的进程一直占用cpu资源20%~30%,点开文件所在位置发现是一个叫RAVAntivirus的软件一直在后台运行。 执行它的卸载程序,火绒拦截到在执行插入疑似重新安装的shell,流氓软件的成分很明了了。最后搜索RAV Antivirus关键字,彻底粉碎所有相关文件,cpu占用率又回归正常。 看了一下知乎,大家都反映说是安装cheate engine之后被捆绑安装了,刚好我前两个月也安装了CE,这恒河里。 建议安装cheate engine

weixin_43829154的博客 1万+

虚拟机服务器防病毒,VMware 防病毒最佳实践(18页)-原创力文档

® ™VMware Horizon View 5.x防病毒最佳实践最佳实践VMware Horizon View 5.x 防病毒最佳实践目录简介. . . . . . . . . . . . . . . . . . . ...

weixin_36357900的博客 1130

反病毒引擎设计虚拟机查毒

目录 2.1虚拟机概论2.2加密变形病毒2.3虚拟机实现技术详解2.4虚拟机代码剖析2.4.1不依赖标志寄存器指令模拟函数的分析 2.4.2依赖标志寄存器指令模拟函数的分析2.5反虚拟机技术 2.虚拟机查毒 2.1虚拟机概论 近些年,虚拟机,在反病毒界也被称为通用解密器,已经成为反病毒软件中最引人注目的部分,尽管反病毒者对于它的运用还远没有达到一个完美的程度,但虚拟机以其诸如"病毒指令码模...

weixin_30915951的博客 309

反向探测>病毒虚拟机'特征

作为反病毒从业者常常使用一些在线虚拟机先行检查一下目标程序的性质.不仅方便简洁,还可以防止花不必要的时间在合法的程序上. 但是这样真的那么靠谱吗?其实如果恶意程序能够探测到用来侦查杀软黑盒虚拟机结构. 以两个为例子: 1金山火眼 2Comodo

KD的疯狂实验室 1741

虚拟机检测技术攻防

前言 在当今信息安全领域,特别是恶意软件分析中,经常需要利用到虚拟机技术,以提高病毒分析过程的安全性以及硬件资源的节约性,因此它在恶意软件领域中是应用越来越来广泛。这里我们所谓的虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件(比如VMware,Virtual PC ,VirtualBox),你可以在一台物

whatday的专栏 5万+
上一篇: (转载)反病毒引擎设计 --- 实时监控篇
下一篇: (转载)反病毒引擎设计 --- 绪论篇
Kendiv
博客等级 码龄25年 179粉丝 156原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值