当前位置: 首页 >> 网络协议与安全 >> Linux IP分片重组的分析和常见碎片攻击
 

Linux IP分片重组的分析和常见碎片攻击

作者:      来源:zz     发表时间:2006-06-16     浏览次数:      字号:    

一 前言

本文对linux的IP组装算法进行了分析,因为IP碎片经常用于DOS等攻击,在文章后面我结合了一些攻击方法进行了更进一步的说明。内核主要参考版本是2.2.16,另外简要的介绍了2.4.0-test3中的一些变化.

二 目录

1- 概述
2- 关键数据结构
3- 重要函数说明
4- 2.4系列的变化
5- 常见碎片攻击


1. 概述

在linux源代码中,ip分片重组的全部程序几乎都在都在\net\ipv4\ip_fragment.c文件中。其对外提供一个函数接口ip_defrag()。其函数原型如下:

struct sk_buff *ip_defrag(struct sk_buff *skb)

众所周知,网络数据报在linux的网络堆栈中是以sk_buff的结构传送的,ip_defrag()的功能就是接受分片的数据包(sk_buff),并试图进行组合,当完整的包组合好时,将新的sk_buff返还,否则返回一个空指针。

此函数在其他文件中的调用如下:

ip层接收主函数为ip_rcv()(\net\ipv4\ip_input.c),任何IP包都需经过此函数处理。如果此包是发往本机,则调用ip_local_deliver()函数(\net\ipv4\ip_input.c)进行处理,一般的系统碎片只有在到达最终目的的时候才进行重组(尽管在传输过程中可能被进一步分成更小的片)。在ip_local_deliver()中我们可发现如下代码:

if (sysctl_ip_always_defrag == 0 && /*编译时未设置提前组装*/
(iph-〉frag_off & htons(IP_MF|IP_OFFSET))) { /*判断是否是分片包*/
skb = ip_defrag(skb); /*条件满足,进行组装*/

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •