简介
sslscan 查询 SSL/TLS 服务(如 HTTPS)并报告协议版本、密码套件、密钥交换、签名算法和正在使用的证书。这有助于用户从安全角度了解哪些参数较弱。
SSLSCAN还可以将结果输出到XML文件中,以便于外部程序。
安装
源码安装
通过以下命令来进行克隆项目,建议请先提前挂好代理。不然可能会克隆不了。
git clone https://github.com/rbsec/sslscan.git
进入目录并查看
cd sslscan/
ls
安装
sudo make install
输入以下命令。如果出现这个界面就说明安装成功了。
sslscan -h
docker 安装
同上先克隆源码。
git clone https://github.com/rbsec/sslscan.git
进入目录。
cd sslscan/
ls
用以下方式构建容器,建议请先提前给docker配置好国内镜像或挂好代理。
sudo make docker
输入以下命令,如果出现这个界面就说明安装成功了。
sudo docker run --rm -ti sslscan:sslscan --help
APT 包管理器安装
Kali Linux 默认已安装好 sslscan 工具了。也可以通过以下命令进行安装。
sudo apt install sslscan
使用
1. --help
显示您正在阅读的帮助文本。显示选项摘要
sslscan --help
2. 常规使用
语法:sslscan [options] [host:port | host]sslscan 13.107.21.200:443
3. --targets=<file>
包含要检查的主机列表的文件。主机可以配备端口 (host:port)
包含要检查的主机列表的文件。可以为主机提供端口(即主机:端口)。每行一个目标
sslscan --targets=targets.txt
4. --sni-name=<name>
SNI 的主机名。对 SNI 使用不同的主机名。
sslscan --sni-name=qq.com 112.60.14.252:443
5. --ipv4, -4
仅使用 IPv4。强制 IPv4 DNS 解析。默认为尝试 IPv4,如果失败则返回 IPv6。
sslscan --ipv4 112.60.14.252:443
6. --ipv6, -6
仅使用 IPv6。强制 IPv6 DNS 解析。默认为尝试 IPv4,如果失败则返回 IPv6。
sslscan --ipv6 112.60.14.252:443
7. --show-certificate
显示完整证书信息。显示证书信息。
sslscan --show-certificate 112.60.14.252:443
8. --show-client-cas
显示用于 TLS 客户端身份验证的受信任 CA
显示服务器允许进行客户端身份验证的 CA 列表。对于 IIS/Schannel 服务器,将为空白。
sslscan --show-client-cas 112.60.14.252:443
9. --no-check-certificate
不警告弱证书算法或密钥。不标记使用弱算法(MD5 和 SHA-1)或短(<2048 位)RSA 密钥签名的证书
sslscan --no-check-certificate 112.60.14.252:443
10. --ocsp
从服务器请求 OCSP 响应。显示 OCSP 状态
sslscan --ocsp 112.60.14.252:443
11. --pk=<file>
包含私钥的文件或 PKCS#12 文件,包含私钥/证书对
包含私钥的文件或包含私钥/证书对的 PKCS#12 文件(由 MSIE 和 Netscape 生成)
12. --pkpass=<password>
私钥或 PKCS#12 文件的密码
sslscan --pk=client.key --pkpass=mypassword 112.60.14.252:443
13. --certs=<file>
包含 PEM/ASN1 格式的客户端证书的文件
sslscan --pk=client.key --certs=client.crt 112.60.14.252:443
14. --ssl2
仅检查是否启用了 SSLv2
sslscan --ssl2 112.60.14.252:443
15. --ssl3
仅检查是否启用了 SSLv3
sslscan --ssl3 112.60.14.252:443
16. --tls10
仅检查 TLSv1.0 密码
sslscan --tls10 112.60.14.252:443
17. --tls11
仅检查 TLSv1.1 密码
sslscan --tls11 112.60.14.252:443
18. --tls12
仅检查 TLSv1.2 密码
sslscan --tls12 112.60.14.252:443
19. --tls13
仅检查 TLSv1.3 密码
sslscan --tls13 112.60.14.252:443
20. --tlsall
仅检查 TLS 密码(所有版本)(版本 1.0、1.1、1.2 和 1.3)
sslscan --tlsall 112.60.14.252:443
21. --show-ciphers
显示支持的客户端密码。显示 sslscan 支持的完整密码列表
sslscan --show-ciphers 154.12.92.33:443
22. --show-cipher-ids
显示密码 ID。打印十六进制密码 ID。
sslscan --show-cipher-ids 154.12.92.33:443
23. --show-times
显示握手时间(以毫秒为单位)
显示每次握手所用的时间(以毫秒为单位)。请注意,每个密码只发出一个请求,并且 ClientHello 的大小不是恒定的,因此不应将其用于适当的基准测试或性能测试。
您可能还想使用 --no-cipher-details 使输出更清晰一些。
sslscan --show-times 154.12.92.33:443
24. --no-cipher-details
禁用 EC 曲线名称和 EDH/RSA 密钥长度输出。隐藏 NIST EC 曲线名称和 EDH/RSA 密钥长度。
sslscan --no-cipher-details 154.12.92.33:443
25. --no-ciphersuites
不检查支持的密码套件。不扫描支持的密码套件。
sslscan --no-ciphersuites 154.12.92.33:443
26. --no-compression
不检查 TLS 压缩 (CRIME)
sslscan --no-compression 154.12.92.33:443
27. --no-fallback
不检查 TLS Fallback SCSV。不检查 TLS 后备信令密码套件值(后备)。
sslscan --no-fallback 154.12.92.33:443
28. --no-groups
不枚举密钥交换组
sslscan --no-groups 154.12.92.33:443
29. --no-heartbleed
不检查 OpenSSL Heartbleed (CVE-2014-0160)
心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过滤,即可以读取的数据比应该允许读取的还多。HeartBleed主要存在与OpenSSL的1.0.1版本到1.0.1f版本。利用该漏洞,攻击者可以远程读取服务器内存中64K的数据,获取内存中的敏感信息。
sslscan --no-heartbleed 154.12.92.33:443
30. --no-renegotiation
不检查 TLS 重新协商
sslscan --no-renegotiation 154.12.92.33:443
31. --show-sigs
枚举签名算法
sslscan --show-sigs 154.12.92.33:443
32. --starttls-ftp
FTP 的 STARTTLS 设置
sslscan --starttls-ftp 154.12.92.33:443
33. --starttls-imap
IMAP 的 STARTTLS 设置
sslscan --starttls-imap 154.12.92.33:443
34. --starttls-irc
IRC 的 STARTTLS 设置
sslscan --starttls-irc 154.12.92.33:443
35. --starttls-ldap
LDAP 的 STARTTLS 设置
sslscan --starttls-ldap 154.12.92.33:443
36. --starttls-mysql
MYSQL 的 STARTTLS 设置
sslscan --starttls-mysql 154.12.92.33:443
37. --starttls-pop3
POP3 的 STARTTLS 设置
sslscan --starttls-pop3 154.12.92.33:443
38. --starttls-psql
为 PostgreSQL 设置 STARTTLS
sslscan --starttls-psql 154.12.92.33:443
39. --starttls-smtp
为 SMTP 设置 STARTTLS
sslscan --starttls-smtp 154.12.92.33:443
40. --starttls-xmpp
为 XMPP 设置 STARTTLS
sslscan --starttls-xmpp 154.12.92.33:443
41. --xmpp-server
使用服务器到服务器的 XMPP 握手。执行服务器到服务器的 XMPP 连接。如果 --starttls-xmpp 失败,请尝试此操作。
sslscan --xmpp-server 154.12.92.33:443
42. --rdp
在开始扫描前发送 RDP 前导码
sslscan --rdp 154.12.92.33:443
43. --bugs
启用 SSL 实施错误解决方法
sslscan --bugs 154.12.92.33:443
44. --no-colour
禁用彩色输出
sslscan --no-colour 154.12.92.33:443
45. --sleep=<msec>
在连接请求之间暂停。默认为禁用
连接之间暂停。对 STARTTLS SMTP 服务很有用,或任何其他执行速率限制的服务。默认值为禁用。
sslscan --sleep=100 154.12.92.33:443
46. --timeout=<sec>
设置套接字超时。默认为 3 秒
设置套接字超时。对于无法响应其不理解的密码的主机很有用。默认值为 3 秒。
sslscan --timeout=3 154.12.92.33:443
47. --connect-timeout=<sec>
设置连接超时。默认为 75 秒
设置初始连接超时。对于响应初始 connect() 较慢的主机很有用。默认值为 75 秒。
sslscan --connect-timeout=75 154.12.92.33:443
48. --verbose
显示详细输出
sslscan --verbose 154.12.92.33:443
49. --version
显示程序版本
sslscan --version
50. --xml=<file>
将结果输出到 XML 文件。使用 - 作为 STDOUT。
sslscan --xml=result.xml 154.12.92.33:443
示例
扫描本地 HTTPS 服务器
sslscan localhost
sslscan 127.0.0.1
sslscan 127.0.0.1:443
sslscan [::1]
sslscan [::1]:443
总结
sslscan 是一个强大的 SSL/TLS 扫描工具,能够检测服务器的加密协议、支持的加密套件及潜在的安全漏洞。通过其灵活的参数配置,可以轻松进行深度的 SSL/TLS 安全分析,帮助提高系统的安全性。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。