美文网首页
Mobile是怎么用SSL pinning防止抓包的

Mobile是怎么用SSL pinning防止抓包的

作者: Grabin | 来源:发表于2022-05-24 16:42 被阅读0次

    通常的https请求是这样的

    image.png

    这个过程可以使用SSL加密/TLS加密来实现,我们先简单地了解一下这个通信的过程,会对了解SSL pinning有所帮助。主要是了解证书发送的过程。

    为什么能通过Charles能抓包?

    当移动应用程序与服务器通信时,它们通常使用 SSL 来保护传输的数据免受窃听和篡改。默认情况下应用程序中使用的 SSL,只要服务器具有操作系统信任库信任的证书,都是默认为安全信任的(证书为操作系统附带的证书颁发机构列表)。

    image.png
    Charles能够抓包主要依靠的是以下几个步骤:
    1. 在建立通信的中间过程中,服务器把CA证书发给mobile的时候,会被Charles拦截(这里已经拿到服务器的公钥了),并替换成Charles包装好的带着自己公钥假的CA证书,再发给mobile。
    2. mobile拿到包装好的Charles假证书,在本地系统的证书列表校验通过之后,会拿着证书里面的公钥加密对称密钥,发给服务器。
    3. 发给服务器的时候又被Charles拦截了,它用自己的私钥解密,得到mobile的对称密钥。再用步骤1得到的服务器公钥加密自己生成的假的对称密钥,发给服务器。
    4. 就依靠前面几步建立通信,然后之后的每一次通信都会被中间挟持。

    这也是为什么一开始使用Charles抓包的时候,是需要安装并且信任它的证书的原因。

    大概是这样:

    image.png

    简单来说,就是证书被替换了,中间通信的时候被挟持,Charles和服务器建立通信之后用的是Charles的对称公钥在通信,而Charles和mobile建立通信之后用的是mobile的对称公钥在通信,像这样👇

    image.png

    SSL pinning是怎么避免中间人攻击

    使用 SSL pinning,应用程序可以先配置证书在本地,每当发起网络请求建立连接到服务器时,它都会先把拿到的服务器证书与本地的固定证书进行比较,当且当它们匹配的时候,才会认为这个服务器是受信任的,并建立 SSL 连接。

    证书校验失败大致过程如下

    图片1.png

    简单来说,就是服务器必须返回带有mobile预置好的证书,才能通过本地证书的校验,不然是建立不了通信的。

    image.png

    Reference documents

    https://www.huaweicloud.com/zhishi/ssl003.html
    https://www.guardsquare.com/blog/ios-ssl-certificate-pinning-bypassing

    相关文章

      网友评论

          本文标题:Mobile是怎么用SSL pinning防止抓包的

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