SSL/TLS 安全测试

本文详述了如何使用半自动化工具testssl.sh进行SSL/TLS安全性评估,包括常见漏洞如SWEET32、DROWN、Heartbleed等的测试方法。通过手动和自动化测试,帮助信息安全专业人员优化TLS/SSL测试流程,提升网络通信的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍了使用半自动化工具执行SSL&TLS安全性评估的过程,以及如何使用手动及工具的测试方法验证并发现问题。目的是优化TLS和SSL安全测试流程,帮助信息安全顾问在渗透测试时在TLS / SSL上花费更少的时间。

什么是TLS和SSL?

安全套接层(SSL)和传输层安全(TLS)加密用于通过互联网提供通信安全(传输加密)和来保护网络流量和互联网上的隐私,用于诸如网络,电子邮件,即时消息(IM)和一些虚拟专用网络(VPN)。

因此,TLS安全配置很重要,应花时间学习如何识别常见的漏洞和安全配置错误。


TLS / SSL安全测试工具

testssl.sh

testssl.sh是我们首选的测试工具,它涵盖了TLS和SSL评估所需的所有测试所需工具,并定期更新。

安装

您可以通过执行其git clone来安装最新版本的tesetssl.sh:

git clone https://github.com/drwetter/testssl.sh.git

testssl.sh示例

有许多可以用于testssl.sh的测试选项,您应该使用的选项将在很大程度上取决于您的测试要求。以下是部分有关testssl.sh命令行选项的示例。运行./testssl.sh可以看到所有选项。

测试单个主机上的所有内容并输出到控制台
./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U TARGET-HOST
测试单个主机上的所有内容并输出到HTML
./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U TARGET-HOST | aha> OUTPUT-FILE.html
测试子网上的所有主机并输出到HTML
./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U 192.168.1.0/24 | aha> OUTPUT-FILE.html

与上述相同,但只列举每个服务器支持的密码类型:

./testssl.sh -E 192.168.1.0/24 | aha> OUTPUT-FILE.html
控制台输出的截图
f2974159234dd10e0e4f01eec9e93046.png

HTML输出的截图

850361f7453378e8e2c8020b172a846d.png

TLS和SSL漏洞测试

常见的TLS和SSL漏洞已经列在下面了,每个漏洞都有一个说明,如果可能的话可以手动或自动测试漏洞

SWEET32(CVE-2016-2183)

367768fcf0650333d64f663abe8b3121.png

 

定义

64位块大小(如Triple-DES(3DES))的传统块密码在CBC模式下使用,易受到攻击。当使用CBC模式操作时,使用simple birthday attack来识别64位块密码冲突。当碰撞发生时,这意味着输入与输出相同,使得可以执行BEAST style attack来渗透加密的数据。

作者Karthik Bhargavan和Gaetan Leurent能够在浏览器(作为MiTM)中运行JavaScript,并发送大量的数据导致冲突,然后使用此信息来恢复会话cookie。

测试SWEET32

确定服务器是否支持Triple-DES密码,如果服务器支持Triple-DES,则易受SWEET32攻击。

SWEET32 testssl.sh

使用testssl.sh识别弱密码:

./testssl.sh --ciphers TARGET

如果输出显示Tripe DES密码,就像下面的截图一样,目标服务器容易受到SWEET32的影响:

fbf9edfcfdfba5f32ebd99178cd019b6.png

如果输出看起来像下面的截图,服务器不容易受到SWEET32的影响:

6a2ae2f314691cff0379a4cbc84431cc.png此外,您可以枚举服务器提供给每个协议的密码,方法如下:

./testssl.sh -E TARGET

ea827e3662ceaad2a4f55a77ca166b32.png

使用3DES的任何密码都易受SWEET32影响。

SWEET32 Nmap测试

Nmap也可用于枚举服务器的密码,NSE插件还将通知是否有任何64位块密码可用。

nmap --script = ssl-enum-ciphers -p443 TARGET

如果您在输出中看到以下内容,则会发现64位块密码

warnings: 
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
手动测试SWEET32

根据上面方法测试用Nmap NSE脚本枚举密码

DROWN(CVE-2016-0800)

DROWN定义

DROWN(使用过时和弱化的eNcryption解密RSA),DROWN攻击的最一般变体利用了SSLv2协议的一个根本缺点,允许中间人(MiTM)攻击者利用导入符合20世纪90年代美国政府的限制(EXPORT等级加密在下面的FREAK漏洞描述中详细描述)的密码学。

测试DROWN
testssl.sh DROWN测试
./testssl.sh -D TARGET
Nmap DROWN测试
nmap -p 443 -sV --script = sslv2-drown

FREAK(CVE-2015-0204)

FREAK定义

FREAK(破解RSA导出密钥),利用了TLS / SSL中的加密弱点,这是美国政府几十年前最初引入的。使用RSA_EXPORT密钥的想法是允许导出包含不能被大多数计算机破解的加密密钥。如果RSA_EXPORT密钥加密为512位或更少,那么以目前的计算机性能很容易破解。

FREAK执行降级攻击(强制服务器使用较弱的密码),当与中间人(MiTM)类型攻击相结合时,这允许攻击者捕获数据并中断弱密钥的解密。

FREAK攻击的自动测试
testssl.sh FREAK攻击测试
./testssl -F TARGET
手动测试FREAK攻击

使用./testssl.sh -E TARGET或者nmap -p 443 --script=ssl-enum-ciphers TARGET枚举服务器密码,确保服务器支持的以下类型密码不包含:EXPORT。

例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值