自从有了网络的存在,入侵行为也就同时出现了。Internet的出现和高速发展同时带动了网络入侵活动的发展。在种种网络入侵行为中,针对关键服务器的攻击可以说是最具威胁性、可能造成损失最大的行为。
网络的互连是为了实现信息的方便共享和传输。但是几乎自从有了网络的存在,入侵行为也就同时出现了。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攻击的傀儡。 |