查看: 74186|回复: 171
收起左侧

[讨论] 毛豆怎么做规则

  [复制链接]
柯林
发表于 2011-12-10 21:13:52 | 显示全部楼层 |阅读模式
本帖最后由 柯林 于 2011-12-21 09:43 编辑

这篇帖子应部分新手的要求,从一个老菜鸟的角度出发,从实例演示开始,探讨一下规则的制作及相关问题。
重点是授渔,方式以启发和探讨为主。最终期望是让新人知道怎么去追寻答案,不是告诉一个什么标准答案。这世界根本就不存在什么标准答案。
本文最根本的目的,在于探讨和交流,希望从一个起点开始,引发大家深入讨论各个程序的行为及规则。
水平有限,内中错误,还请大家谅解和指正。

本帖分两个篇章
初级篇:介绍一下,大家一般是怎么处理的。
中级篇:探讨一下,为什么这么做以及怎么做好。

感谢mxf147版主制成pdf文档,需要的在这里http://115.com/file/e6gxnzpd#

喜欢chm格式的在这里:      

                                 

或者这里:http://115.com/file/bhyjv4ry#comodo使用参考.rar



要看网文的在楼下

本帖子中包含更多资源

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

x

评分

参与人数 6魅力 +1 人气 +6 收起 理由
梦中明月 + 1 很细腻
梦落红尘 + 1 学费
mxf147 + 1 精品文章
深雅爱哲 + 1 一直在等,半夜来顶!我是上次16楼的
zhangkun0214 + 1 期待完全版

查看全部评分

柯林
 楼主| 发表于 2011-12-10 21:16:44 | 显示全部楼层
本帖最后由 柯林 于 2011-12-12 16:22 编辑

【中级篇1】相关问题

一切规则的起点,来源于你的需要。你要什么程度的安全,就会诞生什么样的规则——严厉的,宽松的,宽严结合的,变态的……
无论是什么样的规则,都是为了防毒的需要。HIPS列出防御的项目,是针对病毒木马恶意程序而设立。如果电脑中有病毒木马恶意程序,就会触犯相关的规定。换句话说,电脑中如果只有正常程序,安全的正常程序,这些列为监控的项目,可以忽略。也就是说,正常程序做这些,一般都是正常的,比如加驱、安装钩子、访问其它进程内存等,都是正常的行为。所以宽松规则(包括新版智能规则)一般都会放过正常的安全的程序,只把目标对准病毒木马恶意程序,重点放在未知文件上。
正常程序和病毒程序是有区别的,病毒程序的一些典型行为,譬如直接访问操作系统内核、直接底层磁盘访问、内存侵入、注入钩子、远程线程侵入等非常手段,正常程序一般比较少。如果一个正常程序忽然有了这些高危的动作,应当引起警惕,检查一下是否被病毒感染或注入。
世事无绝对,必须具体分析具体处理。一个人拿把刀把人家的肚皮切开,如果是医生给人动手术是正常行为,如果是歹徒残害他人性命就是恶意行为,不能仅凭拿刀子切肚皮就说这是恶意行为,不分对象一概而论是幼稚的做法。当然,拿刀切肚皮是个严重的事情,需要高度注意,医生也可能变凶手,世事无绝对。这就是说,不能单凭选项说事,必须看对象,而我们做规则所瞄准的对象是——病毒。
概而言之,我们使用HIPS以及制定规则,目标是病毒,是按照“假设这是一个病毒,我们应该怎么办”的思路来考虑的。由此推导,如果这是一个正常的程序,它的绝大部分行为,我们一般采取排除的方针,只对少数高危的部分,采取监控、限制乃至阻止。某些人对个别程序比较怀疑的,把它的一些原本可以当作正常行为处理的东东也列入了监控防御范围,从各种可能被利用和突破的地方对它进行严厉的限制,这就是所谓反流氓。
OK,如果是一个安全的正常程序,我们要用的程序,那我们就排除它;剩下的未知程序,我们就按照“可能这是一个病毒”的方针来处理。这两方面结合起来,就是所有HIPS规则的基本指导思想和流行套路——排除安全,卡住威胁!
如何把这种风行天下的HIPS玩法化入到具体的规则制作之中?让我们从方案到具体的规则来梳理一遍,看看有哪些东西是我们可以探讨的。

●方案问题
讨论规则经常会提到方案——怎么实现既定的安全目标。有人不管三七二十一,先从程序规则开始做起,做完程序规则,再来考虑全局规则;有人反其道而行之,一上来就做全局规则,然后才考虑常用软件的例外排除问题。这里面无所谓谁对谁错,关键是规则的尺度——宽与严。
严厉规则时常被人推崇,“全局阻止+例外允许”的方法广为流行,很多人认为它能实现最大的安全。究竟能实现多大的安全,或者从另一个角度说究竟有多大的漏洞,不是单纯看全局规则阻止了什么,还要看例外允许了什么。有人为了追求零弹窗而扩大例外允许,其安全程度,其实比新版智能易用规则的“安全文件放行”高不了多少,个别处理不好的可能还不如智能易用规则。
相比之下,3x版本采用的全局询问——不管是已知程序还是未知程序,一律弹窗询问由用户选择,是最灵活的办法,也是HIPS标准的流行做法——全局监控,由有经验的用户放行正常程序的行为,阻止病毒木马恶意程序等未知程序的行为。
如果采用全局监控的默认方式,具体的程序规则(譬如浏览器的规则)上面,不好设死的项目可以不理,交全局规则弹窗询问,这对于一程序一规则非常实用,但对于分组引用规则就可能有问题,影响零弹窗的实现。

●“误杀”问题
有人为了追求高安全,采用全局阻止的方式,某种情况下这是一种变态的规则,排除不够就会导致程序失去反应,系统死机、蓝屏、重启等故障(特别是在扩展了FD和RD保护内容的情况下,譬如某些人直接添加两个*),这就是“误杀正常程序的正常行为的”问题。
当你兴奋于全局阻止的威力的时候,请考虑一下,该排除的有没有排除干净?如果没有排除干净就启用疯狂模式,那真是摆明想尝尝死机蓝屏的滋味。个人意见,请慎用,譬如文档处理正进行到一半,图纸正要画完……一个死机,哭都没地方找去。如果是服务器使用,一个重启就够悲催的。一句话,特殊行业重要程序,谨慎处理和打磨。

●火候问题
什么时候可以来个极端严厉一刀杀(全局阻止)?答案很简单,在你排除干净系统程序和安软等重要程序的时候就可以。否则,死机、蓝屏等各种问题可能就会到来。为什么默认规则会采用全局询问+预先排除系统最主要的进程为规则模式,为什么不给你个一刀杀的严厉规则?

●解药问题
如果非要弄个极端严厉一刀杀,怎么办?不想自找麻烦的话,那就给点“解药”。譬如说,全局什么都阻止,还加上“秒杀”的内容,没规则的程序怎么办?以系统程序为例,不是说给几个开机以后常驻的进程做了规则就完事,开关机需要用到的进程,以及某些时候需要某种功能须调用的相关系统进程,它们没规则,都被全局规则给杀了,那还怎么玩?粗放型处理,直接一个C:\WINDOWS\system32\*.exe配以基本权限了事;精细型处理,可以建一个“系统次要程序”组,把需要使用的系统程序(system32下面一大堆)添加进去,给这个程序组一个合适的权限。应用程序规则同样的处理,不是说弄个主要程序(譬如C:\Program Files\Mozilla Firefox\firefox.exe)的规则就完事,还要考虑其他程序(譬如C:\Program Files\Mozilla Firefox\plugin-container.exe)不被阻止或秒杀。
极端严厉一刀杀,既杀别人又杀自家,好好考虑吧。

●精细程度
规则究竟需要做到哪个精细程度?新版默认规则采用宽松的做法——安全文件一律放行。流行的极端严厉一刀杀,要精细到底的话,需要把所有要用的程序都排除(一般人的计算机里面,估计是三五百个程序吧),要不要这样?如果采用一程序一规则的做法,是只管主要程序就行,还是所有程序都给规则?这些问题,自己考虑和选择。

●正常程序的限制
正常程序的行为要不要限制,限制到哪个程度?有人只要能用,管它日志里一大堆阻止,抱着“保证了安全就行”的念头,究竟好不好?程序限制成“老牛拉破车”与“堵上了所有可能”之间应该如何取舍和平衡?

●规则类型
不管哪种HIPS,不管是谁做的规则,真要按类型分,只有两种。
实战型:根据病毒的行为,进行针对性的防护,规则定型来源于大量病毒测试。除了官方默认规则,一般此类规则较少。
书呆子型:管你七三二十一的,根据自己的阅读经验和参考对象,逻辑上没有问题的,就化作规则定型。论坛流行的规则,十有八九都是这一类。
(你的规则真的有用吗?从年头测到年尾,把流行病毒都测一遍看吧)

●方法问题
怎么样保证计算机的安全?一般的流行思维是,管住病毒木马未知程序,就OK,如果你要更进一步,问“安全程序怎么办?万一它发疯怎么办?”如果你想到这一层,想要消灭所有可能存在的隐患,那么安全的程序也就列入了你的规划。虽然这种方式制定出来的规则实际当中可能根本就没什么意义,但是理论上确实是最高的安全机制——不但防住了病毒,连正常程序发疯的机会也不给。你真的需要弄到这般地步?

●版本问题
HIPS的每个版本可能都有变化,有些是大的变化,离开版本去谈论或照搬规则是不行的。譬如说,3x的经典手动型版本,默认的安全模式下,全局询问,有触犯就会弹窗询问。到了带沙盘的新版(特别是5.8)上,默认的
安全模式,在启用沙盘的情形下,对于安全的文件,如果没有明确的规则规定必须阻止,全局规则的询问根本就不问,这种情况下要想弹窗询问,可能需要关闭沙盘乃至调到疯狂模式。

●漏洞问题
安静不代表安全,零弹窗不代表零漏洞。一个外表再怎么漂亮的规则,如果为了通用而留下一些漏洞,那就是弊端。制作规则及评判规则需要考虑漏洞问题。譬如说,浏览器的规则,为了让IE浏览器可以下载exe格式的文件,我们在规则的FD项上允许IE访问自己的缓存目录,也就是可以在C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files里创建exe等可执行文件,万一下了一个病毒到里面,万一IE把它给激活了?这就有个漏洞。为了弥补这个漏洞,我们在IE规则里的第一项——运行一个程序里,添加例外规则,阻止IE运行*\Local Settings\Temporary Internet Files\* 就算IE下载再多的病毒到缓存里,也没办法执行它,让它们变成“尸体”。
再譬如说,为了通用,规则规定,除了“禁止访问‘重要的文件/目录’”之外允许访问“受保护的文件和文件夹”,这里面就有个漏洞——仅仅防止了对windows目录的写入,没有防止其它目录的写入,以及对可执行文件的修改。如果一个程序获得了这样的权限,逻辑上来说,它可以任意修改C:\Program Files里的可执行文件,可以任意修改其他盘上的可执行文件。你可以争辩说,一个正常程序不发疯,怎么会这样做?是的,现实当中,感染性病毒一般是自己执行修改可执行文件的操作,很少有控制其它程序去执行修改操作的。如果,相关的漏洞在全局规则上有,那真是失败,表面实现了零弹窗的安静,实际上给病毒留下了方便之门,比默认的全局监控都不如。
某些规则为了通用,采用了路径放行的办法,譬如说%windir%\system32\*.exe给个某某权限的放行规则,如果,我说的是如果,一个病毒到了system32下,它也就获得了相应的权限,比起新版的未知程序一律隔离,乃至于比起3x版本默认的无规则程序一律询问来说,都不如,都是个大漏勺。你也许抗辩说,只要我守住FD入口,禁止病毒创建文件到system32下,不就行了?是的,HIPS规则是4D一体,这方面存在漏洞的,可以由另一方面弥补。但是,逻辑上较真一下,采用路径放行的规则,天生具有缺陷,比起新版“验证文件”的方式来说,其实还差了一点。
如何避免规则中出现漏洞乃至致命的漏洞,是制作规则的过程中必须注意的问题。

●分组问题
如果以我的角度来看,怎么分组都不好。分组的目的是便于通用,但是同一个类型的程序里面,各个程序的行为未必相同,要通用就要取一个平衡,这就是所谓的“为易用而损失安全性”。譬如说,分了一个浏览器组,IE、火狐、谷歌、搜狗、世界之窗……什么浏览器都往里面塞,别的不说,单说一个FD行为——文件读写,为了套用后没有阻碍,每个浏览器允许读写的文件目录,都加在了规则里面,从逻辑分析上来说,这就导致了“滥权”——IE可以读写火狐的目录,火狐可以读写谷歌的目录……逻辑上较真一下,这就叫扯鸟蛋。当然,你可以分辨说,正常情况之下,绝不会发生这种情况,每个程序只会读写自己的目录,除非它发了疯。实际情况当然如你所说,由此也就顺便证明了新版智能性的安全依据——既然每个正常程序在正常情况之下不会做越界的事情,验证为安全的程序我不管它,它不也是安分守己的吗,除非它发了疯。
如果非要说说哪种分组方式最好,我个人的观点是,一个程序一个分组的方式最好。除非你要制作通用规则放出来给别人用,否则,你自己用的话,根本就没有多少程序,毫无必要把所有的同类程序集中到一个分组里。尽量分得细是最好的。譬如,浏览器-IE一个组,浏览器-搜狗一个组……这样细分,不但可以在各组里分别放上它的升级更新、辅助程序外,而且在对该程序组授权的时候,可以规定得最细最清楚。
其实从最高安全性的角度来说,根本就不用分组,也不用做什么“预定义规则”,一个程序一条规则是最安全最精致的做法——程序行为的授权可以做到最细。
(如果你不了解系统程序的具体行为,就不要删掉默认规则给你弄好的系统程序分组来玩什么一程序一规则,这游戏要玩就在自己装的软件上玩就行了)

●安全问题的各方因素:计算机安全,不是靠一个顶尖软件或牛皮规则来包打天下,而是由很多因素所构成。操作系统、软件、兼容性、漏洞、bug、0day、系统干净程度、个人习惯、相关知识、警觉性、安全意识……都可能决定和影响电脑的安全。

●综合考虑
如何实现一个完美的防御方案?是一程序一规则,还是分组套用?是例外放行+全局询问,还是例外放行+全局阻止?需不需要多道过滤?……制作一套满意的规则,除了个人的脾性喜好之外,需要综合考虑各种因素,看你需要哪个级别的安全,看哪种方法能够完美地实现你的意图。
柯林
 楼主| 发表于 2011-12-10 21:17:01 | 显示全部楼层
本帖最后由 柯林 于 2011-12-13 22:24 编辑

【中级篇2】防御项目初步探讨

1、运行程序
执行一个程序、运行一个程序、调用一个程序、创建一个进程、执行一个可执行文件……这些五花八门的说法,都是说的运行程序——父进程启动一个子进程。
一切问题的根源,都由运行程序开始。对于未知程序或已知为样本的程序,禁止执行它,不就什么问题都没有?这就是禁运党的做法。不运行,当然是安全的,而其本身则无所谓防住没防住——根本就没有程序行为产生,讨论什么行为防御?
这一项上可供探讨的部分,主要是防止病毒文件的执行和调用系统自带的危险程序。
病毒喜欢藏身的地方,常见的有浏览器缓存,系统备份文件目录、回收站、磁盘根目录……为了避免激活和执行病毒程序,很多人都喜欢在全局规则里规定——禁止运行IE缓存*\Temporary Internet Files\*以及系统备份目录?:\System Volume Information\*  默认规则自带禁止运行?:\Recycle?\*的规则。防止U盘病毒运行,在组策略或其它HIPS可以用一条规则——禁止执行?:\*.*来防范,在毛豆上这样写就代表所有磁盘根目录起直到任意子目录下的带后缀名的可执行程序,是不行的,一般是直接写U盘路径(譬如I:\*)禁运,结果就是整个U盘上的程序都禁止被其它程序来运行。【通过禁运U盘路径是否就能防止U盘病毒?自己实证——找各种名声响亮的U盘病毒来进行测试,如果怕中毒,没虚拟机或沙盘的可以用个安全程序比如记事本程序改为病毒同名文件来测试】
为了防止自己误操作激活病毒,还得在explorer.exe的规则里阻止运行病毒藏身的目录。
如何禁止病毒程序被启动执行?除了上面说的禁止所有程序去运行它外,还有两种方法:一是给病毒路径超低权限,譬如给予U盘路径I:\*“被隔离的应用程序”这么个预定义规则,那么,无论你怎样点击I盘上的程序,也是没用的;二是全局秒杀,在使用秒杀机制的规则中,凡是没有明确规则授予运行权限的,由全局规则直接秒杀【在秒杀规则中根本不用什么黑名单,不在白名单的直接完蛋】
系统自带的一些危险程序,比如格式化磁盘工具format.com等,如果被病毒调用,就会让你的磁盘完蛋。再比如杀进程工具taskkill.exe和ntsd.exe ,如果被病毒调用,可以用来结束其他程序的进程。再比如可以用来执行删除等dos操作的cmd.exe程序,被病毒调用可以做坏事……诸如此类的问题,通常会被做规则的人所考虑,翻阅一下EQ规则及HIPS教程,会有一大堆被阻止执行的系统程序,像Ftp.exe、at.exe、net.exe……要不要考虑这些?对于旧版的默认规则来说,全局监控下,如果有病毒调用这些危险程序,会弹窗让你选择;对于新版智能规则来说,病毒自动进了沙盘,无需费神,譬如病毒bat执行时,cmd.exe继承病毒的权限进了沙盘,如果病毒是脚本文件vbs,则cscript.exe或wscript.exe一样继承病毒权限进了沙盘,虚拟化操作保证了实机的安全。只有在纯粹D+规则玩严厉规定的规则中,才会考虑这个禁运问题,流行做法是把这些东东开列一串黑名单进行阻止。全局这样一阻止,就影响到了程序安装。比如程序安装卸载时,经常会用到cmd.exe,如果安装程序要添加或停止服务,就需要用到net.exe……程序安装问题一直是纯粹D+规则的软肋。
程序之间相互调用等问题,特别是系统程序之间的调用,请查阅HIPS教程的相关资料。
全局规则如果阻止运行所有程序*,属于变态严厉的做法,请考虑“解药”问题。

2、访问内存
访问其他进程内存,通常被看作是可以注入其他进程——控制目标程序。读取进程内存一般来说没什么危险,改写进程内存就是严重事件,意味着可以放入恶意代码去让傀儡执行。毛豆读写不分,访问其他进程内存,也包含着改写其他进程内存在内。有鉴于此,毛豆玩家对此一直严防死守,除了杀软等极度可信的程序,一律禁止访问其他进程的内存。问题真的那么可怕吗?不妨退一步想,一个正常的程序访问了另一个正常程序的内存,就会发生灾难了吗?比如说,允许IE浏览器访问了资源管理器的内存,是不是IE就会命令资源管理器去修改重要的系统文件?要发生这种事件,起码要有一个先决条件——IE被病毒所控制。
正常情况之下,一个安全的程序访问另一个安全程序的内存,逻辑上无法证明就会发生恶意事件。仅仅为了以防万一而一棍子打死,是不是有点草木皆兵?还是真的有可能?谁有样本和实例,申明一下。无样本无说服力,纯粹空论是没用的。
病毒去访问一个正常程序的内存,会发生灾难。一个安全软件访问其他进程的内存,道理上不应该是安全的吗?你安装了360或者金山的卫士,它们去访问杀软或者毛豆的内存,不是应该允许吗?
新版智能规则不在这些问题上纠缠,凡是验证为安全的程序,放行其行为,管你爱干啥干啥。

3、安装钩子
这一项大概是新人或基础薄弱的菜鸟比较头大的地方之一,有兴趣的请参阅http://www.360doc.com/relevant/3870220_more.shtml
钩子究竟是啥东东?看点网摘资料——
“钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
钩子也可以理解为WINDOWS留给我们的后门,比如你想控制键盘,在DOS时代很简单通过INT即可,而WINDOWS时代不允许我们直接操作硬件;由于WINDOWS是消息驱动,所以我们可以拦截键盘消息以达到控制键盘的目的。但是控制自己进程的消息固然很简单,要控制所有进程消息要利用钩子了。将钩子函数放在DLL中,所有的有关键盘的消息都必须经过钩子函数过滤,这样你就可以为所欲为了。”

“钩子的分类
  一. 按事件分类,有如下的几种常用类型
  (1) 键盘钩子和低级键盘钩子可以监视各种键盘消息。
  (2) 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。
  (3) 外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。
  (4) 日志钩子可以记录从系统消息队列中取出的各种事件消息。
  (5) 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。
  此外,还有一些特定事件的钩子提供给我们使用,不一一列举。

  二. 按使用范围分类,主要有线程钩子和系统钩子
  (1) 线程钩子监视指定线程的事件消息。
  (2) 系统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL)
中。这是系统钩子和线程钩子很大的不同之处。”
“钩子特别是系统钩子会消耗消息处理时间,降低系统性能。只有在必要的时候才安装钩子,在使用完毕后要及时卸载。”【综合征患者应该考虑一下】

通过这些粗浅的钩子常识介绍,新人大致知道钩子是个啥东东,也顺便知道,并不是“安装钩子”就是“天塌下来”的事情,关键要看是谁安装它?杀软之类的程序安装钩子,监视系统中的异动,是正常行为。ATI显卡的服务进程安装显卡钩子以监视屏幕,是正常行为。病毒安装钩子来窃密,灰鸽子安装钩子来隐藏自身,这些就是恶意行为。UUSee网络电视的播放器安装自己目录下的一个ocx文件作钩子,正常情况下也应该看作正常行为。QQ安装钩子QQ.exe,正常与否?某些版本的系统,资源管理器会安装钩子explorer.exe,正常还是异常?问题得看装的是啥钩子,为了实现什么目的?

默认规则自带四个允许安装的钩子文件,啥意思?
%windir%\system32\shell32.dll——风云论坛 小李探花的回答:"shell32.dll是Windows外壳Shell相关应用程序接口动态链接库文件。意即可以通过此挂钩在IE浏览器启动时可执行指定的外部程序或文件代码。有鉴于此,有些恶意程序可能通过此挂钩隐身运行或劫持浏览器,但某些系统或正常软件功能的实现也可能需要使用到它。一般情况下建议保留!"
%windir%\system32\msctf.dll——微软高级文字服务动态链接库文件,禁止这个,论坛发帖方面的一些功能就用不了。
%windir%\system32\browseui.dll——使用资源管理器里面的“后退、前进、搜索、停止、刷新”等按钮功能。
%windir%\system32\ieframe.dll——使用IE浏览器里面的“后退、前进、搜索、停止、刷新、网页进度动画、Tab、Tab关闭”等按钮功能。
此外,常用的钩子还有游戏相关的两个:
支持DirectInput输入的动态链接钩子(游戏必备) %windir%\system32\dinput.dll
支持DirectInput输入的动态链接钩子(游戏必备) %windir%\system32\dinput8.dll
为求通用而在全局规则中允许安装钩子 %windir%\system32\*.dll属于太宽泛了,虽然,只要保证system32下不被创建病毒的钩子文件可保安全,问题是病毒使用系统本身提供的钩子文件来做坏事又如何?默认的全局监控钩子安装是最好的处理机制。同样的,全局允许安装钩子?:\Program Files\*\*.dll也是属于太宽泛了。
监控并禁止未知程序安装钩子,是一般玩HIPS的基本守则。至于程序安装钩子后实现了什么,以及安装的那个钩子文件究竟要干什么?只能由高手及专家去解答。
实际问题,安装了360卫士之后,它安装钩子到毛豆上,应不应该允许?

4、结束进程
这一项的防御目标,是防止病毒结束一些应用程序的进程。譬如说,已知实例,某些病毒会结束浏览器的进程,然后启动一个假冒或者带毒的浏览器进程(比如病毒创建了一个指向恶意链接地址的浏览器快捷方式,结束浏览器进程,执行那个快捷方式,就会链接到恶意网址);某些病毒进入计算机之后,会关闭杀软、防火墙等安全程序;某种病毒会结束输入法进程后启动一个假冒输入法的病毒进程……这种情况之下,禁止未知程序结束其他进程,就能起到遏制作用。
这一项的另一个应用,是在测试之中,用来防止测试对象结束保护对象,以证明HIPS有效牛叉。实际作用和意义究竟有多大?
已知程序之中,杀软、HIPS、系统的任务管理器和杀进程工具,都有较强的结束其他进程的功能。windows系统负责创建进程和结束进程的csrss.exe也是其中之一。
在实际应用中,资源管理器以及一些应用程序,可能也会发出结束其他进程的动作,这个究竟是合法还是非法?如果,阻止了它的这一动作,而实际应用并无特别明显的影响,是否意味着这样的选择是正确的?程序结束自己创建的子进程,究竟是由程序本身来完成,还是发送消息让csrss.exe来完成?这个问题由大家去根究。
顺便扯出的问题,要不要对所有正常的程序也进行限制,防止它去非法结束别的进程?回答这一问题,可以从两个方面来考虑:正常程序是否具有任意结束其他进程的本性?病毒是否会通过该程序去结束其他进程,有样本和实例吗?

5、安装驱动
新人要了解安装驱动是最危险的行为之首,除了听闻“加驱之后就无法无天,可与HIPS平起平坐”这句话外,请了解一下ring3与ring0方面的基本常识。
是否加了驱就死定了?这得看加的是什么驱,驱动程序的作用是什么。譬如说,声卡驱动就是负责声音设备的正常运行的,怎么着它也不会去干坏事,甚至除了声音设备之外,它都不会去干涉其它设备或程序,有什么危害?反之,如果是一个恶意的驱动程序,它的代码就设定了它要搞破坏做坏事的,加载之后真是死得难看,就像HIPS测试中加了驱就拦截不到后续的动作。
问题回到前面的扯鸟蛋部分——正常程序加载需要的驱动实现正常的功能,完全是安全又合法的事!病毒程序加载恶意驱动实现病毒行为,那是高度危险!
问题的问题,一个程序,加载了驱动,我完全不知道它有什么目的和行为,譬如某些游戏,咋办?放行还是阻止?如果你对编程比较了解和熟悉,你可以分析驱动程序,一般人大概只能选择——如果你信任该程序,就放行,如果不信任,最好别装。
程序的恶意行为,是由驱动程序单独完成,还是由驱动程序提供通道让主程序执行恶意代码去实现?这个问题交给高级用户去研究,普通用户就不用管了。

6、消息发送
在拦截消息洪水的测试中,选择这一项,可以成功实施拦截。在实际应用当中,差不多是毫无意义。那么多的消息类型,究竟该拦截哪一种?没有具体选择。就算是同一种消息,每秒多少次算是构成消息洪水?没有阈值可以设定。如果说该项真有实际意义,大概只有在沙盘机制中,当沙盘处于较高的安全防护等级的时候,隔离在沙盘内的病毒或恶意程序,可能会被禁止或限制向沙盘外的程序发送消息洪水。实情如何,需要实证。感兴趣的可以自己去下载消息洪水测试程序或者样本进行测试。

7、com
要了解com方面的相关知识,请搜索COM、DCOM、系统组件这些关键词。
允许com接口访问,程序通过使用系统中注册好的组件,实现相应的功能。譬如,动用LocalSecurityAuthority.SystemTime可以修改系统时间。
毛豆默认自带的com监控项目,都是比较重要的,容易被病毒利用的,要防止未知程序的访问。其中两组“伪com接口”,本身不属于com组件,毛豆把它们归到com组里,这与毛豆的设计有关,我们无需根究,知道它们比较重要就行了。
新手要想知道com的用法,请参考此帖http://bbs.kafan.cn/forum.php?mod=viewthread&tid=650628了解一下相关com组件的作用。
com要不要添加*进行全方位的保护?个人意见是没必要,把默认规则提供给你的com接口准确应用到每个地方,就算OK了。
要了解这些com究竟有什么用途和危害,请参阅此文:http://www.cnblogs.com/xh831213/archive/2006/02/10/328089.html

8、文件操作
FD作为入口防御的首选,被部分HIPS玩家所追捧。理论上讲,防住病毒创建文件入本机,后续的问题全没了,连禁运都不必谈。
HIPS的行事作风,历来都是——你让我监控哪些东西,我就看住它们!你没让我监控的东西,我就当作什么都没看见。要想让FD规则起作用,首先要看“受保护的文件和文件夹”里把哪些东西列为了监控项目,整个FD的操作,都是通过对比受保护文件来进行的。
FD规则对于默认规则来说很简单——监控:有程序想要访问受保护文件,就弹窗询问。对于要打磨一套弹窗少少的分组规则来说,就是一件费神的事情:要让程序正常运行,就要允许一些目录或文件的操作,允许不当,就会留下漏勺,限制得过于严厉,程序又没法顺利运行,综合平衡,不简单。FD上留下的漏洞,需要从别的方面来补救。譬如说,浏览器可以下载任何文件到缓存目录,乃至于临时文件夹*\Local Settings\Temp里,为了防止下载到病毒启动它,就需要在浏览器的规则或者全局规则里堵漏——禁止运行浏览器缓存目录和*\Local Settings\Temp\*  3D方面的相互补充与配合,是制作规则时常用的手段。
FD方面要扯开来说,说上几大篇也说不完。简单来说,这方面需要考虑的无非是——1、防止病毒创建病毒文件和改写系统文件及全盘感染可执行文件。2、神经一点的做法,防止常用程序去动系统文件。3、允许程序访问它的目录和文件,比如缓存目录、数据存放目录、公共目录、下载文件的目录……4、杀毒软件是特例,可以访问所有的文件,以便清除或删除染毒文件。
如何知道一个程序有哪些目录或文件是它应该访问的?可以用一些工具测试。譬如新版的沙盘,把程序在里面运行,打开沙盘去看看,明明白白。至于是不是都要允许,请根据自己的想法进行选择。
FD上有话题的一个,是要不要加全局防护?对于新版沙盘机制而言,加FD全局保护很简单,不影响日常应用,只会影响沙盘内的程序。对于纯粹D+规则而言,加FD全局保护是一个极度疯狂的举动,无数的东东需要排除,一般人就算了,建议增加重点文件的保护即可。
文件操作上值得注意的一个是设备路径的问题,包括了命名管道,譬如默认规则自带\Device\NamedPipe\atsvc等。有兴趣的,请参考秘书、抓抓、月光斑竹的规则,里面有命名管道的详细资料。
默认规则的CPS方案里,自带一个Windows Sockets Interface的文件组,用来代替部分防火墙的功能,是一个ND行为,归入FD范畴。将这一组文件列入保护的用户,请把需要上网的程序放行。禁止访问这组文件,是否就一定上不了网?自己测试。一般来说,绝大多数程序使用Sockets的方式进行网络通信,少部分程序使用管道。就算过了FD这一关,还有个防火墙在后面把关,不用担心。
需要更多FD方面的资料的,请参考论坛上发布的规则,请到大区搜寻资料——譬如EQ的教程和规则,或者组织爱好者把每个程序拉出来讨论清楚。

9、注册表操作
这又是一个让不少人头大的地方。如果你使用默认规则,使用默认的注册表监控项目,其实很简单,除了杀软、注册表整理工具、系统自带的注册表程序譬如C:\WINDOWS\regedit.exe等,其他的,是个程序都选阻止,一般没有问题,顶多个别程序需要排除一点点,要说误杀,也只会误杀安装程序——安装程序需要访问一些自启动的项目,一些重要的项目,譬如安装服务,譬如CLSID等。(允许C:\WINDOWS\regedit.exe完全访问注册表,需要注意漏洞问题——要指定或者监控有哪些程序可以运行regedit.exe,否则病毒或者恶意程序把你的注册表搞得天翻地覆。顺便注意一下dos命令修改注册表的问题)
默认保护的各项注册表,究竟有什么作用,限于篇幅,这里就不扯了,有兴趣的请到大区参考这篇帖子http://bbs.kafan.cn/forum.php?mod=viewthread&tid=940257,或者网上去下这本书“《精通注册表修改与编程》郝强”。
自动启动项目——除了安装程序和个别程序之外,谁会动这个?
COMODO键——除了comodo,谁有权动?
IE键——除了自己(explorer调用rundll32)修改IE主页等操作之外,一般不需要任何程序来动它。
重要键——除了安装程序,日常使用大概也就只有*\SOFTWARE\Classes\*\shell*和*\SOFTWARE\Classes\.*\*影响文件关联的改动(譬如播放器关联影音文件,浏览器关联网页文件,图片处理软件关键图片文件……)解决的办法,可以列出需要允许的关联项目进行允许,余者阻止或监控,也可以临时禁用D+进行关联;另一种思路是把重要的文件关联(譬如exe、bat、txt文件的关联)列出黑名单进行全局阻止外,其他的放行或监控。
如果觉得默认的不够强,可以自己补充。进一步的补强注册表监控项目之后,需要排除正常程序的正常访问。譬如,默认的保护,只把IE菜单里面的IE起始页等常被病毒冻手动脚的部分列入监控,如果你要改成*\SOFTWARE\Microsoft\Internet Explorer\Main*乃至于*\SOFTWARE\Microsoft\Internet Explorer*那你得自己解决排除的问题,其他的同理类推。
注册表要不要加*进行全局保护?对于纯粹D+规则来说,这是个绝对疯狂的做法。对于新版沙盘机制来说,加不加都一样,未知程序进了沙盘,禁止访问受保护的注册表项目。如果是手动入沙,重定向后全部虚拟化,跟纯粹D+弄全局保护要获得的效果是一样的——禁止对注册表进行任何实机的改变。
随便玩玩,用默认的即可。自己折腾,弄懂注册表的所有键值的含义和作用之后,你高兴怎么玩怎么玩。

10、域名解析服务
这一项没多大好说,就是允许不允许程序使用域名解析服务的问题。需要联网的程序就允许,不需要联网的程序就不允许。这一项究竟是说的允许程序自身的域名解析服务,还是允许程序使用系统代{过}{滤}理的域名解析服务?不知道,有兴趣的自己追究。
这一项与防火墙上的允许访问域名解析服务器,有什么不同?防火墙上的设置,是允不允许访问域名服务器的53端口,是一个ND行为;这一项,是允不允许获取域名解析的权限,是一个AD行为。如果要排先后,从逻辑上来说,应该是此项在前——程序获取域名解析的权限之后,才会采取进一步的行动,发出数据包,向远程的域名解析服务器发出查询请求,让它返回包含正确的域名与IP对应的数据包以供使用。

11、物理内存
物理内存一般情况下是由系统掌控,不应该由程序直接访问的。程序要使用物理内存,须向系统申请,由系统分配一个虚拟的内存空间,最终用映射操作的方式来完成虚拟到实体的转换。由于一些病毒喜欢使用直接访问物理内存的方式,这一项被敏感化,其实一些特殊的程序,比如杀软,比如HIPS,比如资源管理器,比如内存整理优化工具,允许访问物理内存是正常的行为,不是恶意行为。要了解更多有关物理内存攻防战的资料,请到网上搜索。

12、访问屏幕
监视屏幕内容,读取与复制,最直接的作用,就是截屏。通过截屏,一些木马可以获取用户的帐号和密码。这一项的设立,主要是针对截屏类木马而设立的。正常程序也有截屏行为,譬如专门的截屏软件,譬如QQ附带的截屏功能,譬如谷歌与火狐浏览器安装插件之后也可以截屏,播放器可以截取播放画面,游戏可以截取游戏画面……这都是正常行为。病毒木马截取屏幕究竟是先安装一个钩子来截取还是直接截取,感兴趣的请找样本来测试,事实最有发言权。
如果禁止这一项,是否会影响程序的正常功能,譬如连窗口都不正常?对此有疑问有兴趣的,可以通过实测来根究。

13、底层磁盘访问
正常的操作,程序一般是不进行底层磁盘访问的,对磁盘文件的访问,相关的磁盘读写操作,是由程序通知系统,由系调用专门负责磁盘操作的子系统去完成。程序直接绕过系统自己去进行磁盘读写操作,一般被看作是恶意行为,可能的后果,就是可以任意改写磁盘上的文件,比如删除或修改文件,乃至格式化。有鉴于此,一般情况下,管它什么程序,选阻止,似乎是没错的。然而,事情总有例外,资源管理器允许该行为,可以使用右键菜单上的格式化操作,磁盘清理和碎片整理程序,应该允许这一项。国内一些不规范的程序,会有此项的要求,允许还是拒绝?
禁止资源管理器对该项的请求,是不是就不能完成格式化操作?能够完成,是说明毛豆抽风,还是此项拦截能力有漏?

14、访问键盘
有人把这一项叫做键盘监听,有人把这项叫作访问键盘。不管怎么个叫法,这一项的设立,是防止病毒木马监听键盘输入来盗号。根据大多数实例,木马要通过监听键盘来盗号,通常会先安装一个键盘钩子,通过钩子的中途截取,获取相关的信息。有没有不安装钩子直接访问键盘的?不知道,有知情的请提供样本信息。
正常程序,需要跟键盘打交道的,比如浏览器、聊天工具、播放器、文档处理软件(包括记事本程序)、游戏等,都需要允许这一项。如果禁止这些程序使用这一项,程序还能不能完成文字输入或键盘控制?自己实证。

初步的探讨,只能就这些肤浅的层面,与新人逛一圈,获得一点直观认识,要更深入的了解,更专业的解释,请向论坛上搞专业研究的高手、专家请教,或者百度谷歌。
篇末回首,你是清楚还是糊涂?你是安心还是恐怖?
“使用HIPS,任何行为都别想逃过我的眼睛,任何程序都别想逃过我的控制!”有人这么宣传,有人也这么确信。真的吗?真的一切尽在自己的掌控中吗?如果你不是高手——熟悉编程、熟悉系统、熟悉病毒行为、熟悉黑客手段的高手,那可未必。最简单的问题,程序加载了一个驱动,你用HIPS仅仅是监控到它加载了一个驱动而已,怎么判定它是不是坏东西?难道就凭加载驱动,就说它是病毒或等同于病毒?再比如,程序安装了一个钩子,你怎么判定?难道说,大多数正常程序不需要安装钩子,安装钩子的一定不是好东西?它加载了驱动后究竟做了什么,安装了钩子后究竟干了什么?HIPS用户有几个可以明明白白地回答?一般人可能会结合其他方面进行粗略的判断——譬如有没有修改系统文件,有没有修改可执行文件,有没有在注册表里添加开机启动、添加服务、修改文件关联等,大致判断它有没有病毒行为或恶意倾向,但是,如果它根本就没有这些“危险举动”,你如何判断。譬如,它要是加载了驱动,直接把你盘上的文件复制了上传,如果使用驱动级传送,除了抓包分析,一般的防火墙根本就检测不到,无从拦截,你的那一堆监控分析判断有什么用?如果它是一个“聪明”的东东,安装在本机上的程序毫无异样,接受远程指令后才搞事,你咋办?如果它已经加了驱,安装了钩子,你用HIPS也是抓瞎。诸如此类的问题,只有高手才能解决,我等菜鸟只能傻眼。但是,切莫因此患上高度恐安妄想症,正常情况下,计算机世界就像我们的日常世界一样,是太平的,安全的,不是那么恐怖,毫无安全可言,就像现实世界中,你抬眼之处遍地是恶性犯罪事件秒秒钟上演,可能吗,哪里有?
安全,是一个总体上处于安全状态而局部发生波动的现状,不要自己吓自己,疑心生暗鬼,也不要大大咧咧,自以为是,良好的习惯加上高度的警觉,配上一个像样的安防体系,通常来说,你有百分之九十以上的机会位于安全状态中。

看完中级篇的粗浅讨论,你是否有点启发?如果问两个这样的小问题——如何用毛豆来保护上网安全?如何用毛豆来防止盗号?你会怎么回答?

结语:通过使用HIPS,我们看到了,计算机安全真是既简单又复杂。说到简单,随便用个厉害点的东东,咔咔做两个规则卡住,问题解决。说到复杂,很多东西飘忽不定,看似明确,其实你什么都没抓住,你抓住的只是个表面。要想真正掌控一切,你只有去深入研究。
dopod2009
发表于 2011-12-10 21:17:20 | 显示全部楼层
果断抢一个位置
柯林
 楼主| 发表于 2011-12-10 21:17:43 | 显示全部楼层
大致上就这个鸟样,希望可以让新人受到一些启发。
文中所言,不是什么狗屁的金科玉律,只是一个菜鸟肤浅的看法,贴出来是与大家交流探讨。

这篇帖子解决了什么问题?什么都没有解决,仅仅是给出了一个可能的方向,让新人去追寻。
进一步的发展,把每个程序或软件拉出来一个一个地讨论清楚,还得靠大家共同来完成。
jgfhy
发表于 2011-12-10 21:55:16 | 显示全部楼层
柯林 发表于 2011-12-10 21:17
大致上就这个鸟样,希望可以让新人受到一些启发。
文中所言,不是什么狗屁的金科玉律,只是一个菜鸟肤浅的 ...

就是需要这样的,这样听得懂,感谢分享。
我现在知道怎么看日志排除了
yestersummer
发表于 2011-12-10 23:01:09 | 显示全部楼层
卡位学习!
olda
发表于 2011-12-10 23:06:09 | 显示全部楼层
比较详细。真的。。。。。。。。。。。。
宽幅-雅致
发表于 2011-12-10 23:14:15 | 显示全部楼层
清楚,明了,多谢多谢
qdfk
发表于 2011-12-10 23:15:07 | 显示全部楼层
期待后续啊,真是吊足胃口
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2022-8-14 15:22 , Processed in 0.163920 second(s), 18 queries .

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

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