★我要吧★

 找回密码
 注册[Register]
搜索
qq空间相册密码查看为什么登陆后需要激活无法注册?

收藏 hips新手入门

[复制链接]
发表于 2009-4-17 00:25:27 | 显示全部楼层 |阅读模式
这篇文章是逐月鹰发在绅博的,我觉得写的非常好,对刚接触HIPS的新手很有帮助,所以经过他的同意转到卡饭,在此向他表示感谢.
hips常规基本知识
hips是啥?
现在比较广泛的叫法是:主机入侵防御体系。。。这个名字看了估计99%的不了解的人还是不知道啥玩意,于是又有人提出:系统防火墙,意思是类似防火墙的东西,但是作用的对象是系统的动作,稍微明白了一点,不过他到底是啥玩意呢。。估计还是云里雾里。我们可以这样认为:hips是一种通过拦截系统内软件的常见危险动作,借助自己对软件及系统的了解,人为的或者软件内置的一些触发条件制止一些不正常的软件动作,以达到系统安全的一个软件,这个软件我们就叫他hips,软件内置的一些触发条件我们一般叫他hips规则。在绝大多数情况下hips是需要人为参与的,也就是不能做到智能,但是更加合理的规则可以让他更少的需要人为的参与。
hips一般来说有那些种类?
1、最常见的就是3d类的借助规则拦截程序动作的软件。什么是3d? AD(Application Defend)应用程序防御体系、RD(Registry Defend)注册表防御体系、FD(File Defend)文件防御体系,这3个是应用层面上软件做的最直观的动作,3d软件通过拦截这些直观的动作的来起到保护系统的安全。举个简单的例子:X.exe调用ie(这个是ad的防护范畴)写入注册表启动项(这个是rd的范畴)在system32文件夹下写入x.exe的复制体(这个就是fd的范畴了)那么常规的3d类hips能给我们做怎么样的保护呢?首先提示x.exe启动(如果是莫名其妙的程序启动直接就没ko了)然后提示调用ie(不怎么正常的动作,一般软件在注册或者连接主页的时候可能会用到,很多时候直接被拦截了)接下来写入注册表启动项(一般来说直接拦截掉,没有人会希望启动项东西越来越多,拦截这个动作可以说是rd最要的任务了)最后写入system32文件夹(又是超危险动作,一般也被直接拦截掉,fd的最重要拦截中的一个)只要我们在途中有一个拦截掉了,就算这是一个有问题文件,那他也不能危害我们的系统,这个是一般杀软等防护不能做到的任务。优点是制定性比较强,可以方便的制定各类规则来满足不同的需要,缺点是上手慢,不过后文我会相对详细的写点入门的教程)
2、沙盒类的软件。所谓沙盒类的软件是指:通过虚拟的应用环境等手段,让程序运行在一个和真实系统隔离的环境,即使在那个环境下受到破坏也不能影响真是的系统。可以说这是全面的限制了程序的动作,而且比3d类的更加简单易用,缺点是防毒强防马差,因为木马只要运行就能起到作用了,哪怕下次恢复成原样,被盗去的东西还是被盗去了。
常见的hips软件有那些?
http://bbs.kafan.cn/viewthread.p ... ht=%B3%A3%BC%FBHIPS
那么我们如何使用这些hips来保护我们的系统呢?
对于沙盒类的,没什么好说,只要把软件运行在沙盒中,就能起到相应的保护效果。如果没有怎么办呢?:这个是软件开发者的问题,请给官方反映问题,一个好的软件开发者是会很快的给你解决问题的。
对于3d类的软件,我们好好的说说。
写在前面:首先在我认为软件的防护中3d是相辅相成的,没有谁更加重要只说,或许单个“d”的防护能达到相关的效果,但是多个“d”的搭配必然可以可以给你更多的选择,方便制定出更加人性化和灵活的规则。
其次,别人写好的规则对你来说永远只是参照和例子,不要认为别人的规则一定比你的好,对于一个已经会用3d类hips的来说,自己的规则永远是最好的,参看别人规则写自己的规则是一种最好的学习,去芜存菁是我们要做的,硬套照搬的行为最好永远不要去做。
既然规则如此重要,怎么来编排规则呢?
首先,规则一般来说有两个大方向或者说是基本的两个结构:1阻止所有的动作,然后放行需要放行,这样会有最大的安全性(后文我们称之为大面否定规则),好比一个国家的防护,对于任何外来人员都拦截,只放行那些验证过的,发放了通行证的人,同时也有可能把某些放放通行证的人中发现的坏分子继续抓起来。在这种规则体系下,最后一条最低优先的规则永远是全部阻止,上面的规则绝大部分是放行需要放行的程序动作,较少的部分继续拦截被放行的规则中需要过滤掉不该放行的部分。2放行所有的动作,只对已经了解的有危险的动作进行拦截(后文我们称之为大面肯定规则),这样可以最大的兼容性,但是防护效果相对来说会略微下降。继续用防护国家的例子。。国家防护中,对普通人员全部放行,仅仅注意有没有通缉令或者公告上的危险人物。而对某些已近不在通缉的人也可能进行继续放行。在这种体系下的规则最后一条是放行全部动作,上面的规则大部分是阻止已近知道的有危险的动作,小部分是在阻止的动作中对部分程序或者部分的个别情况进行放行。 任意的规则都是在这两者基础结构上组合而成的。
当然实际使用情况中因为软件的不同有些特殊的体系变种,这个需要自己把握和灵活运用,这里介绍几个特殊的作为例子:
tiny的物件加组方式:把所有能归类到一起需要编制规则的各个小项目放到一起组成一个物件,同类的程序组成组,在规则上直接对物件和组进行编辑定义,以达到广义的规则效果。继续以上面的国家防护的例子举例——把所有需要防护的城市分为红色防护城市,绿色防护城市和蓝色防护城市,对不同的人群分为群众,部队和学生等等,直接下规定说学生不允许进红色防护的城市,那么所有被归类于学生的人都不能进入这些城市了,假设有个未知的人,我们要达到让他不能进红色防护的城市,我们只需要把他定义到学生的身份,而不需要单独的为他定义个规则了。实例:我有以下下载软件:bc、迅雷 我的下载文件位置一般是d: e:\下载 如果我要制定下载软件的排除规则,一般的软件需要制定4条规则,允许bc写入d: 允许bc写入e:\下载 允许迅雷写入d: 允许迅雷写入e:\下载 但是在tiny这种规则体系下我们要做的是定义组:下载软件 定义物件:下载用文件夹 吧迅雷和bc放入下载软件的组,把两个文件夹放入下载用文件夹的物件,然后直接定义广泛规则:允许下载软件写入下载用文件夹就可以了,以后还要用到其他的下载用软件也是放到这两个下载用文件夹的我们只要把新程序归入下载程序的组就能达到效果了。同理要有新的文件夹作为下载用文件夹我们只需要把他归类到下载用文件夹的物件就行了,而省去了新定规则的麻烦。
本坛(远景晟地)版主uhunters的winpooch全局注册表规则:一般来说全局注册表是基本不能实现的,不过基于winpooch 软件的特性还是很巧妙的实现了全局注册表规则,实用性咱暂且不谈,见人见智,对于这种灵活运用的方式我们是要学习的。这个规则采用的一定目录下的程序采用额外注册表规则的放行而对新程序是全局限制。继续比方:对所有有本国护照的人全部放行二对于没有的进行处处监管。实现方式是定义假设d:software\的所有软件允许任意注册表 其他全局询问
ps。。。eq、ps等的常规规则编排方式也有组的概念,不过与tiny的组有所不同,那是将所有类似的规则归类到一起,方便规则的查看和再编辑。
常规的3d规则如何制定?
细节的方面是很难说清的,只能说说普通的大方向和常规做法,还有就是一句话:如果你有更;灵活方便的方式,不要犹豫,用你自己的,也欢迎你在论坛上发表自己的看法!
1、rd规则
对于rd,最常见的防护是采用最大兼容的规则——放行全部,拦截少数。
为什么这么做?因为对于绝大部分来说注册表是陌生的,而且一一放行的话由于注册表对于每个动作都有相应的键值一一排除的话不仅规则量工作量巨大,而且要熟悉全部的注册表项几乎是一个不可能完成的任务。
那么哪些注册表项是我们需要注意的呢?参看。http://bbs.pcvista.cn/read.php?tid=12921
既然是全局放行否定个别,那么我们首先制定一条优先级最低的规则:允许所有程序写入所有注册表项。然后开始对需要照顾的项开始做规则。对于rd来说作重要的任务是防止程序通过注册表实现自启动和修改文件的关联打开方式和其他一些利用注册表进行干坏事的动作。在实际操作中,我们不一定对这些项全部采取阻止的规则,而是部分阻止配合部分询问的规则。对于询问规则,有好处也有坏处,好处是比较灵活,可以方便的生成例外规则,坏处是需要人为的参与,增加操作的麻烦性。当然前面我们说过晟地版主uhunters的规则,也可以参照或者自己想到了适合自己的方式作出独特的规则来。
2、fd规则
fd规则现在的制定方式是注重安全注重兼容的都有。
注重兼容的制定相对简单,安全性能肯定为低一点,但是对于大部分用户来说应该是够用了。主要是制定方式是最低优先级别的一条允许全局的规则来放行所有文件,然后一条高级优先的规则屏蔽掉可以利用作为自启动的文件夹,屏蔽掉一些常规的流氓软件,屏蔽autorun.inf的文件,以及浏览器缓存中的一些可执行文件等等很有可能对系统安全产生危害的文件夹。
注重安全的方式相对麻烦不少,在建立最低优先的全局控制规则后,问题不在是安不安全,而是方不方便,这时我们需要对每个程序写入文件的行为进行了解,进行一系列的排除工作,我的建议是最后那条规则不要设置成全局禁止,而是全局询问,这样排除规则可以自动生成,就是开始使用的时候会有点罗嗦,不过现在常规的hips都有一些比较方便排除的功能好好用好那些功能可以更加方便,典型的一个:学习模式——可以在你使用学习模式的时候自动产生一些列的规则,当然后面我们会陆续简单的讲讲一些hips的特色功能。常见流氓软件参见:http://bbs.pcvista.cn/read.php?tid=6530
3、ad规则
首先几乎任何ad软件都是基于高安全性的规则的体系的。运行新的程序总是会询问,这个是ad软件的重要作用之一,后期的ad排除也比较的麻烦,不少程序在ad上也有类似前面说的tiny的组的概念来方便统一的管理和编辑。
在制定规则之前我们应该注意点什么? 既然要自己弄规则了,势必对用的软件比较了解了,而我们应该着重的了解下面的一些方面.
1、软件的规则优先顺序是怎么排列的
这个是制定规则的基础,对此含糊的作出了规则也将是思维混乱的,对于新学自建规则的人而言,建议规则少可以,但不要混乱,在对软件和系统逐渐了解之后,你的规则会丰富起来的。但是混乱造成的后果是你的规则没有很强的可读性和比较麻烦的后期再编辑,对系统学习hips规则的过程中将起到比较不利的影响。
2、软件的通配符
* ?等即是软件的通配符。他的作用是广泛的代表很多格式类似的物件来方便广泛规则的定义,一般来说*可以代替任意个字符(可以是0字符),?代表单独的字符(不能是0字符)当然不同的hips可能还有不同的其他设定来使规则的制定更加的方便快捷。比较常见的是:咖啡,gss的"**"可以代表多层目录而"*"不行,tiny的"?"和"*"都不能通配字符 "\" ,sns的#**#.#MODEXT# 通配符来代替*.任意可执行文件后缀 等等,不同软件的略有区别,初用一定要先搞明白.
ps.通配符常用的示范 *.*表示任意带"."的文件/文件夹,常用来表示有文件后缀名的文件
?:表示任意的一个字符接一个冒号的路径,一般表示任意盘符下的文件
3、软件的常用环境变量
环境变量是用来让软件的规则具有更强的可移植性和更简单的书写的,当然你要执意不用,除了写规则看起来乱一点和规则长一点也没有太多坏处,不过强烈建议养成利用环境变量写规则的习惯。软件的环境变量可以查询软件的帮助或者看别人同类软件的规则来学习,一般的常见环境变量有(我主要了解的是tiny的,所以其中大部分为tiny的。。)
%UserProfile% C(这里指系统盘):\Documents and Settings\你的用户名
%RemovableDrives% 可移动存储设备
%CdRoms% CD-ROM and DVD-ROM drives
%FixedDrives% 全部本地磁盘
%LanDrives% 网络磁盘
%SystemRoot% /%Windows dir% C(这里指系统盘):\WINDOWS
%SystemDrive% 系统盘(一般是c:)
%ProgramFiles% C(这里指系统盘):\Program Files
%AllUsersProfile% C(这里指系统盘):\Documents and Settings\All Users
ps.系统变量是可以改变的,我列出的是默认路径...会改的当然也知道怎么回事.这个怎么用?假设我要保护windows目录,我可以不用系统变量
C:\WINDOWS设置规则,也能直接%SystemRoot%....前者不能移植到别人系统盘是D的系统,而后者可以,这就是简单的区别.
4、注意手上软件一些特殊的规定,如前文说的sns的#**#.#MODEXT#;winpooch、ssm等的支持目录下的ad程序用通配符(即可以用c:*表示所有c盘下的程序;smm的注册表需要双条规则的;tiny的*不能通配/,也就说不能用*/*.*表示所有程序。当然还有不少特殊的东西,这里就不一一说明了(事实上我也不可能所有的程序都很了解)。
规则入门
基础的规则结构:
前面我们说过,任何看起来很复杂的规则只有两种基本结构所构成的,在这边我们将他们分别称为大面肯定结构和大面否定结构结构,将最底部确定规则结构的那条整体规则称为基调规则(可以说整个规则都是围绕这个规则展开的,他奠定了整体的基调),上面的规则部分称为排除规则。
在实际的局部规则选择中这两个结构各有用处,有时侯两个都可以用,这时我们应该选择规则比较少的结构进行架构规则,即当要否定的东西多的时候我们选择大面否定,反之选择大面肯定。
例1:建立规则,只允许程序在桌面建立快捷方式,不允许其他任意程序在桌面建立文件
分析:首先“只允许。。。”也就是说仅仅的特里允许,那大面是否定的,我们选择的基调规则就应该是大面否定的基调规则 禁止在桌面建立任意程序
其次,按照要求我们需要的排除规则为 允许 任意程序 写入 *.lnk 到桌面文件夹。按照使用软件的有限级将其至于基调规则上方。
常见格式
**desktop**\*.lnk 允许
**desktop**\** 禁止
例2:需要建立一个移动存储的规则,要求禁止自启动脚本的写入
分析:首先,在移动存储中我们是允许写入绝大部分文件的,大面肯定,我们选择的基调规则为允许所有文件写入。
其次,需要的排除规则 屏蔽autorun.inf 排除规则置于基调规则的上方
常见格式
%RemovableDrives%\autorun.inf 禁止
%RemovableDrives% \* 允许
利用两种结构的多次嵌套形成灵活的规则结构
有的时候单独的一个规则结构体无法达到需要的效果,我们可以利用多个结构体的嵌套来达到部分过滤的效果
例3:在一个大面肯定的总体规则体系中,我想做到例1中的局部肯定
分析,非常简单,在大面肯定的总体规则体系中,我们只要架构一个局部的例1一样的结构就能达到要求了
**desktop**\*.lnk 允许
**desktop**\** 禁止
*\* 允许
这样在总体上是大面肯定的,而在局部形成了一个小型的局部的大面否定规则,形成灵活的规则结构。
例4:在一个大面肯定的规则中形成例2中同样的效果。
同样很简单我们只需要将例2规则嵌套到整个规则体系中就能达到需要的效果
%RemovableDrives%\autorun.inf 禁止
%RemovableDrives% \* 允许
*\* 允许
当然,
%RemovableDrives%\autorun.inf 禁止
*\* 允许
也能达到同样的效果,但是在多层规则的结构中,个人推荐初学者可以选择直接嵌套,好处不少:1 嵌套简单,架构规则方便 2 局部规则更加纯净,不容易受到其他规则的影响,当规则出现问题的时候可以很方便的排除这个结构出现问题。当然熟练之后这个可以融入到最基础的那个整体规则体系中,可以省略一些规则。
例5:在一个大面肯定的规则中同时形成例1,例2中同样的效果。
按照前面的理论,我们直接嵌套就能达到效果
%RemovableDrives%\autorun.inf 禁止
%RemovableDrives% \* 允许(可省略)
**desktop**\*.lnk 允许
**desktop**\** 禁止
*\* 允许
发表于 2009-4-18 14:15:28 | 显示全部楼层
专业性太强~~~呵呵
发表于 2009-4-18 14:44:21 | 显示全部楼层
就是,太专业,看不懂!
发表于 2009-5-11 01:09:04 | 显示全部楼层
不错的分享,谢谢楼主了
发表于 2009-5-12 12:35:18 | 显示全部楼层
学习了  谢楼主了  :loveliness:
发表于 2009-5-27 23:09:44 | 显示全部楼层
学习了,谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

QQ|手机版|小黑屋|☆我要吧☆ ( 豫ICP备13016831号-1 )

GMT+8, 2024-6-10 07:26 , Processed in 0.063146 second(s), 22 queries .

Powered by abc369 X3.4

© 2001-2023 abc369.

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