免疫机器狗

增加系统**

当机器狗刚出现时,就有人写出了相应的免疫批处理代码,如下:

md %systemroot%\system32\drivers\pcihdd.sys
cacls %systemroot%\system32\drivers\pcihdd.sys /e /p everyone:n
cacls %systemroot%\system32\userinit.exe /e /p everyone:r
exit
按说,这段代码对于最早的机器狗病毒(10月17日之前)是管用的。机器狗病毒早期的确生成了pcihdd.sys文件.而且还修改了 userinit.exe文件。基于这两点出发,建立一个pcihdd.sys的目录,以及设置userinit.exe的访问权限是管用的。

然而,病毒作者很快发现了这一点。他迅速的在后期的版本中,也加入了批处理的内容。即对以上批处理作了个反向工程,解除设置的权限,删除免疫目录,还是修改userinit.exe文件,达到加载其它病毒木马的目的。
后来,为了防止目录被删掉,有些强人更是出怪招,在pcihdd.sys目录下再建个怪异的目录名,形如”ty…/”的目录。这个目录用批处理是可以建立的,但是不可删除。同样,建了这个目录,pcihdd.sys目录也就不可删除了。
在后期变种中,病毒不再使用pcihdd.sys的这文件为驱动,改成了其他的文件名,比如笔者今天发现的变种,驱动名就是comint32.sys..
这样子看来,基于文件名的防疫方式宣告失败。有人还在不停的建那些怪异目录,以图防疫机器狗病毒。可这样子下去,你的系统里为增添多少**目录?你最后,你自己也没法删除这些**,甚至不得不格式化硬盘。

封域名,封IP
早期机器狗病毒,可以通过简单的反汇编工具,找到相应的下载病毒的网址。后期的机器狗病毒变种,也可通过查看中毒机器的IE临时文件找到下载病毒的网址。
机器狗病毒被各种检测方式很快被找到了,其ip地址和域名也能被发现。于是,在服务器或路由器里封掉这些域名或IP,的确可以有效防治它。然而,恶梦不会因此而结束。据笔者自身封的IP和域名,目前加起来已多达三十多个。还不包括每天都要新的域名或IP被以各种方式发现出来。
ROS里脚本在无限的加长些,路由器里的列表也就无限的增长着。这样的日子,我们看不到尽头在哪儿。

两行批处理,问题看是搞定,但也治标不治本

随着对机器狗病毒研究的深入,大家都一致发现了问题的关键在于userinit.exe和usrinit.exe(后期变种)文件。基于这点出发,可以使用以下两个批处理搞定问题:

wmic process where name=”userinit.exe” call terminate
wmic process where name=”usrinit.exe” call terminate

这是批处理高手写的,果然非同反响。该代码的的意思是:当发现进程里有userinit.exe时,即关闭;当发现进程里有usrinit.exe时,也关闭。因为批处理在winlogon后运行,所以病毒刚启动,就被杀掉了。这样也就失去了下载其它病毒的机会。不过,缺点是它只运行一次。这两代批处理的基础上,加入了每秒检查进程,一发现即终止的vbs脚本:

do while(1)
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)

Set colProcessList1 = objWMIService.ExecQuery _
(“Select * from Win32_Process Where Name = ‘userinit.exe'”)
For Each objProcess1 in colProcessList1
objProcess1.Terminate()
Next

Set colProcessList2 = objWMIService.ExecQuery _
(“Select * from Win32_Process Where Name = ‘usrinit.exe'”)
For Each objProcess2 in colProcessList2
objProcess2.Terminate()
Next

Set colProcessList3 = objWMIService.ExecQuery _
(“Select * from Win32_Process Where Name = ‘conime0.exe'”)
For Each objProcess3 in colProcessList3
objProcess3.Terminate()
Next

Wscript.Sleep(1000)
Loop

这段vbs脚本的机制和以上两段代码有异曲同工之妙。不过,用了无限循环语句,实现了对进程的动态监控,使得被监控进程无法运行。
然而,无论如何,这也依然是治标(userinit.exe)的方法,而非治本(内核驱动被加载,并成功穿透还原软件)的方法。

各大公司,各其奇谋,其中不泛有高手中的高手。给出的方案也是切中要害,一针见血的。

第一节 从底层防病毒-内核也玩驱动过滤

这招首推南京小哨兵公司推出的机器狗防疫补丁。通过安装该补丁侦察得知,该防疫补丁在内核驱动中加入了相关文件,并在进程里进行了监听,便于软件补丁的升级。早期的防疫补丁可能有缺陷,会造成系统死机等现象,以及防不了变种等。由于其不断更新,防疫级别在系统底层,应该是值得信赖的。
小哨兵官方网站:http://www.sentry.com.cn,时常关注,应该能下载到最新的防疫补丁

第二节 从系统引导文件NTLDR下手

NTLDR是xp系统的内核级引导文件,关于它的介绍如下:

深入Win XP之认识神秘的引导文件NTLDR

NTLDR一般存放于C盘根目录下,是一个具有隐藏和只读属性的系统文件。它的主要职责是解析Boot.ini文件。如果你对它的理解还不是很清楚,那么下面我们就以Windows XP为例介绍NTLDR在系统引导过程中的作用。
Windows XP在引导过程中将经历预引导、引导和加载内核三个阶段,这与Windows 9X直接读取引导扇区的方式来启动系统是完全不一样的,NTLDR在这三个阶段的引导过程中将起到至关重要的作用。

1.预引导阶段

在预引导阶段里计算机所做的工作有:运行POST程序,POST将检测系统的总内存以及其他硬件设备的状况,将磁盘第一个物理扇区加载到内存,加载硬盘主引导记录并运行,主引导记录会查找活动分区的起始位置。接着活动分区的引导扇区被加载并执行,最后从引导扇区加载并初始化NTLDR文件。

2.引导阶段

在引导阶段中,Windows XP将会依次经历初始引导加载器阶段、操作系统选择阶段、硬件检测阶段以及配置选择阶段这四个小的阶段。

(1)在初始引导加载器阶段中,NTLDR将把计算机的微处理器从实模式转换为32位平面内存模式,在实模式中,系统会为MS-DOS预留640KB 大小的内存空间,其余的内存都被看做是扩展内存,在32位平面模式中系统将所有内存都视为可用内存,然后NTLDR执行适当的小型文件系统驱动程序,这时 NTLDR可以识别每一个用NTFS或FAT格式的文件系统分区,至此初始引导加载器阶段结束。

(2)当初始引导加载器阶段结束后将会进入操作系统选择阶段,如果计算机上安装了多个操作系统,由于NTLDR加载了正确的Boot.ini文件,那么在启动的时候将会出现要求选择操作系统的菜单,NTLDR正是从boot.ini文件中查找到系统文件的分区位置。如果选择了NT系统,那么NTLDR 将会运行NTDETECT.COM文件,否则NTLDR将加载BOOTSECT.DOS,然后将控制权交给BOOTSECT.DOS。如果 Boot.ini文件中只有一个操作系统或者其中的timeout值为0,那么将不会出现选择操作系统的菜单画面,如果Boot.ini文件非法或不存在,那么NTLDR将会尝试从默认系统卷启动系统。

小提示:NTLDR启动后,如果在系统根目录下发现有Hiberfil.sys文件且该文件有效,那么NTLDR将读取Hiberfil.sys文件里的信息并让系统恢复到休眠以前的状态,这时并不处理Boot.ini文件。

(3)当操作系统选择阶段结束后将会进入硬件检测阶段,这时NTDETECT.COM文件将会收集计算机中硬件信息列表,然后将列表返回到NTLDR,这样NTLDR将把这些硬件信息加载到注册表“HKEY_LOCAL_MACHINE”中的Hardware中。

(4)硬件检测阶段结束后将会进入配置选择阶段,如果有多个硬件配置列表,那么将会出现配置文件选择菜单,如果只有一个则不会显示。

3.加载内核阶段

在加载内核阶段中,NTLDR将加载NTOKRNL.EXE内核程序,然后NTLDR将加载硬件抽象层(HAL.dll),接着系统将加载注册表中的 “HKEY_MACHINESystem”键值,这时NTLDR将读取“HKEY_MACHINESystemselect”键值来决定哪一个 ControlSet将被加载。所加载的ControlSet将包含设备的驱动程序以及需要加载的服务。再接着NTLDR加载注册表 “HKEY_LOCAL_MACHINESystemservice”下的start键值为0的底层设备驱动。当ControlSet的镜像 CurrentControlSet被加载时,NTLDR将把控制权传递给NTOSKRNL.EXE,至此引导过程将结束。

小提示:如果在启动的时候按F8键,那么我们将会在启动菜单中看到多种选择启动模式,这时NTLDR将根据用户的选择来使用启动参数加载NT内核,用户也可以在Boot.ini文件里设置启动参数。
通过修改这一特殊文件,达到防疫机器狗病毒的,首推转转游戏公司。它修改这一文件,并将userinit.exe文件改名为www.ceelsoft.com.userinit文件名,并置入根目录下,达到防疫冰点被穿透的目的。具体细节,得问他们公司的技术人员了。转转最新机器狗补丁下载:
http://www.ceelsoft.com/nb/proxy/www/new0.htm

第三节 系统补丁还必须得都打上

系统漏洞给病毒提供可乘之机的例子,可谓举不胜举。可是,还是有些网吧网管兄弟图个简便,图个懒,做个系统,N年都懒得管他。由于系统补丁未能及时打上,给病毒提供可利用的漏洞,大开方便之门,类似于机器狗病毒泛滥也就不奇怪了。

笔者实测显示,默认安装完windows Xp SP2后,到今天为止,还必须给系统打上多达七十多个补丁。这么多的补丁,哪怕有一个没打好,都有可能给病毒带来机会。

第四节 插件,应用软件漏洞也不得不防

IE插件,各类流氓软件,以及以各种形式安装的控件,都有可能给系统带来新的漏洞。这一点,恐怕我们以前从未意识到。有些兄弟在做完系统后,甚至都懒得清理一下系统里这些**残渣。很多免费软件,都会多少默认安装一些插件或流邙软件,以图一点广告经济利益。而做完系统,又没能很好的清理之,就给系统带来漏洞。百度搜霸就是个很好的例子.

另外,一些应用软件的漏洞,也给病毒提供了可乘之机。诸如本文提到迅雷,realplay,以及通过ppstream(也可以说它是IE插件)这些常用软件等。这些软件的漏洞,往往不会引起注意。然而,他们带来的灾难,不亚于系统漏洞。通过本文先前给出的源码,不难看出这一点.

第五节 全网大检查

现在你可以,也应该对你管理的局域网络进行全面大检查了。检查你的系统是否中了机器狗病毒,是否存有以上提到的那些漏洞,检查你是否都打好了各种防穿透补丁和防疫补丁。