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证书加入到浏览器中,详情度娘)
  简单的思路分析就是如此 , 理解很浅显 , 重在整理记录 , 大神勿喷哈~

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"请求被中止: 未能创建 SSL/TLS 安全通道"的错误通常是由于服务器和客户端之间的安全协议不匹配导致的。解决这个问题的方法有两种。首先,你可以升级.NET Framework的版本到4.6或以上。这样可以确保你的应用程序支持最新的安全协议。另外,你还需要在创建地址之前启用对应SSL安全协议。这可以通过设置ServicePointManager.SecurityProtocol属性来实现。你可以将以下代码添加到你的应用程序中: ```csharp ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.SystemDefault | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13; ``` 这段代码会启用所有支持的安全协议,确保你的应用程序可以与服务器建立安全通道。注意,这段代码要写在创建地址之前才能生效。为什么要这样做,可能是由于接口修改了安全协议的原因。另外,如果你知道服务器所支持的具体安全协议,也可以只启用对应的安全协议。 最后,如果以上方法都没有解决问题,还可以尝试给证书授权。这可以通过在服务器上进行相应的配置来实现。具体的步骤可以参考相关的文档或向证书颁发机构咨询。 综上所述,要解决"请求被中止: 未能创建 SSL/TLS 安全通道"的错误,你可以升级.NET Framework版本到4.6或以上,并在创建地址之前启用对应SSL安全协议。如果问题仍然存在,可以考虑给证书授权。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [两种方式彻底解决请求被中止: 未能创建 SSL/TLS 安全通道](https://blog.csdn.net/qq_30412045/article/details/124819059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [.NET 请求被中止: 未能创建 SSL/TLS 安全通道](https://blog.csdn.net/weixin_46990454/article/details/128575755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值