中间人攻击

前言

中间人攻击的定义:中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。

简单来说,攻击者在请求和响应传输途中,拦截并篡改内容。对于 HTTP 来说,由于设计的简单,不需要太多步骤就可以进行监听和修改报文;在这里主要是针对 HTTPS,HTTPS 使用了 SSL 加密协议,是一种非常安全的机制,目前并没有方法直接对这个协议进行攻击,一般都是在建立 SSL 连接时,利用中间人获取到 CA证书、非对称加密的公钥、对称加密的密钥;有了这些条件,就可以对请求和响应进行拦截和篡改。

中间人攻击需要截获请求响应

对于中间人攻击,有一个前提就是:需要截获到客户端与服务器通信的线路。

抓包工具一般都是用户主动将其设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

对于其它工具则是利用 DNS欺骗、ARP投毒、劫持网关等手段,将客户端的请求重定向到攻击者的机器,以便进行网络抓包。

SSL 证书欺骗攻击

SSL 证书欺骗攻击流程大概如下:

  1. 截获客户端与服务器通信的通道
  2. 然后在 SSL 建立连接的时候,进行中间人攻击
  3. 将自己伪装成客户端,获取到服务器真实有效的 CA 证书(非对称加密的公钥)
  4. 将自己伪装成服务器,获取到客服端的之后通信的密钥(对称加密的密钥)
  5. 有了证书和密钥就可以监听之后通信的内容了
中间人攻击_第1张图片
image
中间人攻击_第2张图片
image

这个避免方法就是:

  • 客户端不要轻易信任证书
  • App 可以提前预埋证书在本地

SSL 剥离攻击

SSL 剥离就是将客户端的 HTTPS 请求降级成 HTTP 请求,阻止 HTTP 请求重定向成 HTTPS ,流程图如下:

中间人攻击_第3张图片
image

总结

中间人攻击主要是伪装身份,然后截取通信的内容,对于 HTTP 是可以很轻松的截获;但是对于 HTTPS,主要是在建立 SSL 连接的时候,骗取到证书和密钥;流程不是很复杂,但是这个里面会涉及到比较多的知识点。


引用(本文章只供本人学习以及学习的记录,如有侵权,请联系我删除)

10·iOS 面试题·什么是中间人攻击?如何避免?

你可能感兴趣的:(中间人攻击)