咖啡规则设置技巧提高篇.docx
《咖啡规则设置技巧提高篇.docx》由会员分享,可在线阅读,更多相关《咖啡规则设置技巧提高篇.docx(12页珍藏版)》请在冰豆网上搜索。
![咖啡规则设置技巧提高篇.docx](https://file1.bdocx.com/fileroot1/2023-6/13/4bd35048-32a5-45a4-a565-70bf88c668c9/4bd35048-32a5-45a4-a565-70bf88c668c91.gif)
咖啡规则设置技巧提高篇
咖啡规则设置——提高篇
1.善用文件夹排除法
大家在对规则进行排除的时候,一般的做法是逐个进程的添加。
此法最大的缺点就是——累。
尤其是遇到需要添加大量进程的时候,或者新安装完软件的时候,每次都要查看日志,然后慢慢排除,实在是麻烦。
恐怕很多人放弃咖啡也是出于这个原因。
事实上,如果我们将软件集中管理起来(例如将软件安装在同名的文件夹内),然后采取文件夹排除法,那么就可以大大地减少工作量,也不会感觉到累了。
但有一点需要注意的,就是排除的目标文件夹,需要另加规则进行保护,不然若病毒进入此文件夹后,就能通行无阻了。
小结:
咖啡之所以让一些人感觉到麻烦,无非就是规则的排除。
善用文件夹排除法,可以让你从大量的排除工作中解放出来。
PS:
排除的目标文件夹最好使用中文名称,可以防止病毒利用
2.理清父子进程关系,搞清执行主体。
如果你想写出好的、有效的、而又不影响正常使用的规则来,那么这一点是最最重要的。
首先,大家要搞清什么是父进程,什么是子进程。
只有父进程可以排除,子进程不能排除。
在咖啡规则里,“要包含的进程”是父进程,“要阻止的文件或文件夹”是子进程,“要排除的进程”是对于“要包含的进程”而言的,而且只能是“要包含的进程”里的子集。
所以,如果大家想写规则“只允许在某个文件夹下创建.txt文件,而阻止新建其它任何文件”,那么这样的规则用咖啡是做不到的。
有很多人写出无效的规则来,就是这个原因。
这点请大家一定要搞清楚。
然后,我们举一例:
大家看出这个规则的问题没有?
这条规则的作用实际是在禁用注册表编辑器,但注意,这仅仅是注册表编辑器而已,而不是注册表。
真正的注册表文件存在于%windir%\SYSTEM32\CONFIG中,由其中的多个文件和我的文档中各用户的ntuser.dat组成。
事实上,病毒访问注册表的途径不只是通过regedit.exe(或者说,这种情况不多),
病毒可以调用reg.exe来进行注册表的改写,也可以通过脚本来访问,也可以不借助其它程序直接访问注册表。
因此,此规则并没有达到它所声称的目的,是失败的规则。
造成这样的原因,正是用户没有搞清楚到底什么程序在访问什么文件。
也就是所谓的执行关系的问题。
其次,理清楚执行主体还能有助于解决规则影响日常使用的问题。
很多人写阻止规则时,都习惯性地填上“*”,然后再慢慢排除正常进程,这种做法其实就是让大家觉得用咖啡规则累的根源。
只要我们在阻止程序时,只阻止真正的秉事者,那么就不会带来不必要的麻烦了。
关于这点,可以参看第3条。
再举一例:
对于JS、vbs等脚本文件,很多人为了安全,都会禁止去“执行”。
事实上,我们打开一个vbs文件时,进行的操作并不是“执行”,而是读取。
那么是什么程序在“执行”脚本?
脚本宿主工具,是脚本宿主解释并执行vbs里的代码。
那又是谁启动了脚本宿主?
答案是,你用什么程序去运行vbs文件的,就是什么程序调用了脚本宿主。
所以,你去禁止vbs脚本的“执行”,那是无效的。
只有禁止读取vbs,才能达到禁用的目的。
我们也可以去禁止调用脚本宿主工具,那么脚本自然就无法被解释了。
再举一比较典型的例子,通过此例大家应该会对执行关系有一个比较清晰的了解:
这两条规则,唯一不同的就是执行主体和被操作对象的关系互换了。
这样互换后,两条规则有什么区别?
先分析规则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吧。
其实要实现此功能还有另一种方法的。
那就是使用注册表规则。
如下图:
要包含的进程那里,我想大概大家又会习惯性地填上“*”。
其实,执行这个注册表操作的正是explorer.exe,只禁止它就可以了。
其它一些正常的进程也会访问这个键值,所以,随便地填上“*”不符合我们方便性要求。
大家在写规则时,除非必要,否则慎用“*”。
其实此规则防U盘的效果和禁止读取autorun,inf的作用是一样的,连缺点都是一致的,就是会连光盘的自动播放功能都禁了。
小结:
举此例的目的在于说明,要设规则达到某种效果,其实可以有很多方法的。
若此路难行,不妨绕道。
这样或者就能找到最好最适合自己的方法。
4.减少重复劳动,规则多合一
举一例:
大家认为此规则可以如何改进?
我的看法是,包含进程那里,我们需要进行调整。
用过迅雷的都知道,迅雷的有两个运行文件,一个是thunder.exe,一个是thunder5.exe。
因此这里只阻止thunder.exe的话,就让thunder5.exe偷过了。
那么,是要再多建一条规则吗?
当然不是,只要在包含项里加上thunder5.exe就可以了。
不过哦,这样又有一个问题了:
如果哪一天出了一个thunder6.exe呢?
又要改规则吗?
为了避免重复劳动,我们应该考虑将包含项改成如此:
thunder.exe,thunder?
.exe,这样规则就基本不需要改动了,哪怕它某日又冒出一个thunder7.
再举一例:
事实上,这两条规则完全可以合成一条,因为第二条规则其实就已经包含了第一条规则了,也就是说,第一条规则是多余的。
因为通配符“**”就已经包含项和值。
不信?
可以试试。
这样就是所谓的规则多合一了。
其实对于很多规则来说,都可以考虑合成为一条的,当然具体情况要具体分析。
又例如,如果你想保护一些重要的文件不被恶意修改、删除(如GHO镜像文件、文档资料等),可以将这些文件放到同名的目录中(不需要同一目录,只要同名即可),然后用一条规则保护这种目录即可。
这样,一条规则就可以达到保护多种格式的文件的目的,而不必多写规则。
小结:
合理使用通配符和文件夹管理,可以少写和少改动规则,减少重复劳动。
另外还有一个方法,就是将各种功能相似的软件集中管理(将其都安装在一个文件夹内),然后针对这个文件夹建立规则,是最省心、又最有效的办法。
如上例的迅雷规则中,还可以把thunder、flashget、emule、BT客户端、FTP软件等等都安装在一个文件夹中,这样就可以一条规则就能管理好这些程序了。
我自己的做法是这样的:
把IE禁用,把平时用的浏览器安装到“浏览器”目录,实行特别关照。
迅雷等软件均装在“下载工具”目录,其它会访问互联网的程序放到另一目录中。
然后分别为这些文件夹加以适当的限制,分配不同的权限。
如此管理软件后,不但脉络清晰,还方便制定规则,实为一举两得。
6.关于排除项的安全性——路径排除法
这个问题就不需要什么说明了,大家知道,只要规则中存在一个排除进程,就多一份危险——如果病毒和排除项名称一样这么办?
这时采用路径排除法就能解决问题。
7.了解系统文件夹作用,提高规则之针对性
关于这个,大家需要了解的是:
1.系统正常工作时,各个系统文件夹的作用。
2.网页木马会把病毒下载到什么目录,病毒一般从什么文件夹运行,运行时会释放什么类型的文件到什么目录等等。
或者大家觉得这些都是废话,但要对系统文件夹有一个深入的了解,不是一件容易的事,而搞清楚这些之后,编写规则的时候,就可以很有针对性了,而不必用那些超级规则来锁死硬盘了。
8.前摄防御,不做事后诸葛:
病毒的侵入必将对系统资源构成威胁,即使是良性病毒,至少也要占用少量的系统空间影响系统的正常运行,特别是通过网络传播的计算机病毒,能在很短的时间内使整个计算机网络处于瘫痪状态,从而造成巨大的损失。
因此,防止病毒的侵入要比病毒入侵后再去发现和消除它更重要。
因为没有病毒的入侵,也就没有病毒的传播,更不需要消除病毒。
另一方面,现有病毒已有万种,并且还在不断增多。
而消毒是被动的,只有在发现病毒后,对其剖析、选取特征串,才能设计出该“已知”病毒的杀毒软件;而当发现新病毒或变种病毒时,又要对其剖析、选取特征串,才能设计出新的杀毒软件。
它不能检测和消除研制者未曾见过的“未知”病毒,甚至对已知病毒的特征串稍作改动,就可能无法检测出这种变种病毒或者在杀毒时出错。
这样,发现病毒时,可能该病毒已经流行起来或者已经造成破坏。
而现在流行的主动防御,基本上是靠行为特征来判断的,这些特征也是入库式的,要是某天病毒使用未知的手段进行入侵,而这种手段没有包含在行为特征库里,病毒就可以绕过所谓的“主动防御”。
从这个意义上说,现在的主动防御,其实也是一种“被动防御”。
那么,什么才算是真正的主动防御?
举数例:
防删gho文件,防写镜像映射、保护安全模式等
我想大家应该都有这样的规则吧?
没有?
还不赶快补上!
不过大家在做这些规则的时候,有没有想过,你是因为什么才这样做的?
试问,在熊猫威金大行其道之前,你可有想过保护gho文件?
在AV终结者肆虐之前,你可曾想过保护镜像映射功能?
在帕虫发现之前,你又可曾保护过安全模式的注册表键值?
或者你已经发现了,为什么我们的动作总是比病毒要慢一拍?
如果是这样的话,跟传统的杀软的防毒手段岂不是一样的滞后?
若不断其源,则水流不止。
防毒,我们需要有前摄性。
防止病毒进入系统,才是根本之法。
而与此相反,很多人的做法却是在严格限制本地操作,这样无疑是对自己缚手缚脚。
当然我不是说本地防御要不得。
本地病毒防范还是必要的,但要适度,并且最好以不影响或者很少影响正常使用为前提,不然再多的规则,再强大的防御,在“失去方便性”这一前提面前,就显得不值一提了。
由于主动防御早被大家熟知,因此在此不作讨论,而我们要谈的,是另一相似而不相同的概念——前摄防御。
说到这里,到底何谓前摄防御?
我无法下一个准确的定义,因为这个概念比较抽象。
以我的理解,就是在病毒得以运行之前,就将其拦截住,也就是,阻断病毒的来路。
(与主动防御相比,主动防御是在病毒运行之时,检测其行为,并将其拦截。
前摄防御与主动防御的区别就在于时间上,一个是病毒运行之前,一个是病毒运行之时。
)
要做到前摄防御,谈何容易?
的确是一件不简单的事,但也不是不可能的。
前摄防御也不需要做得滴水不漏,能防住大部分未知病毒就很好了,剩下的还可以交给传统防御(监控、扫描杀毒)、本地的其它规则等等。
一般来说,根据“前摄——主动——传统”的防御顺序,我们可以采取以下思路:
(1)拒绝入侵:
来历不明的入侵软件(尤其是通过网络传过来的)不得进入系统。
(重要,这一步是第一步,也是最关键的一步)
在这个环节上,我们的主要工作是:
管好浏览器、防范U盘病毒、防范局域网的非法共享访问等等。
这些通过咖啡的规则都可以做到。
(2)防止运行:
病毒要成功运行,需要系统环境的支持,例如动态链接库(dll文件)等等。
我们不妨尝试不让病毒去加载这些文件,那么病毒将不能运行。
(即使病毒被执行了,它还是无法运行成功)
(3)管制好高风险的系统文件,不让病毒利用。
如shutdown.exe,,net*.exe,ntvdm.exe,at.exe等等,这些程序大众用户极少用到,而病毒却是恰恰相反。
(4)根据病毒常见的高危行为事先布防。
很多时候,只要阻止了病毒的其中一个危险动作,那么病毒的运行就会停止。
因此我们并不需要防止所有危险行为(那也会为自己带来不便)。
(5)对于下载或其它途径传入的文件,都应该进行扫描后方可执行之。
(这个与咖啡的规则无关了,题外话,^_^)
小结:
写规则时我们要考虑前摄性,如果一开始就假定了病毒已经运行,然后再去写规则应对的话,那么你的规则总是要比病毒慢一步,当新病毒出来的时候,可能就会无法适从。
所以,我们写规则应当更多的考虑病毒运行之前的情况,而不是运行之后的防御。
另外,主动防御也带给我们一个思路,那就是如何防范流氓——我们应该从流氓的入口把关,而不是防流氓写入到某某目录。
最后以一句话作结:
正如没有最完美的人一样,没有最好用的安全软件,因为用软件的,正是人。