★咖啡规则设置技巧——提高篇★
转自卡饭.
http://bbs.kafan.cn/viewthread.php?tid=178656&extra=page%3D1
转帖.供参考学习
在网上我们经常能看到一些咖啡的规则设置文章,里面所提及的所谓什么高级技巧,以现在的角度来看
,那些设置方法已经十分落后了。但是这样的文章还在被到处转载,继续误导他人。例如竟然有人说防
范网页病毒只要把js、vbs、htm、html都防止新建、执行就可以了,对于这种做法,我真不知说什么好
了。
网上真正有用的、关于咖啡规则设置的文章极少,所以新手学习规则十分困难。然而却有一些人整天把研究规则挂嘴边,但“研究”了那么久,
也不见有任何技术性成果出来,更有甚者,自己的规则没有设好,反而说咖啡的规则累人,对于这些人,我只能说,那是因为你们没有
去考虑过,如何可以花更少的时间和精力以获得更多的成果。
以下分享一下我的心得,希望对各位有所帮助。
首先有一句话大家要是记住的:
咖啡的规则是用来限制病毒的,而不是用来限制自己的!
我们编写规则时,一定要从这个原则出发!
1.善用文件夹排除法
大家在对规则进行排除的时候,一般的做法是逐个进程的添加。此法最大的缺点就是——累。尤其是遇
到需要添加大量进程的时候,或者新安装玩软件的时候,每次都要查看日志,然后慢慢排除,实在是麻
烦。恐怕很多人放弃咖啡也是出于这个原因。
事实上,如果我们将软件集中管理起来(例如将软件安装在同名的文件夹内),然后采取文件夹排除法
,那么就可以大大地减少工作量,也不会感觉到累了。
但有一点需要注意的,就是排除的目标文件夹,需要另加规则进行保护,不然若病毒进入此文件夹后,
就能通行无阻了。
小结:咖啡之所以让一些人感觉到麻烦,无非就是规则的排除。善用文件夹排除法,可以让你从大量的
排除工作中解放出来。
PS:排除的目标文件夹最好使用中文名称,可以防止病毒利用
2.理清父子进程关系,搞清执行主体。
如果你想写出好的、有效的、而又不影响正常使用的规则来,那么这一点是最最重要的。
首先,大家要搞清什么是
父进程,什么是
子进程。
只有父进程可以排除,子进程不能排除。
在咖啡规则里,“要包含的进程”是父进程,“要阻止的文件或文件夹”是子进程,“要排除的进程”是对于“要包含的进程”而言的,而且只能是“要包含的进程”里的子集。
所以,如果大家想写规则 “只允许在某个文件夹下创建.txt文件,而阻止新建其它任何文件”,那么这样的规则用咖啡是做不到的。有很多人写出无效的规则来,就是这个原因。 这点请大家一定要搞清楚。
然后,我们举一例:
注册表规则反例.jpg (20.84 KB)
2007-12-29 13:04
大家看出这个规则的问题没有?
这条规则的作用实际是在禁用注册表编辑器,但注意,这仅仅是注册表编辑器而已,而不是注册表。真
正的注册表文件存在于%windir%\SYSTEM32\CONFIG中,由其中的多个文件和我的文档中各用户的
ntuser.dat组成。事实上,病毒访问注册表的途径不只是通过regedit.exe(或者说,这种情况不多),
病毒可以调用reg.exe来进行注册表的改写,也可以通过脚本来访问,也可以不借助其它程序直接访问注册表。
因此,此规则并没有达到它所声称的目的,是失败的规则。造成这样的原因,正是用户没有搞清楚到底什么
程序在访问什么文件。也就是所谓的执行关系的问题。
其次,理清楚执行主体还能有助于解决规则影响日常使用的问题。很多人写阻止规则时,都习惯性地填
上“*”,然后再慢慢排除正常进程,这种做法其实就是让大家觉得用咖啡规则累的根源。只要我们在阻
止程序时,只阻止真正的秉事者,那么就不会带来不必要的麻烦了。关于这点,可以参看第3条。
再举一例:
对于JS、vbs等脚本文件,很多人为了安全,都会禁止去“执行”。事实上,我们打开一个vbs文件时,
进行的操作并不是“执行”,而是读取。那么是什么程序在“执行”脚本?脚本宿主工具,是脚本宿主
解释并执行vbs里的代码。那又是谁启动了脚本宿主?答案是,你用什么程序去运行vbs文件的,就是什
么程序调用了脚本宿主。
所以,你去禁止vbs脚本的“执行”,那是无效的。只有禁止读取vbs,才能达到禁用的目的。我们也可
以去禁止调用脚本宿主工具,那么脚本自然就无法被解释了。
再举一比较典型的例子,通过此例大家应该会对执行关系有一个比较清晰的了解:
规则1.jpg (21.66 KB)
2007-12-31 13:13
2.jpg (19.98 KB)
2007-12-31 13:13
这两条规则,唯一不同的就是执行主体和被操作对象的关系互换了。
这样互换后,两条规则有什么区别?
先分析规则1:
规则1要阻止的执行主体是U:\**,也就是U盘的程序。也就是说,我们的系统程序
(例如explorer)不再阻挡范围之内,所以我们去读取U盘里的文件,例如复制、打
印word文档等等,都是可以的。因此在此规则下,U盘是可以正常使用的。
规则1的作用其实就是“禁止I盘的文件对本地文件进行任何操作”,简单说,就
是即使I盘的程序被运行了,它也不能对本地干任何事。
至于规则2:
规则2要阻止的执行主体是*,即任何程序。自然包括操作系统,因此在此规则下
,我们无法对U盘的文件进行任何操作!包括打开txt文档。
规则2的作用是“禁止所有程序读取U盘的文件”,也就是说,U盘的文本文档也无
法打开了!连往U盘里写文件,复制文件等等操作都无法完成。
注:有时候,我们需要在规则1中的排除项里面加入“**\Windows\**”,这是因为,
虽然理论上,系统的程序不在规则的阻挡范围之内,但实际应用时,会发现类似
**\NOTEPAD.EXE 这样的程序触犯规则,具体原因未明,可能是咖啡的判定bug。
解决方法则是:
1.打上patch4补丁
2.在排除项里添加 **\windows\**
因为U盘里面的文件 和windows文件夹里面的文件是没有交集的,也就是说,排除
了windows文件夹,其实是什么也没有排除
小结:所谓研究咖啡规则,不仅仅是要学习规则的语法,更重要的是多去了解系统的常识和程序被调用的关系。
其实在编写规则时多进行测试,就能搞清楚很多问题了,最后你能知道什么程序调用什么程序是正常行为,而什么
情况却不是。当这些你都了然于胸的时候,你就能很好地驾驭咖啡的规则了,而同时,你也成为一个高
手了。
3.转换思路,另辟蹊径
为了说明问题,又举一例:
我们一般的防范U盘规则。大家都是怎样做的?我想大部分都是禁止系统去读取autorun.inf吧。其实要
实现此功能还有另一种方法的。那就是使用注册表规则。如下图:
防U盘病毒.jpg (23.76 KB)
2008-1-26 00:33
要包含的进程那里,我想大概大家又会习惯性地填上“*”。其实,执行这个注册表操作的正是
explorer.exe,只禁止它就可以了。其它一些正常的进程也会访问这个键值,所以,随便地填上“*”不
符合我们方便性要求。大家在写规则时,除非必要,否则慎用“*”。
其实此规则防U盘的效果和禁止读取autorun,inf的作用是一样的,连缺点都是一致的,就是会连光盘的
自动播放功能都禁了。
小结:举此例的目的在于说明,要设规则达到某种效果,其实可以有很多方法的。若此路难行,不妨绕
道。这样或者就能找到最好最适合自己的方法。
TIPS:其实咖啡不用规则也可以轻松防住利用autorun的病毒。如下图设置:
autorun.jpg (24.48 KB)
添加自定义检测项
2007-12-29 23:40
autorun2.jpg (29.11 KB)
再排除光驱下的autorun文件
2007-12-29 23:40