SYN ACK UDP ICMP 碎片攻击
来源:互联网 发布:淘宝宝贝一口价修改 编辑:程序博客网 时间:2024/06/10 07:47
不太了解碎片攻击,UDP碎片攻击应该是IP碎片攻击的一种吧,这篇文章亮了。
1。SYN攻击:SYN就是不停发送连接确认信息直到对方因为信息太多无法处理而死机或者无法提供服务
2。ACK攻击:ACK就是不停发送连接请求信息直到对方因为信息太多无法处理而死机或者无法提供服务
3。UDP 淹没攻击
(UDPFlood Attack)
UDP 淹没攻击是导致基于主机的服务拒绝攻击的一种。UDP 是一种无连接的协议,而且它不需要用任何程序建立连接来传输 数据。当攻击者随机地向受害系统的端口发送 UDP 数据包的时候,就可能发生了 UDP 淹没攻击。当受害系统接收到一个 UDP 数据包的时候,它会确定目的端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个 目的地址无法连接的 ICMP 数据包发送给该伪造的源地址。如果向受害者计算机端口发送了足够多的 UDP 数据包的时候,整 个系统就会瘫痪。
UDP 淹没攻击的防范
在网络的关键之处使用防火墙对来源不明的有害数据进行过滤可以有效减轻 UDP 淹没攻击。此外,在用户的网络中还应采取 如下的措施:
禁用或过滤监控和响应服务。
禁用或过滤其它的 UDP 服务。
如果用户必须提供一些 UDP 服务的外部访问,那么需要使用代理机制来保护那种服务,使它不会被滥用。
对用户的网络进行监控以了解哪些系统在使用这些服务,并对滥用的迹象进行监控。
对于一些小型的游戏服务器,私服服务器,,可以直接用防火墙添加规则的方法屏蔽掉!!@
UDP Port Scan 攻击只是对你机器进行扫描
谈不上攻击 只是搜集情报
只要禁止ping或者icmp等命令别人就扫不到你了
4。ICMP攻击:
ICMP 被IP 层用于向一台主机发送单向的告知性消息。在 ICMP 中没有验证机制,这就导致了使用 ICMP 可以造成服务拒绝的攻击,或者可以支持攻击者截取数据包。
下面列出了几种与 ICMP 协议相关的攻击类型:
ICMP DOS 攻击:攻击者使用 ICMP “时间超出”或“目标地址无法连接”的消息。这两种 ICMP 消息都会导致一台主机迅速放弃连接。攻击只需伪造这些 ICMP 消息中的一条,并发送给通信中的两台主机或其中的一台,就可以利用这种攻击了。接着通信连接就会被切断。当一台主机错误地认为信息的目标地址不在本地网络中的时候,网关通常会使用 ICMP “转向”消息。如果攻击者伪造出一条“转向”消息,它就可以导致另外一台主机经过攻击者主机向特定连接发送数据包。
ICMP 数据包放大(或 ICMP Smurf):攻击者向安全薄弱网络所广播的地址发送伪造的 ICMP 响应数据包。那些网络上的所有系统都会向受害计算机系统发送 ICMP 响应的答复信息,占用了目标系统的可用带宽并导致合法通信的服务拒绝(DoS)。死 Ping 攻击:攻击者向受害计算机发送一条比最大 IP 数据包容量还要大许多的 ICMP 响应请求数据包。既然所接收到的 ICMP 响应请求数据包的容量远远高于正常的 IP 数据包,受害计算机不能够将这些数据包重新组合起来。这样导致的结果是,操作系统要么瘫痪,要么重启。
ICMP PING 淹没攻击:大量的 PING 信息广播淹没了目标系统,使得它不能够对合法的通信做出响应。
ICMP nuke 攻击:Nuke 发送出目标操作系统无法处理的信息数据包,从而导致该系统瘫痪。
ICMP 攻击的防范:
在网络的关键之处使用防火墙对来源不明的有害数据进行过滤可以有效减轻大多数 ICMP 攻击。另外,你需要按照如下的方法对 ICMP 参数进行设置后就可以在服务与安全之间合理地保持平衡:
支持 PING —允许向外发送 ICMP 响应请求,并允许向内发送响应答复消息。 支持路径追踪—允许向内发送 TTL -超出和端口无法连接的消息。 支持路径 MTU—允许向内发送 ICMP 零碎DF-整套消息。 阻止其它类型的 ICMP 通信。
IGMP:
IGMP是一种网络协议,windows系统有一个漏洞,当向一台主机发送一些不规则的数据包时,或称网络碎片,往往会导致被攻击主机的当机,典型代表是win98。
5:碎片攻击
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'tFragment,“不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片。
MF:MoreFragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置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 65535192.168.0.1
Error: packet size 65535 is toolarge. 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.974096192.168.0.9 -> 192.168.0.1
ICMP TTL:255 TOS:0x0 ID:1109IpLen:20 DgmLen:29
Frag Offset: 0x1FFE Frag Size:0x9
08 00 00 00 00 00 00 00 00.........
发送的UDP包:
01/10-14:21:00.298282192.168.0.9 -> 192.168.0.1
UDP TTL:255 TOS:0x0 ID:1109IpLen: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.985853192.168.0.9 -> 192.168.0.1
UDP TTL:64 TOS:0x0 ID:242IpLen:20 DgmLen:56 MF
Frag Offset: 0x0 Frag Size:0x24
A0 A8 86 C7 00 24 00 00 00 0000 00 00 00 00 00 .....$..........
00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 ................
00 00 00 00 ....
* MF=1,偏移量=0,分片IP包的第一个。
* 结构图:
|<-------20-------->|<------8------>|<---------------28---------------->|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP | UDP | Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
第二个:
01/08-11:42:21.985853192.168.0.9 -> 192.168.0.1
UDP TTL:64 TOS:0x0 ID:242IpLen: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安全策略,设置“碎片检查”
来源:http://yu1jiang.blog.163.com/blog/static/323298852008214101740564/
- SYN ACK UDP ICMP 碎片攻击
- ICMP Flood 攻击、UDP Flood 攻击、SYN Flood 攻击
- SYN,ICMP, UDP Flood攻击原理与防护
- SYN,ICMP, UDP Flood攻击原理与防护
- Linux 防止cc syn ack 攻击
- DDoS攻击 TCP UDP ICMP
- SYN攻击的原理,攻击工具,以及防护手段/使用iptables应对SYN攻击、CC攻击、ACK攻击
- TCP的FIN、ACK、SYN、URG、PSH及攻击方式
- SYN及SYN攻击
- SYN攻击
- SYN攻击
- SYN攻击
- SYN攻击
- SYN攻击
- SYN攻击
- SYN攻击
- syn攻击
- TCP SYN,ACK 详解
- SYN Foold ,IP欺骗DOS ,UDP洪水,Ping洪流 ,teardrop ,Land ,Smurf ,Fraggle 攻击 原理
- 菊子曰测试草稿{29C28FD771BA4B0D8693}
- Android 实现 Activity后台运行
- 常见排序算法总结
- Google前工程经理王忻:如何准备软件工程师的面试
- SYN ACK UDP ICMP 碎片攻击
- It's your pain killer,all of worldwide software engineer
- 如何根据汉字的区位码显示出汉字
- 跟我一起学MiniOA:第二章 几种开发语言入门 2.1Javascript入门
- AsyncTask的用法
- BWT压缩算法
- The How's and Why's
- 奇怪的错误 挖坑待填
- Here is a good blog spot for Android