国外杀毒软件与国内杀毒软件相比,如何取决

国外杀毒软件与国内杀毒软件相比,如何取决,第1张

首先来谈国内吵得最热的杀软

瑞星属于国内病毒查杀的老爷车,最新发布病毒库时间平均比江民慢10天左右。其防火墙能力也逊色与NOD32,网页的相关病毒不能够有效的自动屏蔽和警报。站内存也比较大。最头痛的是扫描能力,和卡巴有一拼,不建议使用。

江民KV2007数最了解中国国情的杀软。新病毒以及新变种病毒的发布速度明显快与国内各杀软。

但江民对于最近流行的的VB病毒办法不多。

金山:忽略不记

NOD32有网络监控杀毒

点击非法网络站点以及邮箱病毒时,会自动屏蔽和警报,而且占系统内存很小,扫描速度与VB型病毒查杀能力明显优与各大杀软。

AVG

Anti-Spyware对于木马和后门程序查杀能力在所有软件里鹤立鸡群,而且具有启发式探测未知威胁能力。占系统内存是所有杀软最小的,1508K是NOD32的一半。

MCAFEE对于僵尸网络类型的邮件后门程序和钓鱼程序的查杀首屈一指,BUT其真正杀毒能力只能够用“平庸”二字概括。

卡巴斯基在国内面临与病毒战斗焦炙的境地,不建议使用卡巴斯基,因为国内大部分病毒都针对卡巴斯基杀毒性质而编写代码,避免被卡巴斯基查杀。但卡巴斯基对比较普通黑客攻击和病毒的查杀能力突出。

赛门铁克诺顿Norton在反钓鱼方面比其他软件都强大,而最近的研发对象都转向僵尸网络。而僵尸网络目前国内黑客技术还不完善,所以目前来说不必担心到需要赛门铁克来查杀的时候,其他杀毒能力与麦咖啡相似。

其实购买一个正版XP或者Vista是最好的选择,及时的更新官方补丁再配以NOD32是个不错的搭配

任何杀软都有他的特点与不足之处,而每段时间内每个杀软件所呈现的杀毒效果也不同,所以根据个人的电脑配置以及网络环境来选择杀软。

他实际上提供给受害者的分析依据就越多。在占领一台机器后,高水平的攻击者会首先做两件事:1 考虑如何留好后门(我以后还要回来的哦)!2 如何清理日志。这就是擦掉脚印,不让自己做的事被别人查觉到。比较不敬业的黑客会不管三七二十一把日志全都删掉,但这样的话网管员发现日志都没了就会知道有人干了坏事了,顶多无法再从日志发现是谁干的而已。相反,真正的好手会挑有关自己的日志项目删掉,让人看不到异常的情况。这样可以长时间地利用傀儡机。但是在第3部分攻击傀儡机上清理日志实在是一项庞大的工程,即使在有很好的日志清理工具的帮助下,黑客也是对这个任务很头痛的。这就导致了有些攻击机弄得不是很干净,通过它上面的线索找到了控制它的上一级计算机,这上级的计算机如果是黑客自己的机器,那么他就会被揪出来了。但如果这是控制用的傀儡机的话,黑客自身还是安全的。控制傀儡机的数目相对很少,一般一台就可以控制几十台攻击机,清理一台计算机的日志对黑客来讲就轻松多了,这样从控制机再找到黑客的可能性也大大降低。黑客是如何组织一次DDoS攻击的?这里用"组织"这个词,是因为DDoS并不象入侵一台主机那样简单。一般来说,黑客进行DDoS攻击时会经过这样的步骤:1 搜集了解目标的情况 下列情况是黑客非常关心的情报: 被攻击目标主机数目、地址情况目标主机的配置、性能目标的带宽对于DDoS攻击者来说,攻击互联网上的某个站点,如 http://wwwmytargetcom,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www服务。以yahoo为例,一般会有下列地址都是提供 http://wwwyahoocom 服务的: 662187187 662187188 662187189 662187180 662187181 662187183 662187184 662187186 如果要进行DDoS攻击的话,应该攻击哪一个地址呢?使662187187这台机器瘫掉,但其他的主机还是能向外提供www服务,所以想让别人访问不到 http://wwwyahoocom 的话,要所有这些IP地址的机器都瘫掉才行。在实际的应用中,一个IP地址往往还代表着数台机器:网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去。这时对于DDoS攻击者来说情况就更复杂了,他面对的任务可能是让几十台主机的服务都不正常。所以说事先搜集情报对DDoS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,不管你有多少台主机我都用尽量多的傀儡机来攻就是了,反正傀儡机超过了时候效果更好。但在实际过程中,有很多黑客并不进行情报的搜集而直接进行DDoS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。其实做黑客也象网管员一样,是不能偷懒的。一件事做得好与坏,态度最重要,水平还在其次。2 占领傀儡机 黑客最感兴趣的是有下列情况的主机: 链路状态好的主机性能好的主机安全管理水平差的主机这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDoS并列的攻击方式。简单地说,就是占领和控制被攻击的主机。取得最高的管理权限,或者至少得到一个有权限完成DDoS攻击任务的帐号。对于一个DDoS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们的。首先,黑客做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,象程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞…(简直举不胜举啊),都是黑客希望看到的扫描结果。随后就是尝试入侵了,具体的手段就不在这里多说了,感兴趣的话网上有很多关于这些内容的文章。总之黑客现在占领了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦脚印这些基本工作之外,他会把DDoS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDoS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。3 实际攻击 经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备发射了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就象图示里的那样,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:"预备~ ,瞄准~,开火!"。这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,他们不会"怜香惜玉"。 老到的攻击者一边攻击,还会用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击很厉害的

  恶意软件的编写者们不断地在寻找新的方法来伪装他们的代码,以求逃过杀毒软件的检测。目前有两种新的代码伪装技术对现有的恶意代码检测分析系统形成了挑战,这就是脱壳(unpacking)和运行时多态(run―timep01yITlorphism)。更为危险的是,脱壳和运行时多态都可以利用GPu进行加速。这样一来,之前困扰恶意软件编写者的那些高负荷计算运行方法,都可以利用GPU强大的并行计算能力进行处理。这将导致我们在未来而临破坏力更为强大、狡猾而令人防不胜防的恶意软件。

加壳和变身恶意软件感染计算机的方法

本文中将提到多次有关汁算机病毒、僵尸客户端、木马程序、后门程序以及恶意软件等诸多对电脑经常程序运行产生危害的非法软件。为了方便起见,本文全部将其称呼为“怀有恶意性质的软件”或“恶意软件”。

在正常情况下,这些怀有恶意性质的软件,会悄悄地插入你的系统进程中,并在后台执行一些不可告人的 *** 作。从硬件角度来分析,传统计算机系统中,只有CPU能完成这样的任务。原因首先是CPU可以执行任意类型的代码,可编程性极强;其次,CPU是系统的核心,拥有执行任务相当高的权限;其三,现代CPU性能都很不错,多核心技术的普及让这些怀疑恶意性质的软件即使运行起来,用户也很难察觉――因为你的CPU某些核心往往不会满载,NVlDIA,已经分别针对其GPU发布了相应的SDK(software developmentkits,软件开发包),用于帮助程序员执行可以在GPUJL运行的通用代码。这些代码甚至可以使用传统的C语言来编写,比较常见的有NVIDIA和CUDA或者AMD的Stream。

目前,最新一代的GPU(比如支持DirectX 11的NVIDIA GeForce GTX500系列),已经允许CPU和GPU上运行的代码完全相同(如NVIDIA所推出的CUDA-X86计划)。在这种情况下,GPU通用计算被广泛应用于各类计算任务中。当然,这部分计算任务还包括那些“雄心勃勃”的恶意软件代码编写者。考虑到通用计算的巨大潜力,做出“恶意软件编写者们将利用现代GPU的强大性能,来为自己牟利”的预测就是很自然的事情了。

当然,如果恶意软件需要正常的运行,必须有两个先决条件:1躲避现有反恶意软件的防御能力;2超越分析人员人工解析的能力。很多情况下,对恶意软件的人工解析是确定、部署相应的检测并开发反制软件的先决条件。为了达到这个目的,恶意软件往往使用两种手段来阻止各种反恶意软件发现,并防御自己的运行――这就是加壳和多态性,这是使用最为广泛的、用于逃避反恶意软件扫描和防御的技术。除此之外,在实际应用中,代码伪装和反调试技巧常常被用于阻碍对恶意软件代码所实施的逆向分析工程。

所谓加壳,就是将自己真正需要运行的内容保护起来。打比方来说,炸d外面包上鲜花,然后放在邮包里,邮包放在旅行箱里,旅行箱被放在运输飞机的某一处。在加了三层壳子后,炸d看起来像个正常的旅行箱,但一旦飞机上天,爆炸后的后果就不堪设想。恶意软件往往将自己伪装成正常执行的程序,骗取系统或者反病毒软件,甚至是用户本人的信任,最终实现其不可知的目的。

而多态性,是指恶意软件在执行时,不将自己全部暴露在内存中――如果全部暴露,就可能难以逃脱反恶意软件的扫描。因此,恶意软件将自己的一小部分暴露在内存中,然后在需要的时候再暴露另一部分。简而言之就是“化整为零,按需调用”。这个看起来相当“有效率”的方法,带来了恶意软件非常难以防御的特性。因为程序不是人,它们只能机械地执行扫描和对比的任务。如果反病毒程序已经确定了几种恶意软件“变身”的方法,那么只要恶意软件下次改变一下暴露顺序,或者掩盖一下自己的执行目标,反病毒软件就可能无法侦测。

迄今为止,这些所有的恶意软件都利用了目前程序执行环境的复杂性,尽可能隐秘地逃脱反恶意软件的侦测。更糟的是,大部分研究反恶意软件的安全研究人员们只关注于IA-32架构,因为绝大多数恶意软件都运行在X86系统上。但令人担心的是,GPU通用计算的来临,为恶意软件的编写者们带来了一扇机会之窗,因为大多数安全研究者对于GPU的执行环境和指令集架构并不熟悉。利用GPU通用计算,恶意软件可能会有效对抗现有的防御手段。

机会还是威胁GPU通用计算的发展

接下来,让我们先暂停一下对恶意软件的恐惧,进入GPU的世界。GPU通用计算最近几年来飞速发展,当GPU本身可编程性和灵活性大大提高后,很多人开始着手探索如何利用GPU架构进行大规模的并行计算,毕竟GPU拥有系统中最为强劲的浮点计算能力,仅仅作为3D计算显然相当可惜。但GPU通用计算需要专用API才能在GPU上完美运行。一般的图形APIMDlrectX和OpenGL等,都不能很好地进行通用计算。

对传统GPU来说,无论是GPU本身设计还是调用方式都尽可能为GPU需要执行的图形计算优化。因此你如果想利用GPU庞大的计算资源,那些需要计算的数据和变量,必须映射为图形学对象,算法处理必须被表述为像素和顶点处理的形式,假装是在进行图形计算一样。这种“假装”的形式让程序员感到很束缚。因为传统GPU缺乏方便的数据类型,基本的计算函数,以及一个一般化的内存访问模型,使得它对于习惯于工作在传统编程环境下的程序员们来说没有多少吸引力。

进入DirectX 10时代后,NVIDIA提出了CUDAfCompute UnifiedDevice Architecture)这样一个相当富有创造力的通用运算API架构。有了这个API之后,程序员就不需要在自己的大脑中“映射”各种数据,APl作为沟通桥粱已经承担了数据转换、程序编译等任务。这样一来,GPU就能很好地发挥计算效能。与此同时,AMD也提供了对应自家GPU产品的通用计算方法,被称为Stream。

CUDA由一个C语言的极小扩展集和一个运行库组成,这个运行库提供的函数能够控制GPU,以及设备专有函数和相应的数据。从相对宏观的角度看,一个CUDA程序由两部分组成,一个运行在CPU上,另一个称之为“kernel”,是运行于GPU上的并行化部分。不过GPU上的kernel是不能独立运行的,它只能依赖于CPU上的父进程调用,因此,它不能被作为一个独立的程序直接初始化。

CUDA中的kernel在运行时被划分为多个线程来执行,这些线程被组织成多个线程块,然后交由GPU的CUDA Core--也就是常说的流处理器来执行。在GeForceGPU中,每个处理单元会包含8个SIMD流处理器组。这8个SIMD流处理器组会根据一个线程调度器的调配,令多个线程块尽可能高效率、最大化地运作,保障整个GPU的运行效率。

除了编程执行外,CUDA还提供了用于在主机和GPU问进行数据交换的 函数,所有的I/O动作都通过PCI-E总线进行。不仅如此,存储器 *** 作还可以通过DMA进行,这样就可以大幅度提高CPU和GPU工作的并行程度。在内存一致性方面,主机的分页锁定内存中的一个块可以被映射到GPU的地址空间里,使得在CPU上运行的普通程序和GPU上运行的kernel能够直接访问相同的数据。

总的来说,无论是CUDA还是Stream,都是尽可能利用GPU"性能的API。恶意软件要运行得有效率,就绕不开这两个API。下面就让我们来看看恶意软件是如何在GPU上捣鬼的。

上文说过,运行于GPU上的kernel必须依赖CPU上的父进程。恶意软件也是如此,那些能利用GPU超强性能的恶意软件往往包含两个部分--GPU部分和CPU部分。说得更细致一些,那就是恶意软件在执行时,会裁入GPU端的设备代码,分配CPU和GPU都可以访问到的一块内存区域,先初始化数据,然后调度GPU代码开始执行。当然,和所有利用GPU的程序一样,恶意软件可以在GPU和CPU之前来回转换,或者单独让GPU运行或者只让CPU运行,也可以同时在GPU和GPU并行执行。

当然,恶意软件编写者不仅仅看中了GPU的计算能力,他们还需要更自由、不被监视的执行空间。恰好,在GPU这里,恶意软件可以与CUDA库静态链接,成为一个独立的可执行程序,这样一来,恶意软件就不需要在被感染的系统中安装额外软件。更令人难以接受的是,目前GPU端的代码执行,以及CPU和GPU之间的通讯,都不需要管理员特权。这意味着,恶意软件可以在任何用户权限下成功运行――它不需要任何权限,也没人监控它。这就令恶意软件隐蔽性更高、更容易被运行起来。

束手无策恶意软件如何利用GPU资源

前文已经描述了恶意软件感染系统的方式,并且说明了它利用GPU进行并行加速的可能性。接下来,研究人员将通过实例来模拟这个过程。在模拟中使用的原型代码不仅仅证明了恶意软件利用GPU的可行性,而且已经确信对现有的分析检测系统构成了不容忽视的挑战。

研究人员选择使用NVIDIACUDA来部署源代码,当然攻击者可以很容易地使用其他GPU代码版本,甚至还能在不同GPU之间进行转换。目前攻击者只要掌握了CUDA和Stream,就能基本上掌握100%的GPU恶意软件攻击范围。还有更令人恐惧的――OpenCL是一个跨平台的GPGPU框架,致力于提供统一的API,如果它得到广泛引用,那么就连插入不同版本的代码也完全没有必要,只要平台支持OpenCL,就可能被恶意软件利用你电脑中的GPU加速运行。

1自脱壳GPU加速

前文已经简单介绍了恶意软件的加壳技术。当然,飞机上放炸d的例子只是用于破坏性的炸d。在软件这里,经过多层加壳伪装后的代码,需要脱壳解秘,才能变成真正的恶意代码危害系统。

一般情况下,恶意软件设计有自脱壳程序,这个程序在运行时会首先解包被隐藏的代码,然后将控制权移交给已在主机内存中变形为真实代码的恶意软件。当然,一种恶意软件可能不止使用一种加壳程序,使用不同的变换方法或者改变解包程序的代码,攻击者可以容易地制造同一个恶意软件的全新变种,还能有效地躲避检测程序。

目前传统恶意软件的自脱壳算法都不特别复杂,因为要考虑到CPU的计算能力,一旦显著拖累系统,恶意软件不但容易被察觉,还给自己的运行带来了不利影响。但利用GPU强大的并行计算能力后,恶意软件的作者能够利用极其复杂的加密算法给恶意软件加壳,这些复杂的加密算法最终将被GPU大规模并行架构快速而有效地处理。

这种高强度的加壳、脱壳 *** 作,为现有的恶意软件分析检测系统制造了不容忽视的障碍。许多反恶意软件中用于检测自动脱壳的部分有先天缺陷,没办法应对基于GPU的自解包恶意软件。比如常用的PolyUnpack,在脱壳时依赖单步执行和动态反汇编,但这种技术在GPU上的动态和静态分析还很不成熟,当然也没有获得恶意软件分析系统的支持。另外一些反恶意软件的脱壳系统,比如Renovo,依赖于在虚拟机中监控恶意软件的执行过程,但显而易见的是,目前的虚拟机还仅仅只能做到虚拟图形设备而已,只能执行简单的3D计算,根本不能执行GPU通用计算任务,也没有这方面的功能。这样一来,利用虚拟机监控恶意软件的脱壳也将成为泡影。

当然,还有一些检测软件脱壳的技术比如omniUnDack,这种技术理论上可能会对恶意软件在GPU中的 *** 作起到一定的检测作用,但实际上它在应用中还是和虚拟机联合部署的,也就是说,实际应用中也不能检测到GPU中的脱壳运行情况。

2运行时多态技术

不过,前一页研究人员的演示可能并不能让人信服,有人肯定会说,无论加壳脱壳的设备是CPU还是GPU、无论壳算法多么复杂,最终都将恶意代码直接存放在主机内存中。这样一来只要反恶意软件扫描系统内容,就能很轻松地发现恶意软件执行意图并给予相应防御措施。

实际上这种情况只能代表部分恶意软件的运行方法。正像本文开头解释“运行时多态”技术时说的那样,恶意软件在运行时,往往不会暴露自己的全部代码,它可能重新加壳,或者只是按需分配、重复加壳脱壳那些当前需要的代码。不仅如此,恶意软件开发人员还会控制解码部分的粒度,也就是每次解码的数最,这个数量越小,在内存中暴露真实代码的区域就越小,被侦测的可能性也就越低,也越难以被发现和防御。这种代码分割算法给反恶意软件带来了明显的困扰。

在加入了GPU后,这些重复脱壳加壳的算法,都使用GPu执行,并且整个需要脱壳和加壳的部分代码也全部存在GPUAc。CPU的职责仅是在每个部分的代码执行前和执行后,将控制权交还给GPu上的调度代码,去做按需的解密变换和加密变换。也就是说,在执行期间,控制权在CPU和GPU之间不断地转换。同样,GPU和CPU也拥有一个可以同时访问的内存区域用于保持数据一致性和及时刷新。

不仅如此,在这种技术中,解密密匙被保存在较为保密的、无法从CPU端访问的CUDA设备存储器当中,更有甚者,在每个部分执行后的重加密过程中,还可以使用随机生成的不同密匙,这导致了恶意软件能够在存储器中以不可预测的方式不断地发生变异。而这些解密方法和变异都是不能被检测或者预测到的,将直接导致目前依赖抽取密钥和相应加密解密区域等方法的反恶意软件运行失败。当然从理论上来说,虽然原始代码的完整抽取仍然是可能被分析人员做到的,但是如果考虑现有的反调试技术,这种有GPu从旁协助的运行时多态会使得整个逆向工程分析过程变得异常地漫长和艰难。

未来更危险GPU上恶意软件的发展方向

在先前的章节中,研究人员为我们展示了恶意软件将自己在CPU和GPU之 间分离执行的具体方式。虽然现代GPU的性能已经足够强大,但是目前的技术仅仅使用了其中的一小部分。未来恶意软件作者可能会开始广泛利用GPU的图形和通用计算能力。

GPU提供了,大规模并行处理的能力,可以被用来加速CPU负载较重的运算。例如,一些恶意软件开发人员往往使用僵尸网络进行大规模的密码暴力破解,而这正是GPU通用计算的专长。通过对GPU通用计算的支持,僵尸电脑的能力可以很容易地获得延伸,可以使用被感染主机的GPU来分摊密码破解的负载。这不仅带来了整体破解效率的显著提升,而且还隐藏了正在进行的恶意活动――因为GPU的工作无法被实时监控,无法鉴别正在运行的代码,所以难以确认GPU上是否有密码破解程序的代码出现。另外,由于GPU的加入,在这种计算任务中,CPU几乎不会占用,所以CPU负载监视程序对于检测恶意活动也无能为力。

除了恶意软件在GPU上的运行外,还有其他的一些危险也可能和GPU挂钩。比如GPU的帧缓冲区,屏幕上所显示的内容往往存放在帧缓冲区内。不过目前系统对帧缓冲区的访问没有施加限制,这可能会带来一系列攻击手段。比如,GPU上运行的恶意代码能够周期性地访问这一缓冲区,将用户屏幕上出现的私人数据收入囊中,这个做法比现有的屏幕截图的手段更加隐蔽。而更老练的恶意软件甚至会试图在用户访问虚假网站时,在屏幕上显示错误的或者具有迷惑性的信息,例如偷偷将用户浏览器地址栏中,那些可能会引起用户怀疑的恶意地址,替换成看起来正常的地址。

不过有一个好消息是,目前帧缓冲区还存在读写保护,因此一些对帧缓冲区的恶意行为很难轻易实施。但由于厂商们一直在尝试提升GPU通用运算SDK和图形API(如OpenGL,DirectX)的互通性,所以未来有可能存在对屏幕帧缓冲区拥有完全访问权限的kernel。这种要求主要来自于那些需要直接访问屏幕像素的程序,例如3D变换,视频编码与解码等。因为这样一来就可以大大减少cPU和GPU间的数据交换。所以,将来发布的硬件会不可避免地具备这一特性。

更恐怖的是,未来的GPu通用架构将使得部署基于GPU的恶意软件成为可能,也就是说,恶意软件将主要在GPU上运行,与在CPU上运行的程序没有任何关联。不过令人庆幸是,这种问题可能在短期内都不会出现。因为现有图形硬件架构很难支持独立GPU程序的多任务运行,任意时刻只支持一个任务占用GPU。这就意味着一旦有任何独占GPU的运算任务存在,那么负责屏幕内容渲染的程序无法运行,显示器上显示的内容会被冻结。虽然这些在现在看来不太现实,有很多技术障碍需要克服,但是在将来,图形硬件将具备下一代恶意软件所需要的功能,这会彻底释放GPU的能力。

当然,我们现在也无需悲观。毕竟当前GPU还无法脱离CPU对系统进行控制。我们现在还有充分的时间,对未来GPU可能进行的破坏行为进行研究,预防。同时,也有不少杀毒软件开始采用能够利用GPu运算能力的杀毒引擎,显然这也将大大提升电脑的反病毒能力。最后,让我们听听长期致力于GPU通用计算研究、来自香港浸会大学的赵开勇先生对此文的精彩点评。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12174821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存