[转载]黑客俘获计算机的攻击方法和防御详解
信息来源:[url]http://www.net130.com[/url]黑客俘获计算机的攻击方法和防御详解
黑客在进行攻击时会借用其他系统来达到自己的目的,如对下一目标的攻击和被侵占计算机本身的利用等等。本文介绍了常见的黑客对被侵占计算机的使用方式和安全管理员相应的应对方法。
黑客进行网络攻击时,除了自己手中直接操作的计算机外,往往在攻击进行时和完成之后利用、控制其他的计算机。他们或者是借此达到攻击的目的,或者是把这些计算机派做其他的用途。本文汇总描述了黑客各种利用其他计算机的手段,希望网络与系统管理员能通过了解这些攻击办法来达到更好地进行安全防范的目的。
一、对“肉鸡”的利用
“肉鸡”这个词被黑客专门用来描述Internet上那些防护性差,易于被攻破而且控制的计算机。
1.1、本身数据被获取
原理介绍
这是一台计算机被攻破并完全控制之后,黑客要做的第一件事。很多黑客宣称自己是非恶意的,只是对计算机安全感兴趣,在进入别人的计算机时,不会进行破坏、删除、篡改等操作。甚至还有更"好心"一些的黑客会为这些计算机打补丁,做一些安全加强。
但是他们都回避了一个问题,那就是对这些计算机上本身保存的数据如何处理。确实,对别人的计算机进行破坏这种损人不利已的事情对这大多数黑客来讲没有太大意思,不过他们都不会反对把“肉鸡”上的数据弄回来保存。这时黑客再说"没有进行破坏"是说不过去的,根据计算机安全的基本原则,当数据的"完整性、可用性和机密性"中任意三者之一在受到破坏的时候,都应视为安全受到了破坏。在被占领的计算机上可能会保存着用户信息、网络拓扑图、商业秘密、财务报表、军事情报和其他各类需要保密的数据,黑客获得这些数据(即使只是查看数据的内容而不下载)时正是破坏了保密性。在实际情况中,很多商业间谍和政治间谍都是这一类,他们只是默默地拿走你的数据而绝不做任何的破坏,而且尽最大可能地掩盖自己行动的痕迹。这些黑客希望长时间大量地得到珍贵的数据而不被发觉,这其实是最可怕的一种攻击行为。
很多黑客会在“肉鸡”上安装FTP软件或者开放FTP服务,再下载其数据,但安装软件和开放服务这样的动作很容易在系统中的各类日志留下记录,有可能被发现。而不希望被人发觉的黑客会自己建立一台FTP服务器,让“肉鸡”做为客户端把自己的数据上传过来。
防御方法
防止本身数据资料不被窃取,当然首先要考虑的是计算机本身不被攻破。如果自己是铁桶一个,水泼不进,黑客无法在你的网络中的计算机取得任何访问的权限,当然就杜绝了绝大多数的泄密可能(请注意,这时候还是有可能会泄密的!比如被黑客欺骗而将数据发送出去)。我们先来看一下如何加强自己的计算机的操作系统,对于所有需要事先控制的攻击方式,这些手段都是有效的,在以后的章节中就不重复说明了。
简单地说,对于操作系统的加强,无论是Windows、Unix或是Linux,都可以从物理安全、文件系统、帐号管理、网络设置和应用服务几个方面来考虑,在这里我们不详细讨论全面的安全防护方案,只是提供一些简单实用的系统安全检查项目。这是安全的必要条件,而不是充分条件。
物理安全
简单地说,物理安全就是你的计算机所在的物理环境是否可靠,会不会受到自然灾害(如火灾、水灾、雷电等)和人为的破坏(失窃、破坏)等。物理安全并不完全是系统或者网络管理员的责任,还需要公司的其他部门如行政、保安等一起协作,不过因为这是其他安全手段的基础,所以我们网管员还是应该密切注意的。要特别保证所有的重要设备与服务器要集中在机房里,并制订机房相关制度,无关人员不得进入机房等。网管员无特殊情况也不要进入机房,需要可以从外面的指定终端进行管理。
如果重要的服务器暴露在人人都可以接近的外部,那么无论你的口令设得多么强大都没用了,各种操作系统都可以用软盘、光盘启动来破解密码。
文件系统安全
文件和目录的权限设置得是否正确,对系统中那些重要的文件,权限要重新设置;
在Unix与Linux系统中,还要注意文件的setuid和setgid权限,是否有不适合的文件被赋予了这些权限;
帐号系统安全
帐号信息,用户名和密码是否合乎规则,具有足够的复杂程度。不要把权限给予任何没有必要的人;
在Unix/Linux中可以合理地使用su与sudo;
关闭无用账号;
网络系统安全
关闭一切不必要的服务。这一点不必多说了吧,每个开放的服务就象一扇开启的门,都有可能会被黑客悄悄地进入;
网络接口特性。注意网卡不要处在监听的混杂模式;
防止DoS的网络设置。禁止IP转发、不转发定向广播、限定多宿主机、忽略和不发送重定向包、关闭时间戳响应、不响应Echo广播、地址掩码广播、不转发设置了源路由的包、加快ARP表过期时间、提高未连接队列的大小、提高已连接队列的大小;
禁用r*命令和telnet命令,用加密的SSH来远程管理;
对NIS/NIS+进行安全设置;
对NFS进行安全设置;
应用服务安全
应用服务是服务器存在的原因,又是经常会产生问题的地方。因为应用服务的种类太多,这里无法一一叙述,就请大家注意一下这方面的资料吧。如果有可能,我会在今后继续提供一些相关知识。可以肯定地说,没有一种应用程序是完全安全的,必须依靠我们去重新设置。
对于防止数据被窃取,也有手段可以采用,使黑客侵入计算机之后不能盗窃数据和资料。这就是访问控制和加密。系统访问控制需要软件来实现,可以限制root的权限,把那些重要的数据设置为除了特殊用户外,连root都无法访问,这样即使黑客成为root也没有用。加密的手段有很多,这里也不详细介绍了,文件通过加密会以密文的形式存放在硬盘中,如果不能正确解密,就是一堆没有任何意义的字符,黑客就算拿到了也没有用。
1.2、非法proxy
原理介绍
Proxy代理技术在提高Internet访问速度与效率上有很大作用,在这种技术的基础之上又出现了Cache Server等Internet访问优化技术,但Proxy也被黑客利用来进行非法活动。黑客把“肉鸡”设置为Proxy一般有两个目的,首先与正常Proxy的目的一样,是利用它更好地访问Internet,进行WWW浏览;其次就是利用这台Proxy“肉鸡”的特殊位置绕过一些访问的限制。
普通的WWW Proxy其实在Internet上是很常见的,一些计算机免费而且开放地为所有计算机提供WWW Proxy服务,如果黑客想得到一台合适的Proxy时,并不需要自己亲自去攻击计算机并安装Proxy软件,只需利用这些现成的Proxy计算机就可以了。在骇软站点上,有很多Proxy Hunter之类的软件,输入某个网段就可以运行去自动搜索已经存在的Proxy计算机了。虽然Proxy本身并不会被攻击,但是运行Proxy服务,在客户端连接数目多的时候会造成很大的负担。而且一些攻击如Unicode、Lotus Notes、ASP攻击也正是通过HTTP协议进行的,最终被攻击者会把Proxy服务器当做攻击的来源,换句话说,Proxy服务器会成为这些攻击者的替罪羊。所以最好不要向外提供开放的Proxy服务,即使因为需要而开放了,也应加以严格的限制。
利用Proxy绕过一些访问限制,在“肉鸡”的利用中也是很常见的。举个实例来说,某个公司为了提高工作效率,不允许员工使用QQ聊天,指示在公司的防火墙上限制了所有由内向外对UDP 8000这个端口的访问,这样内部就无法向外连接Internet上的QQ服务器进行聊天了。但黑客利用自己设置的QQ Proxy就可以绕过这个限制正常访问QQ服务器。
QQ Proxy同WWW Proxy的设置和使用方法是一样的。在有了Internet上的QQ Proxy时,黑客在公司内部向外访问QQ Proxy的UDP 18000端口,这是不被禁止的。而QQ Proxy会以客户端的身份向真正的访问目标-QQ服务器进行访问,然后把信息从UDP 18000端口向黑客计算机转回去。这样,黑客就利用Proxy实现了对访问限制的突破。
还可以利用这个原理进行其他协议限制的绕过,如WWW、ICQ、MSN、Yahoo Messager、AOL等,只要Proxy软件支持。
防御方法
我们设立任何类型的Proxy服务器时,应当对客户端有所限制,不向无关的人员提供使用权限。这样提高了服务器的效率,又杜绝了黑客借我们的Proxy进行攻击的可能。
防止内部人员利用外部的Proxy时,可以在防火墙上严格限制,只能对外部规定站点的规定服务进行访问。当然这样有可能造成业务上的不便,所以在具体环境下要具体考虑,综合地权衡。
1.3、黑客交流平台
原理介绍
这又是“肉鸡”的一大功能,黑客很喜欢把一些被托管在IDC中的“肉鸡”设置为自己的BBS/E-mail服务器,这些计算机一般都是CPU快、内存大、硬盘空间足和网速快的,对黑客需要的功能可以很好地支持。黑客分布在世界范围内的各个角落,除了一些固定的黑客组织外,很多黑客都是只通过网络交流,如通过电子邮件、在线聊天等方式"互送秋波",交流攻击和其他技术,倾诉仰慕之情。很多交往多年的黑客好友从未在现实生活中见过面,这是毫不为奇的。
大家会问那么黑客直接发电子邮件、上ICQ不就行了吗?何必去冒险攻击其他的计算机做为交流平台呢。请注意黑客之间传播的都是一些不能被别人知道的信息,如"我已经控制了XXX省网的骨干路由器,你想要一份它的路由表吗?",这样的内容如果在任何一个邮件服务器和聊天服务器上被截获,从道义上讲这个网管都是有义务提醒被攻击的网络负责人的,所以利用公共的网络交流手段对黑客来说并不可靠,黑客也要保密啊:-) 。那怎么办?黑客既然控制了“肉鸡”,成为了“肉鸡”的第二个"家长",就有资格和权限去把它设置为交流用的服务器。在这样的交流平台上,黑客被发现的可能性小得多,最高的控制权限可以使黑客对这些活动进行各种各样的掩饰。还有另一种利用形式就是FTP服务器,供黑客兄弟们上传下载黑客软件,互通有无。
黑客在“肉鸡”上做信息交换的时候,会产生大量的网络通信,尤其是利用FTP上传下载时。如果发现你的内外部通信突然反常地加大,检查一下自己的计算机吧。
防卫性差的“肉鸡”其管理员一般水平也不会很高,再加上缺乏责任心,往往在自己的计算机被占领了很长时间都不知道,直到有一天收到了高额的数据通信收费单,才大吃一惊:"怎么搞的?!"。- 难道他们自己就没有责任吗?
防御方法
管理员要有实时监视的手段,并制定合理的检查制度,定期地对所负责的网络和服务器进行检查。对于网络流量突然增大、可疑访问出现、服务器情况异常、不正常的日志项等,都要立即进行检查。要记得把这些记录、日志归类备份,以便在出现情况时前后比较。
安全不安全很大程度上取决于管理员是否尽职尽责,好的管理员必须有好的习惯。
1.4、学习/开发平台
原理介绍
这种情况是比较少见的,却很有意思。我们平时使用的是个人计算机,一般可以安装Windows、FreeBSD、Linux和其他Unix系统的x86版本,如果要实习其他平台上的操作系统几乎是不可能的。象AIX、HP-UX、Solaris(sparc)、IRIX等,都需要相应的硬件平台来配套,普通的个人计算机是装不上的,这些知名厂商的Unix计算机又非常昂贵,成了一般计算机爱好者可望不可及的宝物。黑客兄弟们在这里又有了大显身手的时候了,到网上找到一些可以侵入的AIX什么的机器,占领之后,想学习这种平台的操作使用还不是很简单的事吗?我曾在一个黑客站点上看到有人转让一台Sun E250“肉鸡”的控制权,开价300块,可怜那个管理员,自己的机器已经被公开出售了还不知道。
黑客在“肉鸡”上做开发就更少见了,因为这样做会有很大的风险。许黑客都没有全职的工作,他们中的很多人都是编程高手,会通过朋友和其他渠道揽一些程序开发的活计,挣些零花钱。很多定制的程序是要跑在特定平台上的,如果一个程序需要在HP-UX平台上开发调试怎么办?HP-UX计算机是很少能找到的。但黑客又可以利用自己的"特长"去攻下一台,做为开发平台。不过我们都知道开发调试程序的时候会有各种种样的bug,轻则导致程序不正常,重则让系统崩溃,还会在日志里留下记录。这就是为什么说这么做很危险,因为它太容易被发现了。要是一台计算机被当做开发平台用了很久而管理员却一无所知的话,这个管理员实在应该好好反省。
防御方法
方法同前一部分,就不必多说了。关心你的服务器吧。
二、利用“肉鸡”进行攻击
前面说的都是黑客如何利用“肉鸡”做一些其他的事情,在第二大部分里就要谈一下黑客是如何利用“肉鸡”进行攻击其他计算机和网络行为的。黑客利用“肉鸡”攻击的原因主要有两个:首先是万一攻击行为被下一个目标发现了,对方管理员在追查的时候只能找到这台“肉鸡”,而不能直接抓出黑客自己,这为对方管理员追究责任造成了更大的困难;其次,对于某些类型的攻击手段,“肉鸡”所在的位置也许比黑客计算机所在的位置更有利。
下面介绍一下黑客利用“肉鸡”来攻击时的几种方式。
2.1非法扫描/监听平台
原理介绍
扫描和监听是黑客对“肉鸡”最常使用的借用手段,目标是本网络和其他网络中的计算机。被攻击网络中总有一台计算机会被首先攻破,一旦打开了这个缺口,整个网络就都危险了。这是由于在大多数的网络进行安全设置时,主要的防卫方向是向外的,也就是说他们主要是防备外来的攻击。黑客可以利用其对内部计算机防备较少的弱点,在控制一台计算机后,从这里直接扫描。
请看一下前后两种情况的对比。防火墙是很常见的网络安全设备,在网络入口处起到了一个安全屏障的作用,尤其在黑客进行扫描的时候防火墙将堵住对绝大多数端口的探测。这时“肉鸡”就有了用武之地,从这里扫描本地网络中的其他计算机是不需要经过防火墙的,可以随便地查看它们的漏洞。而且这时候防火墙上也不会留下相应的日志,不易被发觉。黑客可以在扫描结束时返回“肉鸡”取一下结果,或者命令“肉鸡”把扫描结果直接用电子邮件发送到指定信箱。
对于在某个网络中进行非法监听来说,本地有一台“肉鸡”是必须的条件。由于以太网的设计特点,监听只能在本地进行。虽然随着交换式以太网的普及,网络非法监听能收集到的信息大大减少,但对于那些与非法监听软件所在的“肉鸡”通讯的计算机来说,威胁还是很大的。如果这个“肉鸡”本身还是一台重要的服务器,那么危害就更大了,黑客在这上面会得到很多诸如用户帐号、密码、服务器之间不合理的信任关系的信息等,对下一步攻击起到很大的辅助作用。
防御方法
防止扫描一般主要设置在防火墙上,除了内部那些开放了的服务以外,不允许其他的访问进入,可以最大限度地防止信息泄露。至于同一网段上某个服务器成了“肉鸡”,一般情况下是没法防止它扫描其他服务器了,这就需要我们的防御方向不但要向外,也要向内。关闭每一台计算机上不需要的服务,进行安全加强,让内部的非法扫描器找不到可以利用的漏洞。
防御监听一般使用网络传输加密和交换式网络设备。管理员远程登录系统时候,还是有很多人喜欢使用默认的telnet,这种明文传输的协议是黑客的最爱。使用SSH代替telnet和那些r命令,可以使网络上传输的数据成为不可读的密文,保护你的帐号、口令和其他重要的信息。交换式网络设备可以使单个计算机接收到的无用信息大大减少,从而降低非法监听器的危害性。不过相对来说,它的成本还是比较高的。
2.2 攻击的实际出发点
原理介绍
这里所说的攻击是指那些取得其他计算机控制权的动作,如溢出和漏洞攻击等。与扫描监听相同,从内部的“肉鸡”发起的攻击同样不必经过防火墙,被阻挡和发现的可能减少了。从这里攻击时被发现了之后,追查时会找到黑客吗?同样也不行,只能先找到“肉鸡”,再从这里找黑客就困难了。
如果说“肉鸡”做为扫描工具的时候象黑客的一只眼睛,做监听工具的时候象黑客的一只耳朵,那么“肉鸡”实际进攻时就是黑客的一只手。黑客借助“肉鸡”这个内应来听来看,来攻击,而“肉鸡”成为了提线木偶,举手投足都被人从选程看不到的地方控制着。
防御方法
也是需要对计算机进行严密的监视。请参考前面的内容。
2.3 DDoS攻击傀儡
关于黑客利用“肉鸡”进行DDoS攻击的手段就不再赘述了,详见IBM DeveloperWorks曾经刊登的文章《分布式拒绝服务攻击(DDoS)原理及防范》
2.4端口跳转攻击平台
原理介绍
这种攻击方式一般是用来对付防火墙的访问限制的。在很多网络中都使用了防火墙对外封闭一些危险的端口(这种防御又是向外的),这里黑客就可以在内部已经有“肉鸡”的提前下,让“肉鸡”去访问这些端口,注意这时不经过防火墙是不会被阻挡的,而黑客从一个不被防火墙限制的端口去访问“肉鸡”。在进行这种攻击之前,黑客会在“肉鸡”上进行设置,利用特殊的软件把黑客对“肉鸡”的访问发送到目标计算机上,端口也会变成那个危险端口,这样黑客就绕过防火墙直接对目标计算机的危险端口进行攻击了。
只用文字描述比较抽象,我们来看一个例子。
这是一个我们在实际的安全响应中的处理过程,这里黑客使用了组合式的攻击手段,其中包括对Windows服务器常见的139端口攻击,对Solaris系统的溢出攻击,攻击前的信息收集,还有2.4要里着重介绍的端口跳转攻击的方式。
客户方的系统管理员发现一台Windows2000服务器的行为异常后,马上切断了这台服务器的网络连接并向我们报告,这是当时的网络拓扑结构。经过仔细的诊断,我们推断出黑客是利用了这台服务器的139端口漏洞,从远程利用nbtdump、口令猜测工具、Windows net命令等取得了这台服务器的控制权,并安装了BO 2000木马。但客户的系统管理员立刻否定我们的判断:"虽然这台服务器的139端口没有关闭,但我已经在防火墙上设置了规则,使外部计算机不能访问这台服务器的139端口。"又是一个只防范外部攻击的手段!难道大家都对内部攻击占70%以上的比率视而不见吗?不过这里的路由器日志显示,黑客确实是从外部向这台服务器的木马端口进行连接的。难道黑客用了我们还不了解的新的攻击手段?
我们于是继续汇总分析各方面的数据,客户管理员也配合我们进行检查。在检查网络上的其他主机时,我们发现内部网中有一台SUN工作站的网卡上绑定了3个IP地址,其中一个IP地址与被攻击Windows服务器是一个网段的!这立刻引起了我们的注意。客户管理员解释说这是一台Solaris Sparc机器,经常用来做一些测试,有时也会接入服务器网段,所以配了一个该网段的地址。而且就在一个多星期前,这台SUN工作站还放在服务器网段。这就很可疑了,我们立刻对它进行了检查,果然这台SUN工作站已经被占领了,因为主要用途是测试,客户管理员并没有对它进行安全加强,攻破它是易如反掌的事情。在它上面发现了大量的扫描、监听和日志清除工具,另外还有我们意料之中的端口跳转工具 - netcat,简称nc。
至此问题就比较清楚了:黑客首先占领了这台毫不设防的SUN机,然后上载nc,设置端口跳转,攻击Windows 2000服务器的139端口,并且成功地拿下了它。还原当时的网络拓扑图应该是这样的。
解释了端口跳板是如何起作用的。nc安装后,黑客就会通过定制一些运行参数,在“肉鸡”的后台建立起由“肉鸡”的2139端口到目标计算机的139端口的跳转。这就象是一条虚拟的通道,由“肉鸡”的2139端口通向目标的139端口,任何向“肉鸡”的2139进行的访问都会自动地转发到目标计算机的139端口上去。就是说,访问“肉鸡”的2139端口,就是在访问目标的139端口。反过来,目标计算机的回馈信息也会通过“肉鸡”的通道向黑客计算机返回。
黑客需要两次端口跳转,第一次是利用自己的linux计算机把对139端口的访问向SUN的2139端口发送,这样就绕过了防火墙对139端口的访问限制。然后SUN会把对自己2139端口的访问发送到攻击最终目标的139端口上。为什么图中的"黑客"计算机不直接访问SUN的2139端口,而需要linux多跳转一次呢?这是由于象net、nbtdump、远程口令猜测等手段都是默认针对139端口而且黑客无法改变的。
在这两个端口跳板准备好了之后,黑客只要访问自己的linux机器上的139端口,就可以对目标的Windows服务器进行攻击了,“肉鸡”的作用巨大啊。据了解这台SUN工作站当时在服务器网段中只接入了三天不到的时间就搬到内部网里了,可见黑客对这个网段的情况变化的掌握速度是很快的,管理员们不要因为只是临时接入而忽略了安全。我们随后又在路由器上找到了当时黑客远程向SUN机的2139端口连接的日志,至此就完全清楚了。
防御方法
对于这种端口跳转攻击,除了加强内部主机,不使其侵入系统之外,还应对防火墙的规则进行严格的设置。设置规则可以按照先全部禁止,再单个放开的方法。这样即使黑客从非危险的端口连接过来时,也会被防火墙禁止掉。
三、攻击时直接借用
与上述各类情况不同,直接利用其他计算机做为攻击平台时,黑客并不需要首先入侵这些被利用的计算机,而是误导它们去攻击目标。黑客在这里利用了TCP/IP协议和操作系统本身的缺点漏洞,这种攻击更难防范,特别是制止,尤其是后面两种反射式分布拒绝服务攻击和DNS分布拒绝服务攻击。
3.1 Smurf攻击
原理介绍
Smurf攻击是这种攻击的早期形式,是一种在局域网中的攻击手段。它的作用原理是基于广播地址与回应请求的。一台计算机向另一台计算机发送一些特殊的数据包如ping请求时,会接到它的回应;如果向本网络的广播地址发送请求包,实际上会到达网络上所有的计算机,这时就会得到所有计算机的回应。这些回应是需要被接收的计算机处理的,每处理一个就要占用一份系统资源,如果同时接到网络上所有计算机的回应,接收方的系统是有可能吃不消的,就象遭到了DDoS攻击一样。大家会疑问,谁会无聊得去向网络地址发包而招来所有计算机的攻击呢?
当然做为一个正常的操作者是不会这么做的,但是当黑客要利用这个原理进行Smurf攻击的时候,他会代替受害者来做这件事。
黑客向广播地址发送请求包,所有的计算机得到请求后,却不会把回应发到黑客那里,而是被攻击的计算机处。这是因为黑客冒充了被攻击主机。黑客发包所用的软件是可以伪造源地址的,接到伪造数据包的主机会根据源地址把回应发出去,这当然就是被攻击目标的地址。黑客同时还会把发包的间隔减到几毫秒,这样在单位时间能发出数以千计的请求,使受害者接到被欺骗计算机那里传来的洪水般的回应。象遭到其他类型的拒绝服务攻击一样,被攻击主机会网络和系统无法响应,严重时还会导致系统崩溃。
黑客借助了网络中所有计算机来攻击受害者,而不需要事先去占领这些被欺骗的主机。
在实际使用中,黑客不会笨到在本地局域网中干这件事的,那样很容易被查出。他们会从远程发送广播包到目标计算机所在的网络来进行攻击。
防御方法
局域网中是不必进行Smurf攻击的防御的。我们只需在路由器上进行设置,在收到定向广播数据包时将其丢弃就可以了,这样本地广播地址收不到请求包,Smurf攻击就无从谈起。注意还要把网络中有条件成为路由器的多宿主主机(多块网卡)进行系统设置,让它们不接收和转发这样的广播包。
3.2 DrDoS(反射式分布拒绝服务攻击)
原理介绍
这是DDoS攻击的变形,它与DDoS的不同之处就是DrDoS不需要在实际攻击之前占领大量的傀儡机。这种攻击也是在伪造数据包源地址的情况下进行的,从这一点上说与Smurf攻击一样,而DrDoS是可以在广域网上进行的。其名称中的"r"意为反射,就是这种攻击行为最大的特点。黑客同样利用特殊的发包工具,首先把伪造了源地址的SYN连接请求包发送到那些被欺骗的计算机上,根据TCP三次握手的规则,这些计算机会向源IP发出SYN+ACK或RST包来响应这个请求。同Smurf攻击一样,黑客所发送的请求包的源IP地址是被害者的地址,这样受欺骗的计算机就都会把回应发到受害者处,造成该主机忙于处理这些回应而被拒绝服务攻击。
3.3 DNS分布拒绝服务攻击
原理介绍
DNS拒绝服务攻击原理同DrDoS攻击相同,只是在这里被欺骗利用的不是一般的计算机,而是DNS服务器。黑客通过向多个DNS服务器发送大量的伪造的查询请求,查询请求数据包中的源IP地址为被攻击主机的IP地址,DNS服务器将大量的查询结果发送给被攻击主机,使被攻击主机所在的网络拥塞或不再对外提供服务。
防御方法
通过限制查询主机的IP地址可以减轻这种攻击的影响,比较糟糕的是在现实环境中这么做的DNS服务器很少。目前不能从根本上解决这个问题。另外可以从自己的网络设备上监视和限制对DNS查询请求的回应,如果突然出现流量剧增的情况,限制一下到达DNS服务器的查询请求,这样可以避免自己管理的服务器被欺骗而去攻击无辜者。 做一个小小补充,呵呵
1、黑客进行网络攻击的一般过程
1.1 信息收集
信息收集并不对目标本身造成危害,只是为进一步入侵提供有用的信息。黑客可能会利用下列的公开协议或工具,收集驻留在网络系统中的各个主机系统的相关信息:
·SNMP协议:用来查阅网络系统路由器的路由表,从而了解目标主机所在网络的拓扑结构及其内部细节。
·TraceRoute程序:能够用该程序获得到达目标主机所要经过的网络数和路由器数。
·Whois协议:该协议的服务信息能提供所有有关的DNS域和相关的管理参数。
·DNS服务器:该服务器提供了系统中可以访问的主机IP地址表和它们所对应的主机名。
·Ping实用程序:可以用来确定一个指定的主机的位置。
1.2 系统安全弱点的探测
在收集到攻击目标的一批网络信息之后,黑客会探测目标网络上的每台主机,以寻求该系统的安全漏洞或安全弱点,其主要使用下列方式进行探测:
·自编程序:对某些产品或者系统,已经发现了一些安全漏洞,但是用户并不一定及时使用对这些漏洞的“补丁”程序。因此入侵者可以自己编写程序,通过这些漏洞进入目标系统。
·利用公开的工具:象Internet的电子安全扫描程序IIS、审计网络用的安全分析工具SATAN等这样的工具,可以对整个网络或子网进行扫描,寻找安全漏洞。
·慢速扫描:由于一般扫描侦测器的实现是通过监视某个时间段里一台特定主机发起的连接的数目来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。
·体系结构探测:黑客利用一些特定的数据包传送给目标主机,使其作出相应的响应。由于每种操作系统都有其独特的响应方式,将此独特的响应报与数据库中的已知响应进行匹配,经常能够确定出目标主机所运行的操作系统及其版本等信息。
1.3 建立模拟环境,进行模拟攻击
根据前两步所获得的信息,建立一个类似攻击对象的模拟环境,然后对模拟目标机进行一系列的攻击。在此期间,通过检查被攻击方的日志,观察检测工具对攻击的反应等,可以了解攻击过程中留下的“痕迹”及被攻击方的状态,以此来制定一个系统的、周密的攻击策略。
1.4 具体实施网络攻击
入侵者根据前几步所获得的信息,同时结合自身的水平及经验总结出相应的攻击方法,在进行模拟攻击的实践后,将等待时机,以备实施真正的网络攻击。
2、协议欺骗攻击及其防范措施
2.1 源IP地址欺骗攻击
许多应用程序认为如果数据包能够使其自身沿着路由到达目的地,而且应答包也可以回到源地,那么源IP地址一定是有效的,而这正是使源IP地址欺骗攻击成为可能的前提。
假设同一网段内有两台主机A、B,另一网段内有主机X。B 授予A某些特权。X
为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机
B发送一个带有随机序列号的SYN包。主机B响应,回送一个应答包给A,该应答号等于原序
列号加1。然而,此时主机A已被主机X利用拒绝服务攻击
“淹没”了,导致主机A服务失效。结果,主机A将B发来的包丢弃。为了完成三次握手,X还需要向B回送一个应答包,其应答号等于B向A发送数据
包的序列号加1。此时主机X
并不能检测到主机B的数据包(因为不在同一网段),只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B。如果猜测正确,B则认为收到的ACK是来自内部主机A。此时,X即获得了主机A在主机B上所享有的特权,并开始对这些服务实施攻击。
要防止源IP地址欺骗行为,可以采取以下措施来尽可能地保护系统免受这类攻击:
·抛弃基于地址的信任策略:
阻止这类攻击的一种非常容易的办法就是放弃以地址为基础的验证。不允许r类远程调用命令的使用;删除.rhosts
文件;清空/etc/hosts.equiv
文件。这将迫使所有用户使用其它远程通信手段,如telnet、ssh、skey等等。
·使用加密方法: 在包发送到
网络上之前,我们可以对它进行加密。虽然加密过程要求适当改变目前的网络环境,但它将保证数据的完整性和真实性。
·进行包过滤:可以配置路由器使其能够拒绝网络外部与本网内具有相同IP地址的连接请求。而且,当包的IP地址不在本网内时,路由器不应该把本网主机的包发送出去。
有一点要注意,路由器虽然可以封锁试图到达内部网络的特定类型的包。但它们也是通过分析测试源地址来实现操作的。因此,它们仅能对声称是来自于内部网络的外来包进行过滤,若你的网络存在外部可信任主机,那么路由器将无法防止别人冒充这些主机进行IP欺骗。
2.2 源路由欺骗攻击
在通常情况下,信息包从起点到终点走过的路径是由位于此两点间的路由器决定的,数据包本身只知道去往何处,但不知道该如何去。源路由可使信息包的发送者将此数据包要经过的路径写在数据包里,使数据包循着一个对方不可预料的路径到达目的主机。下面仍以上述源IP欺骗中的例子给出这种攻击的形式:
主机A享有主机B的某些特权,主机X想冒充主机A从主机B(假设IP为aaa.bbb.ccc.ddd)获得某些服务。首先,攻击者修改距离X最近的路由器,使得到达此路由器且包含目的地址aaa.bbb.ccc.ddd的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗向主机B发送源路由(指定最近的路由器)数据包。当B回送数据包时,就传送到被更改过的路由器。这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据。
为了防范源路由欺骗攻击,一般采用下面两种措施:
·对付这种攻击最好的办法是配置好路由器,使它抛弃那些由外部网进来的却声称是内部主机的报文。
·在路由器上关闭源路由。用命令no ip source-route。
3、拒绝服务攻击及预防措施
在拒绝服务攻击中,攻击者加载过多的服务将对方资源全部使用,使得没有多余资源供其他用户无法使用。SYN
Flood攻击是典型的拒绝服务攻击。
SYN
Flood常常是源IP地址欺骗攻击的前奏,又称半开式连接攻击,每当我们进行一次标准的TCP连接就会有一个三次握手的过程。
而SYN
Flood在它的实现过程中只有前两个步骤,当服务方收到请求方的SYN并回送SYN-ACK确认报文后,请求方由于采用源地址欺骗等手段,致使服务方得不到ACK回应,这样,服务方会在一定时间内处于等待接收请求方ACK报文的状态,一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续的发送此类连接请求,则服务器的系统可用资源、网络可用带宽急剧下降,将无法向用户提供正常的网络服务。
为了防止拒绝服务攻击,我们可以采取以下预防措施:
·对于信息淹没攻击,我们应关掉可能产生无限序列的服务来防止这种攻击。比如我们可以在服务器端拒绝所有的ICMP包,或者在该网段路由器上对ICMP包进行带宽限制,控制其在一定的范围内。
·要防止SYN数据段攻击,我们应对系统设定相应的内核参数,使得系统强制对超时的Syn请求连接数据包复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的Syn请求数据包。
·建议在该网段的路由器上做些配置的调整,这些调整包括限制Syn半开数据包的流量和个数。
·建议在路由器的前端做必要的TCP拦截,使得只有完成TCP三次握手过程的数据包才可进入该网段,这样可以有效地保护本网段内的服务器不受此类攻击。
总之,要彻底杜绝拒绝服务攻击,只有追根溯源去找到正在进行攻击的机器和攻击者。要追踪攻击者不是一件容易的事情,一旦其停止了攻击行为,很难将其发现。唯一可行的方法就是在其进行攻击的时候,根据路由器的信息和攻击数据包的特征,采用逐级回溯的方法来查找其攻击源头。这时需要各级部门的协同配合才能很好的完成。
4、针对其他网络攻击行为的防范措施
协议攻击和拒绝服务攻击是黑客惯于使用的攻击方法,但随着计算机网络技术的飞速发展,网络攻击行为千变万化,新的攻击技术层出不穷。下面将阐述网络嗅探及缓冲区溢出的攻击原理及防范措施。
4.1 针对网络嗅探的防范措施
网络嗅探就是使网络接口接收不属于本主机的数据。计算机网络通常建立在共享信道上,以太网就是这样一个共享信道的网络,其数据报头包含目的主机的硬件地址,只有硬件地址匹配的机器才会接收该数据包。一个能接收所有数据包的机器被称为杂错节点。通常账户和口令等信息都以明文的形式在以太网上传输,一旦被黑客在杂错节点上嗅探到,用户就可能会遭到损害。
对于网络嗅探攻击,我们可以采取以下一些措施进行防范:
·网络分段:一个网络段包括一组共享低层设备和线路的机器,如交换机,动态集线器和网桥等设备,可以对数据流进行限制,从而达到防止嗅探的目的。
·加密:一方面可以对数据流中的部分重要信息进行加密,另一方面也可只对应用层加密,然而后者将使大部分与网络和操作系统有关的敏感信息失去保护。选择何种加密方式这就取决于信息的安全级别及网络的安全程度。
·一次性口令技术:口令并不在网络上传输而是在两端进行字符串匹配,客户端利用从服务器上得到的Challenge和自身的口令计算出一个新字符串并将之返回给服务器。在服务器上利用比较算法进行匹配,如果匹配,连接就允许建立,所有的Challenge和字符串都只使用一次。
·禁用杂错节点:安装不支持杂错的网卡,通常可以防止IBM兼容机进行嗅探。
4.2 缓冲区溢出攻击及其防范措施
缓冲区溢出攻击是一种系统攻击手段,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。当然,随便往缓冲区中填东西并不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序具有root权限的话,攻击者就可以对系统进行任意操作了。
缓冲区溢出对系统带来了巨大的危害,要有效地防止这种攻击,应该做到以下几点:
·程序指针完整性检查:在程序指针被引用之前检测它是否改变。即便一个攻击者成功地改变了程序的指针,由于系统事先检测到了指针的改变,因此这个指针将不会被使用。
·堆栈保护:这是一种提供程序指针完整性检查的编译器技术,通过检查函数活动纪录中的返回地址来实现。在堆栈中函数返回地址后面加了一些附加的字节,而在函数返回时,首先检查这个附加的字节是否被改动过。如果发生过缓冲区溢出的攻击,那么这种攻击很容易在函数返回前被检测到。但是,如果攻击者预见到这些附加字节的存在,并且能在溢出过程中同样地制造他们,那么他就能成功地跳过堆栈保护的检测。
·数组边界检查:所有的对数组的读写操作都应当被检查以确保对数组的操作在正确的范围内。最直接的方法是检查所有的数组操作,通常可以采用一些优化的技术来减少检查的次数。目前主要有以下的几种检查方法:Compaq
C编译器、Jones & Kelly C数组边界检查、Purify存储器存取检查等。
页:
[1]