本文目录一览:
什么是IP分片攻击
常见IP碎片攻击详解
本文简单介绍了IP分片原理,并结合Snort抓包结果详细分析常见IP碎片
攻击的原理和特征,最后对阻止IP碎片攻击给出一些建议。希望对加深理解IP协议和一
些DoS攻击手段有所帮助。
1. 为什么存在IP碎片
-=-=-=-=-=-=-=-=-=-=-=
链路层具有更大传输单元MTU这个特性,它限制了数据帧的更大长度,不
同的 *** 类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看
这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据
包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传
输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,
数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字
节,就会出现分片现象。
IP首部包含了分片和重组所需的信息:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |R|DF|MF| Fragment Offset
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|-------------16--------------|--3--|---------13----------|
Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值
在分片时被复制到每个片中。
R:保留未用。
DF:Don‘t Fragment,“不分片”位,如果将这一比特置1 ,IP层将不对
数据报进行分片。
MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数
据报的片都要把该比特置1。
Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是
该值乘以8。
另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
每一IP分片都各自路由,到达目的主机后在IP层重组,请放心,首部中的
数据能够正确完成分片的重组。你不禁要问,既然分片可以被重组,那么所谓的碎片攻
击是如何产生的呢?
2. IP碎片攻击
-=-=-=-=-=-=-=-=-=-=-=
IP首部有两个字节表示整个IP数据包的长度,所以IP数据包最长只能为
0xFFFF,就是65535字节。如果有意发送总长度超过65535的IP碎片,一些老的系统内核
在处理的时候就会出现问题,导致崩溃或者拒绝服务。另外,如果分片之间偏移量经过
精心构造,一些系统就无法处理,导致死机。所以说,漏洞的起因是出在重组算法上。
下面我们逐个分析一些著名的碎片攻击程序,来了解如何人为制造IP碎片来攻击系统。
3. ping o‘ death
-=-=-=-=-=-=-=-=-=-=-=
ping o‘ death是利用ICMP协议的一种碎片攻击。攻击者发送一个长度超
过65535的Echo Request数据包,目标主机在重组分片的时候会造成事先分配的65535字
节缓冲区溢出,系统通常会崩溃或挂起。ping不就是发送ICMP Echo Request数据包的
吗?让我们尝试攻击一下吧!不管IP和ICMP首部长度了,数据长度反正是多多益善,就
65535吧,发送一个包:
# ping -c 1 -s 65535 192.168.0.1
Error: packet size 65535 is too large. Maximum is 65507
不走运,看来Linux自带的ping不允许我们做坏事。:(
65507是它计算好的:65535-20-8=65507。Win2K下的ping更抠门,数据只
允许65500大小。所以你必须找另外的程序来发包,但是目前新版本的操作系统已经搞
定这个缺陷了,所以你还是继续往下阅读本文吧。
顺便提一下,记得99年有“爱国主义黑客”(“红客”的前辈)发动全国
网民在某一时刻开始ping某美国站点,试图ping死远程服务器。这其实是一种ping
flood攻击,用大量的Echo Request包减慢主机的响应速度和阻塞目标 *** ,原理和
ping o‘ death是不一样的,这点要分清楚。
4. jolt2
-=-=-=-=-=-=-=-=-=-=-=
jolt2.c是在一个死循环中不停的发送一个ICMP/UDP的IP碎片,可以使
Windows系统的机器死锁。我测试了没打SP的Windows 2000,CPU利用率会立即上升到
100%,鼠标无法移动。
我们用Snort分别抓取采用ICMP和UDP协议发送的数据包。
发送的ICMP包:
01/07-15:33:26.974096 192.168.0.9 - 192.168.0.1
ICMP TTL:255 TOS:0x0 ID:1109 IpLen:20 DgmLen:29
Frag Offset: 0x1FFE Frag Size: 0x9
08 00 00 00 00 00 00 00 00 .........
发送的UDP包:
01/10-14:21:00.298282 192.168.0.9 - 192.168.0.1
UDP TTL:255 TOS:0x0 ID:1109 IpLen:20 DgmLen:29
Frag Offset: 0x1FFE Frag Size: 0x9
04 D3 04 D2 00 09 00 00 61 ........a
从上面的结果可以看出:
* 分片标志位MF=0,说明是最后一个分片。
* 偏移量为0x1FFE,计算重组后的长度为 (0x1FFE * 8) + 29 = 65549
65535,溢出。
* IP包的ID为1109,可以作为IDS检测的一个特征。
* ICMP包:
类型为8、代码为0,是Echo Request;
校验和为0x0000,程序没有计算校验,所以确切的说这个ICMP包是非法
的。
* UDP包:
目的端口由用户在命令参数中指定;
源端口是目的端口和1235进行OR的结果;
校验和为0x0000,和ICMP的一样,没有计算,非法的UDP。
净荷部分只有一个字符‘a‘。
jolt2.c应该可以伪造源IP地址,但是源程序中并没有把用户试图伪装的
IP地址赋值给src_addr,不知道作者是不是故意的。
jolt2的影响相当大,通过不停的发送这个偏移量很大的数据包,不仅死
锁未打补丁的Windows系统,同时也大大增加了 *** 流量。曾经有人利用jolt2模拟 ***
流量,测试IDS在高负载流量下的攻击检测效率,就是利用这个特性。
5. teardrop
-=-=-=-=-=-=-=-=-=-=-=
teardrop也比较简单,默认发送两个UDP数据包,就能使某些Linux内核崩
溃。Snort抓取的结果如下:
之一个:
01/08-11:42:21.985853 192.168.0.9 - 192.168.0.1
UDP TTL:64 TOS:0x0 ID:242 IpLen:20 DgmLen:56 MF
Frag Offset: 0x0 Frag Size: 0x24
A0 A8 86 C7 00 24 00 00 00 00 00 00 00 00 00 00
.....$..........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
00 00 00 00 ....
* MF=1,偏移量=0,分片IP包的之一个。
* 结构图:
|-------20--------|------8------|---------------28----------------|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP | UDP | Data
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
第二个:
01/08-11:42:21.985853 192.168.0.9 - 192.168.0.1
UDP TTL:64 TOS:0x0 ID:242 IpLen:20 DgmLen:24
Frag Offset: 0x3 Frag Size: 0x4
A0 A8 86 C7 ....
* MF=0,偏移量=0x3,偏移字节数为 0x3 * 8 = 24,最后一个分片。
* 结构图:
|-------20--------|--4--|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP | Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
如果修改源代码,第二片IP包的偏移量也可以为0x4,偏移字节数就是
0x4 * 8 = 32。
下面的结构图表示了接收端重组分片的过程,分别对应于偏移字节数为24
和32两种情况:
|-------20--------|------8------|---------------28----------------|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP | UDP | Data
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
| +-+-+-+-+
|------------- 24 -------------| Data |
| +-+-+-+-+
|--4--|
|
|
+-+-+-+-+
|-------------------
32 ------------------| Data |
|
+-+-+-+-+
|--4--|
可以看出,第二片IP包的偏移量小于之一片结束的位移,而且算上第二片
IP包的Data,也未超过之一片的尾部,这就是重叠现象(overlap)。老的Linux内核
(1.x - 2.0.x)在处理这种重叠分片的时候存在问题,WinNT/95在接收到10至50个
teardrop分片时也会崩溃。你可以阅读teardrop.c的源代码来了解如何构造并发送这种
数据包。
6. 如何阻止IP碎片攻击
-=-=-=-=-=-=-=-=-=-=-=
* Windows系统请打上最新的Service Pack,目前的Linux内核已经不受影
响。
* 如果可能,在 *** 边界上禁止碎片包通过,或者用iptables限制每秒通
过碎片包的数目。
* 如果防火墙有重组碎片的功能,请确保自身的算法没有问题,否则被
DoS就会影响整个 *** 。
* Win2K系统中,自定义IP安全策略,设置“碎片检查”。
怎么防止 *** 被盗?
【转载他人】
防止 *** 被盗 *** :
之一、 请您尽快将 *** 升级到安全性更完善的最新版本
第二、 为自己的号码申请“密码保护”服务。
第三、 密码要复杂,当然也要方便您记忆。更好是数字加英文加标点符号,8-16位最合适。
第四、 一定要保护好你密码保护填写的email邮箱,建议您填没有POP3的邮箱,因为破邮箱的工具都是支持POP的,信箱的密码也要足够复杂。
第五、在网吧等公共场所上完 *** 后,更好能删除自己号码所在的目录,一般是在 *** 安装目录下面,以自己的 *** 号码命名。注意清空回收站。
第六、 机器更好要有防杀毒,防伪软件更要注意版本更新。
第七、请千万不要下载来路不明的软件,尤其是黑客类、炸弹类软件。以上是防止 *** 被盗的注意事项。
至于想要盗取别人的 *** 这类小人才会去做的事情就别去做了!
1.不要随便把 *** 号告诉别人。
2.输入 *** 密码时更好用软键盘。
3.输入密码时打乱顺序,如:密码是12345678,那输入 时就是先输入5678,再把光标移到5前面,接着输入1234,这样,木马等病毒记下你的密码就是56781234。
4.经常改密码。
5.不要去网吧上网。
6.密码尽量设置的复杂一点。
关于防止密码被木马窃取的 ***
除了OOPS所说前面打一大串0的 *** 外,还可以不按照顺序来打。比如密码是12345,打的时候就先打入1235,再把鼠标移到3的后面,打入4。因为木马截获的是键盘的动作,并不知道鼠标的移动,所以在幕后第三只眼看来,你的密码就是12354了。在公共场所上网时一定要注意这个问题,因为很多网吧机器都被人装了键盘记录器等软件。当然啦,你可以把输入顺序搞得更复杂些,那样别人即使截获一堆数字,也拿它毫无办法了
首先 你在上网的时候( *** 是开着的), 打开了一个网页或者是个刚下载的东西!
没过多久你的 *** 就自动关闭了! 也就是没了! 需要重新登陆 *** ~! 注意!!这个时候!
有200%的可能是你中了木马!~`
原理很简单!~~这个木马自动关闭你的 *** 让你重新登陆 *** 在你登陆 *** 输入密码的时候!
木马就会纪录下你的密码输入轨迹! 按照你输入的轨迹解读出你的密码! 然后自动发送的
他制定的邮箱里!~`这样他就知道了你的密码!
这时候如果你在家 当然是不要马上登陆 *** 拉 用杀毒软件杀掉木马! 就可以咯!
但是你是在网吧的话~~有还原精灵! 就先重起! 然后再登陆 *** ~! 不过 有的木马都有自动
转存功能~~你重起后他一样存在你的电脑里! 这时候怎么办~?~
这里有个小窍门!
注意~~木马盗取你 *** 密码的 *** 是根据你输入的 *** 密码轨迹而辨别出你的 *** 密码的!
所以咱们在输入密码的时候打乱输入密码的顺序!! 比如你的密码是 123456
那你输入密码时候的就不要输入123456了~~就先输入1256 然后把鼠标点到12和56中间 再
输入34~ 这样一来``木马根据你输入的顺序盗取的密码就是 125634~~ 哈哈! 他也就不会
知道你真正的密码~~你的 *** 就安全拉
这个 *** 长期有效! 能保证你 *** 的安全! 平时你上网的时候也可以这样登陆! 随时保护
自己 *** 的安全!
怎么防止 *** 被盗啊
防止 *** 被盗 *** :
之一、 请您尽快将 *** 升级到安全性更完善的最新版本
第二、 为自己的号码申请“密码保护”服务。
第三、 密码要复杂,当然也要方便您记忆。更好是数字加英文加标点符号,8-16位最合适。
第四、 一定要保护好你密码保护填写的email邮箱,建议您填没有POP3的邮箱,因为破邮箱的工具都是支持POP的,信箱的密码也要足够复杂。
第五、在网吧等公共场所上完 *** 后,更好能删除自己号码所在的目录,一般是在 *** 安装目录下面,以自己的 *** 号码命名。注意清空回收站。
第六、 机器更好要有防杀毒,防伪软件更要注意版本更新。
第七、请千万不要下载来路不明的软件,尤其是黑客类、炸弹类软件。以上是防止 *** 被盗的注意事项。
至于想要盗取别人的 *** 这类小人才会去做的事情就别去做了!
1.不要随便把 *** 号告诉别人。
2.输入 *** 密码时更好用软键盘。
3.输入密码时打乱顺序,如:密码是12345678,那输入 时就是先输入5678,再把光标移到5前面,接着输入1234,这样,木马等病毒记下你的密码就是56781234。
4.经常改密码。
5.不要去网吧上网。
6.密码尽量设置的复杂一点。
关于防止密码被木马窃取的 ***
除了OOPS所说前面打一大串0的 *** 外,还可以不按照顺序来打。比如密码是12345,打的时候就先打入1235,再把鼠标移到3的后面,打入4。因为木马截获的是键盘的动作,并不知道鼠标的移动,所以在幕后第三只眼看来,你的密码就是12354了。在公共场所上网时一定要注意这个问题,因为很多网吧机器都被人装了键盘记录器等软件。当然啦,你可以把输入顺序搞得更复杂些,那样别人即使截获一堆数字,也拿它毫无办法了
首先 你在上网的时候( *** 是开着的), 打开了一个网页或者是个刚下载的东西!
没过多久你的 *** 就自动关闭了! 也就是没了! 需要重新登陆 *** ~! 注意!!这个时候!
有200%的可能是你中了木马!~`
原理很简单!~~这个木马自动关闭你的 *** 让你重新登陆 *** 在你登陆 *** 输入密码的时候!
木马就会纪录下你的密码输入轨迹! 按照你输入的轨迹解读出你的密码! 然后自动发送的
他制定的邮箱里!~`这样他就知道了你的密码!
这时候如果你在家 当然是不要马上登陆 *** 拉 用杀毒软件杀掉木马! 就可以咯!
但是你是在网吧的话~~有还原精灵! 就先重起! 然后再登陆 *** ~! 不过 有的木马都有自动
转存功能~~你重起后他一样存在你的电脑里! 这时候怎么办~?~
这里有个小窍门!
注意~~木马盗取你 *** 密码的 *** 是根据你输入的 *** 密码轨迹而辨别出你的 *** 密码的!
所以咱们在输入密码的时候打乱输入密码的顺序!! 比如你的密码是 123456
那你输入密码时候的就不要输入123456了~~就先输入1256 然后把鼠标点到12和56中间 再
输入34~ 这样一来``木马根据你输入的顺序盗取的密码就是 125634~~ 哈哈! 他也就不会
知道你真正的密码~~你的 *** 就安全拉
这个 *** 长期有效! 能保证你 *** 的安全! 平时你上网的时候也可以这样登陆! 随时保护
自己 *** 的安全!
怎么样才能防止 *** 多次被盗?
【转载他人】
防止 *** 被盗 *** :
之一、 请您尽快将 *** 升级到安全性更完善的最新版本
第二、 为自己的号码申请“密码保护”服务。
第三、 密码要复杂,当然也要方便您记忆。更好是数字加英文加标点符号,8-16位最合适。
第四、 一定要保护好你密码保护填写的email邮箱,建议您填没有POP3的邮箱,因为破邮箱的工具都是支持POP的,信箱的密码也要足够复杂。
第五、在网吧等公共场所上完 *** 后,更好能删除自己号码所在的目录,一般是在 *** 安装目录下面,以自己的 *** 号码命名。注意清空回收站。
第六、 机器更好要有防杀毒,防伪软件更要注意版本更新。
第七、请千万不要下载来路不明的软件,尤其是黑客类、炸弹类软件。以上是防止 *** 被盗的注意事项。
至于想要盗取别人的 *** 这类小人才会去做的事情就别去做了!
1.不要随便把 *** 号告诉别人。
2.输入 *** 密码时更好用软键盘。
3.输入密码时打乱顺序,如:密码是12345678,那输入 时就是先输入5678,再把光标移到5前面,接着输入1234,这样,木马等病毒记下你的密码就是56781234。
4.经常改密码。
5.不要去网吧上网。
6.密码尽量设置的复杂一点。
关于防止密码被木马窃取的 ***
除了OOPS所说前面打一大串0的 *** 外,还可以不按照顺序来打。比如密码是12345,打的时候就先打入1235,再把鼠标移到3的后面,打入4。因为木马截获的是键盘的动作,并不知道鼠标的移动,所以在幕后第三只眼看来,你的密码就是12354了。在公共场所上网时一定要注意这个问题,因为很多网吧机器都被人装了键盘记录器等软件。当然啦,你可以把输入顺序搞得更复杂些,那样别人即使截获一堆数字,也拿它毫无办法了
首先 你在上网的时候( *** 是开着的), 打开了一个网页或者是个刚下载的东西!
没过多久你的 *** 就自动关闭了! 也就是没了! 需要重新登陆 *** ~! 注意!!这个时候!
有200%的可能是你中了木马!~`
原理很简单!~~这个木马自动关闭你的 *** 让你重新登陆 *** 在你登陆 *** 输入密码的时候!
木马就会纪录下你的密码输入轨迹! 按照你输入的轨迹解读出你的密码! 然后自动发送的
他制定的邮箱里!~`这样他就知道了你的密码!
这时候如果你在家 当然是不要马上登陆 *** 拉 用杀毒软件杀掉木马! 就可以咯!
但是你是在网吧的话~~有还原精灵! 就先重起! 然后再登陆 *** ~! 不过 有的木马都有自动
转存功能~~你重起后他一样存在你的电脑里! 这时候怎么办~?~
这里有个小窍门!
注意~~木马盗取你 *** 密码的 *** 是根据你输入的 *** 密码轨迹而辨别出你的 *** 密码的!
所以咱们在输入密码的时候打乱输入密码的顺序!! 比如你的密码是 123456
那你输入密码时候的就不要输入123456了~~就先输入1256 然后把鼠标点到12和56中间 再
输入34~ 这样一来``木马根据你输入的顺序盗取的密码就是 125634~~ 哈哈! 他也就不会
知道你真正的密码~~你的 *** 就安全拉
这个 *** 长期有效! 能保证你 *** 的安全! 平时你上网的时候也可以这样登陆! 随时保护
自己 *** 的安全!