Host Intrusion Prevent System 主机入侵防御系统。HIPS是一种能监控你电脑中文件的运行和文件运用了其他的文件以及文件对注册表的修改,并向你报告请求允许的的软件。如果你阻止了,那么它将无法运行或者更改。比如你双击了一个病毒程序,HIPS软件跳出来报告而你阻止了,那么病毒还是没有运行的。引用一句话:”病毒天天变种天天出新,使得杀软可能跟不上病毒的脚步,而HIPS能解决这些问题。”。 HIPS是以后系统安全发展的一种趋势,只要你有足够的专业水平,你可以只用HIPS而不需杀毒软件。但是HIPS并不能称为防火墙,最多只能叫做系统防火墙,它不能阻止网络上其他计算机对你计算机的攻击行为。
我们个人用的HIPS可以分为3D: AD(Application Defend)--应用程序防御体系、RD(Registry Defend)注册表防御体系、FD(File Defend)文件防御体系。它通过可定制的规则对本地的运行程序、注册表的读写操作、以及文件读写操作进行判断并允许或禁止。
目前在有些杀软或防火墙中,也含HIPS功能。
常用的HIPS软件有:SSM(System Safety Monitor),PG(ProcessGuard和Port Explorer),GSS(Ghost Security),国产的有款EQSecure for System(推荐)。
维基百科中对IPS的定义 对IPS的解释比较详细,适合刚接触HIPS的新手了解。
入侵预防系统(IPS: Intrusion Prevension System)是电脑网路安全设施,是对防病毒软体(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。 入侵预防系统(Intrusion-prevention system)是一部能够监视网路或网路设备的网路资料传输行为的计算机网路安设备,能够即时的中断、调整或隔离一些不正常或是具有伤害信得网路资料传输行为。
网路安全
随着电脑的广泛应用和网路的不断普及,来自网路内部和外部的危险和犯罪也日益增多。20年前,电脑病毒(电脑病毒)主要通过软盘传播。后来,用户打开带有病毒的电子信函附件,就可以触发附件所带的病毒。以前,病毒的扩散比较慢,防毒软体的开发商有足够的时间从容研究病毒,开发防病毒、杀病毒软体。而今天,不仅病毒数量剧增,质量提高,而且通过网路快速传播,在短短的几小时内就能传遍全世界。有的病毒还会在传播过程中改变形态,使防毒软体失效。
目前流行的攻击程序和有害代码如 DoS (Denial of Service),DDoS (Distributed DoS),暴力猜解(Brut-Force-Attack),埠扫描(Portscan),嗅探,病毒,蠕虫,垃圾邮件,木马等等。此外还有利用软体的漏洞和缺陷钻空子、干坏事,让人防不胜防。
网路入侵方式越来越多,有的充分利用防火墙放行许可,有的则使防毒软体失效。比如,在病毒刚进入网路的时候,还没有一个厂家迅速开发出相应的辨认和扑灭程序,于是这种全新的病毒就很快大肆扩散、肆虐于网路、危害单机或网路资源,这就是所谓Zero Day Attack。
防火墙可以根据英特网地址(IP-Addresses)或服务埠(Ports)过滤数据包。但是,它对于利用合法网址和埠而从事的破坏活动则无能为力。因为,防火墙极少深入数据包检查内容。
每种攻击代码都具有只属于它自己的特征 (signature), 病毒之间通过各自不同的特征互相区别,同时也与正常的应用程序代码相区别。除病毒软体就是通过储存所有已知的病毒特征来辨认病毒的。
在ISO/OSI网路层次模型(见OSI模型) 中,防火墙主要在第二到第四层起作用,它的作用在第四到第七层一般很微弱。而除病毒软体主要在第五到第七层起作用。为了弥补防火墙和除病毒软体二者在第四到第五层之间留下的空档,几年前,工业界已经有入侵侦查系统(IDS: Intrusion Detection System)投入使用。入侵侦查系统在发现异常情况后及时向网路安全管理人员或防火墙系统发出警报。可惜这时灾害往往已经形成。虽然,亡羊补牢,尤未为晚,但是,防卫机制最好应该是在危害形成之前先期起作用。随后应运而生的入侵反应系统(IRS: Intrusion Response Systems) 作为对入侵侦查系统的补充能够在发现入侵时,迅速作出反应,并自动采取阻止措施。而入侵预防系统则作为二者的进一步发展,汲取了二者的长处。
入侵预防系统也像入侵侦查系统一样,专门深入网路数据内部,查找它所认识的攻击代码特征,过滤有害数据流,丢弃有害数据包,并进行记载,以便事后分析。除此之外,更重要的是,大多数入侵预防系统同时结合考虑应用程序或网路传输重的异常情况,来辅助识别入侵和攻击。比如,用户或用户程序违反安全条例、数据包在不应该出现的时段出现、作业系统或应用程序弱点的空子正在被利用等等现象。入侵预防系统虽然也考虑已知病毒特征,但是它并不仅仅依赖于已知病毒特征。
应用入侵预防系统的目的在于及时识别攻击程序或有害代码及其克隆和变种,采取预防措施,先期阻止入侵,防患于未然。或者至少使其危害性充分降低。入侵预防系统一般作为防火墙 和防病毒软体的补充来投入使用。在必要时,它还可以为追究攻击者的刑事责任而提供法律上有效的证据 (forensic)。
入侵预防技术
* 异常侦查。正如入侵侦查系统, 入侵预防系统知道正常数据以及数据之间关系的通常的样子,可以对照识别异常。
* 在遇到动态代码(ActiveX, JavaApplet,各种指令语言script languages等等)时,先把它们放在沙盘内,观察其行为动向,如果发现有可疑情况,则停止传输,禁止执行。
* 有些入侵预防系统结合协议异常、传输异常和特征侦查,对通过网关或防火墙进入网路内部的有害代码实行有效阻止。
* 核心基础上的防护机制。用户程序通过系统指令享用资源 (如存储区、输入输出设备、中央处理器等)。入侵预防系统可以截获有害的系统请求。
* 对Library、Registry、重要文件和重要的文件夹进行防守和保护。
入侵预防系统类型
投入使用的入侵预防系统按其用途进一步可以划分为单机入侵预防系统
(HIPS: Hostbased Intrusion Prevension System)和网路入侵预防系统
(NIPS: Network Intrusion Prevension System)两种类型。
网路入侵预防系统作为网路之间或网路组成部分之间的独立的硬体设备,切断交通,对过往包裹进行深层检查,然后确定是否放行。网路入侵预防系统藉助病毒特征和协议异常,阻止有害代码传播。有一些网路入侵预防系统还能够跟踪和标记对可疑代码的回答,然后,看谁使用这些回答信息而请求连接,这样就能更好地确认发生了入侵事件。
根据有害代码通常潜伏于正常程序代码中间、伺机运行的特点,单机入侵预防系统监视正常程序,比如Internet Explorer,Outlook,等等,在它们(确切地说,其实是它们所夹带的有害代码)向作业系统发出请求指令,改写系统文件,建立对外连接时,进行有效阻止,从而保护网路中重要的单个机器设备,如伺服器、路由器、防火墙等等。这时,它不需要求助于已知病毒特征和事先设定的安全规则。总地来说,单机入侵预防系统能使大部分钻空子行为无法得逞。我们知道,入侵是指有害代码首先到达目的地,然后干坏事。然而,即使它侥幸突破防火墙等各种防线,得以到达目的地,但是由于有了入侵预防系统,有害代码最终还是无法起到它要起的作用,不能达到它要达到的目的。
主机入侵防御系统的应用网络的互连是为了实现信息的方便共享和传输。但是几乎自从有了网络的存在,入侵行为也就同时出现了。Internet的出现和高速发展同时带动了网络入侵活动的发展。在种种网络入侵行为中,针对关键服务器的攻击可以说是最具威胁性、可能造成损失最大的行为。越来越重要的信息无形资产存储在这些服务器上,一旦服务器受到了安全威胁势必殃及这些信息和数据。下面将从分析一些最普遍的攻击方式入手,逐一介绍破解这种攻击的方法,此处用到的核心技术是主机入侵防御系统。
一、堆栈溢出防范 这种类型的攻击赫赫有名,频频出现在CERT、SANS、CSI等国际网络安全组织的最具威胁的攻击类型名单内。据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。这是一种渗透到系统中的攻击技术,其基本理是当来自某个程序的输入数据超出程序缓冲区能够处理的长度时会产生溢出,结果不受程序员的控制。当入侵者巧妙地安排代码后,被攻击的服务器还可能执行入侵者指定的程序代码,从而导致攻击者甚至可以获得系统中超级用户的权限。比如80年代的Morris"蠕虫"事件导致了当时Internet上1/3的计算机瘫痪,这种入侵方式就是采用了UNIX的Finger服务的一个缓存区溢出的漏洞;2001年的红色代码病毒在短短几个小时内传遍了全球,造成了数十亿美元的损失,也是采用了Windows服务器平台上的IIS服务的一个缓存区溢出漏洞。2003年的SQL Slammer蠕虫、2004年的震荡波等同样也是利用了这种漏洞。为什么这种攻击这么多呢?主要原因在于(单不仅限于)目前广泛用于系统编程的语言--C语言本身的某些函数就存在着一些漏洞,造成了这种漏洞的广泛存在和难以彻底清查。
目前对这种攻击方式的防范方式主要有以下几种:第一,对存在溢出漏洞的程序打补丁。这是最常见的防范方式,需要依靠程序的厂商提供相应的补丁程序才能生效。但是随着网络攻击的频度不断加快,一个漏洞从被发现到运用在大规模的攻击中的时间大大缩短。往往程序厂商还没有发布相应的补丁程序,攻击就已经发生了。所以这种方式是非常被动的,无法防范新出现的漏洞入侵。第二,通过操作系统的设置使得缓冲区不可执行,从而阻止攻击者植入攻击代码。这种方式的主要问题在于首先可能和现有的应用程序存在冲突,其次对溢出攻击的防范不全面。因为有些攻击不需要进行攻击代码的植入过程。第三,采用专用的防范溢出的编译器对程序进行编译检查。这是一个比较完整的保护措施,但是却需要付出非常高昂的时间和费用的代价。
所有上述的办法都无法在现实的业务系统中顺利使用。主机入侵防御系统则提供了另一种切实可行、易于实施的防止"堆栈溢出攻击"的方法。主机入侵防御系统中具有一种STOP (STack Overflow Protection,堆栈溢出保护)技术,可以阻止这种入侵,防止用户或程序获得超级用户权限。
所有的缓冲区漏洞挖掘程序都基于以下一个假设,即:程序在每次运行时有问题的参数压入栈内的数据地址空间偏移量是一定的(或者相差较小)。如果在程序运行时由操作系统定义并且分配一个随机化的偏移给该应用程序,那么则专为此有缺陷的程序设计的溢出程序在溢出时就会返回一个错误的ret地址,而不能跳转到恶意构造的shellcode下。虽然大部分的缓冲区溢出程序也能提供可调整的offset变量,但由于每次有缺陷的程序运行时都将拥有一个随机化的偏移,因此通过上次不成功的溢出猜测所得到的地址空间和内容并不能来指导修正下次调整的offset。主机入侵防御系统提供了STOP技术在不改变操作系统内核下同级工作,能帮助定义并且分配一个随机化的偏移量,在不修改的系统内核的情况动态实现上述功能。
通过这种防范措施,用户不仅仅能够对所有已知和未知推栈溢出类型的攻击进行高强度防范,而且还不需要修改任何现有的操作系统和应用程序,保证原有系统的持续运行,保护了投资。
二、信息篡改保护 信息篡改破坏了信息的完整性,是入侵者攻击目的的一种。信息篡改主要有两种形式:信息传输中的篡改和信息存储时的篡改。信息传输中的篡改主要发生在在线的交易过程中对交易信息的篡改,将导致交易双方的严重经济损失;网络设备控制信息的篡改,可能导致网络工作异常、甚至导致信息传输途径的更改以至于失密。这种攻击行为的防范主要依靠信息交换双方对信息的加密和数字签名以及强验证方式来实现。信息存储时的篡改是最为常见的攻击方式,往往表现在对关键业务服务器上数据的更改,导致业务无法正常运行;对一些关键文件的篡改,比如针对网站主页的篡改,会导致被攻击者形象的损失和潜在的经济损失。比如一家在线交易单位如果网页被篡改,其后果可能会导致大量客户的流失,即使入侵行为没有危及到关键的交易数据。另外一种最具威胁的攻击手段是对可执行程序的篡改。入侵者通过对系统原有的可执行文件的篡改能够达到很多破坏目的。比如通过非法修改证券交易系统或者银行业务系统的程序以获取暴利;通过篡改某些关键应用程序导致系统无法正常运行。但是最常见的篡改目的是:通过篡改一些管理员或者用户经常使用的应用程序,使其在运行的时候除了执行正常的操作之外,同时运行一个入侵者放置的木马程序。这样,对管理员或者用户来说好像系统运行一切正常,但是却在不知不觉中运行了木马程序,导致后门洞开。这种入侵的后果是非常严重的,将可能导致严重的信息泄密。
主机入侵防御系统的解决方法就是从根本入手,大大细化了对资源的控制粒度。不管是UNIX还是Windows服务器操作系统,对文件和目录的安全许可权限都是非常有限的。但是通过主机入侵防御系统就能够使文件和目录的许可控制大大增强。如图所示,许可类型除了读、写、执行外,还额外添加了删除、重命名、模式更改、属主更改、时间更新、ACL更改、创建、更改目录等8项许可,为管理员提供了充分的授权空间,能够按照最贴切的方式对各个账户进行资源的授权,防止授权过大造成的内部安全隐患。同时,同样一个账户采用不同的应用程序访问资源也有可能获得不同级别的访问许可,这给某些行业的特殊需求提供了极大的便利。
有了文件许可的细化控制能够极大地减少由于授权原因造成的信息篡改事件。但是为了彻底杜绝对关键信息的篡改,主机入侵防御系统还提供了数字签名的功能,能够对普通文件、数据文件以及可执行文件特别是入侵者攻击的首要目标--UNIX中的suid和sgid类型的程序进行完整性校验。如果普通文件和数据文件发生了意外更改,主机入侵防御系统将会报警;如果可执行文件发生了意外更改,主机入侵防御系统将会自动拒绝这个可执行文件的执行,并且同时报警。这样,即使非法入侵者对目标文件进行了篡改,其目的也很难得逞。当然,如果实现利用主机入侵防御系统的文件保护功能对这些关键的文件进行了保护,入侵者是无法达到非法篡改的目的的。
木马防范
特洛伊木马(以下简称木马),英文叫做"Trojan horse",其名称取自古希腊的特洛伊木马攻城故事,相信大家都已经耳熟能详了。正是这种古老的攻城方式却成为了现在令人色变的网络入侵方式。
首先,主机入侵防御系统具有的程序访问控制列表(PACL)功能使得同样一个用户访问同样的资源的时候,如果采用不同的应用程序访问,将会得到不同的权限。也就是说,对于一些重要的资源,我们可以采用主机入侵防御系统这种功能限定不同应用程序的访问权限,只允许已知的合法的应用程序访问这些资源。这样,即使入侵者在被攻击的服务器上运行了木马程序,但是木马程序需要窃取关键信息的时候必须要经过主机入侵防御系统的安全验证。由于PACL中没有定义木马程序的访问权限,按照默认权限是不能够访问的,由此就起到了对木马信息窃取的防范。
另外,计算机一旦连结上了网络就融入了一个整体,需要对整体的安全性负责任。通过上文的分析我们已经发现,木马不仅仅会窃取本地信息,更严重的是入侵者能够通过本地计算机对网络中的其它计算机发起入侵,如DDoS攻击行为。美国政府法律规定由于某台计算机的安全问题直接导致的其它联网计算机的入侵事件,这台具有安全问题的计算机的所有人是需要负责任的。目前其它国家也正在陆续出台相关的规定。所以,在网络上仅仅采取明哲保身的自保策略是不够的。为了避免被植入木马的服务器成为入侵者的跳板和傀儡,主机入侵防御系统还具备了网络访问控制的作用。网络访问控制规则不仅仅能够定义哪些人能够在什么时间从哪里访问本机的哪些服务,而且更为重要的是,它还能够定义从本机能够发出什么类型的网络连接。这样,凡是不符合规则的连结将不能够从本机发出。举例来说,在红色代码泛滥的时候,许多运行IIS服务的服务器感染病毒后会在网络中进行大范围的扫描,发现TCP 80端口开放的潜在受攻击者。但是Web服务器的这种行为明显地是非常异常的行为。所以通过在主机入侵防御系统中定义外出连结的类型,能够从根本上避免由木马发起的外部攻击行为,特别是避免成为DDoS攻击的傀儡。
四、进程中止保护 在很多关键业务环境中,肯定都会有几种比较重要的服务在运行。比如一个电子商务交易Web站点,服务器上的HTTP服务或者守护进程就是非常关键的。而在后台的支撑环境中运行的数据库服务器上,数据库的守护进程就是这台服务器的灵魂。同样地,对于一个刚刚兴起的收费邮箱服务提供商来说,如果后台邮件服务器上的SMTP服务忽然停顿,势必会更加难以招徕用户。所以,信息化的社会的基石就是在关键服务器上运行的种种服务。一旦服务中止,上层的应用就会没有了根基。而在操作系统中,这些关键服务是以后台进程的方式存在。
目前,受到攻击最多的服务就是HTTP、SMTP以及数据库进程,当然也有其它的关键服务进程。入侵者对于这些进程的中止方式一般有两种:一种是利用这些服务本身存在的某些漏洞进行入侵,而另外一种则是首先获得操作系统中能够中止进程的权限,一般是超级用户的权限,然后再中止进程。
进程的安全性完全依赖于操作系统提供的安全级别。一般来说,进行进程中止的防止主要是采用Watchdog的技术。所谓Watchdog就是看门狗的意思,其主要功能是对进程进行看护,防止进程的意外中止。如果由于某些意外因素,进程非正常中断,Watchdog能够在很短时间内快速重新启动被看护的进程。
主机入侵防御系统就具备了这种Watchdog的功能。事实上,主机入侵防御系统本身提供的服务就是基于三个进程的。主机入侵防御系统要对操作系统进行安全保护,需要首先进行自身的保护,防止自己进程的意外中止。在实际运行当中,这三个进程出了各自完成自己的职能外,还存在一种互相看守的关系。就是进程一是进程二的Watchdog,而进程二又是进程三的Watchdog,进程三则是进程一的Watchdog。这样,如果其中一个进程意外中止了,总有一个进程会将其重新启动。即使在非常情况之下两个进程同时意外中断,剩下的一个进程依然能够将另一个进程启动,然后启动最后一个进程。所以,主机入侵防御系统的这种安全机制是非常严密的,不仅仅用来保护自己,而且还能够很好地应用于对关键服务进程的安全防护。
五、超级权限分割 超级用户的存在为管理者带来了极大的方便,登录一次,就能够完成所有的管理工作,执行所有的命令,进行所有的系统维护。但是,同时正是因为有了超级用户无所不能的超级权限,也造成了很多的麻烦。
首先抛开入侵者的攻击不谈,仅仅管理员在执行正常的操作时,超级权限就带来了不少的问题。一旦使用超级用户登录,管理员在作各种操作的时候必须慎之又慎。系统中的很多动作是不可逆的,一旦管理员因为人为失误做出不当的操作,往往会造成不可挽回的损失。特别在关键的业务服务器系统上经常会出现这种类似的损失惨重的失误,我们经常能够在媒体上看到相关的一些报道。据统计,管理员的人为失误是对整个网络系统最大的安全威胁之一。实际上有一些操作是远远不需要超级用户的权限就能够完成的,但是绝大多数的人还是会选择采用超级用户的账户进行登录,究其原因,恐怕最根本的就是为了图方便,从而酿成大错。
其次,在操作系统中设置超级用户有其不合理的一面。一般来说,管理员的职责是维护系统的正常运行,建立和维护各种账户,对资源的访问权限进行分配等等,他们一般不应该具有读取甚至修改、删除某些存放在服务器上的机密信息的权利。但是在现实中,具有超级用户的权限者就能够任意地对这些数据进行处理,即使经过加密的数据他们也能够轻而易举地破坏甚至删除。这是不合乎正常的安全策略的,需要通过某种措施进行控制。
最后,在入侵者的世界里,恐怕再没有获取一个新的重要系统的超级用户的身份更加美好的事情了。几乎所有的攻击手段的终极目标就是要获得被攻击系统的完全控制权,而这一切基本上同于获得系统的超级用户的账户名称和密码。口令破解、堆栈溢出、网络窃听…等等,目的无不于此。一旦获得超级用户的权限,入侵者不仅仅能够完成上面所说的一系列行为,而且还能够任意地切换到其他人的身份,甚至不需要任何密码验证;能够随意地抹去对自己动作的一切审计记录,让审计人员无据可查。当然,超级用户的存在同样也使网络安全人员陷入了一种尴尬的境地。不管采用的防火墙是如何的牢不可破、IDS是如何地明察秋毫、加密算法是如何的先进,只要入侵者获得了超级用户的权限,这一切都形同虚设。
为了对于上述的种种情况,主机入侵防御系统在操作系统的层次对超级用户的特权进行了再分配,并且将所有的用户都同等对待,使得系统中不再有超级用户的概念存在。经过分权后,每一个管理员自能够在自己的职责范围内工作,而不具备其它的特权。比如安全管理员能够对资源进行许可的分配,但是不能够随意删除日志;安全审计员的职责就是分析日志,发现所有用户的可疑行为,但是却不具备其它所有的系统权利。这样就好像给一个保险箱加了三把锁一样,仅仅拿到一把钥匙是没有办法获得保险箱里面的东西的。为了用户能够按照自己的意愿进行分权,主机入侵防御系统还提供了权限分配(task delegation)的接口,以供更加细化的配置,让普通的用户具有某些超级用户才能够执行的权利。经过权力分配和细化后,可以大幅度避免管理员的人为误操作,并且防止入侵者一旦获得一个账户的所有权后就能够横行无阻的状况发生。
为了更加细致准确地跟踪系统上的活动,主机入侵防御系统提供了根据原始登录ID进行审计的功能。也就是说不论登录者后来通过su切换到哪一个登录ID号,在日志中始终以其原始的登录ID进行活动的跟踪和记录,而且入侵者即使获得了root的口令也无法对日志进行破坏。另外,主机入侵防御系统将ID的使用权限也作为一种资源进行管理,也就是说如果一个账号需要su到另外一个账号,必须经过主机入侵防御系统的授权,否则就不能成功。哪怕是root用户想要su到其它账户也是如此。这样就大大降低了通过切换ID实现的假冒攻击行为。
主机入侵防御系统基于稳固的安全体系和全新的安全设计理念,具有稳固的运行特性和强大的安全性,为各种UNIX平台以及Windows服务器平台提供了极大的安全保障,并且同大型机的安全机制兼容。该系统是对关键服务器资源进行重点保护的重要安全工具,正在越来越受到用户的重视。
当然,主机入侵防御系统提供的保护措施主要是集中在对服务器资源和行为的保护,不能替代所有的安全产品。防火墙、防病毒、网络入侵检测系统、VPN等都是对主机入侵防御系统的有益补充。只有将关键服务器的保护和整体的网络架构保护合理地结合在一起,才能够为我们的网络空间提供最为完善的保障。针对当前的病毒、蠕虫、入侵等种种威胁构成的混合型威胁,主机入侵防御系统无疑会给我们的关键资源提供更加主动的防御方式。
其实菜鸟也能用HIPS之FD攻略本文以EQ为例,对其它HIPS用户仅做参考,本人水平有限,如有错误之处请指正.
FD意思为文件防御(监控).要为系统设置一套安全的FD规则其实很简单.只需要知道两件事,第一,知道如何运用通配符*来编写规则.第二,要对自己设置的规则有个全局的思路.
先说第一条,几乎所有HIPS都支持通配符以及一些系统变量,以方便归纳规则.那是不是必须把这些什么?什么%SystemDrive%都搞清楚才行呢?其实没有必要,只要会用*就行了,有了这个小星星我们就可以把规则玩的风生水起,随心所欲了.这里以EQ来举几个例子看看怎么用这个*.
1. C:\*.exe 这里的*就代指任意文件名.*.exe就是指任意一个exe文件.
2. C:\* 这里的*代指任意名称和格式的文件.(还有根目录,如果在其他设置里选择"包含该目录下所有文件则代 表C盘下任意目录下的任意名称和格式的文件").
3. C:\*\1.exe 这里的*代指C盘下的任意文件目录. C:\*\1.exe就是指C盘任意目录下的1.exe文件.
掌握了通配符*,就可以根据自己需要随意编写规则了,举个例子,我要编写个规则禁止任意程序在WINDOWS文件夹下创建exe文件.可以这样写:
所有程序规则
C:\WINDOWS\*.exe 创建文件 阻止
这样就可以了,所有程序都无法在WINDOWS文件夹下创建exe文件了,很简单吧.
第二,知道了如何用*去编写规则之后我们就要为自己定一个全局的防御战略,也就是防御的思路,FD规则很灵活,可宽可严,看各人的需求和喜好而定. 菜鸟也许要问我哪知道怎么搞啊,别急,其实FD的规则非常简单,只要理顺了思路设置一个既简单又安全的FD规则易如反掌。
FD的一种思路就是阻止一切,允许例外.见下图:
|
阻止所有程序在所有区域操作文件 |
|
允许在特定区域操作任何文件 |
|
允许特定程序在特定区域操作特定文件 |
|
允许特定程序操作任何文件 |
好象开一个很重要的会议,所有闲杂人等都不能进入,但是有特别通行证的可以放行。了解了这个下面就好办了,我们先给各个分区加个金钟罩,在低优先规则中设置?:\*为禁止创建,这样所有程序将无法在磁盘上创建文件,这样虽然杜绝了病毒的入侵,但是也阻止了正常程序创建文件,可能会使系统及软件出现各种问题,所以我们需要给一些程序颁发特别通行证。同时为了我们使用上的方便有些地方我们还是要开放的。
1.允许在特定区域操作任何文件
临时文件夹(?:\*\Temp\*,?:\*\Temporary Internet Files\*)
这里其实就是系统的卫生间,很多软件以及浏览器都会在这里创建大量垃圾文件,浏览器还会在这里创建大量缓存文件以便下次打开同一网页时能直接读取缓存从而加快网页打开速度。如果阻止可能会造成软件无法使用或者网页打开速度缓慢。这两个路径下可以设置为允许一切操作。但是这里也是病毒木马最喜欢的藏身之处,所以我们可以用AD来设置这两个路径下所有文件禁止运行。这样即使病毒进来了也不能运行。如果觉得不太安全的话,还可以阻止一些可执行文件的创建,可以拦截大量病毒,因为现在很多病毒还是EXE格式的,虽然不能拦截所有病毒,但是总要安全一些。下图是我的浏览器THE WORLD的规则,有点BT了,可能很多高手要笑我有洁僻了,帖出来只是给大家参考一下,不用真的设置这么严的。因为我设置了浏览器关闭时清理临时文件夹,所以我允许了浏览器删除临时文件夹下的四种可执行文件,而在全局下是禁止修改删除的,这个其实有点过头了,不过我一向BT,也无所谓了。
回收站(?:\RECYCLE?\*)
毫无疑问这里设置为允许创建和删除,否则你无法将要删除的文件放入回收站也无法删除,同样作为弥补手段我们可以禁止回收站内任何文件运行。
cookies(?:\Documents and Settings\*\Cookies\*.txt)
禁止cookies我们将无法登录各种论坛,所以要允许在cookies路径下创建TXT文件。
收藏夹链接(?:\Documents and Settings\*\Favorites\*.url)
很多人喜欢把好的网站添加到收藏夹中,所以可以允许在收藏夹路径下创建url文件。
2.允许特定程序在特定区域操作特定文件
几乎所有应用软件都要在系统中创建一些文件,我们可以允许你所信任的软件创建任何文件,这个一般是没有问题的,但是那样给程序的权限太大了,我们还是要严一点。下
面以PPSTREAM为例:
首先我们允许其在安装目录下允许创建修改删除文件,而由于前面我们阻止了全盘创建,所以PPS只能在其安装目录下操作文件,使用时可能会有其他一些地方也需要操作文件,可以根据日志将阻止的允许即可,这样一个程序的规则就完成了,软件可以正常使用了。
3.允许特定程序操作任何文件
这个一般用在你非常信任的程序上,比如杀软,因为杀软要全盘监控,我们要允许其发现病毒时能修复和删除病毒,所以我们要给它最大的权限,否则就不要装杀软。这里我以我安装的小红伞为例:
我这里允许了红伞所有EXE程序的文件操作,其实只要允许监控和扫描进程就可以了,但是我比较懒,所以就全部允许了。
我这里讲的只是最常规的一种FD思路,其实FD非常灵活,大家熟悉了之后可以自己编写最适合自己的规则。
其实菜鸟也能用HIPS之AD攻略HIPS真的只是高手手中的利器,菜鸟永远可望不可及吗?
有人说HIPS老是弹框询问我允许还是阻止,我哪知道啊,要知道还要它干什么用啊,其实只要大概了解以下内容,弹再多框也不怕!没有规则也无所谓!身为菜鸟也能用好HIPS!(此处以我用的EQ为例,其他HIPS道理是一样的,可能表述上有差异。)
1.运行应用程序.
这个很简单吧,没什么好说的,你双击一个程序,这个程序就运行了谁都知道,但是如果在上网时你没有运行突然弹出询问框报警程序运行你就要当心了,一定要仔细看程序路径名称,一般会自动运行的除了病毒就是一些软件的升级程序,但是如果该程序是在TEMP路径下的话一定记住要阻止!!!99.9%是病毒!
2.加载驱动程序
一般只有比较BT的软件会要求加载驱动程序,比如杀软以及一些安全工具,所以这个也很简单,只有你完全信任的程序才可以允许,否则请阻止。特别是路径或程序名比较陌生的。
3. 访问物理内存
我们知道,在NT/2K/XP中,操作系统利用虚拟内存管理技术来维护地址空间映像,每个进程分配一个4GB的虚拟地址空间。运行在用户态的应用程序,不能直接访问物理内存地址;而运行在核心态的驱动程序,能将虚拟地址空间映射为物理地址空间,从而访问物理内存地址,从而更快的收集数据。所以要求访问物理内存的程序一般都是比较BT的,除了你确信的其他一般可以阻止,即使是正常软件阻止了也不会影响使用。
4. 底层磁盘操作
所谓底层磁盘操作本身并没有什么危害,某种程度上还提高了操作效率。但对于FD而言如果仅仅是在Windows层面上进行控制,那么有些有害程序就是通过直接对磁盘进行操作的方法来绕过HIPS的控制。就象你在家门口放两个门卫以为可以高枕无忧,哪知人家挖了个地道直接进了你家,门卫就成了摆设。因此HIPS应该要包括对底层磁盘操作的防护。除非HIPS能做到最底层。一般来说阻止底层操作不会影响软件的使用。
5. 创建远程线程
远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。就好像把一个寄生体注入到了其他生物中一样。这个寄生体将会与他的宿主“同生共死”并且拥有宿主的所有权限。由于我们的程序代码寄生在其他进程内部,所以一般人使用任务管理器是看不见这个“寄生”进程的。
创建远程线程是木马隐藏自己的一个非常高明的手段,就好象一个特务在通关时一般都会混进一些高官的车中,胁持高官谎程自己是高官的部下,从而获得了免于审查并通关的权利。所以对于不熟悉的程序一定要阻止其创建远程进程。
6. 修改其他进程内存
一般正常软件不会有此动作,所以阻止吧。
7. 安装全局钩子
英文叫hook,指利用api来提前拦截并处理windows消息的一种技术,能够使该程序对其他系统内有键盘响应事件的程序自己挂钩。说白了就是在你家安装窃听器,你能容忍吗?阻止!不过QQ是要允许的哦,要不然就登录不上去了。
8. 安装服务或驱动
同加载驱动程序。
9. 键盘记录、修改系统时间、直接操作系统内核
这个不用问了,阻止。
以上是偶用HIPS几个月的一点小小心得,希望能给对HIPS有畏惧感的新手起到一点帮助,本人才疏学浅,如有错误遗漏还请各位达人批评指教.
HIPS注册表防护规则参考设置
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\
HKLM\SYSTEM\ControlSet001\Control\Session Manager\BootExecute
HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\User\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup\
HKU\.Default\Software\Microsoft\Windows\CurrentVersion\Run\
HKU\.Default\Software\Microsoft\Windows\CurrentVersion\RunOnce\
HKLM\System\CurrentControlSet\Services\VxD\
HKCU\Control Panel\Desktop
HKLM\System\CurrentControlSet\Services\
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\run
HKLM\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\run\
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\run\
HKLM\SOFTWARE\Classes\Protocols\Filter
HKLM\SOFTWARE\Classes\Protocols\Handler
HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
HKLM\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKLM\Software\Classes\Folder\Shellex\ColumnHandlers
HKCU\Software\Microsoft\Internet Explorer\UrlSearchHooks
HKLM\Software\Microsoft\Internet Explorer\Toolbar
HKLM\Software\Microsoft\Internet Explorer\Extensions
HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UIHost
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors
HKLM\SYSTEM\CurrentControlSet\Control\MPRServices
HKCU\ftp\shell\open\command
HKCR\ftp\shell\open\command
HKCU\Software\Microsoft\ole
HKCU\Software\Microsoft\Command Processor
HKLM\SOFTWARE\Classes\mailto\shell\open\command
HKCR\PROTOCOLS
HKCU\Control Panel\Desktop
HKLM\SOFTWARE\Policies\Microsoft\Windows\System\Scripts
HKLM\SOFTWARE\Microsoft\Code Store Database\Distribution Units
HKLM\SYSTEM\CurrentControlSet\Services\WinSock2
HKLM\SYSTEM\CurrentControlSet\Services\WinSock
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\Shell folders\Startup
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\runServices
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\System\CurrentControlSet\Control\Session Manager\KnownDlls
HKLM\SOFTWARE\Classes\Protocols\Handler
HKLM\System\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\StartupPrograms
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
HKLM\Software\Microsoft\Command Processor
HKLM\SOFTWARE\Microsoft\Ras
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Network
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform
HKCU\Software\Microsoft\Security Center
HKLM\Software\Microsoft\Security Center
HKLM\SOFTWARE\Microsoft\Netcache
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt
HKCU\Software\Microsoft\Internet explorer\Main\\*page
HKCU\Software\Microsoft\Internet explorer\Main\\Enable Browser Extensions
HKCU\Software\Microsoft\Internet explorer\Main\Featurecontrol
HKCU\Software\Microsoft\Internet explorer\Menuext
HKCU\Software\Microsoft\Internet explorer\Styles
HKLM\Software\Clients\Startmenuinternet
HKLM\Software\Microsoft\Code store database\Distribution units
HKCU\Software\Microsoft\Internet explorer\Abouturls
HKLM\Software\Microsoft\Internet explorer\Activex compatibility
HKCU\Software\Microsoft\Internet Explorer\Explorer Bars
HKLM\Software\Microsoft\Internet explorer\Main\\*page
HKLM\Software\Microsoft\Internet explorer\Styles
HKLM\Software\Microsoft\Internet explorer\Menuext
HKLM\Software\Microsoft\Internet explorer\Plugins
HKLM\Software\Microsoft\Windows\Currentversion\Explorer\Browser helpr objects
HKLM\Software\Microsoft\Windows\Currentversion\Internet settings\*zones
HKLM\Software\Microsoft\Windows\Currentversion\Internet settings\Safesites
HKLM\Software\Microsoft\Windows\Currentversion\Internet settings\Url
HKLM\Software\Microsoft\Windows\Currentversion\Internet settings\Zonemap\Protocoldefaults
HKLM\Software\Microsoft\Windows\Currentversion\Internet settings\Zonemap\Domains
HKLM\Software\Microsoft\Windows\Currentversion\Internet settings\Zonemap\Ranges
本帖没什么技术性,就是把一些注册表高危的地方列了出来,方便大家设置而已.
RD注册表防护规则编制转EQ论坛 http://www.eqspywatch.com/bbs/read.php?tid=523&fpage=3
比较适合新手,可算做设置入门
注册表保护与应用程序保护有所不同,EQSecure默认情况下不拦截对注册表的各种操作。所以,对注册表保护规则的添加不再能利用询问窗口自动进行,而是需要我们手动进行添加。注册表保护规则添加的主要问题也不再是如何添加的问题,而是要添加什么内容的问题。
一、在“所有程序规则”类别中添加规则。
一般的规则都要添加在“所有程序规则”类别中,有特殊要求的才在其他两个类别中添加。
关于如何添加的问题在前两篇中我们已经讲过,这里就不再赘述,主要讲一下要添加什么样的内容?应该设置怎样的参数?
由于需要监控的内容很多,我们不能一一介绍,这里只讲几个典型,以帮助大家领会EQSecure 规则编制的一些技巧,详细内容大家可以参考我整理的规则及相关知识深入研究一下。
1、注册表的自启动项。
大多数木马病毒都是利用注册表的自启动项来激活自己的,因此注册表的自启动项是我们保护的第一重点。自启动项中最典型的就是RUN项,它通常存在于以下两个地方:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
第一个是当前用户自启动项,其下面的值是指仅在指定用户登录时才启动的程序;第二个是所有用户自启动项,下面的值是任何用户登录都会自启动的程序。
对于这两个项下的值,除了一小部分安装程序外,一般不会用到,因此应将其加入规则,将对其值的修改设为阻止。
由于其下的任意值都应该阻止,因此我们在其值部分,用“*”来表示任意值。
拦截操作中将修改注册表设为阻止,记录日志;删除注册表设为允许,不记录日志。
一般对阻止的操作应该记录日志,因为阻止操作有可能影响系统正常运行,记录日志能够帮我们查找问题。允许操作最好不要记录日志,因为允许操作是系统默认的操作,并且被我们明确规定允许的操作也一定是我们信任的操作,没有必要记录日志。
按此要求设定好的规则就是:
小知识: “*”和“?”通常用来表示通配符,其中“*”可以代表任意多个字符;“?”可以代表任意一个字符。通配符的使用使得规则编辑非常灵活,但由于其可以代表一切字符,用不好的话,可能会引起一些不可预料的结果,所以,对用了通配符的规则,一定要反复测试,以防错误。
上面两条规则已经能够实现我们的目的,不过通过观察,可以发现两条规则除前面几个字母不同外,剩余的都一模一样,这样我们就能用通配符来代表这几个不同的字符,将两条规则合并为一条规则,来达到简化规则的效果。
另外,在RUN项的后面还有RunOnece、RunOneceEx等也能实现自启动的项,我们还可以在RUN后面加上通配符“*”来将这些项也包含进去。最终的规则就是:
如果RUN下也不允许新建子项,并且子项下的值也不想被随便修改,就勾选上“包含子键”选项。
2、服务项。
WINDOWS的服务实际上也是一种程序,不过它总是运行在后台,没有界面,我们一般看不到它。它随系统的启动而启动,比自启动项更为优先。它在注册表中对应的项是:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
其下面每一个子项代表一个服务。当前许多木马和流氓软件都采用了服务和自启动双重启动方式来激活自己,并且二者相互保护,相互修复,使得我们很难清除它们。而正常情况下,服务项除了在安装部分程序会用到外,平时是不会新增的,所以我们要对其进行控制。规则如下:
一般情况下,虽然不会新增服务项,但许多正常服务会经常修改自身的一些值,因此,为了不影响已有服务正常运行,我们还需要勾选“忽略注册表数值”选项,放开对值的修改的阻止。
3、IE浏览器相关注册表项。
随着网络的普及,IE浏览器成为众多病毒、木马的寄身之地,有的通过IE浏览器来秘密启动自身;有的则劫持绑架IE浏览器强迫用户访问垃圾网页;更有甚者,会假冒IE浏览器,取而代之。而这些,几乎都是通过修改相关注册表来实现的。比如浏览器的main项,这里可以设定默认主页、默认搜索页等信息,许多流氓软件都会在这里大逞淫威。因此,我们要将其中的敏感值保护起来。设置规则如下:
这个只是一部分规则,详细内容可以看一下EQSecure自带的规则。
由于这里我们要控制的是确定的值,所以注册表值的部分也有确定的内容,而不再是通配符。
4、其他。
注册表中还有许多项和值是需要我们保护控制的,有关知识大家可以查找相关资料。
二、在“应用程序规则”类别中添加规则。
当我们将注册表中所有可能被病毒利用的项和值都控制之后,就切断了木马、病毒的启动途径,我们就不再害怕木马、病毒的入侵了。但是,有个问题也会随之而来,当有正常的程序需要修改这些被控制的注册表项和值时怎么办?放开控制,不安全,不放开,又可能造成正常程序运行失败。
那么有没有办法让我指定的程序可以修改被控制的注册表,而其他程序不允许修改呢?这样的话,既能保证系统安全,又能不影响正常程序的正常运行。答案是肯定的,只要在“应用程序规则”类别中添加相应规则就可以了。
比如:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 项下的许多值是比较重要的,也可以自启动应用程序,因此,应该在“所有程序规则”类别中将其加入规则。
但对%WinDir%\system32\winlogon.exe这个应用程序来说,可能会要求修改这个项下的值,而这个程序是WINDOWS系统的重要程序,如果它出现错误,会导致系统崩溃。所以,我们在“应用程序规则”类别中为其设定例外。
首先添加程序:%WinDir%\system32\winlogon.exe,将程序的操作参数设为“允许”和“不记录日志”。
程序的操作参数是指程序对没有在规则中指定的注册表项和值进行操作所应用的参数。由于注册表的规则是:只要没有在规则中专门指定,都允许操作,这样才能保证系统正常运行。所以应用程序的操作参数也一定要设为允许。
另外,还要勾选“搜索所有程序规则”选项,这样“所有程序规则”类别中的所有规则才能对这个程序起作用,在其下添加例外规则才有意义。
然后在此程序下添加注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,将“修改注册表”和“删除注册表”两个参数都设为“允许”,并且“不记录日志”。由于我们勾选了“搜索所有程序规则”,“所有程序规则”类别中的所有规则都对winlogon.exe起作用,所以,我们这里先行设定允许操作,让其在“所有程序规则”中的规则之前起作用,从而达到此注册表项针对此程序来说,是例外的,可以修改的。
三、利用日志对规则进行调整与修正。
我们设置规则的目标:一方面要最大可能地防止有害程序入侵,另一方面要尽可能地不影响正常程序的使用。但要使二者都得到满足是很困难的,需要我们在使用过程中不断地对规则进行调整。调整的依据主要是程序的出错信息和日志拦截信息。
由于多数情况下,被阻止的应用程序不会报告错误,因此我们参考的依据就主要是日志了。
在前面,我们要求对操作参数设定为阻止的规则记录日志,就是因为它是我们调整规则的重要依据。
在任务栏中的EQSecure图标上单击鼠标右键,在弹出的菜单中选择打开日志,即可打开日志窗口。
日志窗口有四个页:所有日志、应用程序日志、注册表日志和文件日志。
一般情况我们看所有日志就可以了,日志较多时可以看各分页日志。
对日志的分析与对应用程序保护询问窗口的分析是一样的,主要看发出操作的应用程序和涉及到的注册表、文件等信息是否可靠。如可靠,说明规则过严,影响了正常程序的运行,可以对相关规则进行调整,或是为此应用程序在“应用程序规则”类别中设置例外;如果不太清楚,可以放一放,多观察一下;如果确定不是正常操作,可能是感染了病毒,就需要用杀毒软件清除一下。

