gpt4 book ai didi

java - 在 Java 中混淆 SSL 客户端 Hello v2 消息

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:07 25 4
gpt4 key购买 nike

我目前正在开发客户端/服务器 TLS 工具,该工具需要我们通过防火墙进行连接。由于我们无法控制的原因,我们只被授予传出 TCP 连接。

问题是我们客户端的防火墙阻止了客户端 Hello v2 消息(可能还有整个 SSL 握手)。

有没有办法以某种方式混淆流?我正在考虑尝试使用压缩来使防火墙无法读取流。(也许使用 JDK7 的 GzipOutputStream 现在允许 syncFlush 刷新)

我不是 SSL 专家,但在我看来应该可以翻译整个流,这应该使防火墙无法获取连接并阻止它。

据我所知,有几种(两种?)方法可以解决此问题:

  • 覆盖默认实现
  • 实现 SSLServerSocketFactory

第一个选项不适合我,因为我找不到 com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl 的源代码,这是默认实现。我确实浏览了它的 openJDK 源代码,但即使在那里,源代码似乎也丢失了。

实现 SSLServerSocketFactory 超出了我的能力范围。正如我所说,我不是 SSL 专家。

请注意,该应用程序确实可以通过其他攻击性较低的防火墙/防火墙规则正常工作。

最佳答案

压缩加密流没有用,实际上您只需要一些掩码来避开防火墙。

在客户端,您可以使用 SSLSocketFactory的方法 createSocket(socket, host, port, autoclose) 创建基于另一个套接字的 SSL 套接字 - 这个另一个套接字可以获得您的特殊 SocketImpl 实现,在第一个上做一个简单的异或屏蔽一些字节。

在服务器端,它更复杂,因为 SSLServerSocketFactory 没有这样的方法。

answer to Java RMI + SSL + Compression = IMPOSSIBLE! 中,我描述了如何构建委托(delegate) Socket 工厂。它是为 Rmi(Client|Server)SocketFactory 完成的,但它会以类似的方式为 ServerSocketFactory 或 SocketFactory 工作。


但当然也可能是您的防火墙实际上并未阻止 SSL 流量,而是阻止了任何未列入白名单的内容(如 HTTP)。在构建包装套接字实现之前,请尝试发送一些随机数据并接收它们的简单套接字+服务器套接字是否工作。

关于java - 在 Java 中混淆 SSL 客户端 Hello v2 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com