病毒浅析: 此类病毒编写者的功力就有高有低了。高手所编写的远程控制系统可以和最优秀的远程管理工具相媲美,例如开山鼻主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_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run 或者HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run Services中,或者是system.ini文件的[boot]小节将默认项目修改,或者是在Win.ini中的[Windows]小节中的load、run部分进行加载;在Windows/Start Menu/Programs/启动这里加载,如果是2000或者xp,除了上面提到的几个地方,还可能以服务方式加载,在HKEY_LOCAL_MACHINE/Sytem/Current Control Set/Services可以查到具体的加载项目。
对于这一步,由于每个人的机器设置不同,所以天缘也没办法给出列表来说明到底加载的程序中哪些程序是正常的,哪些是不正常的。有个比较方便的方法是——当您系统把需要安装的软件安装得当时,您查看一下以上几个位置,并把其中的项目记录下来,以后觉得自己可能中木马了后,再对比一下以前的记录,将后来添加的自启动程序记录下名字/路径,进行删除操作。这样做的好处是——即使删除掉的是正常程序,也不会是关键进程,不会导致系统无法启动,有恢复修改的余地。在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级帐号的人远比喜欢你在游戏中造型的人多;网络上希望你作他肉机的人远比他做你肉机的人多。总之一句话,无事献殷勤——大多非奸即盗!对待漏洞或权限设置不当的,在后面蠕虫病毒部分一并介绍。