手工斩杀中文域名邮
来源:网泰金安信息技术有限公司 时间:2006年11月20日13:32

今天安装软件的时候不小心,又中了流氓软件,MD,又是那个中文域名邮,每次启动机器都弹出一个框,太烦人了,连微软的spyware都删除不了,真够NB的啊!决定看看它到底是怎么弄的。其过程如下:

在它的框弹出来的时候,利用VC中自带的Spy++,抓到这个框口,它的相关信息就全显视出来了,找到其中的进程ID。

打开 procexp.exe(sysinternals的进程查看工具,比windows自带的任务管理器强大),根据进程ID找到进程,查看了相关的信息,该进程叫做capp.exe,位于C:\windows\system32.exe 这个工具列出的信息很详细,每个进程打开的文件,打开的注册表,等等。

将这个进程结束后,到C:\windows\system32中删除这个capp.exe文件,删除失败,MD,还有真西保护它。暂时不管,先让它不能运行再说,跟据windows常用自启动方式,查找windows自启动项,发现它在 Software/microsoft/windows/CurrentVersion/Run/下建立了自启动,Capp REG_SZ C:\windows\system32\capp.exe 删除它,MD,又失败,把它改成不存在的文件,又失败。改Run下其它键,是成功的,因此可以看出,它Hook了注册表操作,并进行了过滤,发现是要删除或修改自己的相关信息的时候,就拒绝操作。那个capp文件不能删除,也不能重命名,注册表也不能删除,也不能修改,一定有一个ring 0的驱动程序来帮助它完成Hook。

重启机器,capp.exe根着启动了,再次利用 procexp.exe 查看了capp打开的文件列表,一个可疑的文件,\Device\AHook,很可能就是它了,打开WinObj,一看,果然有一个AHook的东西在\Device\AHook下,看来就是这个东西,在内核中做了手脚,来保护它了,为了得到更详细的信息,打开了DeviceTree.exe,查看了相关信息后,推测出这个AHook并不是一个设备过滤驱动,它可能仅仅只是在内核中启动,完成Hook。打开注册表,在HKEY_LOCAL_MACHINE/CurrentControlSet/SYSTEM/Services/AHook中找到这个系统服务项:DisplayName  REG_SZ   AHOOK
ErrorControl REG_DWORD 0x00000001(1)
ImagePath    REG_EXPAND_SZ \??\C:\WINDOWS\system32\driver\ahook.sys
Start        REG_DWORD  0x00000002(2)  
Type         REG_DWORD  0x00000001(1)

DisplayName 用户程序访问服务时使用的名称,如果为空,那么注册表的键名会被作为它的名称
ErrorControl 如果SCM启动服务的时候驱动报错,这个值决定了SCM如何对付这个错误,我们对两种取值有点兴趣:
SERVICE_ERROR_IGNORE (0)--I/O管理器忽略这个错误,不作记录
SERVICE_ERROR_NORMAL (1)--如果驱动被装入的时候报错,系统将给用户显示一个告警框,并将错误记录到系统日志中
ImagePath--指驱动文件的全路径文件名,如果该参数没有指定路径,那么系统会在\%SystemRoot%\Drivers目录下查找
Start--指明何时装载驱动,这里我们关心的也是两个取值
SERVICE_AUTO_START (2)--驱动在系统启动的时候装载
SERVICE_DEMAND_START (3)--驱动由SCM根据用户要求装载
Type--用于指定服务的类型,1表求内核驱动程序(SERVICE_KERNEL_DRIVER)。

同样的,这一项注册表也是删除不了,于是,决定,先删除capp.exe和ahook.sys。只要ahook.sys无法启动,那么它所使用的注册表项和文件,都没有程序来过滤保护。文件被占用,无法完成删除,这是很常见的,所以,windows提供了一种延迟删除的方法,在注册表中的HKLM\System\CurrentControlSet\Control\Session Manager\建立 PendingFileRenameOperations项,先是源文件路径,然后是目的文件路径,就可以在windows下次重启的时候,完成文件移动,如果目的路径为空,则表示删除这个文件。如果觉得手工编辑不方便,可以使用sysinternals提供的PendMoves命令行工具来完成。Windows重启的时候,会话管理器会自动移动或删除它。

重启后,MD,还是没有成功移走那两个文件,它在Windows会话管理器启动前先拿到了控制权,于是对那两个文件进行了保护。没办法,再次重启,进安全模式,手工的移走了那两个文件,重启后,到注册表中,顺利删除capp和AHook的注册表项。至此成功的清除了这个流氓,一定还有很多垃圾文件留在我的系统上了。

打开IDA反汇编随便看了一下,来不及详细分析,MD,它保护的手段真恶心,顺便还发现它每次会自动到这里检查http://update.cnnic.cn/cdnClient/zunion/,并自动更新。

不过,弄出一个这样的程序,还能在各个windows版本上稳定的运行,还是挺不容易的。呵呵。

上文提到的工具,除Spy++外,全都来自www.sysinternals.com/

[新闻编辑:netsafe] 关闭窗口】