TCP和UDP能承载数据,但ICMP仅包含控制信息。因此,ICMP信息不能真正用于入侵其它机器。Hacker们使用ICMP通常是为了扫描网络,发动DoS攻击,重定向网络交通。(这个观点似乎不正确,可参考shotgun关于木马的文章,译者注) 一些防火墙将ICMP类型错误标记成端口。要记住,ICMP不象TCP或UDP有端口,但它确实含有两个域:类型(type)和代码(code)。而且这些域的作用和端口也完全不同,也许正因为有两个域所以防火墙常错误地标记了他们。更多关于ICMP的知识请参考Infosec Lexicon entry on ICMP。 类型 代码 名称 含义 (一) 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 其中字节03 03是ICMP的类型和代码。最后8个字节是原始UDP头,解码如下: 08A7 UDP源端口 port=2215,可能是临时分配的,并不是很重要。 你为什么会看到这些? “诱骗UDP扫描”:有人在扫描向你发送ICMP的机器。他们伪造源地址,其中之一是你的IP地址。他们实际上伪造了许多不同的源地址使受害者无法确定谁是攻击者。如果你在短时间内收到大量来自同一地址的这种包,很有可能是上述情况。检查UDP源端口,它总在变化的话,很可能是Scenario。
解读防火墙记录
TCP和UDP能承载数据,但ICMP仅包含控制信息。因此,ICMP信息不能真正用于入侵其它机器......
二.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 Inte.net阻塞
5 * Redirect 有人试图重定向你的默认路由器,可能Hacker试图对你进行“man-in-middle”的攻击,使你的机器通过他们的机器路由。
8 * Echo Request ping
9 * Router Advertisement hacker可能通过重定向你的默认的路由器DoS攻击你的Win9x 或Solaris。邻近的Hacker也可以发动man-in-the-middle的攻击
10 * Time Exceeded In Transit 因为超时包未达到目的地
0 TTL Exceeded 因为路由循环或由于运行traceroute,路由器将包丢弃
1 Fragment reassembly timeout 由于没有收到所有片断,主机将包丢弃
11 * Parameter Problem 发生某种不正常,可能遇到了攻击
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
7919 UDP目标端口 port=31001,很重要,可能原来用户想连接31001端口的服务。
0033 UDP长度 length=51,这是原始UDP数据的长度,可能很重要。
B836 UDP校验和 checksum=0xB836,可能不重要。