博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IP defragment
阅读量:4692 次
发布时间:2019-06-09

本文共 1361 字,大约阅读时间需要 4 分钟。

snort IP defragment 模型:

BSD
 favors an original fragment with an offset that is less than or equal to a subsequent fragment.
BSD-right
 favors a subsequent fragment when the original fragment has an offset that is less than or equal to the subsequent one.
Linux
 favors an original fragment with an offset that is less than a subsequent fragment.
First
 favors the original fragment with a given offset.
Last
 favors the subsequent fragment with a given offset.
                                                          
 
可以看到:
 
前三个 BSD, BSD right, Linux 都是按 offset 排序后重组。
BSD 与  Linux 类似,都是将当前包用完,再找 offset 最小的包补上;差别仅在于 offset 相同时,BSD取旧,Linux取新。而 BSD right 则相比 BSD 差别在于,前者在任何重叠区域都使用新包,除了
新包是旧包子集且 offset 更大的情况(新包 offset > 旧包 offset 并且 新包 end <= 旧包end 的情况)
 
First,Last 比较简单,仅仅是时间维度上。
 

snort frag 模块:

 
frag2 :
检测到IP分组的first,last后,则分组遇到一个新包都会遍历整个组以判断分组是否完善。
 
frag3:
支持多种IP分组合并策略
在分组中插入每个包的时候,都会与目的位置的 left,right 判断是否有重叠,如果有重叠,则根据合并策略会调整 current,left,right 包的 offset,size值,如果调整后现有组中有size小于零的包直接从组中删除,如果当前根据合并策略可以丢弃则丢弃。
组中每插入一个包,都会将包 size (去除重叠后得出来的长度) 累加于 frag_bytes。
包未设置 more fragemnt,则设置组大小 calculated_size。
 
如果已发现分组 first,last 且 frag_bytes >= calculated_size(理论上 > 不会发生),则认为分组已经完善。
 
 
重组时会创建一个新的 Packet。
链路层 header, pcap header 的时间戳 
是取的当前触发 Frag3Rebuild 的包,即此分组中最后捕获到包
IP header,从当前包中拷贝头,并清除 Fragment 标志及偏移,从组中拷贝 IP Options。
 
 
snort 2.8.3 的 frag3 还不支持IPv6的,但 2.9.4 的 frag3 支持。
 
参考资料: 
 

转载于:https://www.cnblogs.com/JesseFang/p/3594417.html

你可能感兴趣的文章
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
我的第一篇博客
查看>>
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
23 Java学习之RandomAccessFile
查看>>
P2709 小B的询问
查看>>
PHP echo 和 print 语句
查看>>
第一讲 一个简单的Qt程序分析
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
poj 1979 Red and Black(dfs)
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
lock_sga引起的ksvcreate :process(m000) creation failed
查看>>