Wireshark修改网络协议中数据隐藏
Wireshark修改网络协议中数据隐藏
目录
一、简介
1.1、概述:
Rowland在《First Monday》这本黑客杂志上发表了一篇题为 Covert Channels in the TCP/IP Protocol Suite" (TCP/IP协议族中的隐蔽通道)的论文。
"TCP/IP协议族存在很多弱点, 攻击者可以利用这些弱点采用技术手段以隐蔽通道的方式在正常报文中传捡数据。
该论文披露了TCP协议(Transmission Control Protocol, 网络传输协议)在数据隐藏方面的脆弱性, 并展示了可以在 TCP初始握手中隐藏数据的一个既简单又直接的方法。 从某种意义上讲, 这篇论文提醒了人们:在数据流中隐藏信息不只是看似合理, 而且简单实用。与网络安全领域大多数此类警示信息一样, 以前也曾有人大声疾呼TCP/IP协议族存在弱点, 我们应该开发更安全的协议来抵抗安全风险和威胁。 但是随着呼声逐渐消退, 人们也渐渐忽略了TCP/IP协议的脆弱性, 并一直沿用至今,现在又开始面临新的威胁。
1.2、Wireshark
简介:
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进
下载(官网):
使用:
二、TCP的隐蔽通道
2.1、简介:
为了更清晰地阐述TCP隐蔽通道的灵活性,利用初始序列号来隐藏数据。
建立TCP 连接必需的典型的 TCP 3 次握手。 建立连接的过程中, 我们改进的 TCP 隐蔽通道的关键就是初始序列号的选择。
隐蔽的TCP初始握手序列
2.2、控制序列号
因为会话发起方(此处为客户端) 指定了初始序列号, 我们可以通过控制这个序列号来传递信息。 Wireshark中高亮客户端指定的序列号: Wireshark 界面底部为 TCP 原始报文中的十六进制序列号, 上方列表中为经 Wireshark 转化后的十进制序列号。 下面, 我们分析十六进制的序列号, 再按小端序将其手工转换为十进制数:
Wireshark 抓取的TCP握手信息
C4 52 OB 00->00 OB 52 C4 按小端序转换后的十六进制数
将这个十六进制数再转换成十进制数, 结果为 742 084 (OB 52 C4 转换成的十进制数)。在这个简单示例中, 为了模糊被隐藏的信息, 我们选择一个常数K: 6236 作为在客户端和服务端共享的乘数。 这样, 在双方之间传递的每个字节都会乘上常数 6236 的 ASCII 值。
ASCIT 值 x K=序列号
反过来, 在服务端可以恢复被隐藏的数据:
序列号 K =ASCII 值
在图中,想要传输的数据是字母 “ w", 它的十进制格式是 119。根据上述公式, 我们得到:119 X 6236 = 742 084 (十进制) = 00 OB 52 C4(十六进制)
本次传输的完整消息
通过修改序列号在TCP 连接中隐藏消息
2.3、改进
通过精细化掩盖方法来改进这个技术。 比如通过对传输的字符串进行异或(XOR) 运算来掩盖秘密消息。 这样仍然可以提高每个连续序列号的随机性。 这种数据隐藏或泄露方法也有局限性:每次连接只能发送1或 2 个字节。 但是, 如果只需传递密钥、 短消息, 或者警示信号的话, 这个方法是个不错的选择
时至今日,不仅TCP协议依然存在Craig所说的脆弱性,其他很多新的协议也存在不少脆弱性,让攻击者有大量的可乘之机,可以通过隐蔽手段来隐藏信息。
- 点赞
- 收藏
- 关注作者
评论(0)