病毒——这个源自医学界的名词,被用在计算机中,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码,就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随同文件一起蔓延开来。
木马——来自“特伊诺木马”,指深入到内部进行攻击与破坏的行为。现在的木马程序一般是指,利用系统漏洞或用户操作不当进入用户的计算机系统,通过修改启动项目或捆绑进程方式自动运行,运行时有意不让用户察觉,将用户计算机中的敏感信息都暴露在网络中或接受远程控制的恶意程序。
蠕虫——蠕虫病毒是指利用网络缺陷进行繁殖的病毒程序,其原始特征之一是通过网络协议漏洞进行网络传播。
脚本病毒——利用脚本来进行破坏的病毒,其特征为本身是一个ascii码或加密的ascii码文本文件,由特定的脚本解释器执行。主要利用脚本解释器的疏忽和用户登陆身份的不当对系统设置进行恶意配置或恶意调用系统特点命令造成危害。
但目前,由于病毒,木马,蠕虫,脚本病毒这四类程序在不断杂交醒苌??丫?纬闪恕澳阒杏形遥?抑杏心恪钡亩嗵?匦浴N?诵形姆奖悖?韵峦吵莆?安《尽保??涫邓睦喑绦虻母腥净?坪捅嘈捶绞绞峭耆?煌?模?攵琳呙窃谠亩恋氖焙蛳昙颖嫖觥O纸锥蔚牟《荆?饕?治?韵录钢郑骸 ?
一.感染可执行文件的病毒
病毒描述:这类病毒就是上面所介绍的4种破坏性程序中的传统病毒。这类病毒的编写者的技术水平可说相当高超,此类病毒大多用汇编/c编写,利用被感染程序中的空隙,将自身拆分为数段藏身其中,在可执行文件运行的同时进驻到内存中并进行感染工作,dos下大多为此类病毒居多,在windows下由于win95时期病毒编写者对pe32的格式没吃透,那段时间比较少,之后在win98阶段这类病毒才扩散开来,其中大家广为熟悉的CIH病毒就是一例;在windows发展的中后期,互联网络开始兴盛,此类病毒开始结合网络漏洞进行传播,其中的杰出代表为funlove传播——由于windows操作系统的局网共享协议存在默认共享漏洞,以及大部分用户在设置共享的时候贪图方便不设置复杂密码甚至根本就没有密码,共享权限也开启的是“完全访问”。导致funlove病毒通过简单尝试密码利用网络疯狂传播。
病毒浅析:由于此类病毒的编写对作者要求很高,对运行环境的要求也相当严格,在编写不完善的时候,会导致系统异常(例如CIH的早期版本会导致winzip出错和无法关闭计算机等问题;funlove在nt4上会导致mssqlserver的前台工具无法调出界面等问题)。这类病毒赖以生存的制约是系统的运行时间和隐蔽性。运行时间——系统运行的时间越长,对其感染其他文件越有利,因此此类病毒中一般不含有恶意关机等代码,染毒后短期内(一般24小时内)也不会导致系统崩溃(如果你是25日感染cih除外),和其他病毒相比用户有足够的处理时间。破坏引导区的大脑病毒、择日发作的星期五病毒、直接读写主板芯片,采用驱动技术的CIH病毒都是其中的代表。
感染途径:此类病毒本身依靠用户执行而进行被动运行,常见感染途径为:盗板光盘、软盘、安全性不佳的共享网络;
病毒自查:此类病毒大多通过的是进驻内存后篇历目录树的方式,搜索每个目录下的可执行文件进行感染,因此对内存占用得比较厉害——如果突然在某个时间后发现自己的机器内存占用很高,可能就是感染了此类病毒。 病毒查杀:这类病毒由于编写难度较大,因此升级(病毒也玩升级?对,例如CIH是在1.4版本后才完善的)速度相对较慢,但由于开机后进驻的程序可能已经被病毒感染,因此杀毒条件是各种病毒中最为严格的,且这2种方式比较干净彻底的方法也适用用后面介绍的各种病毒:
1.软盘(光盘)启机使用杀毒软(光)盘进行杀毒;在进行这一步的时候,必须要保证软盘或光盘的病毒库内已经有杀除该病毒的特征码。
2.将硬盘拆下,作为其他机器的从盘;从其他机器的主盘启动进行杀毒(该机需打开病毒即时监控,以防止来自从盘的可执行文件中的病毒进驻到内存中); 以常见的国产几种杀毒软件为例,在购买的正式版本中,除了供安装使用的光盘外,一般还包含几张软盘(一张引导盘,一张杀毒程序盘,一张病毒库盘)。在对待上面提到的这类病毒时,最好的做法就是用引导盘启动计算机,然后根据提示将杀毒程序盘和病毒盘依次插入,进行病毒查杀。注意2点:1.目前比较新版本的杀毒程序盘都能完善地支持ntfs分区的读写,如果您是在几年以前购买的杀毒盘,可以根据厂家的服务方式进行升级;2.由于采用软盘杀毒的时候,使用的是软盘上的病毒库,为了能正确地查杀病毒,请定期升级软盘的病毒库,否则真到用的时候就哭也哭不出来了。
杀毒遗留:由于这类病毒是寄生到其他程序内部,即使非常优秀的杀毒软件,能做到的也只是把该染毒程序内的病毒某关键执行部分删除,使得染毒程序在运行时病毒无法运行。因此并不是严格意义上的完全清除——病毒程序的某部分依然残留在程序内部,俗称“病毒僵尸”。
在杀除这类病毒的时候,最主要的是分析捕捉特征代码,因为抓特征码的过程中不仅要准确地破坏病毒的执行部分,而且不可以触动正常的程序代码。否则会常常出现杀毒之后该程序无法使用的情形——那还叫什么杀毒?还不如直接删除文件比较好嘛!在查杀这类病毒上,根据天缘的使用经验,norton和国内的金山毒霸做的比较好一些。(此评价只根据我个人使用经验如实说出,不带任何广告性质,请各位选择杀毒产品的时候不要以我的介绍为依据,本人不承担任何责任,下同。)
病毒防范:安装包含即时监控的杀毒软件并启机执行,每天升级病毒库获取最新病毒特征代码;尽量不使用来源不可靠的软盘和光盘,使用前先扫描;关于网络防毒部分后面一并介绍。 二.后台运行进行恶意控制和破坏的病毒
病毒描述:帐号被偷,密码被盗,机器被人远程控制着放歌/开关机/屏幕倒转过来,硬盘不住地转动将关键资料向外发出,就是这类病毒的杰作了。这类病毒和上一类病毒最本质的区别是——这类病毒本身是独立的程序,而不是寄生于另一个程序中。这类病毒的编写主要在于对操作系统本身接口的熟悉,网络传输的熟悉,以及对隐蔽性的要求,此类病毒的编写可使用多种语言,对病毒写作者本身的实力也是一种考验。这个病毒中,最出名的莫过于BO了,可以说,它指引了这种病毒在windows平台的发展理念。这类病毒就是统称的“木马”病毒,通过系统漏洞/用户操作疏忽进入系统并驻留,通过改写启动设置来达到每次启机运行或关联到某程序的目的。在windows系统中,表现为修改注册表启动项、关联Explorer、关联notepad等方式。
病毒浅析: 此类病毒编写者的功力就有高有低了。高手所编写的远程控制系统可以和最优秀的远程管理工具相媲美,例如开山鼻主BO,国产的冰河,著名的黄金木马sub7都属于这一类,这类程序分为2个部分,控制端和被控制端;而在unix类平台下的木马经常是一个简单外部命令的重新实现——例如将原本的ls命令替换掉,用自己写的一个程序代替,在执行正常文件列表的同时隐含执行特殊命令,这类木马的编写水平也相当高,但在windows下极少出现类似程序替代的木马,这类病毒的联系一般是单向进行的;还有一类木马就是网络盗窃性质的,以im软件,网络游戏盗号居多,近来发展为对金融业有所染指,这类一般就是通过程序监视当前窗口,并获得当前窗口特定控件的值(用户名/密码框里的值),然后通过email,远程登陆web数据库等方式把获得的密码发出去,这类程序具有一定编程基础的各位朋友都能做到;第4类是惟恐天下不乱的纯捣乱程序,原理跟上一种类似,不过是朝文本框写信息,例如著名的qq尾巴病毒,这类病毒由于病毒作者将源代码放出,改写起来相当容易,智商85以上的人士都能胜任的。这类木马病毒中的杰出代表为BO、冰河、Sub 7等。
感染途径:利用系统漏洞——造成溢出——获取一定权限——利用其他漏洞或用户设置不当提升权限——上传恶意程序/修改系统设置——启动恶意程序。是这类病毒感染的惯用方式。在后期,出现了以诱骗用户执行为主要感染方式的新木马,充分利用了社会工程学,例如在im类软件上给你发送一个名为“我的照片.exe”这样的文件给你,引诱你打开执行。由于木马的用途主要是将病毒编写者感兴趣的资料回发——因此感染途径99%来源于网络,在完全无网络单机状态下的木马等于是没用的死马。 病毒自查:由于木马发送者的企图都是通过控制你的机器操作来获得一定利益,因此都会设置启动时加载该程序。控制类的木马需要占用相当一部分系统资源——用户直接能感觉到的就是启动速度变慢,系统运行速度变慢;而帐号盗取类的木马由于需要获得特定窗口的窗口句柄,因此会在当前窗口切换的时候进行读取判断——在机器配置不高的机器上,如果快速轮循窗口,则感觉到窗口出现速度明显下降;恶作剧类的木马就不用提了,大家都知道不对劲。
木马病毒在编制不够完美的时候,会导致程序溢出——例如运行ie的时候多次出现“非法操作”、打开资源浏览器速度狂慢等现象,也可能是系统中了木马后的蛛丝马迹。在现象判断上,确实没有切实的客观规则可循,主要是依据主观经验判断。总之——如果您没有安装任何软件/修改任何设置,原本昨天速度飞快的机器今天要么总是非法操作,要么速度延迟——那么您被感染了病毒或木马的可能性相当大了。当然,如果您的qq帐号,传奇密码被偷了——更有100%的可能性是潜伏着的木马干的。另外,相当多的木马程序由于带了hook钩子,常常导致调试类程序出错,如果您使用softice调试某些程序时经常无故报错,那或许也是系统中挂接了异常的hook程序——木马。
病毒查杀:木马病毒的繁衍也是相当快速的,特别是行为上难以判断——合法远程控制软件和木马在本质上基本上无区别,在执行行为上也相当类似。而木马的控制协议一般是走tcp/ip协议,理论上是可以在65535个端口中随意选择(当然实际中会避开一些保留端口,防止系统冲突——木马最必要的生存条件就是其隐蔽性),因此也无法利用端口方式准确判断出病毒种类;通过特征码方式,如果木马作者没有留下版本信息或说明文字,则也相当难以判断;特别是木马的源代码公开后,想在其中加入一段独特的功能代码不是什么难事,因而衍生的版本特别快也特别多,这更加大了杀毒软件查杀的的难度。
事实上现在世面上的杀毒软件对待木马的查杀能力并不够强大,如果有可能,可以选择专用的木马查杀软件,如木马克星等。当然,木马也有手工解决的办法,而且对待层出不穷的木马也只有手工查杀才能以不变应万变——感染/修改设置/启动加载/运行获取密码 是木马必经过的4个步骤,让我们看看怎么找出藏在机器中的马来——由于木马需要启动加载执行,因此大多采取修改启动项目来加载的方式进行——那么,我们就到启动项目里去牵马吧;
在这一步,需要用户对自己windows的启动项目熟悉。Win98中,病毒可能在注册表的HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun 或者HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun Services中,或者是system.ini文件的[boot]小节将默认项目修改,或者是在Win.ini中的[Windows]小节中的load、run部分进行加载;在WindowsStart MenuPrograms启动这里加载,如果是2000或者xp,除了上面提到的几个地方,还可能以服务方式加载,在HKEY_LOCAL_MACHINESytemCurrent Control SetServices可以查到具体的加载项目。
对于这一步,由于每个人的机器设置不同,所以天缘也没办法给出列表来说明到底加载的程序中哪些程序是正常的,哪些是不正常的。有个比较方便的方法是——当您系统把需要安装的软件安装得当时,您查看一下以上几个位置,并把其中的项目记录下来,以后觉得自己可能中木马了后,再对比一下以前的记录,将后来添加的自启动程序记录下名字/路径,进行删除操作。这样做的好处是——即使删除掉的是正常程序,也不会是关键进程,不会导致系统无法启动,有恢复修改的余地。在Win98和XP中有个方便的Msconfig命令便于我们查看以上说的启动项目,如果使用的是Win2000,可以将XP的该文件Copy过去使用。
如果的确发现了可疑的启动项,那么接下来的工作就是删除它了。在删除的步骤上,有2个选择:
1.删除启动项目,重新启机,删除木马文件;
2.禁止当前运行的木马程序,删除启动项目,重新启机;
两种方法各有其优点,下面我们来一一分析。第一种方法,是删除启动设置里的木马程序选项,并记录下该木马文件的位置(可用“查找”功能定位,并记录下来),然后重新启动机器(直到机器被重新启动前木马依然是存活着的),重新启动后,木马程序本身依然存留在硬盘上,然后直接象删除普通程序一样删除掉——这个方法的要点就是先禁止木马的启动然后再行杀除,好处是操作简单,不需要借助其他软件,特别是在Win98下默认是无法查看某些进程的,因此用这个方法相当方便,坏处则是对某些木马无效——某些木马在运行的时候会定期查看设置的启动项是否还存在,若是不存在的话会自动修改过来,属于比较强硬的做法,于是第一种杀除方法就无法应对这样的木马了;第2种方法是先通过进程管理器查看,记录并终止运行可疑程序(不光是注册表/配置文件里的木马启动项,有时候木马程序本身会运行一个附带的独立监视程序来防止自己被改写
因此需要非常熟悉自己的机器上的固定正常运行程序才能准确判断,当然还有一个做法是非关键进程都杀——天缘在给朋友机器手工杀木马的时候常这样),之后再到启动项目里去杀除掉相关的启动项目,重新启动机器后再把刚才记录下的进程进行仔细查看,把确认为木马的文件删除掉。这个方法好处当然就是比较容易杀掉一些定期检查/回写启动项目的疑难木马,不过对用户的操作要求比较高一些。
以上2种方法如果掌握了,基本上就能把目前的木马全部手工杀除掉,但遇到木马使用2个程序互相关联/检查启动,或者是在加载基本驱动阶段时以驱动程序方式嵌入的木马程序时候用上面提到的2种方法都无效。在Win2000/xp中,启动机器的时候会加载system32/drivers目录下的驱动,而如果这些驱动中含有恶意程序,那么它可以做到改写i/o,让Windows修改某些文件无效,或让操作某一注册表无效,目前这一技术在病毒中尚未看到先例,但颇有争议的3721已经成功地运用了该技术,相信在不久的将来一些功力深厚的病毒作者也会运用到此技术。天缘在这里预先提一下对该类病毒的删除方法——由于病毒已改写i/o,故最好的做法是在非windows环境中将其删除,具体的做法是用软盘/光驱引导启动,或者利用vFloppy等工具配合boot引导程序制作一个小型虚拟引导盘,进行杀除工作。
杀毒遗留:由于木马程序并不一定只有一个可执行文件,因此如果利用手工查杀的方法,或许会有一些木马留下的dll,ocx等资源文件留下,副作用没什么,但是会残留在硬盘上。杀毒软件严格意义上来说只是杀除了一些比较流行的主流木马,对待一些不太流行的木马是视而不见的,专业的木马查杀工具能杀除90%左右的木马,但剩下的10%高技术的木马也无法查杀——如上文提到采用3721那种加载到system32/drivers下的木马在windows上改写文件/注册表的读写,则无法在windows环境下查杀。
病毒防御:对待木马,防止感染远比事后杀除更为重要——重要的文件/资料/帐号已经被获取了,即使把木马杀了也无事于补。木马的进驻,除了利用系统漏洞,大多采用欺骗方式——记得一句古话:“便宜莫贪”。网络上初认识的朋友热情地给你发他的照片,四处标榜着的免费游戏外挂,一些小站点吹嘘的精品软件,一些情色站点的专用播放器,一些所谓“安全站点”的所谓黑客工具。
世界上没有绝对免费的事,以上提到的这些事情中的确有一些是免费的,当更多的是木马程序,或者利用程序捆绑技术,将正常程序和木马程序捆绑在一起的。如非必要尽量不要在这些地方进行下载。总想贪图便宜,会吃大亏的——生活中如此,网络上同样是!网络上喜欢你6位qq号的人远比觉得你帅的人多;网络上喜欢你40级帐号的人远比喜欢你在游戏中造型的人多;网络上希望你作他肉机的人远比他做你肉机的人多。总之一句话,无事献殷勤——大多非奸即盗!对待漏洞或权限设置不当的,在后面蠕虫病毒部分一并介绍。
[此贴子已经被作者于2005-6-24 13:41:13编辑过]