网络协议信息隐藏全解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 由于使用原始套接字发送数据包,数据包的某些 字段还被用来隐藏信息,接收端不能用普通的 Recv( )或Recvfrom( )来接收数据包,只能采用 嗅探的方式接收发送方的数据。但网络中的数据 包很多,这又会产生识别特定数据包的问题,在 程序实现时,除在接收端根据源IP地址、目的IP 地址、协议等字段设置规则进行过滤外,还在发 送端对IP标志的最高位进行了置位,只有符合这 些规则的数据包才会被接收。 • 流式套接字编程对上层应用提供了可靠的服务, 而使用Raw Socket发送数据包则没有这样的保证 ,容易造成丢包等情况,程序仅为验证隐蔽通信 的可行性,没有考虑对乱序、丢包、数据错误的 处理。另外,仅给出关键代码,有关界面编程的 内容不再赘述,可参考附件中的源程序。
【实验步骤】
• 1.算法描述 • 2.数据结构 • 3.算法实现
1.算法描述
• 实验的主要思路是在网络层实现信息发送 及接收程序,由于在底层实现该程序,需 要手工构造IP报文的首部字段来自定义发 送数据包,因此必须使用Raw Socket编程。 Raw Socket允许程序绕过系统内核而直接 访问底层协议,因此IP层的封装工作就要 用手工填充数据的方法实现,而不是由操 作系统自动完成。由于Raw Socket经常被 用来编写网络扫描程序等恶意软件,微软 在Windows XP的协议驱动tcpip.sys中, 基于安全考虑已经对利用Raw Socket发送 数据包进行了限制,故底层数据包发送程 序在Windows 2000下通过VC6.0实现。
【实验环境】
• (1) 网络环境:100Mbps交换 式以太网,2台主机,其中包 括发送端(192.168.0.1/24)与 接收端(192.168.0.2/24); • (2) 操作系统:Windows2000 或2.4.20以上版本的Linux (如Redhat9和Fedora系列); • (3) 编程工具:Microsoft Visual C++ 6.0。
【原理简介】
• IPV4网络协议设计时存在漏洞,首部存在 冗余或可选字段,网络设备对某些字段限 制过于宽松,通过精心设计和构造,可以 利用这些字段进行信息隐藏以实现隐蔽通 信。这种通信不增加额外带宽,很难被网 络防火墙和入侵检测系统检测到,容易逃 避网络监控,实现信息隐藏的目的。 • 传统信息隐藏的载体是静态的多媒体数据, 而网络隐蔽通道的载体是动态的网络协议 的首部,这种载体上的区别是两者最根本 的区别;前者依赖于人的视觉或听觉不敏 感性,而后者是基于网络协议在语法或语 义上的冗余;前者的隐匿性主要对于人感 官上的不可感知,而后者的隐匿性是对于 网络监控设备而言的。
0 8 16 24 31
4位版本
4位首部长 度
Baidu Nhomakorabea
8位服务类型(TOS)
16位总长度(字节)
16位标识
8位生存时间(TTL) 8位协议
3位标 志
13位片偏移 16位首部校验和
32位源IP地址 32位目的IP地址
选项(若有)
填充
• 网络层的另一种协议是ICMP(互联网控制报文协议), 它通常被IP层或更高层协议用来传递差错报文,下面 介绍利用ICMP的8位代码字段进行协议隐写的原理。 • ICMP的报文格式根据前16个字节的变化而各有不同, 下图是回显应答和回显请求报文的格式。
• 多媒体数据中存在大量的信息冗余,网络 协议数据包中的冗余显然要少许多;多媒 体有着复杂的数据结构,任取其中的一个 数据(像素、视频帧等)进行数值改写,几 乎不会对它的感官效果产生影响,而网络 协议的数据包中的各个首部字段都是最简 单的“01”比特串,对首部字段取值的改 写不但彻底改变了数据包的类型,而且有 可能使得这个数据包由于畸形而被丢弃。 • 网络协议信息隐藏(协议隐写)是一种利用 数据包作为掩护载体,将秘密信息隐匿在 网络协议的数据包之中的信息隐藏技术, 它可以通过网络协议数据包中的保留、可 选、未定义等字段和数据包的顺序、数量、 到达时间、特定时间流量以及其它可被利 用的特征,在网络中不同的主机之间建立 隐蔽通信。
• 利用协议隐写进行隐蔽通信时,发送端在协议数据 包中使用嵌入算法嵌入秘密信息,得到携密数据包, 可将隐蔽通信划分为6种模式:
A:
嵌入 进程 正常数据包 嵌入 进程 嵌入 进程 嵌入 进程 携密数据包 携密数据包 携密数据包 提取 进程 携密数据包 提取 进程 正常数据包
B:
C:
正常数据包
提取 进程 提取 进程 提取 进程 提取 进程
公开信道(overt channel)
发送端
嵌入进程
检测进程
接收端
隐蔽通道(covert channel)
• 在上图中,发送端的嵌入进程将秘密信息嵌入数据包的首部, 通过网络传输后,接收方利用检测进程检测出携带秘密信息 的数据包后提取出信息,根据用户的需要可以保存成文件, 也可立即显示。 • 最早被用来进行协议隐写的协议是IP协议,其首部如下图所 示,图中灰色阴影部分可直接用于隐藏信息。
D:
嵌入 进程 嵌入 进程
正常数据包
携密数据包
携密数据包
E:
正常数据包
F:
携密数据包
携密数据包
• 上图中的嵌入进程即为隐蔽通信的发送方,提取进程 为接收方。根据网络通信的实际情况,6种模式中其 实只有模式A和模式C是可行的。由于模式C需要重写 操作系统的网络协议驱动,故此处采用模式A,即发 送方自己产生载体(即正常协议数据包),发送方和 接收方分别是数据流的始点和终点,如下图:
0 8 16 24 31
8位类型(0或8) 16位标识符
8位代码(0)
16位校验和 16位序号
选项数据
• 针对ICMP协议,实现信息发送程序,在接 收端利用原始套接字进行嗅探接收。先对 一个首部字段填写自定义数值、其它字段 填充正常值,然后发送该数据包,记录嗅 探器的嗅探结果。以ICMP为例,测试隐写 载体的发送程序如下页图所示。 • 对ICMP的所有首部字段进行实验,发现所 有的首部字段都可随意设置,虽然RFC规 定了ICMP回显请求和回显应答的报文格式, 但8位代码字段的取值对报文的功能没有 任何影响,模拟Ping程序在8位代码字段 设置为任意值的情况下仍能从远端主机返 回回显应答,表明此字段是协议隐写的良 好载体。
第五章
网络协议信息隐藏
5.1 基于网络层协议的信息隐藏
• 【实验目的】 • 【实验环境】 • 【原理简介】 • 【实验步骤】 • 【实验结果】 • 【思考题】
【实验目的】
• 掌握网络层信息隐藏的原理, 理解在网络层两种主要协议上 进行信息隐藏的基本方法,使 用VC设计并实现一种网络层信 息隐藏算法。