当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 互联网的巨大威胁 ICMP洪水攻击浅析

安全基础
网络协议分析软件的编写
一个SYN攻击的源程序
彻底清查带毒的Cookie
解析cookie欺骗实现过程及具体应用
从芯认识 浅谈宽带路由器处理芯片
搜索引擎也另类 想搜啥就搜啥
命令提示符恢复本地安全策略小技巧
根据PID查杀木马病毒的适用小方法
网络管理员日志之硬件修理篇
著名黑客Kevin Mitnick谈网络安全
Windows XP 常见的进程列表
网络攻击概览
爱机中毒自救六招
引起网络广播风暴的几种原因
黑客入侵36计
局域网测试及故障排除经验谈
不可忽视的BIOS参数设置
微软IE浏览器非常规修改全攻略(上)
微软IE浏览器非常规修改全攻略(下)
网管十招

安全基础 中的 互联网的巨大威胁 ICMP洪水攻击浅析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 67 ::
收藏到网摘: n/a

 

  几年前的某天晚上9时,两个“大虾”进入一个聊天室,提议里面的50多个网民“去响应号召,做爱国的事”,以下是原话摘录:
  大虾甲:今晚10点,大家一起去ping白宫!
  大虾乙:嗯嗯!ping死白宫!
  网民:怎么做?
  大虾甲:你怎么这么笨?开MS-DOS窗口,输入 ping xxx.xxx.xxx.xxx -l 65500 -t就可以了!
  网民:这样有什么用?
  大虾甲:只要这样做,白宫网站就进不去了。
  网民:哦~~原来如此~~~这样做是什么原理?高手可以解释一下吗?
  大虾甲:这个嘛……还是让他来说吧!
  大虾乙:这个……这个……咳,总之别问这么多,照着做就是了,上头说过好像是什么DOS攻击吧,这样做,白宫网站的服务器就会垮掉。
  大虾甲:总之到时候你们一起这样做就可以了!10点准时开始,我们先去准备了!
  网民:不懂……
  不懂归不懂,当晚10点,爱国的网民们一起用上面“高手”给出的命令开始了雄伟的“爱国反击战”——一场无聊的闹剧!

  他们这样做是什么原理?那样的“攻击”有效吗?要解释这些,就要从ICMP协议说起。

  一、什么是ICMP协议?

  ICMP全称Internet Control Message Protocol(网际控制信息协议)。提起ICMP,一些人可能会感到陌生,实际上,ICMP与我们息息相关。在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。

  二、ICMP报文格式

  ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文(见图表,ICMP报文的结构和几种常见的ICMP报文格式),IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。RFC定义了13种ICMP报文格式,具体如下:

  类型代码 类型描述

  0 响应应答(ECHO-REPLY)
  3 不可到达
  4 源抑制
  5 重定向
  8 响应请求(ECHO-REQUEST)
  11 超时
  12 参数失灵
  13 时间戳请求
  14 时间戳应答
  15 信息请求(*已作废)
  16 信息应答(*已作废)
  17 地址掩码请求
  18 地址掩码应答

  其中代码为15、16的信息报文已经作废。

  下面是几种常见的ICMP报文:

  1.响应请求

  我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

  2.目标不可到达、源抑制和超时报文

  这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

  3.时间戳

  时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

  三、回到正题:这样的攻击有效吗?

  在前面讲过了,ping使用的是ECHO应答,不知道大家注意过没有,ping的返回很慢,用NetXRAY抓包仅为1--5包/秒,这是为什么呢?事实上,ICMP本身并不慢(由于ICMP是SOCK_RAW产生的原始报文,速度比SOCK_STREAM的SYN和SOCK_DGRAM的UDP要快几乎10倍!),这样的速度是ping程序故意延迟的(为什么?M$可不想每个人都能用ping来干