浅谈“脆弱的SSL加密算法“
⼀:漏洞名称:
弱加密算法、脆弱的加密算法、脆弱的SSL加密算法、openssl的FREAK Attack漏洞
描述:
脆弱的SSL加密算法,是⼀种常见的漏洞,且⾄今仍有⼤量软件⽀持低强度的加密协议,包括部分版本的openssl。其实,该低强度加密算法在当年是⾮常安全的,但时过境迁,飞速发展的技术正在让其变得脆弱。⿊客可利⽤SSL弱加密算法漏洞进⾏SSL中间⼈攻击,即强迫服务器和⽤户之间使⽤低强度的加密⽅式,然后再通过暴⼒破解,窃取传输内容。强度较弱的加密算法将不能较好的保证通信的安全性,有被攻击者破解的风险。对于linux中openssl的FREAK Attack漏洞,该漏洞是由于OpenSSL库⾥的s3_clnt.c ⽂件中,ssl3_get_key_exchange函数,允许客户端使⽤⼀个弱RSA秘钥,向SSL服务端发起RSA-to-EXPORT_RSA的降级攻击,以此进⾏暴⼒破解,得到服务端秘钥。此问题存在于OpenSSL版本0.9.8zd之前, 或1.0.0p之前的1.0.0,或1.0.1k之前的1.0.1。
检测条件:
1.已知Web⽹站开放443端⼝(https)。
2.开启了SSL协议。
检测⽅法:
1.对于windows中的检测⽅法:通过加密算法检测⼯具,与⽹站系统进⾏加密算法枚举通信,探测系统存在的加密算法及位数情况。
利⽤SSLciphercheck软件,通过CMD下运⾏,进⾏协议探测进⾏检测命令:“ -h  ip地址或者域名  -p  443”,或者是利⽤web扫描⼯具,如WVS,APPscan等进⾏扫描检测,相关检测截图:
2.对于linux下的openssl的FREAK Attack漏洞,检测如下:https远程检查⽅法(看⼀个⽹站是脆弱的RSA弱密钥攻击,你可以使⽤
OpenSSL命令):openssl s_client -connect v:443 -cipher EXPORT,如果你看到”alert handshake failure”这句话就说明该⽹站是安全的:
3.RedHat系列检查命令:rpm -qa|grep openssl
4.Debian\Ubuntu系列检查命令: dpkg -l|grep openssl
5、使⽤Nmap查看端⼝的服务版本,包括SSL服务版本 nmap -sV --reason -PN -n --top-ports ample
6、使⽤Nmap检测证书信息、弱加密、SSLv2 nmap --script ssl-cert,ssl-enum-ciphers -p
漏洞修复:
以下为针对脆弱的SSL加密算法漏洞的修复建议,其中包括IIS、apache、和windows本⾝的⼀些安全建议⽅法:
1.对于linux中openssl的FREAK Attack漏洞,如果因为⽣产环境⽆法直连外⽹或是变更配置管理等原因⽽不便
更新补丁,可以采取以下临时修复⽅法:
1. 禁⽤出⼝级弱加密算法在命令⾏使⽤:openssl ciphers MEDIUM。
nginx ssl证书配置2. 禁⽌apache服务器使⽤出⼝级加密算法:vi /etc/httpd/conf.f;增加如下配置:SSLCipherSuite
HIGH:!aNULL:!MD5:!EXP;需要重启apache服务:/etc/init.d/httpd restart。
3. 关于nginx加密算法:1.0.5及以后版本,默认SSL密码算法是HIGH:!aNULL:!MD5;0.7.65、0.8.20及以后版本,默认SSL密
码算法是HIGH:!ADH:!MD5;0.8.19版本,默认SSL密码算法是:ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM;0.7.64、
0.8.18及以前版本,默认SSL密码算法是ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;低版本的nginx
或没注释的可以直接修改域名下ssl相关配置为ssl_ciphers        HIGH:!aNULL:!MD5;需要nginx重新加载服
务:/etc/init.d/nginx reload
2.对于IIS中SSL,修复⽅案为:
1. 在 IIS 管理器中,双击本地计算机,然后右键单击所需的某个⽹站、⽬录或⽂件,然后单击“属性”。
2. 在“⽬录安全性”或“⽂件安全性”选项卡的“安全通信”下⾯,单击“编辑”。
3. 在“安全通信”框中,选中“需要安全通道 (SSL)”复选框。
4. 如果需要使⽤ 128 位加密,请选择“要求 128 位加密”复选框。
5. 单击“确定”。
5. 单击“确定”。
3.对于Apache的修复⽅案为:
1.禁⽤它只需⼏分钟的时间。例如,在Apache v2中,你只需要改变默认设置:
SSLProtocol all
To
SSLProtocol all -SSLv2
2.如何建⽴⼀个仅使⽤SSLv2的服务器:
可以这样建⽴⼀个仅使⽤SSLv2协议及其密码算法的服务器:
SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP
3.如何建⽴⼀个仅接受强加密请求的SSL服务器:
如下设置为仅使⽤最强的七种密码算法:
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
4.如何建⽴⼀个仅接受强加密请求的SSL服务器,⽽⼜允许对外浏览器使⽤更强的加密:这个功能被称为以服务器为⽹关的加密(Server Gated Cryptography [SGC]), 在README.GlobalID⽂档中有详细说明。 简单地说就是:服务器拥有⼀个由来⾃Verisign的⼀个特殊的CA证书签发的服务器⾝份证, 从⽽在对外浏览器上实现强加密。 其过程如下:浏览器使⽤对外密码进⾏连接,服务器返回其全局ID⾝份证, 浏览器校验后在后继HTTP通讯产⽣之前提升其密码组。 现在的问题是:如何允许这样的提升,⽽⼜强制性地使⽤强加密。 换句话说就是:浏览器必须在开始连接时就使⽤强加密,或者提升到强加密, 但是维持对外密码是不允许的。以下巧妙地解决了这个问题:
# 允许在初始握⼿阶段使⽤所有的密码,
# 以允许对外服务器通过SGC功能提升密码组
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Directory /usr/local/apache2/htdocs>
# 但是最终会拒绝所有没有提升密码组的浏览器
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
</Directory>
5.如何建⽴接受所有类型密码的SSL服务器,但对特定的URL实施强加密:显然,不能使⽤服务器全局设置SSLCipherSuite,它会限制密码为强类型。 但是,mod_ssl允许重配置针对⽬录的密码组,并⾃动进⾏⼀个带有服从新配置的SSL参数的重协商。 因此,其解决⽅案成了:
# 在⼀般情况下的处理是宽松的
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Location /strong/area>
# 要求强密码
SSLCipherSuite HIGH:MEDIUM
</Location>
4.对于windos系统中,禁⽤SSL弱加密算法修复⽅案:
1.windows server 2003注册表可能与以下的不同。解决⽅案:Windows Server 2008 ⽀持下列协议:·SSL
2.0 ·SSL
3.0·TLS 1.0。Windows Server 2008 R2 和 Windows 7 ⽀持下列协议:·SSL 2.0 ·SSL 3.0·TLS 1.0·TLS 1.1·TLS
其他补充:
可以结合这篇⽂章⼀起来学习:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。