【问题标题】:Can the user of an app see what's in the https packets?应用程序的用户可以看到 https 数据包中的内容吗?
【发布时间】:2016-03-12 18:30:27
【问题描述】:

如果我在服务器和 Android 客户端之间交换 https 数据包,Android 客户端的用户是否容易获得加密流量中的任何内容?如果安全取决于用户无法以某种方式读取 https 数据包中的内容,我是否应该认为所有此类流量不安全?

【问题讨论】:

    标签: android security https


    【解决方案1】:

    有几种方法可以检查 HTTPS 数据包的内容。 man-in-the-middle-attack 可能会危及 HTTPS 流量。通过中间人,恶意第三方拦截试图通信的两方之间的消息,并检查或更改他们的消息。使用 HTTPS,第三方充当代理,并且需要诱使一方信任他们颁发的证书,以便第三方可以解密他们的 SSL 连接。

    用户还可以在将流量发送到您的服务器之前代理他们自己的流量。使用OWASP ZAPBurp Suite 等工具,用户可以设置代理来拦截自己的流量。用户可以看到他们发送的每个请求的内容,以及来自服务器的每个响应,即使使用 HTTPS 连接也是如此。通过拦截代理,他们甚至可以在将 Android 设备发送到您的服务器之前更改其发出的请求。本质上,用户对自己使用了中间人攻击。

    简而言之,用户可以想办法轻松查看进出自己设备的 HTTPS 流量。

    【讨论】:

    • 解决方案是将服务器证书固定在客户端设备中,这样可以避免 MITM 攻击。
    • 证书固定是一种很好的防御措施。但是,有一些方法可以绕过证书锁定,例如 Android-SSL-TrustKiller github.com/iSECPartners/Android-SSL-TrustKiller。由于我们将应用用户视为潜在攻击者,因此他们将拥有对设备的完全访问权限以使用此类工具。证书固定可以被击败,但它使任务变得更加困难,并且需要更精通技术的用户妥协。
    • 也相关:BlackHat 2012 关于使用证书固定的渗透测试应用程序的演示文稿:media.blackhat.com/bh-us-12/Turbo/Diquet/…
    • 别忘了"rubber hose cryptanalysis"。完全安全的方法很少,但这并不意味着不使用广为接受的方法来减少攻击窗口。固定服务器证书大大提高了安全性。
    • 所有相关的攻击都需要生根/越狱设备,这是可行的,但有几个限制:访问未锁定的设备和大量技能。此外,人们承认保护设备上的信息不被用户访问是非常困难的。
    【解决方案2】:

    有一些简单的代理攻击,用户可以通过一些技巧相当容易地查看未加密的数据。

    为避免这些相对简单的攻击,请在支持 TLS 1.2 和完美前向保密(当前最佳实践)的服务器上使用 https,并将证书固定在应用程序中。这将排除诸如 Charles Proxy 之类的简单代理攻击。

    注意:从所有者那里完全保护设备上的任何东西是非常困难的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2022-01-08
      相关资源
      最近更新 更多