简介
Sslyze是一个快速而强大的SSL/TLS扫描工具和Python库。
Sslyze可以通过连接到服务器来分析服务器的SSL/TLS配置,以确保其使用强加密设置(证书,密码套件,椭圆曲线等),并且不容易受到已知TLS的影响攻击(Heartble,机器人,OpenSSL CCS注入等)。
Sslyze是可以分析SSL配置的Python工具通过连接到服务器的服务。它被设计为快速和全面,应帮助组织和测试人员确定影响其SSL服务器的错误配置。
特点
- 专注于速度和可靠性:Sslyze是一种经过战斗的工具,用于可靠地扫描数十万个每天的服务器。
- 易于操作:Sslyze可以直接从CI/CD运行,以便不断检查服务器 Mozilla推荐的TLS配置。
- 完全记录的 Python API 直接从任何 Python应用程序,例如部署到AWS Lambda的函数。
- 支持扫描非HTTP服务器,包括SMTP,XMPP,LDAP,POP,IMAP,RDP,POSTGRES和FTP服务器。
- 扫描的结果可以轻松地保存到JSON文件中以进行以后处理。
安装
源码安装
通过以下命令进行克隆项目,建议请先提前挂好代理。
git clone https://github.com/nabla-c0d3/sslyze.git
进入目录并查看
cd sslyze/
ls
创建python虚拟空间并激活。
python3 -m venv venv
source venv/bin/activate
开始安装
python3 setup.py install
输入以下命令,如果出现这个界面就说明安装成功了。
sslyze -h
docker 安装
同上克隆项目并进入。建议请先提前配置好国内镜像或代理。
git clone https://github.com/nabla-c0d3/sslyze.git
cd sslyze
运行以下命令开始安装
sudo docker build -t sslyze .
输入以下命令,如果出现这个界面就说明安装成了。
sudo docker run --rm sslyze --help
pip 包管理器安装
请先创建python虚拟空间并激活。
python3 -m venv venv
source venv/bin/activate
通过以下命令安装
pip3 install sslyze
运行以下命令,如果出现这个界面就说明安装成功了。
sslyze -h
apt 包管理器安装
Kali Linux 默认已经安装好 sslyze 工具了。也可以通过以下命令进行安装。
sudo apt install sslyze
使用
1. -h, --help
显示此帮助消息并退出
sslyze -h
位置参数
2. target
要扫描的服务器列表。
sslyze 35.215.150.145
信任存储选项
3. --update_trust_stores
更新 SSLyze 使用的默认信任存储。最新的存储将从 https://github.com/nablac0d3/trust_stores_observatory 下载。
此选项旨在单独使用,并将使提供给 SSLyze 的任何其他命令行选项都保持沉默。
sslyze --update_trust_stores
客户端证书选项
4. --cert CERTIFICATE_FILE
客户端证书链文件名。证书必须为 PEM 格式,并且必须从主体的客户端证书开始排序,然后是中间 CA 证书(如果适用)。
sslyze --cert client.pem 35.215.150.145
5. --key KEY_FILE
客户端私钥文件名。
sslyze --key client.key 35.215.150.145
6. --keyform KEY_FORMAT
客户端私钥格式。DER 或 PEM(默认)。
7. --pass PASSPHRASE
客户端私钥密码。
sslyze --cert client.pem --key client.key --keyform PEM --pass mypassword 35.215.150.145
输入和输出选项
8. --json_out JSON_FILE
将扫描结果作为 JSON 文档写入文件 JSON_FILE。如果 JSON_FILE 设置为“-”,则 JSON 输出将打印到 stdout。生成的 JSON 文件是 SSLyze 的 Python API 中描述的 ScanResult 对象的序列化版本:节点和属性将相同。有关更多详细信息,请参阅 https://nablac0d3.github.io/sslyze/documentation/available-scan-commands.html。
sslyze --json_out result.json 35.215.150.145
9. --targets_in TARGET_FILE
从文件 TARGET_FILE 读取要扫描的目标列表。它应该每行包含一个主机:端口。
sslyze --targets_in targets.txt
10. --quiet
不向 stdout 输出任何内容;使用 --json_out 时很有用。
sslyze --quiet 35.215.140.70
连接选项
11. --slow_connection
大大减少 SSLyze 发起的并发连接数。如果您的主机和服务器之间的连接速度很慢,或者服务器无法处理许多并发连接,这将使扫描速度变慢但更可靠。如果您遇到大量超时或错误,请启用此选项。
sslyze --slow_connection 35.215.140.70:443
12. --https_tunnel PROXY_SETTINGS
通过 HTTP CONNECT 代理将所有流量通过隧道传输到目标服务器。HTTP_TUNNEL 应为代理的 URL:“http://USER:PW@HOST:PORT/”。对于需要身份验证的代理,仅支持基本身份验证。
sslyze --https_tunnel https://192.168.174.129:10809 35.215.140.70:443
13. --starttls PROTOCOL
连接到目标服务器时执行 StartTLS 握手。StartTLS 应为以下之一:auto、smtp、xmpp、xmpp_server、pop3、imap、ftp、ldap、rdp、postgres。'auto' 选项将导致 SSLyze 从提供的端口号推断出每个目标服务器的协议(ftp、imap 等)。
sslyze --starttls auto 35.215.140.70:443
14. --xmpp_to HOSTNAME
STARTTLS XMPP 的可选设置。XMPP_TO 应为要放入 XMPP 流的“to”属性中的主机名。默认为服务器的主机名。
sslyze --xmpp_to xmpp.example.com 35.215.140.70:443
15. --sni SERVER_NAME_INDICATION
使用服务器名称指示指定要连接的主机名。仅影响 TLS 1.0+ 连接。
sslyze --sni www.baidu.com 35.215.140.70:443
扫描命令
16. --tlsv1
测试服务器是否支持 TLS 1.0。
sslyze --tlsv1 172.247.44.143
17. --heartbleed
测试服务器是否存在 OpenSSL Heartbleed 漏洞。
sslyze --heartbleed 172.247.44.143
18. --fallback
测试服务器是否支持 TLS_FALLBACK_SCSV 机制,以防止降级攻击。
sslyze --fallback 172.247.44.143
19. --certinfo
检索并分析服务器的证书以验证其有效性。
sslyze --certinfo 172.247.44.143
20. --certinfo_ca_file CERTINFO_CA_FILE
与 --certinfo 一起使用。包含 PEM 格式的根证书的文件路径,将用于验证服务器证书的有效性。
sslyze --certinfo --certinfo_ca_file ca.pem 172.247.44.143
21. --tlsv1_2
测试服务器是否支持 TLS 1.2。
sslyze --tlsv1_2 172.247.44.143
22. --http_headers
测试服务器是否存在与安全相关的 HTTP 标头。
sslyze --http_headers 172.247.44.143
23. --compression
测试服务器是否支持 TLS 压缩,可利用该压缩执行 CRIME 攻击。
sslyze --compression 172.247.44.143
24. --early_data
测试服务器是否支持 TLS 1.3 早期数据。
sslyze --early_data 172.247.44.143
25. --tlsv1_1
测试服务器是否支持 TLS 1.1。
sslyze --tlsv1_1 172.247.44.143
26. --openssl_ccs
测试服务器是否存在 OpenSSL CCS 注入漏洞 (CVE-2014-0224)。
sslyze --openssl_ccs 172.247.44.143
27. --reneg
测试服务器是否支持不安全的 TLS 重新协商和客户端发起的重新协商。
sslyze --reneg 172.247.44.143
28. --elliptic_curves
测试服务器是否支持椭圆曲线。
sslyze --elliptic_curves 172.247.44.143
29. --sslv3
测试服务器是否支持 SSL 3.0。
sslyze --sslv3 172.247.44.143
30. --resum
测试服务器是否支持使用会话 ID 和 TLS 票证的 TLS 1.2 会话恢复。
sslyze --resum 172.247.44.143
31. --resum_attempts RESUM_ATTEMPTS
与 --resum 一起使用。SSLyze 应尝试的会话恢复次数(包括会话 ID 和 TLS 票证)。默认值为 5,但可以使用更高的值(例如 100)来更准确地衡量服务器会话恢复成功或失败的频率。
sslyze --resum --resum_attempts 20 172.247.44.143
32. --tlsv1_3
测试服务器是否支持 TLS 1.3。
sslyze --tlsv1_3 172.247.44.143
33. --sslv2
测试服务器是否支持 SSL 2.0。
sslyze --sslv2 172.247.44.143
34. --robot
测试服务器是否存在 ROBOT 漏洞。
sslyze --robot 172.247.44.143
总结
SSLyze 是一款强大的 SSL/TLS 扫描工具,可用于检测协议支持情况、证书信息、安全漏洞等。通过合理使用其多种参数,安全人员可以快速评估服务器的 TLS 安全性,从而提升整体防护能力,确保数据传输的安全性。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。