SSL/TLS安全之——中间人攻击(MITM)浅析

  首先需要理解SSL/TLS协议的原理,然后我们通过Burpsuite对HTTPS数据包进行抓包,来简单讨论中间人攻击的实现场景。

一、SSL握手协议

1.客户端生成相关参数

-> a)协议版本号 b)随机数(cRandom) c)加密规则
-> 将三条信息传输给服务器 (明文请求,以下都是)

2.服务器确认并返回服务器参数

->确认加密方法 , CA数字证书,生成sRandom
->将相关信息回传给客户端

3.客户端校验证书并添加新参数

->校验数字证书有效性,生成pSecret(对称加密密钥),并使用数字证书CA中的公钥加密
->将相关信息传给服务器

4.服务器使用私钥解密参数

->本质是应用了非对称加密的方式传输pSecret

5.两端根据约定的加密方法,使用三个随机数生成”对话密钥”

->后续对话通信可以开始

二、协议中一些注意点

1.私钥的使用

(1)生成对话密钥一共需要三个随机数。
(2)握手之后的对话使用”对话密钥”加密(对称加密),服务器的公钥和私钥只用于加密和解密”对话密钥”(非对称加密),无其他作用。全部过程中只使用了一次
(3)服务器公钥放在服务器的数字证书之中。

2.非对称加密的安全性考虑

  握手阶段的密钥交换过程是全透明的,也就是说他人可以随意监听通信过程。而最终的对话密钥由3个随机数生成,可以推断我们的前两个参数是不安全的,整个安全性只取决于最后的pSecret。

  理论上RSA公钥算法的公钥足够长(如2048位),可以保证pSecret的安全,但根据摩尔定律,我们很难保证不会很快出现暴力破解的方式。出于更加安全的考虑可以采用DH算法,这样可以不传递pSecret,双方只要交换各自参数,就能计算出pSecret(DH算法运用了离散对数的原理,此处不展开说明),相对的增加了解密难度。

三、HTTPS原理及抓包分析

一、HTTPS简介

  超文本传输协议安全,是使用HTTP(超文本传输协议)和SSL/TLS(安全套接字层/传输层安全)协议来提供加密通信和安全识别Web服务器的通信协议。

HTTPS有什么作用?
1.保密:访问者的连接被加密,隐藏URL、Cookie和其他敏感元数据。
保证真实性:访问者是与“真实的”网站发生对话,而不是通过模仿者或者“中间人”进行对话。
2.保证可信性:访问者和网站之间发送的数据没有被篡改活修改。

保护哪些信息:
  HTTPS加密客户端和Web服务器之间发送的所有信息(IP和端口、完整的域或子域名除外)。
  未加密的HTTP请求不仅显示请求的正文,还会显示请求完整的URL,查询字符串和HTTP头,而HTTPS请求 这些都会被加密。

二、为什么HTTPS仍然会不安全?

  加密是发生在应用层和传输层之间,在传输层看到的数据是经过加密的。加密数据只有在客户端和服务器端才能得到明文,客户端与服务器端的通信过程是安全的。
  而在浏览器的调试工具里可以看到请求信息,而且还是明文,是因为这里的数据是应用层的,还未经过加密。

三、HTTPS抓包过程分析

  HTTPS通信原理同上SSL握手协议。

1、在未建立握手前,BurpSuite抓取客户端发送给服务器的HTTPS请求
2、BurpSuite作为中间人,与服务器建立握手,即获取到服务器的CA证书,用根证书公钥进行解密,验证服务器数据签名,获取到服务器CA证书公钥。然后BurpSuite伪造自己的CA证书,假冒服务器证书传递给客户端。
3、客户端误认为BurpSuite的CA证书为服务器CA证书,由于有根证书的验证,所以会正常处理请求,继续执行,参照SSL握手流程继续执行。

  最终BurpSuite可以在应用层客户端未加密的情况下伪造服务器证书以获取到HTTPS消息内容。同理,我们可以认为只要能获取到根证书的信任,且应用程序未加密,那么在应用层端就可以实现中间人攻击。
  关键点:
  抓取HTTPS协议成功的关键是根证书,是伪造的CA证书能够获得客户端和服务器端信任的关键(即在网上申请BurpSuite证书加入到浏览器中,详情度娘)
  简单的思路分析就是如此 , 理解很浅显 , 重在整理记录 , 大神勿喷哈~

你可能感兴趣的:(信息安全)