我正在尝试使用 ncat 连接虚拟 Windows7 和 Linux 机器。
在 Linux 上:
ncat -vnl 4444 --ssl
在 Windows 上:
ncat -v 10.10.14.2 4444 --ssl
当我尝试从客户端连接时出现此错误:
Ncat: Failed SSL connection from 10.10.14.2: error:1417D102:SSL routines:
tls_process_client_hello:unsupported protocol
我尝试过但没有效果的方法:
- 添加额外参数 --ssl-cert test-cert.pem --ssl-key test-key.pem
- 尝试其他方法(Linux 客户端,Windows 服务器),我也在 Google 上搜索了很多,但是,我找不到真正的解决方案,这可能是所有问题所在。
我可以使用 openssl s_client 来实现这一点。但我需要使用 ncat,我该如何解决这个问题?
答案1
问题在于 Linux ncat 服务器仅使用 TLS1.2 进行 SSL 连接。Windows ncat 未使用 TLS1.2。这会导致不支持的协议错误。
我可以使用 Linux 上的 ncat 版本 7.60 复制此问题,并使用不同的协议选项通过 openssl s_client 连接到它。ncat 7.60 仅使用 tls1.2 进行 ssl 连接。
为了使用 ncat 实现此功能,请在两个系统上安装相同版本的 ncat。
答案2
检查/ect/ssl/openssl.conf
是否有设置最低 TLS 版本的内容。
例如,我在我的配置底部发现了这一点:
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
我认为你的问题是MinProtocol
设置为仅接受 TCP 1.2
这是一个更安全的配置,但如果您正在执行 PWK,那么您可能需要注释掉此部分,以便使用 ncat 可以实现反向 shell。
答案3
由于您似乎来自 PWK,请查看其论坛上的勘误表。
从他们的论坛来看,这似乎是openssl s_client
可以接受的,至少直到这个问题在 Windows7 虚拟机上得到解决。
如果你真的需要要使用ncat
,升级到最新版本应该有帮助。
答案4
如果你使用的是 Kali 的更新版本,则文件位于 /etc/ssl/openssl.cnf,转到 MinProtocol 选项并将其设置为 TLSv1.0。要运行的快速命令是
locate openssl.c