IP数据包分片重叠部分的重组问题

  • A+
所属分类:安全闲碎

原作者:Haboob Team

翻译:李华峰(邪灵)

介绍

本文将介绍 IDS 的工作原理和讨论 IP 数据包分片的重组过程,并研究不同操作系统在实现重组时的差异性。

IDS(入侵检测系统)简介

IDS(入侵检测系统)的形式多种多样,它可以是一种独立设备,可以是下一代防火墙的一个扩展模块,也可以是运行某种硬件设备上的软件。IDS会检测到网络中那些包含恶意企图的流量,或者那些违反了安全策略的流量;IDS会将这些流量的信息报告给网络安全管理员。在某些组织机构中,这些违规信息会报告给“安全信息与事件管理系统”(SIEM),网络安全管理员可以在SIEM系统中创建关联规则,以便实现对某一系列活动的监控。

IDS既可以部署为基于网络的入侵检测系统NIDS,也可以部署为基于主机的入侵检测系统HIDS。例如只需要监控一台工作站设备A的流量,并且将IDS部署在了A上,那么这就是一个典型的HIDS部署方式。而需要监控一个网络的流量,并且将IDS部署在了一个独立设备上,这就是一个NIDS部署方式。

根据工作原理的不同,IDS也可以被分成以下几类。

大多数IDS是采用基于特征值(Signature-based)的机制来实现入侵检测,这会涉及到字符串与IOC

2种是基于异常(anomaly-based)的检测,如果使用机器学习的方式,基于异常的检测需要消耗更多的计算机资源。

3种是基于可信度(reputation-based),根据已知真实威胁来建立可信度评估机制。

有些IDS可以在检测到那些违反了我们设定策略的流量时,采取行动对其进行阻止,我们通常把这种IDS称之为入侵防御系统(译者注:即IPS)。

IDS(入侵检测系统)工作原理

IDS可以采用不同的方式来检测恶意流量,最为常见的两种方式分别是模式匹配和异常统计。

基于特征值(Signature-based)的模式检测

这种工作方式和杀毒软件的工作原理很像,IDS会根据已知攻击的“特征值”或者某些特定行为来检测流量中是否包含恶意行为。IDS会对接收到的流量中进行监控,如果发现与已知攻击相匹配的流量,就会将其识别为“恶意流量”。IDS的有效性要取决于“特征值”数据库。实际应用中,该数据库应该时刻保持更新。模式匹配类似于指纹判案,刑侦部门可以通过在犯罪现场找到的指纹来指认罪犯,这里的指纹分析就是一种模式匹配。但是模式匹配往往无法捕捉新出现的攻击,因为“特征值”数据库的内容不可能包含之前从未出现过的恶意行为。

基于异常的检测

这种工作方式会考虑正常流量与异常流量的区别,这需要首先对正常流量建立一个标准,然后将接收流量与所定义的标准进行比较,得出该流量是否为正常流量。基于异常的检测可以检测出那些之前从未出现过的恶意流量。打个比方,这种工作方式就像巡逻的警察,他们每天都准时出现在城市的某个区域,可以轻易的发现该区域哪里不正常了。当他们看到一些异常的事物时,虽然不一定能知道具体发生了什么,或者谁是罪犯,但是仍然可以推测出可能正有犯罪活动在进行。

下面列出了一些异常检测的方法。

度量模型(Metric model

神经网络(Neural network

机器学习分类(Machine learning classification

基于异常的检测存在误报率较高的问题。

 

 

 

IP数据包分片

当一个数据包在发往目的地的过程中,它会根据MTU(通常被设置为1500字节)进行分片。由于在到目的地的过程中,该数据包会经过很多个路由设备,因此它可能会被多次分片。下面给出了与分片相关的数据包字段。

Identification: 每个数据包都有一个唯一的ID,这个数据包的每个分片都使用这个ID

Flags: 这个字段用来控制分片。

Fragment Offset: 该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8

IP数据包分片重叠部分的重组问题


1 数据包的IP头部

IP数据包分片示例

我们来考虑一个实际的问题,当一个数据包的原始大小为1440bytes,而现在它需要通过一个MTU设置为576的路由设备。考虑到数据包的IP头部大小为20bytes,也就是说数据包的内容部分为1420bytes,那么这个数据包将会被分成3个分片。

分片1

ID值与所有数据包分片相同。

Flag设置为MF。(译者注:应该是指MF=1

总长度为572

分片2

ID值与所有数据包分片相同。

Flag设置为MF。(译者注:应该是指MF=1

总长度为572

分片3

ID值与所有数据包分片相同。

Flag设置为DF。(译者注:应该是指MF=0

总长度为336

我们可以计算所有分片的总长度。

(572 –20 ) + (572 –20) + (336 –20) = 1420

 

IP数据包分片重叠部分的重组问题


2 数据包分片信息

 

 

不同操作系统重组IP数据包分片的方式

入侵检测系统经常无法准确的检测到威胁,这是因为它们所保护设备的操作系统种类众多,入侵检测系统与这些操作系统在处理和分析数据包的方式也不尽相同。这个差异存在于对数据包多个部分的处理上,例如IP头部,传输层头部等等。其中一个比较重要的就是,当发送到目的主机的多个IP数据包分片存在重叠部分时,几乎所有的操作系统都有不同的处理方式,这就意味着入侵检测系统不能只使用一种重组方式来检测这些IP数据包分片。而另一方面,入侵者也可以利用操作系统与入侵检测系统的差异性来规避和绕过入侵检测系统。

 

IP数据包分片重叠部分的重组问题


3  这是5个包含重叠部分的IP数据包分片

4中给出了当不同的操作系统接收到了这5个数据包之后是如何将其进行组合的。当两个IP数据包分片的内容存在重叠部分时,其中一些操作系统会优先保全位移较小的数据包,而另外一些则会优先保全位移较大的数据包。

 

IP数据包分片重叠部分的重组问题


4 不同的操作系统对包含重叠部分的IP数据包分片的重组方式

BSD策略,BSD系统采用了一种左侧裁剪法,这种方法会尽量保全位移较小的数据包分片,例如当一个数据包的分片A位移为100,长度为200,而另一个分片B的位移为150,长度为100时。左侧裁剪法就会保全A,而将分片B150200的部分裁剪掉,只保留长度为50的后半部分。这一策略在WrightStevens的著作中有详尽的描述。目前FreeBSDAIXSUNIRIXopenvmsWireshark都使用了这种策略。

BSD右侧优先策略,这种方法与“BSD策略”几乎一样,只是采用了右侧裁剪法,这种方法会尽量保全位移较大的数据包分片。目前HP JetDirect打印机就使用了这种策略。

Linux策略,这种方法与BSD策略”几乎相同,只有当先到来的数据包分片A与后到来的数据包分片B完全重叠时,分片B将会覆盖分片A的重叠部分,也就是说“后来者居上”。而数据包分片A与数据包分片B只有部分重叠时,处理方式与BSD策略相同。

先到先得策略,这种方法优先保全先到来的数据包分片。目前Windows, MacOS, SUN,HP-UX, TektrnoixPhaser Printer.都使用了这种策略。

后到先得/RFC791 策略,这种方法优先保全后到来的数据包分片。目前Cisco IOS以及TektrnoixPhaser Printer的一些型号的设备使用了这种策略。

解决方案

1、一些IDS系统包含了“分片保护”功能,但是默认情况下该功能往往是禁用的。虽然有些IDS系统提供了“分片预处理器”,但是如果入侵者构造了针对两种不同操作系统的攻击,仍然是有可能绕过该IDS拦截的。

2、网络管理员应该启用IDS的“分片预处理器”。

3IDS应该与被保护的操作系统使用相同的分片重组处理方式。

4、网络管理员应该熟悉各种分片重组的原理。

5、对于snort,应该启用Frag3,将数据包分片重组来完成检测。

结论

不同操作系统在对IP数据包分片进行重组时,会采用不同的策略。因此IDS在对IP数据包分片进行检测时,不能只使用一个策略。而对于入侵者来说,这却是一个绝佳的机会,可以以此来规避和绕过IDS。为了应对这个挑战,我们需要实现基于目标的检测( target based detection)。

 

 


本文始发于微信公众号(Ms08067安全实验室):IP数据包分片重叠部分的重组问题

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: