查看: 61006|回复: 207
收起左侧

[技术原创] ★咖啡规则设置技巧——提高篇★

[复制链接]
深红的雪
发表于 2007-12-29 13:04:37 | 显示全部楼层 |阅读模式
在网上我们经常能看到一些咖啡的规则设置文章,里面所提及的所谓什么高级技巧,以现在的角度来看
,那些设置方法已经十分落后了。但是这样的文章还在被到处转载,继续误导他人。例如竟然有人说防
范网页病毒只要把js、vbs、htm、html都防止新建、执行就可以了,对于这种做法,我真不知说什么好
了。
网上真正有用的、关于咖啡规则设置的文章极少,所以新手学习规则十分困难。然而却有一些人整天把研究规则挂嘴边,但“研究”了那么久,
也不见有任何技术性成果出来,更有甚者,自己的规则没有设好,反而说咖啡的规则累人,对于这些人,我只能说,那是因为你们没有
去考虑过,如何可以花更少的时间和精力以获得更多的成果。

以下分享一下我的心得,希望对各位有所帮助。

首先有一句话大家要是记住的:
咖啡的规则是用来限制病毒的,而不是用来限制自己的!
我们编写规则时,一定要从这个原则出发!

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的作用是一样的,连缺点都是一致的,就是会连光盘的
自动播放功能都禁了。

小结:举此例的目的在于说明,要设规则达到某种效果,其实可以有很多方法的。若此路难行,不妨绕
道。这样或者就能找到最好最适合自己的方法。

TIPS:其实咖啡不用规则也可以轻松防住利用autorun的病毒。如下图设置:




4.关于通配符 和 文件操作的解释
可能一些人对这点还有些困惑,这里说一下
文件操作解释:
对文件进行读访问[G]:表面上说禁止对文件的读取,实际上,禁止了读取,效果等于选
            择了所有项目。即[G]=[G]++[K]+[H]+[J]+[R]。
对文件进行写访问:不折不扣的禁止写入,没有其他副作用,但是一个被保护的文件一
            旦更名,就可以写入了,且更名不在阻挡范围。
正在执行的文件[K]:仅对执行文件有效(EXE、COM、BAT、DLL、SCR),对CHM、
            MSI、VBS无效。可更名。
正在创建的新文件[H]:阻挡新文件创建,可以使用名称通配符,后缀通配符,
            且[H]=[H]+[R]
正在删除文件[J]:实际效果为:[J]=[J]+[R]

重命名文件[R]:不存在的文件操作,但是很重要。
  
  由上述解说可见,和[K]存在更名逃脱规则的风险,所以FD规则中只有和[K]时,根据需要选择
[J]锁定文件。


咖啡的通配符跟HIPS是有一些区别的,这里简单说说。
咖啡通配符的解释:
问号 (?) : 用于表示任意单个字符,不能为空。如:maxthon? 包含 maxthon1、maxthon2,但不包含
maxthon
星号 (*) : 用于排除多个字符,可以为空。如:maxthon* 包含 maxthon1、maxthon1234、maxthon等

双星号 (**) : 表示零个或多个含有反斜杠的字符,这样允许多层次排除。例:C:WINDOWS\**,即为
windows目录下(包含各级子目录)的所有文件


另外,**\** 和 **\* 是完全等价的。* 和 **\** 在单独使用时是等价的,均代表“所有的文件”。而
*.* 则是代表“所有带后缀的文件”
例如:C:\WINDOWS\*,代表windows根目录下的所有文件(不包含子目录)
      “C:\WINDOWS\**” =“C:\WINDOWS\**\*” =“C:\WINDOWS\**\**”,均代表windows目录下的
所有文件(包含子目录)
      C:\WINDOWS\*.*,代表windows根目录下的所有带后缀的文件(不包含子目录)


5.减少重复劳动,规则多合一
举一例:



大家认为此规则可以如何改进?
我的看法是,包含进程那里,我们需要进行调整。
用过迅雷的都知道,迅雷的有两个运行文件,一个是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,format.com,net*.exe,ntvdm.exe,at.exe等等,这些程序大众
         用户极少用到,而病毒却是恰恰相反。
(4)根据病毒常见的高危行为事先布防。很多时候,只要阻止了病毒的其中一个危险动作,那么病毒的运行就会停止。
         因此我们并不需要防止所有危险行为(那也会为自己带来不便)。
(5)对于下载或其它途径传入的文件,都应该进行扫描后方可执行之。(这个与咖啡的规则无关了,题外话,^_^)

小结:写规则时我们要考虑前摄性,如果一开始就假定了病毒已经运行,然后再去写规则应对的话,那
么你的规则总是要比病毒慢一步,当新病毒出来的时候,可能就会无法适从。所以,我们写规则应当更
多的考虑病毒运行之前的情况,而不是运行之后的防御。另外,主动防御也带给我们一个思路,那就是
如何防范流氓——我们应该从流氓的入口把关,而不是防流氓写入到某某目录。

最后以一句话作结:正如没有最完美的人一样,没有最好用的安全软件,因为用软件的,正是人

[ 本帖最后由 rappar 于 2008-1-30 22:19 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1经验 +50 魅力 +1 收起 理由
小邪邪 + 50 + 1 精品文章

查看全部评分

长空之鹰
发表于 2007-12-29 13:21:59 | 显示全部楼层
谢谢高人的技术帖,


有例子,突出难点,赞一个
ssjwssf
发表于 2007-12-29 14:27:00 | 显示全部楼层
学习学习!
苗条的猪
发表于 2007-12-29 16:22:27 | 显示全部楼层
恩,总结的不错,适合新手看看!
bile_liang
发表于 2007-12-29 16:32:25 | 显示全部楼层
这篇文章写的不错
学习了
freesoft00
发表于 2007-12-29 16:36:02 | 显示全部楼层
rappar研究的很深呀
ronin
发表于 2007-12-29 18:46:37 | 显示全部楼层
MountPoints2我觉得是用这样比较合适:MountPoints2/**/*auto*/**,因为有出现只有auto的项,还有就是只禁止了explorer.exe进程,会不会出现病毒进程自行修改突破防守?
深红的雪
 楼主| 发表于 2007-12-29 18:58:43 | 显示全部楼层

回复 8楼 ronin 的帖子

MountPoints2我觉得是用这样比较合适:MountPoints2/**/*auto*/**

如果这样设置的话,连正常的autoplay都不能写入了,光盘的图标也不能显示了。这个其实可以放心,因为系统读取autorun.inf而写入MountPoints2的话,只会建立autorun这个项。如果你不放心的,完全可以把整个MountPoints2封住。或者不用此规则。

只禁止了explorer.exe进程,会不会出现病毒进程自行修改突破防守?

既然autorun.inf里面的信息无法加入到注册表,打开U盘时就不会激活病毒。既然病毒没有被执行,何来的“自行修改突破防守”之说?
gxd
发表于 2007-12-29 19:03:19 | 显示全部楼层
推荐自定义规则之前应该看一看
deahool
发表于 2007-12-29 19:55:04 | 显示全部楼层
好帖!情不自禁的出来顶了,原本打算10个发言够用就行了的。。。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-3-29 21:59 , Processed in 0.143429 second(s), 19 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表