首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SSL握手中插入自定义数据包?

如何在SSL握手中插入自定义数据包?
EN

Security用户
提问于 2013-03-27 18:49:01
回答 1查看 1K关注 0票数 1

我正试图与协议不规范的SSL服务器进行通信.我想在握手中插入自定义数据包。我正在使用几个SSL工具,因此在每个工具上更改源代码是一项很大的工作。更愿意使用网络过滤器来修改(插入自定义数据包)到每一次SSL握手中。

已经上网了。不去。它可以修改现有的数据包,但不能插入新的数据包。

尝试过ncat。不去。它可以插入数据包,但当我们启动SSL工具时,将设置第二个TCP会话。尝试了很多变体。这是问题的根源:如何将数据包插入SSL握手会话的中间(而不启动单独的TCP会话)?

EN

回答 1

Security用户

发布于 2013-03-27 20:08:21

在SSL握手中,客户端和服务器交换记录中编码的握手消息。如果协议变体包含额外的握手消息,那么就有一个问题:在握手结束时,交换两条Finished消息,它们的内容被计算为所有先前握手消息的哈希函数,因此包括额外的消息。推论:如果要插入额外的握手消息,则必须修改SSL客户端工具,因为该工具计算哈希,如果不知道额外的消息,则会计算错误的值。

如果您的协议变体包含一种与“握手消息记录”不同的类型的额外记录(标准中的类型为22 ),并且额外的记录不会影响握手的计算,那么您的筛选策略可能会工作。你必须:

  1. 拦截连接;有几种方法可以做到这一点,但最简单的方法是更改配置和/或DNS,使源计算机不连接到目标服务器,而是连接到您自己的服务器,服务器本身连接到合法的服务器,并向两个方向中继数据。
  2. 解析数据,以便检测握手记录,以了解必须在流中添加额外消息的位置和时间(类似地,还必须分析和删除来自服务器的额外消息,以便SSL客户端工具不会阻塞它们)。

所以你是在参与一些编程。SSL的记录协议并不复杂,只要您篡改未加密的记录(握手完成前的记录),请参阅标准第6节。此外,有关协议的详细介绍,请参见这个答案 (我认为该协议比标准更容易阅读)。对于中继,最简单的实现策略可能是启动两个线程,每个线程在从一台机器到另一台机器的读到写的循环中运行。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/33300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档