web渗透 --- HTTPS攻击

目录

一、 HTTPS 简介

1.HTTPS 作用

2.HTTPS 攻击方法

3.SSL/TLS 也被用于其他场景的传输通道加密

4.SSL弱点

5.HTTPS加密过程

形象举例  A<---->B

二、openssl 用法

1.查看使用的安全协议信息

2.查看可破解的cipher suite

三、sslscan 用法

1.简介

2.TLS 支持的 cipher suite

3.分析证书详细信息

四、sslyze 用法

1.简介

2.常规扫描

五、在线扫描


一、 HTTPS 简介

1.HTTPS 作用

  • CIA
  • 解决的是信息传输付哦成数据被篡改、窃取
  • 解密:对称、非对称、单向

2.HTTPS 攻击方法

  • 降级攻击
  • 解密攻击(明文、证书伪造)
  • 协议漏洞、实现方法的漏洞、配置不严格

3.SSL/TLS 也被用于其他场景的传输通道加密

  • 邮件传输(SMTP和POP3都是明文传输,需要在服务器间、客户端和服务器之间进行传输加密)
  • 数据库服务器间
  • LDAP(轻量级目录访问协议 X.509)身份认证服务器间
  • SSL VPN 远程桌面 RDP 通信过程中的加密和身份认证

4.SSL弱点

  • SSL 是不同的对称、非对称、单向机密算法的组合加密实现(cipher suite 加密套件)
  • 服务器端为提供更好的兼容性,选择大量过时的 cipher suite
  • 协商过程中强迫降级加密强度
  • 现代处理器计算能力可以再可接受时间呗破解过时加密算法
  • 购买云计算资源破解

5.HTTPS加密过程

①客户端发送报文进行SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(加密算法及密钥长度等)。
②服务器应答,并在应答报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接受到的客户端加密组件内筛选出来的。
③服务器发送报文,报文中包含公开密钥证书。
④服务器发送报文通知客户端,最初阶段SSL握手协商部分结束。
⑤SSL第一次握手结束之后,客户端发送一个报文作为回应。报文中包含通信加密中使用的一种被称Pre-master secret的随机密码串。该密码串已经使用服务器的公钥加密。
⑥客户端发送报文,并提示服务器,此后的报文通信会采用Pre-master secret密钥加密。
⑦客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够完成成功,要以服务器是否能够正确解密该报文作为判定标准。
⑧服务器同样发送Change Cipher Spec报文。
⑨服务器同样发送Finished报文。
⑩服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。
⑪应用层协议通信,即发送HTTP响应。
⑫最后由客户端断开链接。断开链接时,发送close_nofify报文。

形象举例  A<---->B

需要注意的是非对称加解密算法的效率要比对称加解密要低的多。所以SSL在握手过程中使用非对称密码算法来协商密钥,实际使用对称加解密的方法对http内容加密传输。下面是对这一过程的形象的比喻(摘自http://blog.chinaunix.net/u2/82806/showart_1341720.html):

假设A与B通信,A是SSL客户端,B是SSL服务器端,加密后的消息放在方括号[]里,以突出明文消息的区别。双方的处理动作的说明用圆括号()括起。

A:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。

B:我们用DES-RSA-SHA这对组合好了。

这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份(把证书发给A)。

A:(查看证书上B的名字是否无误,并通过手头早已有的数字的证书验证了B的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了B的公钥的真实性)

(产生一份秘密消息,这份秘密消息处理后将用作对称加密密钥,加密初始化向量和hmac的密钥。将这份秘密消息-协议中称为per_master_secret-用B的公钥加密,封装成称作ClientKeyExchange的消息。由于用了B的公钥,保证了第三方无法窃听)

我生成了一份秘密消息,并用你的公钥加密了,给你(把ClientKeyExchange发给B)

注意,下面我就要用加密的办法给你发消息了!

(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥)

[我说完了]

B:(用自己的私钥将ClientKeyExchange中的秘密消息解密出来,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了)

注意,我也要开始用加密的办法给你发消息了!

[我说完了]

A: [我的秘密是...]

B: [其它人不会听到的...]

从上面的过程可以看到,SSL协议是如何用非对称密码算法来协商密钥,并使用密钥加密明文并传输的。还有以下几点补充:

1.B使用数字证书把自己的公钥和其他信息包装起来发送A,A验证B的身份,下面会谈到A是如何验证的。

2.A生成了了加密密钥、加密初始化向量和hmac密钥是双方用来将明文摘要和加密的。加密初始化向量和hmac密钥首先被用来对明文摘要(防止明文被篡改),然后这个摘要和明文放在一起用加密密钥加密后传输。

3.由于只有B有私钥,所以只有B可以解密ClientKeyExchange消息,并获得之后的通信密钥。

4.事实上,上述过程B没有验证A的身份,如果需要的话,SSL也是支持的,此时A也需要提供自己的证书,这里就不展开了。在设置IIS的SSL Require的时候,通常默认都是igore client certification的。

二、openssl 用法

  • 直接调用 openssl 库识别目标服务器支持的 SSL/TLS cipher suite
  • openssl 需要大量密码学相关知识,命令复杂,结果可读性差

1.查看使用的安全协议信息

openssl  s_client -connect www.baidu.com:443

2.查看可破解的cipher suite

openssl ciphers -v "NULL,EXPORT,LOW,DES"

三、sslscan 用法

1.简介

  • 自动识别 ssl 配置错误、过期协议、过时 cipher suite 和 hash 算法
  • 默认会见查看 CRIME、heartbleed 漏洞
  • 绿色表示安全、红色黄色需要引起注意

2.TLS 支持的 cipher suite

sslscan –tlsall www.taobao.com:443

3.分析证书详细信息

sslscan –show-certificate –no-ciphersuites www.taobao.com:443

四、sslyze 用法

1.简介

  • python 编写
  • 检查 ssl 过时版本
  • 检查存在弱点的 cipher suite
  • 扫描多站点时,支持来源文件 检查是否支持会话恢复

2.常规扫描

sslyze --regular www.taobao.com:443

五、在线扫描

网址:https://www.ssllabs.com/ssltest/

 

 

猜你喜欢

转载自blog.csdn.net/qq389674856/article/details/82831799