信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 1919|回复: 7
打印 上一主题 下一主题

DDOS攻击

[复制链接]
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    跳转到指定楼层
    楼主
    发表于 2008-1-27 00:22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    <strong><font color="#ff0000">(1)DDoS攻击原理以及常见方法<br/></font></strong>什么是DOS攻击 DOS:即Denial Of Service,`拒绝服务的缩写,可不能认为是微软的dos操作系统了。好象在5?1的时候闹过这样的笑话。拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必须在门口等吧。DOS攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。比如: ??* 试图FLOOD服务器,阻止合法的网络通讯 ??* 破坏两个机器间的连接,阻止访问服务 ??* 阻止特殊用户访问服务 ??* 破坏服务器的服务或者导致服务器死机 不过,只有那些比较阴险的攻击者才单独使用DOS攻击,破坏服务器。通常,DOS攻击会被作为一次入侵的一部分,比如,绕过入侵检测系统的时候,通常从用大量的攻击出发,导致入侵检测系统日志过多或者反应迟钝,这样,入侵者就可以在潮水般的攻击中混骗过入侵检测系统。 有关TCP协议的东西 TCP(transmission control protocol,传输控制协议),是用来在不可靠的因特网上提供可靠的、端到端的字节流通讯协议,在RFC793中有正式定义,还有一些解决错误的东西在RFC 1122中有记录,RFC 1323则有TCP的功能扩展。 我们常见到的TCP/IP协议中,IP层不保证将数据报正确传送到目的地,TCP则从本地机器接受用户的数据流,将其分成不超过64K字节的数据片段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地机器中再组合成完整的字节流,TCP协议必须保证可靠性。 发送和接收方的TCP传输以数据段的形式交换数据,一个数据段包括一个固定的20字节头,加上可选部分,后面再跟上数据,TCP协议从发送方传送一个数据段的时候,还要启动计时器,当数据段到达目的地后,接收方还要发送回一个数据段,其中有一个确认序号,它等于希望收到的下一个数据段的顺序号,如果计时器在确认信息到达前超时了,发送方会重新发送这个数据段。 上面,我们总体上了解一点TCP协议,重要的是要熟悉TCP的数据头(header)。因为数据流的传输最重要的就是header里面的东西,至于发送的数据,只是header附带上的。客户端和服务端的服务响应就是同header里面的数据相关,两端的信息交流和交换是根据header中的内容实施的,因此,要实现DOS,就必须对header中的内容非常熟悉。 下面是TCP数据段头格式。 ??Source Port和 Destination Port :是本地端口和目标端口 ??Sequence Number 和 Acknowledgment Number :是顺序号和确认号,确认号是希望接收的字节号。这都是32位的,在TCP流中,每个数据字节都被编号。 ??Data offset :表明TCP头包含多少个32位字,用来确定头的长度,因为头中可选字段长度是不定的。 ??Reserved : 保留的6位,现在没用,都是0 接下来是6个1位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍: ??URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断 。 ??ACK:(Acknowledgment field significant)置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。 ??PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。 ??RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。 ??SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。 ??FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。 ??知道这重要的6个指示标志后,我们继续来。 16位的WINDOW字段:表示确认了字节后还可以发送多少字节。可以为0,表示已经收到包括确认号减1(即已发送所有数据)在内的所有数据段。 ??接下来是16位的Checksum字段,用来确保可靠性的。 ??16位的Urgent Pointer,和下面的字段我们这里不解释了。不然太多了。呵呵,偷懒啊。 ??我们进入比较重要的一部分:TCP连接握手过程。这个过程简单地分为三步。 在没有连接中,接受方(我们针对服务器),服务器处于LISTEN状态,等待其他机器发送连接请求。 ??第一步:客户端发送一个带SYN位的请求,向服务器表示需要连接,比如发送包假设请求序号为10,那么则为:SYN=10,ACK=0, ??然后等待服务器的响应。 ??第二步:服务器接收到这样的请求后,查看是否在LISTEN的是指定的端口,不然,就发送RST=1应答,拒绝建立连接。如果接收 ??连接,那么服务器发送确认,SYN为服务器的一个内码,假设为100,ACK位则是客户端的请求序号加1,本例中发送的数据是: ??SYN=100,ACK=11,用这样的数据发送给客户端。向客户端表示,服务器连接已经准备好了,等待客户端的确认 ??这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器 ??第三步:客户端发送确认建立连接的消息给服务器。确认信息的SYN位是服务器发送的ACK位,ACK位是服务器发送的SYN位加1。 ??即:SYN=11,ACK=101。 ??这时,连接已经建立起来了。然后发送数据,。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如SYN、ACK。 ?? 服务器的缓冲区队列(Backlog Queue) 服务器不会在每次接收到SYN请求就立刻同客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个等待队列中。如果,这个等待的队列已经满了,那么,服务器就不在为新的连接分配任何东西,直接丢弃新的请求。如果到了这样的地步,服务器就是拒绝服务了。 ?? 如果服务器接收到一个RST位信息,那么就认为这是一个有错误的数据段,会根据客户端IP,把这样的连接在缓冲区队列中清除掉。这对IP欺骗有影响,也能被利用来做DOS攻击。 上面的介绍,我们了解TCP协议,以及连接过程。要对SERVER实施拒绝服务攻击,实质上的方式就是有两个: ??一, 迫使服务器的缓冲区满,不接收新的请求。 ??二, 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接 这就是DOS攻击实施的基本思想。具体实现有这样的方法: ??1、SYN FLOOD ??利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。 ??如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。 ??现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。 ??2、IP欺骗DOS攻击 ??这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。 ??攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。 ??3、 带宽DOS攻击 ??如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。呵呵。Ping白宫??你发疯了啊! ??4、自身消耗的DOS攻击 ??这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。 ??这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。 ??上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。 5、塞满服务器的硬盘 ??通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如: ??发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。 ??让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。 ??向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。 ??6、合理利用策略 ??一般服务器都有关于帐户锁定的安全策略,比如,某个帐户连续3次登陆失败,那么这个帐号将被锁定。这点也可以被破坏者利用,他们伪装一个帐号去错误登陆,这样使得这个帐号被锁定,而正常的合法用户就不能使用这个帐号去登陆系统了。<br/>
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享 顶 踩
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    沙发
     楼主| 发表于 2008-1-27 00:23:34 | 只看该作者
    <font color="#ff0000" size="2">(2)分布式反射:新一代的DDoS攻击<br/></font><font face="Verdana">攻击在凌晨两点左右开始,那时我正好还在工作,所以我才有机会迅速的抓取到一部分的洪水攻击的信息。这次攻击使Verio (我们的网络提供商)的集合路由器将攻击数据挤满了我们的两条T1 。我们的网站服务器因为这次攻击而无法处理其它合法的请求。我们被完全的炸下了网。 <br/>我们以前就曾遭受过UDP 和ICMP 洪水攻击,这些攻击其实都可以由被攻击者入侵的主机、zombie 工具及Windows 系统简单的实现,我们也被一些经典的SYN 洪水攻击过。所以当我查看了一下那些显示我们是被SYN/ACK 数据攻击的攻击数据包后,眉毛跳了一下。毕竟这些事实并不重要,就像我以前说的那样,一个SYN/ACK 包只是一个SYN 数据包带了一个ACK标记。任何有限权制作"raw socket"的人都可以制作出这种数据包来 —— 不管他是恶意的还是无意的。 <br/>真正的惊讶是当我看到这些发起攻击的地址 : </font><br/><img alt="" src="http://www.1rmb.com/ddos/uploadfile/UploadFile/20072261244763.gif" border="0"/><br/>。。。。<br/>此处省略了近200个攻击的网络地址<br/><br/><font face="Verdana">我们看起来是在被超过200 多个网络核心基础设施路由器攻击. <br/>发生什么事了? <br/>看到这些分别来自Verio 、Qwest 、和 Above.net 的洪水数据包,我想它们都是完全合法的SYN/ACK 连接回应包,它们显示了一个TCP 源端口:179 。换句话说,就像一个网页服务器的数据包会从HTTP 的80 号端口返回一样,这些数据包是从"BGP"的179 号端口返回的。 <br/>BGP 是中介路由器支持的"边界网关协议"(Border Gateway Protocol )。 路由器使用BGP与他们的邻居进行即时的信息交流来交换他们的" 路由表" ,这是为了通知它们彼此路由器可以在哪个IP 范围进行转交。 <br/>BGP 的细节并不重要,重要的是每个良好连接(高宽带)的中介路由器都会接受在他们179端口上的连接。换句话来说,任何一个SYN 数据包到达一个网络路由器上后都会引出一个该路由的SYN/ACK 回应包来。 <br/>我突然知道什么会一定发生….. <br/>这些被利用来攻击的两百台主机不可能全存在安全问题,甚至可能没有任何一台有安全问题。 <br/>我认识到它们只不过全是一些普通的的TCP 服务器,它们是在认为我们想建立一个TCP 连接到它们自带的BGP 服务的情况下才向grc.com 发送SYN/ACK 数据包的。 <br/>换句话说,一个恶意的入侵者在其他的Internet 角落里利用带有连接请求的syn 数据包对网络路由器进行洪水攻击。这些数据包带有虚假的IP 地址,这些地址都是grc.com 的。这样以来,路由器认为这些Syn 数据包是从grc.com 发送来的,所以它们便对它们发送SYN/ACK数据包作为三次握手过程的第二个步。 </font><br/><img alt="" src="http://www.1rmb.com/ddos/uploadfile/UploadFile/20072261245397.gif" border="0"/><br/><font face="Verdana">恶意的数据包其实就被那些被利用的主机“反射”到了受害者主机上。这些被反射的数据包返回到受害者主机上后,就形成了洪水攻击。<br/>阻拦反射攻击 <br/>我们有一些好消息,这种攻击看起来可以很简单的阻拦。因为我们自己不是网络服务提供商,以我们从来没有任何连接到远程带有BGP 服务的路由器上的需要。这样以来,我便要求Verio去阻拦任何从BGP 服务端口179 发起的入站数据。因为这个恶意攻击者的SYN 数据包的目标是网络上中介路由的179 号端口,任何反射的数据包也应该会从那个端口发出。 <br/>Verio 的工程师加了一个filter 到提供我们网络服务的集合路由上,它用来阻拦(丢弃)任何从179 端口发来的数据包。从179 号端口发送来的数据包洪水立即停止了。 <br/>但我们并没有回到Internet 上。 <br/>一个刚从网上抓到的数据包显示我们现在正被一群全新的网络服务器攻击。因为这第二群攻击是在我们阻拦了从179 端口发送来的攻击以后才出现的,所以这第二拨攻击没有办法跟第一拨的攻击力相比。 <br/>我们现在正在被从端口22 (Secure Shell), 23 (Telnet), 53 (DNS), 和80 (HTTP/Web)上发送来的SYN/ACK 数据包攻击。这其中还有一些从端口4001 (代理服务器端口)和6668(IRC 聊天)发送来的数据包。 <br/>很可惜的是,因为这第二波攻击完全出乎我的意料,所以我没有抓到这第二波攻击的完整的数据包来作为取样。不过,我先前在第一波攻击中所抓到一些日志有展现一些非BGP 所发出的SYN/ACK 包。 <br/></font>
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    藤椅
     楼主| 发表于 2008-1-27 00:23:59 | 只看该作者
    <font face="Verdana">这是一小部分先前从HTTP(网页服务)端口80 上所发出SYN/ACK 攻击数据包的样本 <br/><img alt="" src="http://www.1rmb.com/ddos/uploadfile/UploadFile/20072261245309.gif" border="0"/><br/>这蜂拥而来的SYN/ACK 数据包和一些非路由的网络服务器告诉了我们,任何用于普通目的TCP 连接许可的网络服务器都可以用做数据包反射服务器。当我看到我们光阻拦从BGP 端口传来的数据是远远不够的,我开发了一套更全面的解决方案来对付这种攻击。这套方案我们会在下面讨论。 <br/>在装置好对付反射攻击的filter 后,我们立即就可以重新返回网上了。经过我不可以监控在装置filter 后的攻击状况,但看到下面的这些信息还是让我冒了一阵冷汗… <br/>直到攻击停止,Verio 的路由丢弃了将近十亿(1,072,519,399)的恶意SYN/ACK 数据包。 <br/>我是在认识我到没有抓到第二波非BGP 的数据包后才联系Verio ,从而得知这个数据的。我想要重新装备我们的防御系统,好让我们继续遭受攻击,这样才能抓到那些我先前没有收集到的 <br/>资料,但当我这样做的时候,攻击已经停止了。 <br/>反射攻击的防御及预防 <br/>通过Internet 进行交流的电脑一般都可以被分为两类:客户端及服务端。这两个角色可以随着环境转换(例如一个网页服务器可能会是一个邮件服务器的客户端),不过大部分的TCP 连接都意味着一个客户端和服务端的关系。客户端一般会从一个高数位的端口发起连接到服务端上处于监听状态的底数位端口上。 <br/>因为任何反射的SYN/ACK 数据包必须要弹到一个TCP 服务器上,并且因为几乎所有的服务端口都在1 到1023 这个范围之内,阻拦所有在服务端口范围之内入站的数据包会防止大部分的攻击造成的阻塞。不过这样做有产生一些问题….. <br/>保护服务器 <br/>首先,这次对grc.com 的攻击包含了从端口4001 和6668 来的SYN/ACK 数据包。所以,如果从这些端口发出的数据太多的话,这些特殊的高数位服务端口也需要被阻拦。在阻拦高数位端口的入站数据包存在一个问题,那就是一些合法的客户端的端口所发生的数据可能也会被我们设置的filter 给拦截掉。 <br/>第二个问题是如果我们只是简单的拦截所有从1024 以下端口发送的数据的话,那么像当一个在blanket filter 后的服务器作为客户端的话,它将无法和其它服务器进行交流。就像我们刚才举的例子一样,当一个网页服务器作为一个SMTP 服务器的客户端时,这个情况就会变的非常复杂。因为远程SMTP 服务器的数据包会试图从SMTP 服务器的25 号端口返回,这时它就会被我们设置的反反射攻击的filter 给拦截掉。为了解决这个问题,我们需要在配置文件里设置例外端口,这样才可以让合法数据包正常通过。 <br/>保护客户端 <br/>这里有一些坏消息。客户端主机,例如那些典型的终端用户,将无法被保护。因为多数的客户端在大部分时间里都是连接到远程的服务器端上的,这些服务器端很可能会被利用来攻击这些无辜的客户端。 <br/>译者注: <br/>国内的网管可能都冒了一身的冷汗,以前的分布式拒绝服务式攻击可以算是可见不可及。毕竟那是需要几百台受控的肉鸡才能实现的,可现在这个技术可以利用任何不存在安全漏洞的主机来进行攻击,后果可以想象。原作者上面所说的利用filter 来拦截数据包只是暂时之策,服务器不用来提供服务还有什么用?所以真正的解决办法还是要从基础的配置做起,这种攻击不是使用半连接来挂掉主机,所以对付以前那种传统的SYN Flood 的方法可能无法在这里行通。到目前为止,通过利用防火墙来阻挡那些序列号不对的数据包恐怕是最好的方法了。希望网络安全界的人士能尽快研究出更好的解决方法。</font><br/>
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    板凳
     楼主| 发表于 2008-1-27 00:24:34 | 只看该作者
    <font face="Verdana" color="#ff0000" size="2">(3)DDoS攻击的原理及工具介绍<br/></font>阅读提示:自99年后半年开始,DDoS攻击不断在Internet出现,并在应用的过程中不断的得到完善,在Unix或nt环境上截至目前已有一系列比较成熟的软件产品,如Trinoo,TFN,TFN2K,STACHELDRATH等,他们基本核心及攻击思路是很相象的,下面就通过Trinoo对这类软件做一介绍。 <br/>进入2000年以来,网络遭受攻击事件不断发生,全球许多著名网站如yahoo、cnn、buy、ebay、fbi,包括中国的新浪网相继遭到不名身份的黑客攻击,值得注意的是,在这些攻击行为中,黑客摈弃了以往常常采用的更改主页这一对网站实际破坏性有限的做法,取而代之的是,在一定时间内,彻底使被攻击的网络丧失正常服务功能,这种攻击手法为 DDoS,即分布式拒绝服务攻击(Distributed denial of service )。 <br/>简单的讲,拒绝服务就是用超出被攻击目标处理能力的海量数据包消耗可用系统,带宽资源,致使网络服务瘫痪的一种攻击手段。在早期, 拒绝服务攻击主要是针对处理能力比较弱的单机,如个人pc,或是窄带宽连接的网站,对拥有高带宽连接,高性能设备的网站影响不大,但在99年底,伴随着DDoS的出现,这种高端网站高枕无忧的局面不复存在,与早期的DoS攻击由单台攻击主机发起,单兵作战相较,DDoS实现是借助数百,甚至数千台被植入攻击守护进程的攻击主机同时发起的集团作战行为,在这种几百,几千对一的较量中, 网络服务提供商所面对的破坏力是空前巨大的。 <br/>拒绝服务攻击自问世以来,衍生了多种形式,现将两种使用较频繁的TCP-SYN flood, UDP flood做一个介绍 。TCP-SYN flood又称半开式连接攻击,每当我们进行一次标准的TCP连接(如WWW浏览,下载文件等)会有一个一个三次握手的过程,首先是请求方向服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后则再次向服务方发送一个ACK消息,一次成功的TCP连接由此就建立,可以进行后续工作了,如图所示:<br/><img alt="" src="http://www.1rmb.com/ddos/uploadfile/UploadFile/20072191012726.gif" border="0"/><br/>而TCP-SYN flood在它的实现过程中只有前两个步骤,当服务方收到请求方的SYN并回送SYN-ACK确认消息后, 请求方由于采用源地址欺骗等手段,致使服务方得不到ACK回应,这样,服务方会在一定时间处于等待接收请求方ACK消息的状态,一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续的发送此类连接请求,则服务器可用TCP连接队列很快将会阻塞,系统可用资源,网络可用带宽急剧下降,无法向用户提供正常的网络服务。 <br/>Udp在网络中的应用也是比较广泛的,比如DNS解析、realaudio实时音乐、网络管理、联网游戏等,基于udp的攻击种类也是比较多的,如目前在互连网上提供www、mail等服务的设备一般为使用unix操作系统的服务器,他们默认是开放一些有被恶意利用可能的udp服务的,如:echo,chargen. echo服务回显接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符,如果恶意攻击者将这两个udp服务互指,则网络可用带宽会很快耗尽。 <br/>自99年后半年开始,DDoS攻击不断在Internet出现,并在应用的过程中不断的得到完善,在Unix或nt环境上截至目前已有一系列比较成熟的软件产品,如Trinoo,TFN,TFN2K,STACHELDRATH等,他们基本核心及攻击思路是很相象的,下面就通过Trinoo对这类软件做一介绍。 <br/>Trinoo是基于UDP flood的攻击软件,它向被攻击目标主机随机端口发送全零的4字节UDP包,被攻击主机的网络性能在处理这些超出其处理能力垃圾数据包的过程中不断下降,直至不能提供正常服务甚至崩溃。 <br/>Trinoo攻击功能的实现,是通过三个模块付诸实施的, <br/>1:攻击守护进程(NS) 2:攻击控制进程(MASTER) 3:客户端(NETCAT,标准TELNET程序等), <br/>攻击守护进程NS是真正实施攻击的程序,它一般和攻击控制进程(MASTER)所在主机分离,在原始C文件ns.c编译的时候,需要加入可控制其执行的攻击控制进程MASTER所在主机IP,(只有在ns.c中的IP方可发起ns的攻击行为)编译成功后,黑客通过目前比较成熟的主机系统漏洞破解(如rpc.cmsd,rpc.ttdbserver,rpc.statd)可以方便的将大量NS植入因特网中有上述漏洞主机内。ns运行时,会首先向攻击控制进程(MASTER)所在主机的31335端口发送内容为HELLO的UDP包,标示它自身的存在,随后攻击守护进程即处于对端口27444的侦听状态,等待master攻击指令的到来。 <br/>攻击控制进程(MASTER)在收到攻击守护进程的HELLO包后,会在自己所在目录生成一个加密的名为...的可利用主机表文件, MASTER的启动切枰?苈氲模?谡?肥淙肽?厦苈雊Orave后, MASTER即成功启动,它一方面侦听端口31335,等待攻击守护进程的HELLO包,另一方面侦听端口27665,等待客户端对其的连接。当客户端连接成功并发出指令时, MASTER所在主机将向攻击守护进程ns所在主机的27444端口传递指令。 <br/>客户端不是trinoo自带的一部分,可用标准的能提供TCP连接的程序,如TELNET,NETCAT等,连接MASTER所在主机的27665端口, 输入默认密码betaalmostdone后,即完成了连接工作,进入攻击控制可操作的提示状态。 <br/>目前版本的trinoo有六个可用命令,mtimer:设定攻击时长,如mtimer 60,攻击60秒,如果不设置的话,默认是无限。dos:对某一目标主机实施攻击,如dos 12.34.45.56 mdie:停止正在实施的攻击,使用这一功能需要输入口令killme,mping:请求攻击守护进程NS回应,监测ns是否工作。mdos, 对多个目标主机实施攻击,msize:设置攻击UDP包的大小。 Trinoo运行的总体轮廓可用下图说明: <br/><img alt="" src="http://www.1rmb.com/ddos/uploadfile/UploadFile/20072191012593.gif" border="0"/><br/>
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    报纸
     楼主| 发表于 2008-1-27 00:25:13 | 只看该作者
    我们来看一次攻击的实例: <table class="t_table" width="400" align="center"><tbody><tr><td><font face="Courier New">被攻击的目标主机victim IP为:12.23.34.45 <br/><br/>ns被植入三台sun的主机里,他们的IP对应关系分别为client1:11.11.11.11 <br/><br/>client2:22.22.22.22 <br/><br/>client3:33.33.33.33 <br/><br/>master所在主机为masterhost:11.22.33.44 <br/><br/>首先我们要启动各个进程,在client1,2,3上分别执行ns,启动攻击守护进程, <br/><br/>其次,在master所在主机启动master <br/><br/>masterhost# ./master <br/><br/>?? gOrave (系统示输入密码,输入gOrave后master成功启动) <br/><br/>trinoo v1.07d2+f3+c [Mar 20 2000:14:38:49] (连接成功)在任意一台与网络连通的可使用telnet的设备上,执行 <br/><br/>telnet 11.22.33.44 27665 <br/><br/>Escape character is '^]'. <br/><br/>betaalmostdone (输入密码) <br/><br/>trinoo v1.07d2+f3+c..[rpm8d/cb4Sx/] <br/><br/>trinoo&gt; (进入提示符) <br/><br/>trinoo&gt; mping (我们首先来监测一下各个攻击守护进程是否成功启动) <br/><br/>mping: Sending a PING to every Bcasts. <br/><br/>trinoo&gt; PONG 1 Received from 11.11.11.11 <br/><br/>ONG 2 Received from 22.22.22.22 <br/><br/>ONG 3 Received from 33.33.33.33 (成功响应) <br/><br/>trinoo&gt; mtimer 60 (设定攻击时间为60秒) <br/><br/>mtimer: Setting timer on bcast to 60. <br/><br/>trinoo&gt; dos 12.23.34.45 <br/><br/>DoS: Packeting 12.23.34.45......</font></td></tr></tbody></table>至此一次攻击结束,此时ping 12.23.34.45,会得到icmp不可到达反馈,目标主机此时与网络的正常连接已被破坏。 <br/>由于目前版本的trinoo尚未采用IP地址欺骗,因此在被攻击的主机系统日志里我们可以看到如下纪录: <table class="t_table" width="400" align="center"><tbody><tr><td><font face="Courier New">Mar 20 14:40:34 victim snmpXdmid: Will attempt to re-establish connection. <br/><br/>Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 11.11.11.11.59841: The message has a wrong header type (0x0) <br/><br/>Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 22.22.22.22.43661: The message has a wrong header type (0x0) <br/><br/>Mar 20 14:40:36 victim snmpdx: error while receiving a pdu from 33.33.33.33.40183: The message has a wrong header type (0x0) <br/><br/>Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type (0x0). <br/><br/>Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1. <br/><br/>Mar 20 14:40:36 victim snmpXdmid: Will attempt to re-establish connection. <br/><br/>Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type (0x0). <br/><br/>Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1.</font></td></tr></tbody></table>由上述日志,我们不难看出发起攻击的ip地址,这一问题,通过ip spoof在后期的软件tfn,tfn2k等软件中得到了解决,给被攻击者找出肇事者进一步增加了难度。<br/><br/>Trinoo等DdoS攻击软件的出现,对网络的安全产生了巨大的挑战,借助这种在网上可以得到的公开软件,任何一个普通的上网者对网络的安全都构成了潜在的威胁,那么能不能做一些预防工作呢? <br/>有一些是可以做的, <br/>首先,检测自己的系统是否被植入了攻击守护程序,最简单的办法,检测上述提到的udp端口,如netstat -a | grep udp 端口号,如果得到listen等激活状态,就要注意了,或者用专门的检测软件,这里推荐美国FBI专门研制的Find Distributed Denial of Service (find_ddos) , 最新版本的可检测到tfn2k client, tfn2k daemon, trinoo daemon, trinoo master, tfn daemon, tfn client, stacheldraht master, stacheldraht client, stachelddraht demon和 tfn-rush client等目前几乎所有流行攻击软件。 它的运行很简单,解开包,运行find_ddos即可,下面为在一台可疑设备运行结果, <table class="t_table" width="400" align="center"><tbody><tr><td><font face="Courier New">Logging output t LOG <br/><br/>Scanning running processes... <br/><br/>/proc/795/object/a.out: trinoo daemon <br/><br/>/usr/bin/gcore: core.795 dumped <br/><br/>/proc/800/object/a.out: trinoo master <br/><br/>/usr/bin/gcore: core.800 dumped <br/><br/>Scanning "/tmp"... <br/><br/>Scanning "/"... <br/><br/>/yiming/tfn2k/td: tfn2k daemon <br/><br/>/yiming/tfn2k/tfn: tfn2k client <br/><br/>/yiming/trinoo/daemon/ns: trinoo daemon <br/><br/>/yiming/trinoo/master/master: trinoo master <br/><br/>/yiming/trinoo/master/...: possible IP list file <br/><br/>NOTE: This message is based on the filename being suspicious, and is not <br/><br/>based on an analysis of the file contents. It is up to you to examine the <br/><br/>file and decide whether it is actually an IP list file related to a DDOS <br/><br/>tool. <br/><br/>/yiming/stacheldrahtV4/leaf/td: stacheldraht daemon <br/><br/>/yiming/stacheldrahtV4/telnetc/client: stacheldraht client <br/><br/>/yiming/stacheldrahtV4/td: stacheldraht daemon <br/><br/>/yiming/stacheldrahtV4/client: stacheldraht client <br/><br/>/yiming/stacheldrahtV4/mserv: stacheldraht master <br/>ALERT: One or more DDOS tools were found on your system. <br/><br/>lease examine LOG and take appropriate action.<br/></font></td></tr></tbody></table>看来这台设备的攻击守护程序还不少呢,系统管理员要注意啦! <br/>这个软件可从下面的地址得到<a href="http://www.fbi.gov/nipc/trinoo.htm" target="_blank"><font color="#0084cf">http://www.fbi.gov/nipc/trinoo.htm</font></a> 。<br/>其次,封掉不必要的UDP服务,如echo,chargen,减少udp攻击的入口。<br/>第三,在路由器连接骨干网络的端口结合采用CEF和ip verify unicast reverse-path,挡住一部分ip spoof,syn的攻击。同时使用access control lists将可能被使用的网络保留地址封掉。 借助使用CAR技术来限制 ICMP 报文大小。具体使用可查阅cisco网站。<br/>第四,在敏感主机如www服务器使用ip filter软件。<br/>截至目前,实际很彻底的防御手段还没有出现,但采用上述做法可以较大地减小不安全性。 <br/>Internet的发展,永远是一场不会停止的网络安全攻与防的较量。<br/>
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    地板
     楼主| 发表于 2008-1-27 00:25:53 | 只看该作者
    <font color="#ff0000" size="2">(4)DDOS与DDOS追踪的介绍<br/></font>阅读提示:多数的追踪技术都是从最接近victim的路由器开始,然后开始检查上流数据链,直到找到攻击流量发起源。 <br/><strong>链级测试 (Link Testing)</strong>
            <br/>多数的追踪技术都是从最接近victim的路由器开始,然后开始检查上流数据链,直到找到攻击流量发起源。理想情况下,这种过程可以递归执行直到找到攻击源头。这种技术假设攻击一直保持活动直到完成追踪,因此很难在攻击结束后、间歇性攻击或对追踪进行攻击调整等情况进行追踪。包括下面两种链级测试: <br/><strong>1、Input debugging</strong>
            <br/><br/>很多路由器都提供Input debugging特性,这能让管理员在一些出口端过滤特定的数据包,而且能决定可以达到那些入口。这种特性就被用来作traceback:首先,victim在确定被攻击时,要从所有的数据包中描述出攻击包标志。通过这些标志,管理员在上流的出口端配置合适的Input debugging。这个过滤会体现出相关的input端口,这个过滤过程可以一直朝上流进行,直到能够到达最初的源头。当然这种工作很多依靠手工,一些国外的ISP联合开发的工具能够在它们的网络中进行自动的追踪。 <br/><br/>但是这种办法最大的问题就是管理花费。联系多个ISP并同他们合作需要时间。因此这种办法需要大量的时间,而且几乎不可能完成。 <br/><strong>2、Controlled flooding <br/><br/></strong>Burch和 Cheswick提出的方法。这种方法实际上就是制造flood攻击,通过观察路由器的状态来判断攻击路径。首先应该有一张上游的路径图,当受到攻击的时候,可以从victim的上级路由器开始依照路径图对上游的路由器进行控制的flood,因为这些数据包同攻击者发起的数据包同时共享了路由器,因此增加了路由器丢包的可能性。通过这种沿路径图不断向上进行,就能够接近攻击发起的源头。 <br/><br/>这种想法很有独创性而且也很实际,但是有几个缺点和限制。最大的缺点就是这种办法本身就是一种DOS攻击,会对一些信任路径也进行DOS,这个缺点也很难用程序实施。而且,Controlled flooding要求有一个几乎覆盖整个网络的拓扑图。Burch和 Cheswick也指出,这种办法很难用于DDOS攻击的追踪。这种方法也只能对正在进行攻击的情况有效。 <br/>现在CISCO的路由器的CEF(Cisco Express Forwarding)实际上就是一种链级测试,也就是说,要用CEF追踪到最终源头的话,那么整个链路上的路由器都得使用CISCO的路由器,而且支持CEF。就得要Cisco 12000或者7500系列的路由器了。(不知道现在怎么样,没查最新的CISCO文档),但是要用这个功能是很费资源的。 <br/>在CISCO路由器(支持ip source-track的路由器)上IP源追踪以下面的步骤实现: <br/>1、当发现目的被攻击,打开整个路由器上对目的地址的追踪,输入命令 ip source-track。 <br/><br/>2、每个Line Card为要追踪的目的地址创建特定的CEF队列。对于line card或者端口适配器用特定的ASIC作包转换,CEF队列用于将包置入line card或者port adapter的CPU。 <br/><br/>3、每个line card CPU收集关于要追踪目的的通讯信息 <br/><br/>4、所产生的数据定时导出到路由器。要现实这些流信息的摘要,输入命令:show ip source-track summary。要显示每个输入接口的更多的细节信息,输入命令show ip source-track <br/><br/>5、统计被追踪的IP地址的细目表。这可用于上游路由器继续分析。可以在当前路由器上关闭IP source tracker,输入命令:no ip source-track。然后在上游路由器上再打开这个功能。 <br/><br/>6、重复步骤1到5,直到找到攻击源。 <br/>这差不多能够解答securitytest提的了吧。 <br/><strong>Logging </strong><br/>这种方法通过在主路由器上记录数据包,然后通过数据采集技术来决定这些数据包的穿越路径。虽然这种办法可以用于对攻击后的数据进行追踪,它也有很明显的缺点,比如可能要求大量的资源(或者取样),并且对付大量数据的综合问题。 <br/><strong>ICMP追踪</strong>
            <br/>这种方法主要依靠路由器自身产生的ICMP跟踪消息。每个路由器都有很低的概率(比如:1/200000),数据包可能会把内容复制到一个ICMP消息包中,并且包含了到临近源地址的路由器信息。当flood攻击开始的时候,victim就可以利用这些ICMP消息来重新构造攻击者的路径。这种方式同上面介绍的比较,有很多优点,但是也有一些缺点。比如:ICMP可能被从普通流量中过滤掉,并且,ICMP追踪消息还要同input debugging特性(将数据包同数据包input端口和/或者要到达的MAC地址关联的能力)相关,但是,可能一些路由器就没有这样的功能。同时,这种办法还必须有一种办法来处理攻击者可能发送的伪造ICMP Traceback消息。也就是说,我们可以把这种方式同其他办法一起使用来让跟踪机制更有效。(IETF iTrace) <br/>这就是yawl说的IETF的工作组研究的内容,当时我给Bellovin提出一些意见,但是没有得到答案。比如: <br/><br/>1、尽管是随机1/20000发送追踪包,但是,对于伪造TRACEBACK的包情况下,对路由器的效率将有一定的影响。 <br/><br/>2、追踪包的认证并不能解决伪造问题。因为要判别是否是伪造包,那么必须去认证,加大了工作量。 <br/><br/>3、即便使用NULL 认证,同样能够达到目的(有认证的情况下)。而且也不会有太大影响。 <br/><br/>4、itrace的本来目的是去对付DOS的欺骗源问题,但是现在的设计仿佛让我们更关心的是路径而不是源头。难道路径比源头更对我们解决DOS问题有用么? <br/>等等,还有一堆问题,都是我觉得iTrace将会面临的很难处理的问题。 <br/>
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    7
     楼主| 发表于 2008-1-27 00:26:08 | 只看该作者
    <strong>数据包标记</strong>
            <br/>这种技术构想(因为现在没有实用)就是要在现有协议的基础上进行修改,而且修改很小,不象iTrace的想法,个人认为比iTrace更好一些。这种追踪技术有很多细节研究,形成多种标记算法,但是最好的还是经过压缩的边缘取样算法。 <br/>这种技术原理就是修改IP头中,重载其中的identification域。也就是如果没有使用到identification域的话,将这个域定义为标记。 <br/>将16bit的idnetification分成:3bit的offset(可允许8次分片),5bit的distance,以及8bit的边缘分片。5bit的distance可以允许31级路由,这对于目前的网络来说已经足够了。 <br/>标记和重构路径的算法是: <table class="t_table" width="400" align="center"><tbody><tr><td>Marking procedure at router R: <br/><br/>let R' = BitIntereave(R, Hash(R)) <br/><br/>let k be the number of none-overlappling fragments in R' <br/><br/>for each packet w <br/><br/>let x be a random number from [0..1) <br/><br/>if x&lt then <br/>let o be a random integer from [0..k-1] <br/><br/>let f be the fragment of R' at offset o <br/><br/>write f into w.frag <br/><br/>write 0 into w.distance <br/><br/>wirte o into w.offset <br/><br/>else <br/><br/>if w.distance=0 then <br/><br/>let f be the fragment of R' at offset w.offset <br/><br/>write f?w.frag into w.frag <br/><br/>increment w.distance Path reconstruction procedure at victim v: let FragTbl be a table of tuples(frag,offset,distance) <br/><br/>let G be a tree with root v <br/><br/>let edges in G be tuples(start,end,distance) <br/><br/>let maxd:=0 <br/><br/>let last:=v <br/><br/>for each packet w from attacker <br/><br/>FragTbl.Insert(w.frag,w.offset,w.distance) <br/><br/>if w.distance&gt;maxd then <br/><br/>maxd:=w.distance <br/><br/>for d:=0 to maxd <br/><br/>for all ordered combinations of fragments at distance d <br/><br/>construct edge z <br/><br/>if d!=0 then <br/><br/>z:= z?last <br/><br/>if Hash(EvenBits(z))=OddBits(z) then <br/><br/>insert edge(z,EvenBits(z),d) into G <br/><br/>last:=EvenBits(z); <br/><br/>remove any edge(x,y,d) with d!=distance from x to v in G <br/><br/>extract path(Ri..Rj) by enumerating acyclic paths in G </td></tr></tbody></table>实验室情况下这种标记技术只需要victim能够抓到1000到2500个包就能够重构整个路径了,应该说结果是很好的,但是没有投入到实用中,主要是需要路由器厂商和ISP支持。 <br/>差不多ip traceback的已经实用的技术和实验室技术,或者已经死掉的,就主要是这些,虽然还有其他的一些。<br/>已经很长时间没有搞DDOS防范这一块了,国内也有黑洞这样的产品,以前也了解一些国外的,比如floodguard、toplayer、radware等。受securitytest提示,又了解到riverhead的,我就立刻看了看他们的白皮书。 <br/>因为前面bigfoot提出的主要是ip traceback的题目,securitytest也又到防御的问题。针对DDOS的问题ip traceback和Mitigation是不一样的,ip traceback主要是进行追踪,因为DDOS主要是spoof,而很难判别到真正的攻击源,而且如果能够很容易找到真正的攻击源,不仅仅对付DDOS,对付其他的攻击也很有帮助,比如法律问题等。而Mitigation是从受害者的角度,因为victim一般是没有能力去调查整个网络,找出source,而且,即便能够找到source,也得有法律或者一些沟通的手段来让source停下来(攻击的source并不是source的攻击者),这种意味着大量的沟通、跨ISP、跨过等类似的非技术问题,所以,通常很难处理。但是从victim的角度来说,必须得有所解决办法,所以就需要Mitigation。 <br/>这又正好是我以前研究的范围,所以,又会说出一大堆。对于Mitigation,其实,技术的根本就是要能从众多的流量中将攻击包和合法包分离出来,把攻击包抛弃掉,让合法包通过就性了。这就是根本,所以实际运用的技术就是要如何尽可能识别出攻击包,而又尽可能小地影响正常包。这又得来分析DDOS(甚至DOS)的方式和原理。基本又下面几种形式: <br/>1、系统漏洞形成的DOS。这种特征固定,检测和防御也容易 <br/><br/>2、协议攻击(一些跟系统处理相关,一些跟协议相关)。比如SYN FLOOD,碎片等。特征还好识别,检测和防御相对容易。比如SYN COOKIE、SYN CACHE,碎片可以抛弃。比如land攻击、smurf、teardrop等 <br/><br/>3、bandwidth FLOOD。垃圾流量堵塞带宽,特征不好识别,防御不容易 <br/><br/>4、基本合法的FLOOD。比3更难了,比如分布的Slashdot 。 <br/><br/>实际的DDOS,一般都是多种方式结合的。比如SYNFLOOD,可能同时是bandwidth FLOOD。 <br/>影响防御的主要因素就是看特征是否能得到,比如1、2就相对好解决,一些基本不影响的使用的FLOOD,则可以很好被抛弃,比如ICMP FLOOD。但是,攻击发包工具如果将数据包更能伪装成合法包,那么就很难识别出来了。 <br/><br/>一般的Mitigation方法也就是: <br/>1、Filter。对于特征明显的,比如一些蠕虫等,在路由器上就可以搞定。当然,过滤是最终解决办法,只要识别出了攻击包,就是要把这些包过滤掉。 <br/><br/>2、随机丢包。跟随机算法相关,好的算法可以让合法包受到更小影响 <br/><br/>3、SYN COOKIE、SYN CACHE等特定防御办法。针对一些固定的攻击手段来防御和过滤。比如ICMP FLOOD、UDP FLOOD。SYN COOKIE等都是避免spoof问题,至少TCP还有三次握手,所以还好判断SPOOF <br/><br/>4、被动消极忽略。可以说也是一种确认是否被欺骗的办法。一般正常连接失败会重新尝试,但是攻击者一般不会尝试的。所以可以临时抛弃第一次连接请求而接受第二次或者第三次连接请求。 <br/><br/>5、主动发送RST。对付SYN FLOOD的,比如一些IDS上。当然,实际不
  • TA的每日心情
    开心
    2012-1-26 14:07
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    升级  0.01%

    8
    发表于 2011-7-3 08:32:51 | 只看该作者
    谢谢楼主啊!
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-6 04:37

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

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