理论:
以我的经验,查看自动运行的文件的公司签名是一个很可靠的方法,一般来说Microsoft/Adobe/RealTek/Macromedia/Symantec/NVIDIA/Corel等大公司不会制作木马,而且做木马的人也不敢轻易假冒这些大公司的签名。
实践:
在Autoruns中打开 Options/Verify Code Signature 选项,从Everyone 标签页就可以看到自动运行的文件的Publisher和是否通过签名验证。如果显示 (Verified)和信誉良好的大公司,则这个可以确认为不是木马。其他的则很可能是木马。当然你也可以对照自己安装的软件来进行一些推测,或者来BBS上询问。
SECTION2,清除木马
理论:
一般来说木马防止自己被清除一般通过3种办法:
1,打开一个Handle;
2,另启动一个进程来监视;
3,进程插入。
前两种相对简单,第3种比较麻烦一些。不过这些小伎俩在强大的Process Explorer面前就不值一提了。
实践:
10: 打开Process Explorer;
20: 选中Options/Verify Image Signature;
30: View/Select Columns/Process Image/ Verified Signer;
40: 查找没有通过验证的东东;
50: 选中没有通过验证的一个进程点右键/Suspent Process;
60: 循环反复执行40-50把所有的未验证进程都Suspend;
70: 按照 “SECTION 1”中的描述从Autoruns中未通过验证的文件;
80: Find/Find Dll and Handle 查找这个文件;
90: 把找到的进程给Suspend,但是注意不要Suspend Explorer.exe;
100: 反复执行 70-90直到他们都被Suspend;
110: 按照 “SECTION 1”中的描述从Autoruns中未通过验证的文件,点右键选择Properities
, 更改安全性成 everyone都不可以读取或运行;
120: 重复110直到按F5刷新的时候Autoruns显示找不到文件;
130: 重新启动计算机;
140: 重复 10 -130直到所有的木马都被设置成任何人都不能访问。
这样处理过以后,就同时具备了这些病毒的免疫能力。
SECTION3,木马免疫
再如上述方法清除木马以后,在Autoruns中把找不到文件的项目删除,并点右键Jump To然后把这个键的父键设置安全性为everyone 只读。这样处理过的Windows就基本可以自己对抗大多数病毒,但是某些软件可能因此不能正常安装,因此做这些操作的时候需要做一个笔记,以在需要的时候恢复过来。
一、为什么流氓软件总是删不掉?
经常有网友发贴子说文件删除不掉,或者流氓软件清除不了,或者删除了相关的文件,但是马上它又出现了。现在流氓软件为了保护自己,采取的手段是五花八门,无所不用其极:进程保护,交叉感染,自启动,自我恢复,文件隐藏,进程注入,驱动保护
到目前为止,所有流氓软件最终极、最有效的保护办法还是底层驱动级的保护,一般就是在drivers目录下增加一个或多个.sys文件(我也见过一个用rundll32来运行一个.dll作为驱动的),但本质上这个都会在Windows的HKLM\SYSTEM\CurrentControlSet\Services\下建一个相关的值,如CNNIC建立的就是HKLM\SYSTEM\CurrentControlSet\Services\cdnprot,并且将启动级别做得很高,在安全模式下也会自动启动。这个底层的驱动过滤所有的文件以及注册表操作,如果发现是对流氓软件自己的文件/注册表操作,就会直接返回一个true,如果发觉文件被删除,就会通过备份或者网络来下载恢复。它们的保护措施已经做到这一级,普通用户根本没有办法删除相关的文件,一般都需要重启到DOS系统下去删除文件。
这也是很多网友提的为什么文件删除不掉,或者删除了,重启之后,一会儿又出现了,阴魂不散的原因。下面我们的要做的,就是找出来这些流氓软件的后台的驱动保护。
二、为什么找出驱动保护很困难?
Windows的驱动文件一般位于system32\drivers目录下,以.sys文件方式存在,通过注册表的HKLM\SYSTEM\CurrentControlSet\Services\的方式来启动,有一部分属于服务的,可以在Windows的服务的MMC控制窗口里看到。但如果是驱动,则在这里看不到。Windows正式情况下,那个drivers目录下有200个左右的文件,如果偷偷往这个下面塞一个.sys文件,是很难发现的。象著名的3721这类cnsminkp.sys,CNNIC的cdnprot.sys比较容易认识,但现在的很多软件的名字都是不固定的,或者是随机生成的,这样的辨识的难度就很大。我曾经用过的方式有:
1、通过保存文件列表,时常自己手工比较这两个文件,看前后差别多出来的文件肯定有问题
2、通过文件生成的日期。(这点流氓软件也想到了,日期也只能作为参考)
3、通过文件的属性里在的公司信息。早年还行,现在越来越多的流氓软件的驱动冒充是M$的,有的连英文单词都写错了。唉。。。
4、通过文件夹监视工具。
上面这四种都有一定的缺陷,只能作为参考,都不是太好。并且现在有一些软件通过文件系统隐藏,这些驱动文件,通过资源管理器,根本连看都看不到。
三、如何找出可疑驱动来?
介绍:autoruns是著名的sysinternals出品的一款小软件,它的主要功能是列出系统自启动的项目。通过它,你可以轻易查看到所有系统可能启动的地方,非常的全面。跟流氓软件相关的是“Services(服务)",“LSA Providers(LSA提供者)”、"Winsock Providers(Winsock提供者)",“Drivers(驱动)“。下面重点介绍Drivers这一部分的功能。
运行autoruns之后,在它的“Options(选项)”菜单中有两项“Verifiy Code Signatures(验证代码签名)“Hide Signed Microsoft Entries(隐藏已签名的微软项)“,把这两项都选中了。验证代码签名是指验证所有dirvers下的.sys文件的文件签名。Windows下的硬件有一个签名的功能,它是为了保证所有的驱动文件是经过M$测试,符合HAL兼容性。隐藏已签名的微软项,就是把那些合法的隐藏起来。不然200多个,会看着发晕的。
这样autoruns就会检查所有已经注册成为驱动的项,并且检查所有的.sys的文件数字签名。所有假冒的或者没有通过代码签名的项,都会在这里列出来。也就可以很容易判断这个驱动是不是有问题了。如果有问题的话,可能通过冰刀文件把里面相关的注册表键值删除,重启机器,这样驱动保护就失效了,然后可以通过文件删除工具来删除其它的文件,完成最后的清理工作。
四、总结
最后再总结一下:
1、流氓软件删除不掉或者死灰复燃,很多时候是因为有驱动或服务保护
2、通过autoruns找到这些可疑的驱动
3、通过冰刀删除相关驱动健值或者直接用文件粉碎器删除相关的.sys文件,重启驱动就无效
4、清理其它文件,完成善后工作。
以上方法通过各种测试是证明有效的,但不排除将来有更进一步的隐藏手段来躲避autoruns的检查。但原理是一样的。不过是通过程序来减少工作量。