nmap、openssl、ssllab 之间的 TLS 版本扫描差异

nmap、openssl、ssllab 之间的 TLS 版本扫描差异

我正在尝试扫描一个端点以查看它正在运行的 TLS 版本,我发现 nmap 扫描和 openssl 扫描之间存在一些差异。扫描同一台主机时,我只看到 nmap (7.40) 中的 TLSv1.0,而我可以看到 openssl (1.0.1e) 中的 TLSv1.2。我还使用 Qualys SSL Labs 扫描同一台主机,它似乎也得到了 TLSv1.2。所以我想知道为什么 nmap 只显示 TLSv1.0?(扫描结果如下)

nmap扫描:

localhost:~ localuser$ nmap -sV --script ssl-enum-ciphers -p 443 example.com

Starting Nmap 7.40 ( https://nmap.org ) at 2017-02-11 13:13 PST
Nmap scan report for example.com (###.###.###.###)
Host is up (0.016s latency).
PORT    STATE SERVICE  VERSION
443/tcp open  ssl/http Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp192r1) - D
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp192r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp192r1) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|     compressors:
|       NULL
|     cipher preference: client
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       Key exchange (secp192r1) of lower strength than certificate key
|_  least strength: D

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.51 seconds
localhost:~ localuser$

openssl 扫描

SSL handshake has read 8589 bytes and written 453 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 589F81CE166178A7DA49EC4EF9F86412FA161E6B4C54CB65E7111784B48A2054
    Session-ID-ctx:
    Master-Key: 94179213B34A8DCA54A4AD23661E2C8EBF3E46BC0E251426DC377FD27513584B9C978357CAE0663AF77B488AC6158887
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1486848462
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

答案1

nmapssl-enum-ciphers脚本是仅有的告诉你关于密码套件服务器支持的。它确实不是告诉您服务器支持的最高 SSL/TLS 版本。每个密码套件都针对一组 SSL/TLS 版本进行定义。nmap 告诉您列出的 6 个密码套件是从 TLSv1.0 版本开始定义的(包括 TLSv1.1 和 TLSv1.2)。

答案2

这是ssl-enum-ciphers。处理所有不同的 TLS 实现可能非常困难,在这种情况下,脚本将带有不匹配 TLS 版本的警告消息解释为拒绝脚本尝试的 TLS 版本。我与互联网上的另一个系统确认,这种行为实际上不是拒绝协议版本,而是拒绝提供的密码套件。为了让事情变得更复杂,如果一个密码在一个版本(TLS 1.1)中受支持,但在另一个版本(TLS 1.2)中不受支持,则此服务器将切换到支持该密码的版本,即使客户端不提供该协议版本!

我对脚本做了一些修改,以便处理这些奇怪的边缘情况。扫描此服务器比更符合 RFC 的服务器花费的时间更长,但现在它可以正常工作了。您可以通过我上面链接的 NSEdoc 页面上的下载链接获取更新的脚本,它将包含在下一个 Nmap 版本中。

相关内容