iOS开发攻城狮的集散地iOS 面试题

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

2018-10-13  本文已影响2人  pengxuyuan

前言

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

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

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

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

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

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

SSL 证书欺骗攻击

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

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

这个避免方法就是:

SSL 剥离攻击

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

image

总结

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

这块知识我自己是比较匮乏的,也就只能做粗浅的总结,依旧,参考文献很棒棒。

参考文献

中间人攻击

MITM攻击(中间人攻击)

HTTPS连接过程以及中间人攻击劫持

HTTPS连接过程以及中间人攻击劫持

中间人攻击(MITM)姿势总结

上一篇下一篇

猜你喜欢

热点阅读