银行语言文字工作计划:迈进HIPS的瑰丽花园 - HIPS - 未已信息安全

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 08:38:27

迈进HIPS的瑰丽花园

本帖最后由 novirus 于 2010-12-3 18:26 编辑

作者:jpzy   

提醒:本文是写给那些没有太多经验的HIPS新人的,没有太高深的理论和知识。熟悉HIPS的老鸟们可以无视~~~

写在前面

如果让大家来投票选择当前安全软件领域的热点,恐怕HIPS要算是其中的一个了。正是由于HIPS在安全方面的惊艳表现,很多人甚至提出了用HIPS替代杀软的观点。无论这个观点对或是错,至少说明了一个问题,就是HIPS的确具备无可比拟的安全性(前提是你会用)目前,各大杀毒软件厂商也都开始或多或少的开始在自己的产品当中加入一些HIPS元素,HIPS似乎正在成为安全软件新的技术增长点。

HIPS的定义是比较宽泛的。看看HIPS区里面讨论的软件,沙盘软件(Defensewall,Sandboxie等),行为分析软件(ThreatFire,AntiBots等)都被列为HIPS的范畴。在HIPS不算庞大的家族里面,有一类HIPS,比较受到追求极致安全性的用户的青睐,这就是纯手动HIPS。

所谓纯手动HIPS,就是在极端情况下(安装好以后,删除内置的规则或者不开启学习模式),所有的操作都要有用户的参与,才能完成。之所以这类HIPS会受到很多高手的青睐,就是因为利用它们,可以基本做到对自己电脑的完全控制,安全性自不待言,这种完全控制的感觉更加能够让人获得心理上的满足和愉悦。

只是,这类HIPS,在提供极致安全性和心理满足感的同时,也同时将准入的门槛抬高了不少,以至于很多菜鸟只能在遥望美丽的空中楼阁的同时,站在高高的门槛前望而却步。

那么,做为一个菜鸟,如何迈进HIPS这座花园,来享受HIPS提供的安全性和心理满足感呢?这就是本文的目的了。作者我不是高手,不过也不是菜鸟,算是一个计算机方面的老鸟吧。我来跟大家分享一些使用纯手动HIPS的心得,希望能给刚刚跨入HIPS门槛的朋友们一些启发。本文不会针对某一款HIPS做详细的讲解,而是尽量讲一些HIPS的共性的东西。

文章是按我自己的理解来写的,如果有什么疏漏或者错误,请高手指出来,大家共同进步。

好了,言归正传,让我们一起走进HIPS的花园看看吧!


一、HIPS在干什么?

HIPS在干什么?为什么不停的有框弹出来?这些提示框都显示了什么信息?相信,刚刚步入HIPS大门的菜鸟首先要面对的就是这样的困惑了!

那么,在了解HIPS以前,让我们先来熟悉几个概念。

第一,什么是HIPS~!版区里面有关于HIPS的概念的详细表述,相信大家也都看到了。不过相对于“主机入侵防御系统”这样的专业称呼,我更喜欢把HIPS称为“行为拦截工具”。试想一下,一个病毒样本,如果杀软的病毒库有对应的特征码,则无论这个样本有没有运行,杀软都会马上报警,然后隔离这个文件;而对于HIPS来说,如果你不运行,则HIPS永远不会有提示。可见,HIPS是拦截了用户在操作计算机过程中程序产生的行为,并提交给用户进行判断的工具。所以,叫它“行为拦截工具”虽然有点局限,却也还算恰当。

第二,对象。学过编程的人应该对这个定义有所了解。现实生活中的“对象”就是人们常说的“东西”。对于系统来说,进程,程序,文件这些都是一个个的“东西”,也就是对象~!

第三,事件。这也是编程中会涉及到的一个概念。对于不熟悉编程的人,其实也不难理解。这跟我们生活中的事情没什么不同,是一种加在对象上的“作用”。比如,用鼠标指针指向某个程序,并且双击,这个双击就是一个事件。

第四,规则。规则与现实中的法律类似,法律是人必须遵守的行为规范,而HIPS的规则则是程序必须遵守的规范。而且一旦设定了,只有可能被绕过,而不可能违反。

清楚了这几个概念,我们就可以来理解HIPS的工作方式了。

既然HIPS可以被叫做“行为拦截工具”,那么任何一个程序试图进行某种操作都相当于产生了一个事件。在这个事件中,有两个对象,一个源对象,一个目标对象,如果没有HIPS,我们当然不会知道这个事件是什么,而HIPS会拦截这个事件,并且提交给用户进行判断。

请看下面这张图




看,在这个提示窗口里面,HIPS给出了明确的信息,源对象是explorer.exe,目标对象是FlashFXP.exe,而事件就是:程序explorer.exe试图启动一个未注册(没有匹配规则的)程序(FlashFXP.exe)

(上面这个提示框,在HIPS上手初期最为常见,当用户双击桌面的图标试图运行一个程序的时候,HIPS就会提示explorer.exe试图运行XXX.exe进程。事实上,这就是我们双击的那个操作!)

根据上面的简单分析不难看出,在任何HIPS事件中,源对象都是正在运行的进程,而根据目标对象的不同,HIPS就分为了AD,RD,FD这3D。AD是源对象对Application(程序)或者源对象本身(源对象本身也是Application)产生的行为,FD是源对象对Files(文件)产生的行为,RD是源对象对REG(注册表文件)产生的行为。

HIPS拦截了一个事件,并且进行规则的匹配,如果有规则能够匹配,那么就按照规则进行相应的操作(放行这个事件或者阻止),如果没有对应的规则,则弹出对话框,提交给用户做出判断。这就是HIPS的工作方式了。

好了,有了这样的认知,就可以迈出第一步了。读懂提示是使用HIPS的第一步。让我们结合下面的几个截图来说明一下,如何读懂HIPS的提示。

这是一个AD的提示





这个提示窗口明确的告诉了我们,在这次拦截的事件中——

源对象是:KMplayer.exe
目的对象是:所有运行的程序(实际上是安装了一个全局钩子)
事件是:将操作对象DINPUT.dll注入到所有的进程中。

这是个FD的提示



这个提示窗口的信息是:

源对象是:Explorer.exe
目标对象是:C:\windows\foobar2000_0.9.5.1.exe
事件是:Explorer.exe试图对C:\windows文件夹下的foobar2000_0.9.5.1.exe进行操作(此处是个用户将foobar2000_0.9.5.1复制到受保护的C:\windows下面的操作)

下面这个是RD的提示窗口



这个提示窗口的信息是:

源对象是:regedit.exe
目标对象是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run这个下面的键值
事件是:regedit.exe试图在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run下面创建一个suchost的键值。也就是我们常说的添加一个自启动项了。

从上面的分析可以看到,按照对象和事件的方法,我们就可以从提示框中获得足够的信息,起码我们知道了,提示框中提交给用户判断的到底是什么进程在试图进行什么操作。这也就是HIPS的本质:拦截事件,并提交给用户进行判断。

了解了HIPS的工作方式,能够清晰的读懂HIPS的提示信息了,那么接下来我们就要步入HIPS这座花园,来看看面对各种各样的提示,究竟我们该做些什么! 收藏 分享 评分 回复 引用

订阅 TOP

 

2 novirus发表于 2010-12-3 18:20 | 只看该作者 二、我们该做些什么

读懂了提示框的信息,仅仅是迈进HIPS花园的第一步,新人们即将面对的是更加困难的选择,即使明白了到底发生了什么事件,可是事件本身到底是什么含义呢。究竟我们又该做些什么呢?

先来看看我们将会面对哪些事件。

AD部分

AD部分是整个HIPS最重要的组成部分,也是最复杂的部分!
下面这张图里面就显示出了HIPS的AD能够拦截的事件。



说实话,这些事件里面,很多我也不知道具体含义。不过从字面意思应该大概知道它代表着什么。

那么在看到这些纷繁复杂的事件的时候,我们该如何选择呢?毕竟,HIPS拦截了一个事件,并且弹了个对话框出来,就是要我们在“允许”和“阻止”之中选择一个做为回答。对于不同的事件,我们要区别对待。虽然做为菜鸟,我可以不是很明白这些事件背后到底隐藏了哪些秘密,但是,我仍然可以按照一种简单的方式来进行选择。

让我们先来给这些事件分一分等级吧。

最危险的事件

直接操作内核
加载驱动
访问物理内存
底层磁盘操作

毫无疑问,这几个事件是最危险的。很多教程里面,在给一般的应用程序创建规则的时候,这几项都是会被直接阻止的。那是因为,这几个事件意味着,用户将有可能丧失对系统的控制,因为,这几个事件一旦被允许,相应的程序就会获得极高的系统权限,如果是病毒或者木马,后果就不堪设想。

一般危险事件

创建远程线程
修改其它进程内存
安装服务或驱动
加载全局钩子
加载库文件
结束,挂起进/线程

这个级别的事件,危害性虽然没有前面几个大,但是仍然不能小瞧,一旦选择错误,后果一样会很严重。而且,由于很多正常的程序也会有这样的动作,因此,这个级别的判断难度是最大的。

其它事件

关闭,重启系统
修改时间
键盘记录
模拟键盘鼠标

这个级别的事件,对系统本身的危害性比较小,不过可能会造成丢失帐号等个人损失。而且,修改时间和模拟键盘鼠标会被某些木马用来关闭杀软和逃避杀软的查杀。

将事件按照危险程度分类以后,判断起来就容易多了,对于危险性较小的事件,可以不用太过紧张,即使误操作,还可以补救,对于危险性较大的事件,就要谨慎对待了。

FD和RD





FD和RD的事件很简单,除了FD多出一个读取外,主要就是创建,修改和删除。那么FD和RD的危险等级实际上取决于FD和RD所指向的区域的危险等级。关于FD和RD究竟应该保护那些部分,有相关的帖子,大家可以自己看看。

讲完了事件的分类,我们来看看出现事件的情况有哪些。

事件的出现主要有两种形式

1、有用户参与的情况:双击桌面图标打开一个程序,在浏览器里面点击一个下载链接,安装软件,复制文件……这些都是我们平时的操作,都是由用户发起的。在没有创建对应规则的情况下,HIPS都会有对应的提示框弹出来。这种情况比较容易判断,只要对系统的操作稍有了解,就应该知道,HIPS拦截了哪些自己的操作,那么只要按照提示框的指示,一步一步进行选择,创建对应规则就可以了。注意,这里不一定都要选择允许(比如你刚刚好想阻止某个程序调用IE的弹出广告……)

2、没有用户参与的情况:这种情况也很好理解。还记得06年流氓软件大流行的时候吗,经常有人会问:为什么我开机什么都不干,桌面上就弹出十几个IE的页面,有时候上着网也会突然弹出来。这就是典型的没有用户的参与的情况。杀毒软件的自动更新也属于这种类型。这种情况是用户最应该防备的,也是最能体现纯手动HIPS特点的。还记得我说过的,纯手动HIPS可以做到对系统的完全控制吗?在有完备规则的情况下,纯手动HIPS完全可以做到,用户不让电脑做的事,电脑就没法做……扯的远了,回到主题上来。在没有用户参与的情况下,一旦有事件被HIPS拦截,那么用户就应该更加仔细的判断,这个事件的发起者(源对象)是谁,目标对象是什么,它最终想完成什么操作……一旦发现可疑,就应该立刻阻止。

那么究竟什么样的事件算是可疑呢?!

其实,病毒、木马,本身也是一种程序,跟普通的程序相比,只不过是要完成的目标不同而已。只要是程序,都需要首先进入用户的电脑(FD),途径可以是网络(网页挂马,与其它软件捆绑,利用虚假信息诱骗用户主动下载等),可移动设备(U盘,移动硬盘,光盘……)等。病毒程序进入本地后,仍然需要运行(AD),只有运行起来的病毒,才真正有破坏性。病毒运行后,一般都会释放几个病毒文件到硬盘(FD)的某个路径下(一般是系统路径)并且运行(AD)。病毒不仅要当时能够运行,也要做到以后每次开机都能够运行,这样才能长时间发挥作用。于是,病毒需要添加自启动项(RD)或者添加服务或者加载驱动(AD)。病毒当时也许逃过了杀毒软件的查杀,但是现在的杀软每天都会自动更新,病毒入库很快,为了长期逃避查杀,病毒会想方设法关闭已安装的杀软(AD),破坏杀软的文件(FD),并且阻止用户安装其它杀软(AD)。有些病毒为了能够保证自己重复运行,会感染系统里面的原有文件(FD)。有些病毒为了防止自身被有经验的用户手工查杀,还会破坏安全模式,注入dll文件进系统关键进程(AD)并且守护病毒的本体…………

说了这么多的病毒行为,大家可以看到在病毒整个从下载到运行并破坏系统的过程中,HIPS有多少机会可以阻止病毒的破坏。这也是手动HIPS安全性高的原因。因为一个程序(无论是正常还是非正常)的运行过程被HIPS完全分割开来,想要运行起来并产生破坏,就要经过多次的询问,这中间任何一个环节,用户选择了阻止,都能够有效的起到防护的作用。同时,假如单一的一个提示仍然无法得出准确结论的话(比如iexplorer.exe从temp文件夹启动了一个1.exe),那么后续的一系列高危险动作(释放病毒文件到系统目录,注入dll到系统关键进程,添加自启动项……)就应该能够让用户可以很清楚的意识到,这是个病毒!!

对于HIPS提示做出正确的判断,是需要用户掌握一定的系统知识的,经验越丰富,判断起来得心应手。基本上,熟悉了HIPS的工作原理,能够读懂提示框的信息,并且能够根据经验和系统知识来对提示信息进行分析和判断,就已经算是迈进了HIPS这座花园了。随着经验的积累,越来越多的情况能够被正确的判断,HIPS的提示也会越来越少,用户对HIPS和系统的了解也会越来越深入。

不过,这仅仅是步入了HIPS的花园,想要欣赏HIPS花园中的美妙风景,就要更进一步的深入HIPS的核心。那么纯手动HIPS为什么能够在高手的手中做到完全控制自己的电脑呢,就是因为HIPS最核心也是最重要的部分——规则! 回复 引用

TOP

 

 

3 novirus发表于 2010-12-3 18:24 | 只看该作者 三、触摸HIPS的核心——规则

HIPS之所以能够发挥作用,规则可以说是它的核心。用过Vista的人,应该知道UAC,每次运行一个程序,即使是以前运行过的,甚至是刚刚关闭的同一个程序,UAC也会弹出提示,让用户来选择。没有规则的HIPS就是这样一种效果,用户就会陷入无限的烦恼之中,每一次都对相同的事件进行相同的选择。很多第一次接触HIPS的新人也是因为这一点而感到无所适从,甚至很快就感到厌烦而放弃继续尝试HIPS。










这里的“创建此操作的永久性规则”和“以后按照此操作运行”就是创建一个对应程序的规则。这个规则将进入HIPS的规则列表。以后再有这个事件发生的时候,HIPS将会根据规则的设定,自动选择应答,而不会再次弹出对话框询问用户。

其实,HIPS在拦截事件后,弹出对话框提交给用户判断之前,都会先在规则列表里面进行匹配,如果有合适的匹配规则,则HIPS就会根据规则的设定来进行合适的操作,放行或者阻止。

纯手动HIPS初期繁琐的弹窗,正是因为,用户的所有程序,在HIPS列表里面都没有规则,那么每个程序触发的任何事件都会被提交给用户。因此学会创建规则,就会大大减少弹窗的负担,让用户从繁琐的判断中解脱出来。

如果来编写规则呢?让我们先来熟悉一下规则吧!

HIPS的规则可以分为两种类型

第一类,主动规则,或者叫源对象规则。这类规则一般是AD部分的规则。它所匹配的是源对象的行为。规则所面对的目标对象一般为任意。

这张图里面就是一个应用程序的对应规则。



这个规则规定了在这个应用程序发生任何行为的时候,HIPS该做出什么样反映。它所面对的目标对象是任意的(当然,这里可以在规则里面对特定的目标对象添加例外规则)。比如,根据规则,一旦Maxthon.exe有加载驱动的行为,无论这个驱动在哪个路径下,是无害的驱动还是恶意的病毒,HIPS都会阻止这个事件的发生,但是如果规则里面编写了一个例外,允许Mathon.exe加载HTTP.sys这个驱动,那么当所加载的驱动是HTTP.sys的时候,HIPS会自动允许这个加载事件。其它的sys依然会被HIPS无情的拒之于Maxthon的“门外”!可见有了这个规则,在我们运行Maxthon的过程中发生了任何对应的事件,HIPS都会按照规则进行匹配,自动做出判断,没有弹窗,HIPS就能忠实的保护着我们的系统。

第二类,被动规则,或者叫目标对象规则。这类规则一般是FD和RD部分的规则。这类规则,限制的是针对目标对象的事件。规则所面对的源对象一般是任意的。就是说任何一个进程在试图对规则指定的目标对象进行操作的时候,都会触发规则。




这就是一个被动规则。它是一条FD规则,目标对象是:C:\WINDOWS\system32\*.exe,C:\WINDOWS\system32\路径下的任意可执行文件。(*.exe是通配符的写法,请参考有关帖子)。规则的源对象是任意的。根据规则,任何进程试图在C:\WINDOWS\system32\下面创建一个exe文件,都会被规则所阻止。(这里,也可以编写例外规则来对可信任的进程进行排除。)

这两种规则类型可以是独立的,也可以组合在一起,形成一种更为精细规则。比如:阻止某个源对象对某个或某些特定目标对象的某些操作。只要用户愿意,当然可以对每个进程都精确到,它可以加载哪些dll文件,可以对哪些文件夹进行读写操作等等等等…………一旦规则编写到这种程度,对系统的完全控制也就可以实现了。不过,这里又有一个问题了,前面说过,HIPS在拦截到一个事件以后,提交给用户判断之前,要先对这个事件进行规则匹配,那么如果规则过多过细,必然会影响HIPS的工作效率。尽管现在的计算机运算速度很高,10条规则和100条规则也许几个时钟周期的差别,根本感觉不出来,但是,要是1000条呢,更多呢??何况,规则越多,编写起来难度越大,众多的规则也许还会存在彼此冲突的问题。

这就涉及到编写规则的方法了,很多帖子都讲过。基本的原则当然是尽量合并同类型的规则,规则越精简,执行效率就越高,冲突的可能性就越小,编写和维护的难度就越低。因此,在FD,RD部分,大部分的规则,都是用通配符来实现的。

其实,HIPS所涉及的规则基本上都可以称之为“例外”规则!所谓“例外”,就是在普适法则之外的一些特例!从HIPS的工作方式上就不难理解。HIPS的工作方式就是拦截一个事件并且提交给用户判断,其实,这里就涉及到了一个HIPS软件里面的最高规则——“拦截全部事件”,而当用户对一个事件做出了一个判断,并且选择了“记住我的回答”,那么这个事件就会被添加成一个例外。也就是我们说的规则。也就是说,事实上所有的规则都是“拦截全部事件并提交给用户判断”这条规则的例外规则。

由此可见,编写HIPS规则是离不开例外规则的。

编写例外规则的原则基本上也可以分为两类:

第一类:大部分放行,阻止少部分事件的黑名单规则

所谓“黑名单”,原意是指列有一些行为不端的,不守信用的,甚至是犯有罪行的人的名单。在HIPS的世界里,我们可以理解为一系列被阻止的事件。比如,我们可以创建一个规则,允许任意程序向%WinDir%\system32\文件夹下写入任何文件,但是禁止写入spoclsv.exe(熊猫烧香的一个典型文件名)。这样,写入其它文件都不会有问题,而当病毒试图释放spoclsv.exe到system32目录的时候,规则就会阻止这个事件,从而保护了系统的安全。

第二类:大部分阻止,放行少部分事件的白名单规则

“白名单”跟黑名单相对,意思就是规则允许的事件。白名单规则就是在全局阻止的情况下,放行用户需要的事件。比如,我们可以编写一个规则,阻止explorer.exe运行任何exe文件,但是允许explorer.exe运行QQ.exe,这样,用户在任何exe文件上双击,都会弹出无法运行的提示,而唯独QQ可以正常启动。

从上面的分析不难看出,黑名单规则相对比较宽松,而白名单规则则比较严格。因此白名单一般用来创建AD规则,允许运行的进程毕竟有限。而黑名单规则一般用来创建FD和RD规则,大部分分区和注册表区都允许读写,对于比较敏感的区域,则创建规则予以保护。这样的搭配,既可以保证易用性,又能最大限度的发挥HIPS的作用!

规则,是HIPS的核心和灵魂。规则的强弱,好坏,直接影响着HIPS的工作效率和效果。关于创建HIPS规则的帖子有很多,技巧也有很多,这里我就没办法一一的讲了。建议刚刚接触HIPS的新人,找一个别人写好的规则,学习一下。学习高手的规则是每一个新人的必经之路,通过学习规则,新人能够更快的掌握自己所用的HIPS。个人认为,关于AD部分,主要应该学习哪些事件是应该阻止的,哪些事件应该选择“询问用户”,哪些一般可以放行……关于FD和RD,主要应该学习如何利用通配符来写保护规则,保护一组目标对象;系统里的哪些部分是应该利用规则来做防护,具体的防护规则应该如何决策等等~~~

学习规则的目的是更好的编写适合自己的规则。所以,对于新人,我给出一个建议就是,你可以先拿高手的规则使用,看看效果,并且熟悉你所用的HIPS,一旦掌握了编写规则的技巧和方法,就应该借鉴着高手的规则,按照自己的习惯来重新编写,这样才能够进步和提高,单纯的拿来主义是不能用好HIPS的!



总结

纯手动HIPS在易用性方面存在着天然的缺陷。每一个操作都可能对应着N个提示框,很容易使初次使用的用户产生疲劳。目前,在智能行为分析,沙盘,影子系统的冲击下,纯手动HIPS越来越不为人所看好。但是,纯手动HIPS也在不停的发展。可信任名单,通用性更强的内置规则……开发者在不停的降低纯手动HIPS的上手难度,增加它的易用性。其实,通过上面的分析可以看出,使用纯手动HIPS可以让我们更好的理解程序的运行,对使用者深入了解系统了解电脑有很大的帮助(这一点要看使用者有没有兴趣了,没有兴趣,这就算不上是优点)

纯手动HIPS的特点注定了它曲高和寡,不过,真的深入进去,你就会了解到它的强大。它就像是一座矗立在山巅之上的精美园林,等待着有心人的探索和欣赏。你愿意付出一些辛苦去追寻它的美丽吗?那就快点行动吧…………

后记

一开始,写这个帖子,只是想为HIPS新人找到一种更加容易理解HIPS的方法。于是我根据自己的理解写了这样一个帖子,对HIPS进行了一些简单的分析,将看似纷繁复杂的部分进行了分类。回头看看,感觉什么也没说出来,只能算是跟大家分享一下我对HIPS的理解吧。希望大家不吝赐教!