8、TCP报文重组合算法
2016-01-28 23:57
253 查看
8、TCP报文重组合算法
8.1、重组过程中存在的歧义问题
TCP重组算法需要考虑的一个安全问题是:在执行数据报重组的主机和用于监控主机的网络入侵检测系统(NIDS)间保持数据流的一致性问题。
在不需要重传TCP报文或在网络间有重复的数据包时,一个TCP可能获得一份数据的多个版本。同样,当一个TCP报文被传输时可能被重新封包,一个新收到的TCP报文可能与之前收到报文存在部分重叠。在上述所有这些情况中,就存在这样一个问题:当重组数据流时,应使用收到数据的哪一分拷贝进行重组。在正规条件下,所有的副本都完全相同,不管使用哪个副本,都能获得相同的数据流。然而,黑客可以发送包含其他数据的重叠副本,来避开NIDS的检测,这将使得重组的数据报文与监控系统的报文不同。[Ptacekand
Newsham, 1998]中对这个问题进行了详细描述。
正如RFC793[Postel,1981c]中第3.9节建议的,如果新到达的报文包含一部分已经接收了的数据字节,应使用这些数据的第一份副本重组应用数据流。应当注意到使用这些规则在某些情况下可能会对重组过程产生歧义。还有很多技术可以使黑客避开NIDS[CPNI,2008]。如果NIDS位于监控系统内,那么就很容易应对这些技术。因此使用NIDS来规范网络传输或采用其他规则能确保重组过程产生的报文和通过NIDS获取的报文保持一致性。
[CERT, 2003]和[CORE,2003]中介绍了一个由于在TCP流重组模块中不正确的序列号引起的比较流行的NIDS系统中的堆缓冲区溢出问题。
8.1、重组过程中存在的歧义问题
TCP重组算法需要考虑的一个安全问题是:在执行数据报重组的主机和用于监控主机的网络入侵检测系统(NIDS)间保持数据流的一致性问题。
在不需要重传TCP报文或在网络间有重复的数据包时,一个TCP可能获得一份数据的多个版本。同样,当一个TCP报文被传输时可能被重新封包,一个新收到的TCP报文可能与之前收到报文存在部分重叠。在上述所有这些情况中,就存在这样一个问题:当重组数据流时,应使用收到数据的哪一分拷贝进行重组。在正规条件下,所有的副本都完全相同,不管使用哪个副本,都能获得相同的数据流。然而,黑客可以发送包含其他数据的重叠副本,来避开NIDS的检测,这将使得重组的数据报文与监控系统的报文不同。[Ptacekand
Newsham, 1998]中对这个问题进行了详细描述。
正如RFC793[Postel,1981c]中第3.9节建议的,如果新到达的报文包含一部分已经接收了的数据字节,应使用这些数据的第一份副本重组应用数据流。应当注意到使用这些规则在某些情况下可能会对重组过程产生歧义。还有很多技术可以使黑客避开NIDS[CPNI,2008]。如果NIDS位于监控系统内,那么就很容易应对这些技术。因此使用NIDS来规范网络传输或采用其他规则能确保重组过程产生的报文和通过NIDS获取的报文保持一致性。
[CERT, 2003]和[CORE,2003]中介绍了一个由于在TCP流重组模块中不正确的序列号引起的比较流行的NIDS系统中的堆缓冲区溢出问题。
相关文章推荐
- TCP版backshell的VBS脚本代码
- TCP Wrappers防火墙介绍与封锁IP地址的方法
- c语言多进程tcp服务器示例
- win2003连接限制TCP连接限制
- PowerShell脚本开发之收发TCP消息包
- Nodejs创建TCP服务器 - king0222
- C#实现TCP连接信息统计的方法
- linux shell 脚本实现tcp/upd协议通讯(重定向应用)
- Android TCP 文件客户端与服务器DEMO介绍
- Android中实现TCP和UDP传输实例
- python实现可将字符转换成大写的tcp服务器实例
- php实现TCP端口检测的方法
- Java实现Socket的TCP传输实例
- 实现了基于TCP的Java Socket编程实例代码
- Java基于TCP方式的二进制文件传输
- Java基于Tcp协议的socket编程实例
- python实现TCP服务器端与客户端的方法详解
- python检测远程服务器tcp端口的方法
- python实现简单的TCP代理服务器
- nginx搭建tcp代理服务器