HTTPS攻击

HTTPS攻击方法

(HTTPS=HTTP+SSL/TLS)

  1. 降级 : 版本3.0->2.0
  2. 解密 : 证书伪造,明文
  3. 协议漏洞 实现方法的漏洞 配置不严格

HTTPS降级攻击

SSL/TLS协议通过握手来确定通信信息,其中握手双方要统一加密协议版本。

在握手过程中这样确认加密协议版本:

由客户端(如浏览器)发送第一个数据包 ClientHello,这个数据包中保存着客户端支持的加密协议版本。
服务器收到这个ClientHello数据包,查看里面客户端支持的加密协议版本,然后匹配服务器自己支持的加密协议版本,从而确认双方应该用的加密协议版本。
服务器发送ServerHello数据包给客户端,告诉客户端要使用什么加密协议版本。
在上述过程中,如果客户端发送给服务器的ClientHello数据包中说自己仅支持某个有漏洞的旧版本加密协议(比如仅支持SSLv3.0),服务器有两种可能:

服务器支持很多版本,其中包括有漏洞的旧版本和新版本(包括了SSLv3.0协议),那么服务器会认可使用有漏洞的旧版本协议,从而告诉客户端使用有漏洞的旧版本(可以使用SSLv3.0)。
服务器不支持有漏洞的旧版本,拒绝客户端的这次请求,握手失败。
对于攻击者,作为中间人只能监听到加密过的数据,如果这些数据通过没有漏洞的加密版本加密,攻击者并不能做什么。

但是,如果服务器提供有漏洞的旧版本加密协议的支持,而同时攻击者又能作为中间人控制被攻击者的浏览器发起漏洞版本的HTTPS请求,那虽然攻击者监听到的也是加密过的数据,但因为加密协议有漏洞,可以解密这些数据,所以数据就和明文传输没有什么差别了。

这就是HTTPS协议降级。


HTTPS中间人劫持攻击

中间人可以获取到客户端与服务器之间所有的通信内容。

中间人截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信;将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。
通过这样的手段,便可以获取客户端和服务器之间通信的所有内容。

使用中间人攻击手段,必须要让客户端信任中间人的证书,如果客户端不信任,则这种攻击手段也无法发挥作用。
HTTPS攻击