首页 电脑学院 黑客教程 网站技术 网页特效 免费论文 公文写作 演讲发言 实用文档 职场指南 时尚生活 情感男女 其他资讯

您的位置:首页-> 网站技术-> 服务器技术-> ICMP详解
ICMP详解

    TCP和UDP能承载数据,但ICMP仅包含控制信息。因此,ICMP信息不能真正用于入侵其它机器。Hacker们使用ICMP通常是为了扫描网络,发动DoS攻击,重定向网络交通。(这个观点似乎不正确,可参考shotgun关于木马的文章,译者注)

  一些防火墙将ICMP类型错误标记成端口。要记住,ICMP不象TCP或UDP有端口,但它确实含有两个域:类型(type)和代码(code)。而且这些域的作用和端口也完全不同,也许正因为有两个域所以防火墙常错误地标记了他们。更多关于ICMP的知识请参考Infosec Lexicon entry on ICMP。
  关于ICMP类型/代码的含义的官方说明请参阅http://www.isi.edu/in-notes/iana/assignments/icmp-parameters。该文献描述官方含义,而本文描述Hacker的企图,详见下文。

类型 代码 名称 含义
0 * Echo replay 对ping的回应
3 * Destination Unreachable 主机或路由器返回信息:一些包未达到目的地
0 Net Unreachable 路由器配置错误或错误指定IP地址
1 Host Unreachable 最后一个路由器无法与主机进行ARP通讯
3 Port unreachable 服务器告诉客户端其试图联系的端口无进程侦听
4 Fragmentation Needed but DF set 重要:如果你在防火墙丢弃记录中发现这些包,你应该让他们通过否则你的客户端将发现TCP连接莫名其妙地断开
4 * Source Quench Internet阻塞
5 * Redirect 有人试图重定向你的默认路由器,可能Hacker试图对你进行“man-in-middle”的攻击,使你的机器通过他们的机器路由。
8 * Echo Request ping
9 * Router Advertisement hacker可能通过重定向你的默认的路由器DoS攻击你的Win9x 或Solaris。邻近的Hacker也可以发动man-in-the-middle的攻击
11 * Time Exceeded In Transit 因为超时包未达到目的地
0 TTL Exceeded 因为路由循环或由于运行traceroute,路由器将包丢弃
1 Fragment reassembly timeout 由于没有收到所有片断,主机将包丢弃
12 * Parameter Problem 发生某种不正常,可能遇到了攻击
(一) type=0 (Echo reply)

发送者在回应由你的地址发送的ping,可能是由于以下原因:
有人在ping那个人:防火墙后面有人在ping目标。

自动ping:许多程序为了不同目的使用ping,如测试联系对象是否在线,或测定反应时间。很可能是使用了类似VitalSign‘s Net.Medic的软件,它会发送不同大小的ping包以确定连接速度。

诱骗ping扫描:有人在利用你的IP地址进行ping扫描,所以你看到回应。

转变通讯信道:很多网络阻挡进入的ping(type=8),但是允许ping回应(type=0)。因此,Hacker已经开始利用ping回应穿透防火墙。例如,针对internet站点的DdoS攻击,其命令可能被嵌入ping回应中,然后洪水般的回应将发向这些站点而其它Internet连接将被忽略。

(二) Type=3 (Destination Unreachable)

在无法到达的包中含有的代码(code)很重要
记住这可以用于击败“SYN洪水攻击”。即如果正在和你通讯的主机受到“SYN洪水攻击”,只要你禁止ping(type=3)进入,你就无法连接该主机。

有些情况下,你会收到来自你从未听说的主机的ping(type=3)包,这通常意味着“诱骗扫描”。攻击者使用很多源地址向目标发送一个伪造的包,其中有一个是真正的地址。Hacker的理论是:受害者不会费力从许多假地址中搜寻真正的地址。

解决这个问题的最好办法是:检查你看到的模式是否与“诱骗扫描”一致。比如,在ICMP包中的TCP或UDP头部分寻找交互的端口。

1) Type = 3, Code = 0 (Destination Net Unreachable)
无路由器或主机:即一个路由器对主机或客户说,:“我根本不知道在网络中如何路由!包括你正连接的主机”。这意味着不是客户选错了IP地址就是某处的路由表配置错误。记住,当你把自己UNIX机器上的路由表搞乱后你就会看到“无路由器或主机”的信息。这常发生在配置点对点连接的时候。
2) Type = 3, Code = 3 (Destination Port Unreachable)
这是当客户端试图连击一个并不存在的UDP端口时服务器发送的包。例如,如果你向161端口发送SNMP包,但机器并不支持SNMP服务,你就会收到ICMP Destination Port Unreachable包。

解码的方案

  解决这个问题的第一件事是:检查包中的端口。你可能需要一个嗅探器,因为防火墙通常不会记录这种信息。这种方法基于ICMP原始包头包含IP和UDP头。以下是复制的一个ICMP unreachable包:

00 00 BA 5E BA 11 00 60 97 07 C0 FF 08 00 45 00
00 38 6F DF 00 00 80 01 B4 12 0A 00 01 0B 0A 00
01 C9 03 03 C2 D2 00 00 00 00 45 00 00 47 07 F0
00 00 80 11 1B E3 0A 00 01 C9 0A 00 01 0B 08 A7
79 19 00 33 B8 36

其中字节03 03是ICMP的类型和代码。最后8个字节是原始UDP头,解码如下:
08A7 UDP源端口 port=2215,可能是临时分配的,并不是很重要。
7919 UDP目标端口 port=31001,很重要,可能原来用户想连接31001端口的服务。
0033 UDP长度 length=51,这是原始UDP数据的长度,可能很重要。
B836 UDP校验和 checksum=0xB836,可能不重要。

你为什么会看到这些?

  “诱骗UDP扫描”:有人在扫描向你发送ICMP的机器。他们伪造源地址,其中之一是你的IP地址。他们实际上伪造了许多不同的源地址使受害者无法确定谁是攻击者。如果你在短时间内收到大量来自同一地址的这种包,很有可能是上述情况。检查UDP源端口,它总在变化的话,很可能是Scenario。
“陈旧DNS”:客户端会向服务器发送DNS请求,这将花很长时间解析。当你的DNS服务器回应的时候,客户端可能已经忘记你并关闭了用于接受你回应的UDP端口。如果发现UDP端口值是53,大概就发生了这种情况。这是怎么发生的?服务器可能在解析一个递归请求,但是它自己的包丢失了,所以它只能超时然后再试。当回到客户时,客户认为超时了。许多客户程序(尤其是Windows中的程序)自己做DNS解析。即它们自己建立SOCKET进行DNS解析。如果它们把要求交给操作系统,操作系统就会一直把端口开在那里。

  “多重DNS回应”:另一种情况是客户收到对于一个请求的多重回应。收到一个回应,端口就关闭了,后序的回应无法达到。此外,一个Sun机器与同一个以太网中的多个NICs连接时,将为两个NICs分配相同的MAC地址,这样Sun机器每桢会收到两个拷贝,并发送多重回复。还有,一个编写的很糟糕的客户端程序(特别是那些吹嘘是多线程DNS解析但实际上线程不安全的程序)有时发送多重请求,收到第一个回应后关闭了Socket。但是,这也可能是DNS欺骗,攻击者既发送请求由发送回应,企图使解析缓存崩溃。

  “NetBIOS解析”:如果Windows机器接收到ICMP包,看看UDP目标端口是否是137。如果是,那就是windows机器企图执行gethostbyaddr()函数,它将将会同时使用DNS和NetBIOS解析IP地址。DNS请求被发送到某处的DNS服务器,但NetBIOS直接发往目标机器。如果目标机器不支持NetBIOS,目标机器将发送ICMP unreachable。

  “Traceroute”:大多数Traceroute程序(Windows中的Tracert.exe除外)向关闭的端口发送UDP包。这引起一系列的背靠背的ICMP Port Unreachable包发回来。因此你看到防火墙显示这样ICMP包,可能是防火墙后面的人在运行Traceroute。你也会看到TTL增加。


3) Type = 3, Code = 4 (Fragmentation Needed and Don‘t Fragment was Set)

  这是由于路由器打算发送标记有(DF, 不允许片断)的IP报文引起的。为什么?IP和TCP都将报文分成片断。TCP在管理片断方面比IP有效得多。因此,饯堆趋向于找到“Path MTU”(路由最大传输单元)。在这个过程将发送这种ICMP包。

  假设ALICE和BOB交谈。他们在同一个以太网上(max frame size = 1500 bytes),但是中间有连接限制最大IP包为600 byte。这意味着所有发送的IP包都要由路由器切割成3个片断。因此在TCP层分割片断将更有效。TCP层将试图找到MTU(最大传输单元)。它将所有包设置DF位(Don‘t Fragment),一旦这种包碰到不能传输如此大的包的路由器时路由器将发回ICMP错误信息。由此,TCP层能确定如何正确分割片断。

  你也许应该允许这些包通过防火墙。否则,当小的包可以通过达到目的地建立连接,而大包会莫名其妙的丢失断线。通常的结果是,人们只能看到Web页仅显示一半。
路由最大传输单元的发现越来越整合到通讯中。如IPsec需要用到这个功能。

(三) Type = 4 (Source Quench)

  这种包可能是当网络通讯超过极限时由路由器或目的主机发送的。但是当今的许多系统不生成这些包。原因是现在相信简单包丢失是网络阻塞的最后信号(因为包丢失的原因就是阻塞)。

现在source quenches的规则是(RFC 1122):
路由器不许生成它们
主机可以生成它们
主机不能随便生成它们
防火墙应该丢弃它们

  但是,主机遇到Source Quench仍然减慢通讯,因此这被用于DoS。防火墙应该过滤它们。如果怀疑发生DoS,包中的源地址是无意义的,因为IP地址肯定是虚构的。

已知某些SMTP服务器会发送Source Quench。

(四) Type = 8 (Echo aka PING)

  这是ping请求包。有很多场合使用它们;它可能意味着某人扫描你机器的恶意企图,但它也可能是正常网络功能的一部分。参见Type = 0 (Echo Response)

  很多网络管理扫描器会生成特定的ping包。包括ISS扫描器,WhatsUp监视器等。这在扫描器的有效载荷中可见。许多防火墙并不记录这些,因此你需要一些嗅探器捕捉它们或使用入侵检测系统(IDS)标记它们。
记住,阻挡ping进入并不意味着Hacker不能扫描你的网络。有许多方法可以代替。例如,TCP ACK扫描越来越流行。它们通常能穿透防火墙而引起目标系统不正常的反应。

发送到广播地址(如x.x.x.0或x.x.x.255)的ping可能在你的网络中用于smurf放大。

(五) Type = 11 (Time Exceeded In Transit)

这一般不会是Hacker或Cracker的攻击

1) Type = 11, Code = 0 (TTL Exceeded In Transit)

  这可能有许多事情引起。如果有人从你的站点traceroute到Internet,你会看到许多来自路由器的TTL增加的包。这就是traceroute的工作原理:强迫路由器生成TTL增加的信息来发现路由器。

  防火墙管理员看到这种情况的原因是Internet上发生路由循环。路由器Flapping(持续变换路由器)是一个常见的问题,常会导致循环。这意味着当一个IP包朝目的地前进时,这个包被一个路由器错误引导至一个它曾经通过的路由器。如果路由器在包经过的时候把TTL域减一,这个包只好循环运动。实际上当TTL值为0时它被丢弃。

  造成这种情况的另一个原因是距离。许多机器(Windows)的默认TTL值是127或更低。路由器也常常会把TTL值减去大于1的值,以便反应诸如电话拨号或跨洋连接的慢速连接。因此,可能由于初始TTL值太小,而使站点无法到达。此外,一些Hacker/Cracker也会使用这种办法使站点无法到达。

2) Type = 11, Code = 1 (Fragment Reassembly Time Exceeded)
当发送分割成片断的IP报文时,发送者并不接收所有片断。通常,大多数TCP/IP通讯甚至不分割片断。你看到这种情况必定是采用了分割片断而且你和目的地之间有阻塞。

(六) Type = 12 (Parameter Problem)
这可能意味着一种进攻。有许多足印技术会生成这种包。



在百度中查找更多ICMP详解的内容
职场宝典   职场故事   职场跳槽   职场文化   职场理财   职场充电   情感天地   职场女性   职场礼仪   职场新人
报告总结   述职报告 工作总结 调查报告 工作汇报 计划方案 个人总结 社会实践 规章制度 调研报告 
  实习报告 考察报告 辞职报告 
演讲发言   竞职演说   就职演说   精彩演说   爱国演讲   英语演讲   十七大演讲   安全生产演讲稿   
节日祝福   重阳节 国庆节 教师节 中秋节 情人节 七夕节 劳动节 妇女节 清明节 愚人节 春节 元旦 圣诞节  儿童节  端午节 母亲节 新婚祝福 生日祝福 
讲话致辞   开业开幕   会议主持   庆典致辞   会议发言   党风廉政   党政报告   贺电慰问   婚丧嫁娶   思想宣传
法律常识   基本常识   法律文书   权益常识   劳动保障   婚姻继承   民事诉讼   刑事诉讼   
党建材料   入党申请   思想学习   党性分析   思想汇报   转正申请   民主生活   党委党建   入团申请   申报材料
求职简历   个人简历   求职自荐   求职谋略   面试技巧   求职英语   自我鉴定   英文简历   简历封面
心得体会   心得体会   经验交流   读后感   
时政热点   和谐社会   先进性教育   新农村建设   十七大   八荣八耻   科学发展观   劳动合同法   
人际沟通   社交技巧   社交礼仪   口才技巧   谈话技巧   演讲技巧   
营销技巧   电话销售   网络销售   推销技巧   促销技巧   销售口才   营销手段   销售技巧   谈判技巧   

“ ICMP详解”来源于网络,版权归作者所有!勿用于商业用途。

服务器技术

ASP技术
PHP技术
JSP技术
.NET技术
服务器技术
数据库开发
其它类

本类阅读TOP10

·DNS服务器配置
·ICMP详解
·用MDaemon搭建邮件服务器
·跟我学用Foxmail收Hotmail邮件
·域名和邮件服务器FAQ
·Windows2003技巧
·邮件-域名-DNS相关知识
·发送邮件常见出错代码
·在unix linux下安装配置DHCP服务
·怎么样才能够做好一个网站

广告


关于本站|服务条款|广告服务|客服中心|发布文章|网站留言