美文网首页iOS开发攻城狮的集散地iOS 面试题
10·iOS 面试题·什么是中间人攻击?如何避免?

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

作者: pengxuyuan | 来源:发表于2018-10-13 15:53 被阅读2次

    前言

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

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

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

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

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

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

    SSL 证书欺骗攻击

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

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

    这个避免方法就是:

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

    SSL 剥离攻击

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

    image

    总结

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

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

    参考文献

    中间人攻击

    MITM攻击(中间人攻击)

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

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

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/qkboaftx.html