<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[听公司讲tcp IP课的一些记录]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 29 Apr 2009 11:40:21 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	FRAME ICMP IP UDP TCP <br/>traceroute 数据传输路径<br/>ping 一般用ICMP协议，定制可以使用IP ICMP<br/><br/>ping 192.168.0.1 -n -c l -s 65527<br/>tranceroute -n -I 10.210.121.128 <br/>tcpdump -n -s o -l eth0 icmp<br/>ifconfig eth0&amp;#124;grep inet<br/>ping -b -n -c l&nbsp;&nbsp; 192.168.0.1 <br/><br/>[root@vm0000055 templates]# ping -c 1 -s 65535 192.168.0.1 <br/>Error: packet size 65535 is too large. Maximum is 65507<br/><br/><br/>常见 IP 碎片攻击详解<br/><br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/>常见 IP 碎片攻击详解 <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/>January 11, 2002 <br/> <br/>Sinbad&nbsp;&nbsp;Technical&nbsp;&nbsp;Publications <br/>Website:&nbsp;&nbsp;http://sinbad.zhoubin.com <br/>©&nbsp;&nbsp;Copyright&nbsp;&nbsp;2002,&nbsp;&nbsp;All&nbsp;&nbsp;Rights&nbsp;&nbsp;Reserved <br/>&nbsp;&nbsp;<br/>Sinbad Technical Publications&nbsp;&nbsp;&nbsp;&nbsp;Page 1 <br/> <br/> <br/>本文简单介绍了 IP 分片原理，并结合 Snort 抓包结果详细分析常见 IP 碎片攻<br/>击的原理和特征，最后对阻止 IP 碎片攻击给出一些建议。希望对加深理解 IP<br/>协议和一些 DoS攻击手段有所帮助。 <br/> <br/> <br/>1.&nbsp;&nbsp;为什么存在 IP 碎片 <br/> <br/>链路层具有最大传输单元 MTU 这个特性，它限制了数据帧的最大长度，不同<br/>的网络类型都有一个上限值。以太网的MTU 是 1500，你可以用&nbsp;&nbsp;netstat&nbsp;&nbsp;-i&nbsp;&nbsp;命<br/>令查看这个值。如果 IP层有数据包要传，而且数据包的长度超过了 MTU，那<br/>么 IP 层就要对数据包进行分片（fragmentation）操作，使每一片的长度都小<br/>于或等于 MTU。 <br/> <br/>我们假设要传输一个 UDP 数据包，以太网的 MTU 为 1500字节，一般 IP首部<br/>为 20 字节，UDP 首部为 8 字节，数据的净荷（payload）部分预留是<br/>1500-20-8=1472字节。如果数据部分大于 1472 字节，就会出现分片现象。 <br/> <br/>IP 首部包含了分片和重组所需的信息： <br/> <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <br/>&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Identification&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;R&amp;#124;DF&amp;#124;MF&amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fragment Offset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <br/>&nbsp;&nbsp; &amp;#124;&lt;-------------16-------------&gt;&amp;#124;&lt;----3---&gt;&amp;#124;&lt;------------------13-----------------&gt;&amp;#124;&nbsp;&nbsp;<br/> <br/>Identification：发送端发送的 IP 数据包标识字段都是一个唯一值，该值在分片<br/>时被复制到每个片中。 <br/> <br/>R：保留未用。 <br/> <br/>DF：Don&#039;t Fragment， “不分片”位，如果将这一比特置 1&nbsp;&nbsp;，IP层将不对数据<br/>报进行分片。 <br/> <br/>MF：More Fragment， “更多的片” ，除了最后一片外，其他每个组成数据报的<br/>片都要把该比特置 1。 <br/> <br/>Fragment&nbsp;&nbsp;Offset：该片偏移原始数据包开始处的位置。偏移的字节数是该值乘<br/>以 8。 <br/> <br/>另外，当数据报被分片后，每个片的总长度值要改为该片的长度值。 <br/>&nbsp;&nbsp;<br/>Sinbad Technical Publications&nbsp;&nbsp;&nbsp;&nbsp;Page 2 <br/> <br/> <br/>每一 IP 分片都各自路由，到达目的主机后在 IP 层重组，请放心，首部中的数<br/>据能够正确完成分片的重组。你不禁要问，既然分片可以被重组，那么所谓的<br/>碎片攻击是如何产生的呢？ <br/> <br/> <br/>2. IP 碎片攻击 <br/> <br/>IP 首部有两个字节表示整个 IP 数据包的长度，所以 IP 数据包最长只能为<br/>0xFFFF，就是 65535 字节。如果有意发送总长度超过 65535 的 IP碎片，一些<br/>老的系统内核在处理的时候就会出现问题，导致崩溃或者拒绝服务。另外，如<br/>果分片之间偏移量经过精心构造，一些系统就无法处理，导致死机。 <br/> <br/>所以说，漏洞的起因是出在重组算法上。下面我们逐个分析一些著名的碎片攻<br/>击程序，来了解如何人为制造 IP碎片来攻击系统。 <br/> <br/> <br/>3. ping o&#039; death <br/> <br/>ping&nbsp;&nbsp;o&#039;&nbsp;&nbsp;death 是利用 ICMP 协议的一种碎片攻击。攻击者发送一个长度超过<br/>65535 的 Echo Request数据包，目标主机在重组分片的时候会造成事先分配的<br/>65535 字节缓冲区溢出，系统通常会崩溃或挂起。ping不就是发送 ICMP Echo <br/>Request数据包的吗？让我们尝试攻击一下吧！不管 IP和 ICMP首部长度了，<br/>数据长度反正是多多益善，就 65535吧，发送一个包： <br/> <br/># ping -c 1 -s 65535 192.168.0.1 <br/>Error: packet size 65535 is too large. Maximum is 65507 <br/> <br/>不走运，看来 Linux自带的 ping不允许我们做坏事。:( <br/> <br/>65507 是它计算好的：65535-20-8=65507。Win2K下的 ping更抠门，数据只允<br/>许 65500大小。所以你必须找另外的程序来发包，但是目前新版本的操作系统<br/>已经搞定这个缺陷了，所以你还是继续往下阅读本文吧。 <br/> <br/>顺便提一下，记得 99年有“爱国主义黑客” （“红客”的前辈）发动全国网民在<br/>某一时刻开始 ping 某美国站点，试图 ping 死远程服务器。这其实是一种 ping <br/>flood 攻击，用大量的 Echo Request 包减慢主机的响应速度和阻塞目标网络，&nbsp;&nbsp;<br/>Sinbad Technical Publications&nbsp;&nbsp;&nbsp;&nbsp;Page 3 <br/> <br/>原理和 ping o&#039; death是不一样的，这点要分清楚。 <br/> <br/> <br/>4. jolt2 <br/> <br/>jolt2.c 是在一个死循环中不停的发送一个 ICMP/UDP 的 IP 碎片，可以使<br/>Windows 系统的机器死锁。我测试了没打 SP 的 Windows&nbsp;&nbsp;2000，CPU 利用率<br/>会立即上升到 100%，鼠标无法移动。 <br/> <br/>我们用 Snort分别抓取采用 ICMP和 UDP 协议发送的数据包。 <br/> <br/>发送的 ICMP 包： <br/>01/07-15:33:26.974096 192.168.0.9 -&gt; 192.168.0.1 <br/>ICMP TTL:255 TOS:0x0 ID:1109 IpLen:20 DgmLen:29 <br/>Frag Offset: 0x1FFE&nbsp;&nbsp;&nbsp;&nbsp;Frag Size: 0x9 <br/>08 00 00 00 00 00 00 00 00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;......... <br/> <br/>发送的 UDP 包： <br/>01/10-14:21:00.298282 192.168.0.9 -&gt; 192.168.0.1 <br/>UDP TTL:255 TOS:0x0 ID:1109 IpLen:20 DgmLen:29 <br/>Frag Offset: 0x1FFE&nbsp;&nbsp;&nbsp;&nbsp;Frag Size: 0x9 <br/>04 D3 04 D2 00 09 00 00 61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;........a <br/> <br/>从上面的结果可以看出： <br/> <br/>*&nbsp;&nbsp;分片标志位 MF=0，说明是最后一个分片。 <br/>*&nbsp;&nbsp;偏移量为 0x1FFE， 计算重组后的长度为&nbsp;&nbsp;(0x1FFE * 8) + 29 = 65549 &gt; 65535，<br/>溢出。 <br/>* IP包的 ID 为 1109，可以作为 IDS检测的一个特征。 <br/>* ICMP包： <br/>&nbsp;&nbsp; 类型为 8、代码为 0，是 Echo Request； <br/>&nbsp;&nbsp; 校验和为 0x0000， 程序没有计算校验， 所以确切的说这个 ICMP包是非法的。&nbsp;&nbsp;<br/>* UDP 包： <br/>&nbsp;&nbsp; 目的端口由用户在命令参数中指定； <br/>&nbsp;&nbsp; 源端口是目的端口和 1235进行 OR的结果； <br/>&nbsp;&nbsp; 校验和为 0x0000，和 ICMP的一样，没有计算，非法的 UDP。 <br/>&nbsp;&nbsp; 净荷部分只有一个字符&#039;a&#039;。 <br/> <br/>jolt2.c 应该可以伪造源 IP 地址，但是源程序中并没有把用户试图伪装的 IP 地<br/>址赋值给 src_addr，不知道作者是不是故意的。 <br/>&nbsp;&nbsp;<br/>Sinbad Technical Publications&nbsp;&nbsp;&nbsp;&nbsp;Page 4 <br/> <br/> <br/>jolt2的影响相当大，通过不停的发送这个偏移量很大的数据包，不仅死锁未打<br/>补丁的 Windows 系统，同时也大大增加了网络流量。曾经有人利用 jolt2 模拟<br/>网络流量，测试 IDS 在高负载流量下的攻击检测效率，就是利用这个特性。 <br/> <br/> <br/>5. teardrop <br/> <br/>teardrop 也比较简单，默认发送两个 UDP 数据包，就能使某些 Linux 内核崩<br/>溃。Snort抓取的结果如下： <br/> <br/>第一个： <br/>01/08-11:42:21.985853 192.168.0.9 -&gt; 192.168.0.1 <br/>UDP TTL:64 TOS:0x0 ID:242 IpLen:20 DgmLen:56 MF <br/>Frag Offset: 0x0&nbsp;&nbsp;&nbsp;&nbsp;Frag Size: 0x24 <br/>A0 A8 86 C7 00 24 00 00 00 00 00 00 00 00 00 00&nbsp;&nbsp; .....$.......... <br/>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&nbsp;&nbsp; ................ <br/>00 00 00 00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .... <br/> <br/>* MF=1，偏移量=0，分片 IP 包的第一个。 <br/>*&nbsp;&nbsp;结构图： <br/> <br/>&nbsp;&nbsp; &amp;#124;&lt;-------20--------&gt;&amp;#124;&lt;-------8-------&gt;&amp;#124;&lt;------------------28-----------------&gt;&amp;#124; <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <br/>&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UDP&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124; <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ <br/> <br/> <br/>第二个： <br/>01/08-11:42:21.985853 192.168.0.9 -&gt; 192.168.0.1 <br/>UDP TTL:64 TOS:0x0 ID:242 IpLen:20 DgmLen:24 <br/>Frag Offset: 0x3&nbsp;&nbsp;&nbsp;&nbsp;Frag Size: 0x4 <br/>A0 A8 86 C7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .... <br/> <br/>* MF=0，偏移量=0x3，偏移字节数为&nbsp;&nbsp;0x3 * 8 = 24，最后一个分片。 <br/>*&nbsp;&nbsp;结构图： <br/> <br/>&nbsp;&nbsp; &amp;#124;&lt;-------20--------&gt;&amp;#124;&lt;--4--&gt;&amp;#124; <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+ <br/>&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124; Data&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+&nbsp;&nbsp;<br/>Sinbad Technical Publications&nbsp;&nbsp;&nbsp;&nbsp;Page 5 <br/> <br/> <br/>如果修改源代码， 第二片 IP包的偏移量也可以为 0x4， 偏移字节数就是&nbsp;&nbsp;0x4 * 8 <br/>= 32。 <br/> <br/>下面的结构图表示了接收端重组分片的过程，分别对应于偏移字节数为 24 和<br/>32 两种情况： <br/> <br/>&nbsp;&nbsp; &amp;#124;&lt;-------20--------&gt;&amp;#124;&lt;------8------&gt;&amp;#124;&lt;---------------28----------------&gt;&amp;#124; <br/>&nbsp;&nbsp; +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- <br/>&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp; UDP&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp;&nbsp;&nbsp;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&amp;#124; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-+-+-+-+ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&lt;--- ------- 24 ---------&gt;&amp;#124; Data&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-+-+-+-+ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;#124;&lt;--4---&gt;&amp;#124; <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-+-+-+-+- <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&lt;------------------- 32 ---------------&gt;&amp;#124; Data&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-+-+-+-+ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;#124;&lt;----4---&gt;&amp;#124; <br/> <br/>可以看出，第二片 IP 包的偏移量小于第一片结束的位移，而且算上第二片 IP<br/>包的 Data，也未超过第一片的尾部，这就是重叠现象（overlap） 。老的 Linux<br/>内核（1.x&nbsp;&nbsp;- 2.0.x）在处理这种重叠分片的时候存在问题，WinNT/95在接收到<br/>10 至 50 个 teardrop 分片时也会崩溃。你可以阅读 teardrop.c 的源代码来了解<br/>如何构造并发送这种数据包。 <br/> <br/> <br/>6.&nbsp;&nbsp;如何阻止 IP 碎片攻击 <br/> <br/>* Windows系统请打上最新的 Service Pack，目前的 Linux内核已经不受影响。&nbsp;&nbsp;<br/>*&nbsp;&nbsp;如果可能，在网络边界上禁止碎片包通过，或者用 iptables 限制每秒通过碎<br/>片包的数目。 <br/>*&nbsp;&nbsp;如果防火墙有重组碎片的功能，请确保自身的算法没有问题，否则被 DoS就<br/>会影响整个网络。 <br/>* Win2K系统中，自定义 IP安全策略，设置“碎片检查” 。 <br/> <br/>&nbsp;&nbsp;<br/>Sinbad Technical Publications&nbsp;&nbsp;&nbsp;&nbsp;Page 6 <br/> <br/> <br/>7. 参考资料 <br/> <br/>[1] TCP/IP Illustracted Volume 1 : The Protocols <br/>[2] Microsoft Security Bulletin MS00-029: <br/>&nbsp;&nbsp;&nbsp;&nbsp; http://www.microsoft.com/technet/security/bulletin/ms00-029.asp <br/>[3] BugTraq Mailing List, &quot;Analysis of jolt2.c(MS00-029)&quot;: <br/>&nbsp;&nbsp;&nbsp;&nbsp; http://www.securityfocus.com/archive/1/62011 <br/>[4] http://www.attrition.org/security/denial/w/teardrop.dos.html <br/>[5] http://packetstormsecurity.org/0005-exploits/jolt2.c <br/>[6] http://packetstormsecurity.org/Exploit_Code_Archive/teardrop.c <br/> <br/> 
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 听公司讲tcp IP课的一些记录]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>