网络协议信息隐藏_第1页
网络协议信息隐藏_第2页
网络协议信息隐藏_第3页
网络协议信息隐藏_第4页
网络协议信息隐藏_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 网络协议信息隐藏 5.1 基于网络层协议的信息隐藏 【实验目的】【实验目的】 【实验环境】【实验环境】 【原理简介】【原理简介】 【实验步骤】【实验步骤】 【实验结果】【实验结果】 【思考题】【思考题】 【实验目的】【实验目的】 掌握网络层信息隐藏的原理, 理解在网络层两种主要协议上 进行信息隐藏的基本方法,使 用VC设计并实现一种网络层信 息隐藏算法。 【实验环境】 (1) 网络环境:100Mbps交换 式以太网,2台主机,其中包 括发送端(/24)与 接收端(/24); (2) 操作系统:Windows2000 或2.4.20以上版本的L

2、inux (如Redhat9和Fedora系列); (3) 编程工具:Microsoft Visual C+ 6.0。 【原理简介】【原理简介】 IPV4网络协议设计时存在漏洞,首部存在 冗余或可选字段,网络设备对某些字段限 制过于宽松,通过精心设计和构造,可以 利用这些字段进行信息隐藏以实现隐蔽通 信。这种通信不增加额外带宽,很难被网 络防火墙和入侵检测系统检测到,容易逃 避网络监控,实现信息隐藏的目的。 传统信息隐藏的载体是静态的多媒体数据, 而网络隐蔽通道的载体是动态的网络协议 的首部,这种载体上的区别是两者最根本 的区别;前者依赖于人的视觉或听觉不敏 感性,而后者是基于网络协议在语法或

3、语 义上的冗余;前者的隐匿性主要对于人感 官上的不可感知,而后者的隐匿性是对于 网络监控设备而言的。 多媒体数据中存在大量的信息冗余,网络 协议数据包中的冗余显然要少许多;多媒 体有着复杂的数据结构,任取其中的一个 数据(像素、视频帧等)进行数值改写,几 乎不会对它的感官效果产生影响,而网络 协议的数据包中的各个首部字段都是最简 单的“01”比特串,对首部字段取值的改 写不但彻底改变了数据包的类型,而且有 可能使得这个数据包由于畸形而被丢弃。 网络协议信息隐藏(协议隐写)是一种利用 数据包作为掩护载体,将秘密信息隐匿在 网络协议的数据包之中的信息隐藏技术, 它可以通过网络协议数据包中的保留、可

4、 选、未定义等字段和数据包的顺序、数量、 到达时间、特定时间流量以及其它可被利 用的特征,在网络中不同的主机之间建立 隐蔽通信。 利用协议隐写进行隐蔽通信时,发送端在协议数据 包中使用嵌入算法嵌入秘密信息,得到携密数据包, 可将隐蔽通信划分为6种模式: 上图中的嵌入进程即为隐蔽通信的发送方,提取进程 为接收方。根据网络通信的实际情况,6种模式中其 实只有模式A和模式C是可行的。由于模式C需要重写 操作系统的网络协议驱动,故此处采用模式A,即发 送方自己产生载体(即正常协议数据包),发送方和 接收方分别是数据流的始点和终点,如下图: 在上图中,发送端的嵌入进程将秘密信息嵌入数据包的首部, 通过网

5、络传输后,接收方利用检测进程检测出携带秘密信息 的数据包后提取出信息,根据用户的需要可以保存成文件, 也可立即显示。 最早被用来进行协议隐写的协议是IP协议,其首部如下图所 示,图中灰色阴影部分可直接用于隐藏信息。 网络层的另一种协议是ICMP(互联网控制报文协议), 它通常被IP层或更高层协议用来传递差错报文,下面 介绍利用ICMP的8位代码字段进行协议隐写的原理。 ICMP的报文格式根据前16个字节的变化而各有不同, 下图是回显应答和回显请求报文的格式。 针对ICMP协议,实现信息发送程序,在接 收端利用原始套接字进行嗅探接收。先对 一个首部字段填写自定义数值、其它字段 填充正常值,然后发

6、送该数据包,记录嗅 探器的嗅探结果。以ICMP为例,测试隐写 载体的发送程序如下页图所示。 对ICMP的所有首部字段进行实验,发现所 有的首部字段都可随意设置,虽然RFC规 定了ICMP回显请求和回显应答的报文格式, 但8位代码字段的取值对报文的功能没有 任何影响,模拟Ping程序在8位代码字段 设置为任意值的情况下仍能从远端主机返 回回显应答,表明此字段是协议隐写的良 好载体。 【实验步骤】【实验步骤】 1.算法描述 2.数据结构 3.算法实现 1.算法描述 实验的主要思路是在网络层实现信息发送 及接收程序,由于在底层实现该程序,需 要手工构造IP报文的首部字段来自定义发 送数据包,因此必须

7、使用Raw Socket编程。 Raw Socket允许程序绕过系统内核而直接 访问底层协议,因此IP层的封装工作就要 用手工填充数据的方法实现,而不是由操 作系统自动完成。由于Raw Socket经常被 用来编写网络扫描程序等恶意软件,微软 在Windows XP的协议驱动tcpip.sys中, 基于安全考虑已经对利用Raw Socket发送 数据包进行了限制,故底层数据包发送程 序在Windows 2000下通过VC6.0实现。 由于使用原始套接字发送数据包,数据包的某些 字段还被用来隐藏信息,接收端不能用普通的 Recv( )或Recvfrom( )来接收数据包,只能采用 嗅探的方式接收

8、发送方的数据。但网络中的数据 包很多,这又会产生识别特定数据包的问题,在 程序实现时,除在接收端根据源IP地址、目的IP 地址、协议等字段设置规则进行过滤外,还在发 送端对IP标志的最高位进行了置位,只有符合这 些规则的数据包才会被接收。 流式套接字编程对上层应用提供了可靠的服务, 而使用Raw Socket发送数据包则没有这样的保证 ,容易造成丢包等情况,程序仅为验证隐蔽通信 的可行性,没有考虑对乱序、丢包、数据错误的 处理。另外,仅给出关键代码,有关界面编程的 内容不再赘述,可参考附件中的源程序。 2.数据结构 协议 20字节的IP头 typedef struct _IPHeader 定义

9、ICMP报头(回显请求与回 显应答) typedef struct _ICMPHeader 3.算法实现 算法分为两个部分实现: 嵌入算法 提取算法 【实验结果】【实验结果】 下面对上文的内容进行实验验证,嵌入程序发送一个名为 “test.txt”的文件, 内容为“Network covert communication has been a key technology in the research of network security technologies.”,提取程 序在接收端主机上运行,显示被隐写的数据包的相关信息, 实验结果如图所示。 上图中的Code就是文件test.txt

10、所对应字 符的ASCII码。需要说明的是,上文给出 的提取程序在解析嗅探到的数据包时可支 持ICMP、TCP和UDP三种协议,嵌入程序在 发送时将识别号和序列号设置为“1234” 与“5678”,实际上还可以用函数 GetCurrentProcessId()提取当前进程ID 赋给识别号,将每个ICMP数据包的序列号 依次设置为一个递增的整数。另外,在模 拟Ping的过程中,发现Windows系统自带 的Ping程序默认发送的选项数据是32字节 的一段小写字母,其内容为“abcdefgh- ijklmnopqrstuvwabcdefghi”,为了不使 隐写分析者发现选项数据的异常,可将选 项数据

11、填充成和系统一致。 【思考题】【思考题】 1.根据图5.1.3,设计并实现一种基 于IP标识字段的协议隐写方法。 2.分析IP数据包的选项字段(共5种 类型),思考利用IP数据包的选项 字段实现协议隐写的可行性。 3.查阅IPv6的文档(RFC2460)或相 关资料,分析在IPv6上进行协议隐 写的可能性。 5.2 基于传输层协议的信息隐藏 【实验目的】【实验目的】 【实验环境】【实验环境】 【原理简介】【原理简介】 【实验步骤】【实验步骤】 【实验结果】【实验结果】 【思考题】【思考题】 【实验目的】 掌握传输层信息隐藏的原理, 理解在传输层两种主要协议上 进行信息隐藏的基本方法,使 用VC

12、设计并编程实现一种传输 层信息隐藏算法。 【实验环境】 (1) 网络环境:100Mbps交换式以太 网,2台主机,其中包括发送端 (/24)与接收端 (/24); (2) 操作系统:Windows2000或 2.4.20以上版本的Linux(如Redhat9 和Fedora系列); (3) 编程工具:Microsoft Visual C+ 6.0,WinPcap开发包(版本3.0 以上)。 【原理简介】 在传输层中,TCP和UDP都使用相同的网络层,TCP向应 用层提供一种面向连接的、可靠的字节流服务,而UDP 提供的是无连接的、不可靠的字节流服务。

13、在TCP与 UDP上都可以进行信息隐藏,本节以TCP为例进行说明 ,其首部格式如下图所示。 TCP序列号是一个32位的字段,用以标识从TCP发送端 向TCP接收端发送的数据字节流,它保证了传输的可 靠性。正常的TCP连接建立分三步,具体原理如下图 所示。 请求端发送一个SYN段指明请求端打算连接的服务器的端口以及ISN; 服务器发回包含服务器ISN的SYN报文段作为应答,同时将确认号设置 为请求端的ISN加1以对请求端的SYN报文段进行确认; 请求端必须将确认号设置为服务器的ISN加1对服务器的SYN报文段进行 确认。 利用TCP数据包的32位序列号隐藏信息的方法原理如下 图所示。 该方法只完

14、成了正常三次握手中的第一 步就实现了秘密信息的传输。由于事先 已对此种报文做过定义,接收端将不会 发送ACK信息,因此避免了接收端认为 受到了SYN Flood攻击。发送端间隔1秒 发送数据包是为了防止在接收端一方发 生数据包乱序的现象。SEQ域的信息可 以经过编码或加密,在实际实现中一般 是将隐匿信息的ASCII码乘以256。该方 法的可靠性较差,在理想情况下,嵌入 效率为每个数据包16比特。 【实验步骤】【实验步骤】 1.1.算法描述算法描述 实验的主要思路与5.1节相似,为掌握更 多协议隐写的实现手段,这里介绍使用 WinPcap进行数据嗅探的方法。 2.2.数据结构数据结构 20字节的

15、TCP头、定义TCP伪报头 3.3.算法实现算法实现 算法分为两个部分实现: 嵌入算法 提取算法 【实验结果】 TCP隐写的嵌入程序 TCP隐写的提取 程序 提 取的 秘密 信息 由于WinPcap嗅探的数据包中包含14字节的 以太网首部,加上IP、TCP首部的40字节和 TCP测试数据(This is a test rn)的17 字节,图中的长度为71。需要说明的是,提 取程序设置了每20个数据包显示一次消息, 故长度为104字节的消息只能在对话框中显 示出80字节,图中的最后一个序列号 1953984370就是对话框最后四个字符 “twor”的ASCII码。除此之外,提取程序 定义了过滤规

16、则,只有满足IP分片R标记和 TCP的SYN标记被置位、IP源地址为 的数据包才会被处理。提取程 序还可将对方发送的信息存储为 ISN_Data.dat文件,并将每个ISN的数字按 序号保存在TCP_SYN.txt中,以便进行进一 步分析。 【思考题】【思考题】 1.根据本节介绍的TCP隐写原理,分 析UDP协议的相关字段,实现基于UDP 的协议隐写。 2.采集windows系统原始的TCP数据包 ,对其序列号字段进行统计分析,思 考如何检测出这种协议隐写。 5.3 基于应用层协议的信息隐藏 【实验目的】【实验目的】 【实验环境】【实验环境】 【原理简介】【原理简介】 【

17、实验步骤】【实验步骤】 【实验结果】【实验结果】 【思考题】【思考题】 【实验目的实验目的】 掌握应用层信息隐藏的原理, 理解在应用层主要协议上进行 信息隐藏的基本方法,利用VC 设计并编程实现一种应用层信 息隐藏算法。 【实验环境实验环境】 (1) 网络环境:100Mbps交换式以太 网,2台主机,其中包括发送端 (/24)与接收端 (/24); (2) 操作系统:Windows2000或 2.4.20以上版本的Linux(如 Redhat9和Fedora系列); (3) 浏览器:IE5.0 (4) 编程工具:Microsoft Visual C+

18、 6.0,WinPcap开发包(版本3.0 以上)。 【原理简介】【原理简介】 低层协议中的协议隐写健壮性不强、隐写效率不 高,实现过程复杂、容易被检测器检测,难以穿 越NAT和代理型防火墙,并且由于使用预留、填 充、可选字段,容易受主动攻击破坏。近年来, 协议隐写有向上层协议发展的趋势。由于防火墙 和路由器一般不检查应用层协议,这使得应用层 协议隐写更容易实施。TCP/IP协议族中的应用层 协议十分丰富,包括SMTP、FTP、SSH、LDAP(分 布式路径协议)等,每个应用层协议都具有复杂 的通信和控制机制,十分适合隐藏信息。 HTTP协议产生的流量仅次于P2P位列第二,是互 联网中应用最广

19、泛的应用层协议之一。同时,该 协议具有复杂的报头,是穿透防火墙等网络访问 控制系统的理想协议,本节主要介绍如何使用 HTTP协议来隐藏信息。 HTTPHTTP概述概述 HTTP(超文本传输协议)建立在请求/响应( Request/Response)模型上,首先由客户建立 一条与服务器的TCP链接,并发送一个请求到服 务器,请求中包含请求方法、URL、协议版本以 及相关的MIME(Multipurpose Internet Mail Extensions)样式消息。服务器返回响应报文 ,包含消息的协议版本、一个成功或失败码以 及相关的MIME式样消息(包含服务器的信息、 资源实体的信息和可能的资

20、源内容)。 HTTP是一个无状态的协议,使用TCP作为底层运 输协议。HTTP客户机发起一个与服务器的TCP连 接,一旦连接建立,浏览器和服务器进程就可 以通过套接字进行面向连接的交互通信。HTTP 的报文有两种,请求报文和响应报文。 HTTP请求报文的一般格式如下图所示: 图中SP表示空格(Space),CRLF表示回车换行 (Carriage Return and Line Feed)。HTTP请求报文 每行用一个回车换行符结束,最后一行后跟有附加的回 车换行符。第一行叫做请求行,后继的行叫做首部行。 请求行有三个字段:方法字段、URL字段和HTTP 协议版本字段。方法字段可以取值GET、

21、POST、 HEAD、OPTION、PUT、DELETE、TRACE、CONNECT ,最常用的是前面三种,其含义如下: GET请求,返回Request-URI所指定的任意信息。 HEAD请求,类似于GET请求,但服务器程序只返回指 定文档的首部信息,而不包含实际的文档内容。该请 求通常被用来测试超文本链接的正确性、可访问性和 最近的修改。 POST请求用来发送电子邮件、新闻或发送能由交互用 户填写的表格。这是唯一需要在请求中发送实体主体 (Body)的请求。使用POST请求时需要在报文首部 Content-Length字段中指出Body的长度。 HTTP协议仍在不断发展,现在的较新版本是 1

22、999年在RFC2616中公布的HTTP/1.1,它已经成 为互联网草案标准。有关HTTP的其它技术细节 可参阅有关文献,在此不再赘述。 协议机制分析协议机制分析 HTTP是一种应用层协议,由于面向用户,协议的制定者基于友 好性的考虑,为HTTP设计了自容错、强纠错的特性。协议由两 部分程序实现:一个客户机程序和一个服务器程序,它们运行 在不同的端系统中,通过交换HTTP报文进行会话。同时,HTTP 是建立在TCP基础上的请求响应模式的协议,该模式的基本工作 原理如图示。 上图中的第一步和最后一步是TCP连接的建立和释放,与 一般的TCP应用没有区别,在关键的中间两步,客户机与 服务器实现了H

23、TTP报文的交互。这个交互过程不是严格 正确的理想过程,经常出现由于种种原因产生畸形报文的 情况。 HTTPHTTP报文构造试验报文构造试验 HTTP请求包括三种方法,下面以GET方法为例, 通过报文构造试验研究HTTP中的协议隐写。实 验的主要思路是利用自编的CovertHTTP_Sender 来构造自定义HTTP请求报文,反复模拟IE向Web 服务器发送GET请求,同时捕获服务器对每一个 请求的HTTP响应报文,并判断其是否正常,以 此来发现HTTP中的语义冗余。 获得获得IEIE的标准的标准GETGET请求请求 首先需要得到普通浏览器软件产生的标准HTTP 请求报文,下面考察Micros

24、oft Windows 2000 SP4下Internet Explorer 5.0的GET请求头数据 ,下文所有的协议隐写将全部以此为例。 通过IE访问IP地址为7的Web服务器 ,该服务器安装的信息服务软件为Microsoft- IIS/5.1,同时运行自编嗅探器IPMonitor,得 到的结果如下页图所示。 第一行是HTTP请求报文的请求行,指明了该请求采用的是GET方法,后续的行是 首部行,分别指明了客户端浏览器接受的媒体类型、语言、编码方式和浏览器版 本、远端主机、连接选项。上述每个字段都有明确的用途,似乎不存在冗余。 下面是截获到TCP三次握手成功后HTTP请

25、求报文中数据段的内容: IE5.0的GET请求 报文 向服务器发送自定义向服务器发送自定义HTTPHTTP请求请求 在得到标准GET请求的数据内容后,开始以此内容为基础模 拟IE向Web服务器发送请求报文,报文构造试验的原理如图 所示。 在报文发送过程中,由于请求报文可能非法, Web服务器会产生各种响应报文,当返回的报文 头为“HTTP/1.1 200 OK”时,说明此报文可从 服务器正常返回网页,故该次试验所产生的报 文在功能上可以等同于IE的标准请求报文。 利用自编CovertHTTP_Sender产生与IE的标准请求一样的HTTP 报文,然后将报文中数据段的首部行不断减少,发现服务器的

26、 响应报文全部正常。经过数次试验,发现上述数据报文可简化 到请求行,在只剩“GET / HTTP/1.1”的情况下仍可从服务器 正常返回网页,实验效果如图所示。 在得出首部行全部为冗余行的同时,经过进一步实 验,发现包括上述首部行在内的所有首部行(不同 操作系统下Opera、Firefox、Netscape等浏览器的 多个版本会产生不同的首部行)中,存在如标识符 号不敏感、大小写无关等诸多冗余,这为协议隐写 创造了条件。 【实验步骤实验步骤】 1.1.算法描述算法描述 2.2.算法实现算法实现 1.算法描述 在HTTP协议中,可通过空白隐写术、大小写混排 编码、非默认首部字段值、微调URI特殊

27、符号、 自定义消息报头域、二进制对象排序隐藏等几种 方法实现协议隐写,算法实现时仅介绍利用自定 义消息报头域进行信息隐藏的方法。 空白隐写术空白隐写术 所谓空白隐写术就是在文本文件一行的末尾附上 Space和Tab等不可显示字符,由于Space和Tab出 现在行尾时是不可见的,这就使得信息可以隐藏 在文本文件中,并且不会影响整个文本的显示。 HTTP报头中,首部字段名后都可以随意嵌入 Space和Tab,无论是首部字段值之中还是行尾, 都不会影响报文的功能。 下面以示例请求报文为例说明隐写过程,为方便显 示,以SP表示Space,HT表示Tab(Horizontal Tab),CRLF表示回车

28、换行。 上例中的请求行“GET / HTTP/1.1”未隐 藏信息,将SP编为“0”、HT编为 “1”,则该请求报文隐匿传送了 “HELLO!”。 大小写混排编码大小写混排编码 HTTP报文由普通ASCII文本书写,因此它只能表示英文字母、数 字和简单标点符号,请求报文的请求行严格区分英文字母的大 小写,但首部行对大小写的变化却不敏感。这种大小写无关意 味着HTTP报文提供了近12.5%的空间隐藏秘密信息。例如: 将小写字母编为“0”、大写字母编为“1”,则该请求报文隐匿传送了 “EVE BETRAY US”。但是,若此报文被网络上的隐写分析者捕获到, 很容易引起怀疑,因为没有哪个程序员会有这

29、样怪异的书写习惯。改进 方法是将原始报文全部置为小写,然后改动报文英文单词的首字母大小 写方式,首字母小写编为“0”、首字母大写编为“1”。例如: 上述HTTP报文隐藏了16比特的信息“0 xDC53”,而这样的编码方式不至 于引人注目,但代价是大大减小了隐写效率。 非默认首部字段值非默认首部字段值 上文提到的HTTP请求报文仅用一句“GET / HTTP/1.1”就可替代 ,原因在于特定浏览器发送请求报文的报头域参数都有默认值, 如果报文中没有此报头域,服务器端就会认为浏览器使用相应的 默认选项。比如Windows 2000下IE 5.0的GET请求头数据中, Accept的默认值是“*/*

30、”,而实际上该值还可以为“image/ gif, text/html, application/vnd.ms-excel”等。例如: 因此,如将使用默认值编为“0”、使用其它值编 为“1”,则该请求报文隐匿传送了比特串“110001”, 该方法具有强健壮性,不容易遭受蓄意攻击,但隐 写效率较差。 微调微调URIURI特殊符号特殊符号 URI即统一资源标识符(Uniform Resource Identifiers),它用于唯一地标识元素或 属性的数字或名称,常用的URL就是一种特 殊的URI。HTTP程序在实现时屏蔽了用户之 间可能存在的差异,包括用户的错误输入、 简化输入等。最明显的例子在“

31、/”、默认 端口和单双引号上,比如“http:/ :/”、“ http:/ :80”在HTTP中代表同样的含义 。而在查询资源Cookie时报头域要用到的 If-None-Match默认使用双引号来标识资源 哈希值,如: If-None-Match: 0c41a86ad11c11:1aec HTTP报头中还有几种标点符号括号、冒号、逗号、分号和 等于号,它们本身不具有冗余性,但它们对周围的空格变化不 敏感。前四种在每一个首部行都中有使用,等于号在短时间内 再次发送同样资源请求的HTTP报头中存在。举例如下: 标点符号左右以不出现空格编为“0”,出现空 格编为“1”,每个符号可携带2比特信息,上

32、 例隐匿传送了比特串“100101100111100101” ,该方法具有很强隐蔽性,报文即使被攻击者 截获也很难发现存在隐蔽通信。 自定义消息报头域自定义消息报头域 HTTP报文首部行常用字段接近20种,请求报文常用字段共9种。HTTP 程序的多样化,使新版本客户端发送的HTTP报头经常出现服务器端无 法识别的情况(如HTTP/1.1的请求报文发送到了只支持HTTP/1.0的服 务器上),此时服务器会忽略这样的字段,只提供可识别字段所对应 的服务,HTTP代理也会原样转发这样的字段。因此,可以通过自定义 消息报头域来隐藏秘密信息,例如: 该方法与上文的区别是采用了直接嵌入的形式,使得隐藏信息的 容量可以随意扩充,隐写效率也很高,但由于秘密信息以明文存 在,透明性不强,可以采用加密算法(如DES、AES)对秘密信息 加密传输。需要注意的是,经过加密后,输入信息的比特流成随 机分布,很可能出现一个字节的第一比特为1的情况,而标准 ASCII的最高位恒为0。这样,HTTP在传输过程中可能会将每字节 的最高位置零,在到达接收端后,解密得不到原始秘密信息。解 决该问题可采用BASE64编码,将3个8比特的信息编码成4个6比特 的信息,便不会在传输时受到干扰。 二进制对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论