She*_*eep 7 facebook fiddler ios
我试图使用Fiddler捕获一些iOS应用流量,例如:Facebook,SnapChat,Gmail和Instagram.
Instagram没有使用https所以我可以获得所有流量并查看我发送的cookie但Fiddler无法解密其他三个应用程序.它只显示这样的事情:
找到了与SSLv3兼容的ClientHello握手.Fiddler提取了以下参数.版本:3.3(TLS/1.2)随机:54 3F 49 C4 20 08 09 BC A8 84 24 92 08 BF B4 38 39 C9 BB 1C B2 7B 95 6A 39 34 E7 AC FE 0F 62 67 SessionID:空扩展:server_name图. facebook.com elliptic_curves
谁能帮助我了解他们是如何做到这一点所以我可以使用相同的技术来保护我的应用程序.
que*_*ish 10
您的问题围绕防止针对iOS应用程序的HTTPS中间人(MITM)攻击.使用Fiddler或其他HTTPS代理是一种天真的MITM攻击形式,不幸的是,它经常起作用.
HTTP建立在称为TLS(之前是SSL)的安全传输协议之上.使用受信任方之间的公钥和私钥对连接进行加密.这就是事情往往会出错的地方.信任的概念对于TLS和SSL的安全性至关重要.应用程序连接的服务器提供必须进行评估以建立信任的加密凭据.
把它想象成护照或驾驶执照.在大多数情况下,许可证会签出.然后你得到一个名为McLovin的人.如果你实际上没有看到名字,出生日期,数字,照片,全息图等,你可能会盲目相信McLovin就是他们所说的人.然后你就麻烦了.

为了保护您的应用程序免受这些类型的攻击,您应该实施更严格的一系列crendential和trust评估.Apple有一个技术说明,技术说明2232:HTTPS信任评估,详细说明了这一点.
一个好的开始是实施SSL Pinning.固定根据已知值检查远程主机的凭据 - 全部或部分证书.iOS应用程序具有该证书的一些副本,并且当连接到该主机时,检查主机提供的凭据是否符合此"已知良好"证书.某些应用程序只检查元信息,其他应用程序尝试校验证书(AFNetworking执行此操作),而其他应用程序使用针对凭证的已知良好证书执行完全信任评估.Apple在WWDC 2014会话中构建了企业和教育应用程序,详细介绍了此过程.如果远程主机未使用预期的凭据,则中止连接.攻击者没有拦截拦截的流量.如果您的服务器证书经常更改,这可能是一个问题 - 这是其首选检查服务器的公钥而不是元信息或哈希的几个原因之一.不幸的是,一些服务器管理员经常更改公钥.有些人认为这更安全.不是.
现在,显然这需要iOS应用程序拥有"好"证书的副本,或者它的某些部分.您可以在您的应用程序中包含证书,或实现您自己的密钥交换方法.安全密钥交换长期以来一直是加密研究的主题,并不是一件容易接受的事情.在您的应用程序中包含证书是大多数人使用的解决方案.您可能认为从可能已泄露或越狱设备的人那里获得此证书非常重要.这样做有很多不同的选择.显然,您可以将其作为资源包含,并对其进行加密.您还可以将其直接包含在应用程序二进制文件中,这对攻击者来说可能要困难得多.这可以通过使用xxd Xcode工具,脚本构建阶段或构建规则来完成.显然,您可以在此基础上实现额外的保护.
如果设备已被盗用或应用程序已被篡改,则"已知良好"凭证可能已被更改.这是iOS应用程序沙箱可以为您带来优势的地方.您可以通过为应用程序实施收据验证来检测其中的许多方案.假设您的应用程序是通过Apple App Store等Apple渠道分发的,那么当它安装时,它包含一张收据.这可以被验证,并且可以用于实现许多常见场景的防篡改.
这些都是可以在客户端中实现的方法,以保护通过HTTPS的通信免受MITM攻击.服务器还可以以更多方式公开客户端,并且应定期对服务器进行漏洞审计.仅使用已知的强大加密算法,及时了解当前的公共漏洞等.
当然,如果您的应用程序可以连接到随机 HTTPS服务,您无法控制,例如Web浏览器,您的选项会受到更多限制.在这些情况下,当远程主机的凭据存在疑问时,您可以做的最好的事情是让用户选择信任或不信任凭证.在iOS上,没有由系统框架提供的UI,这将是您的应用程序必须实现的.
这只是保护iOS应用程序的一个小方面,但您的问题是关于中间攻击中的人的具体问题.
Fiddler解密HTTPS流量的方式是使用自己的证书.但是,当Facebook/Snapchat/Gmail检测到证书不受系统信任时(并且在更严格的情况下会限制受信任的证书,因此可能会拒绝第三方受信任的证书),它将拒绝连接与证书.
Fiddler可以为iOS生成证书以接受并安装到系统上,但您首先需要遵循以下说明:
从这里,您应该能够从这些应用程序中嗅探流量.
因此,为了再次回答这个问题,并不是他们正在阻止,如果服务器提供不受信任的证书,SSL应用程序通常会拒绝来自服务器的响应.Fiddler所做的是欺骗证书的一部分,以便当您通过SSL进行通信时,Fiddler可以使用其证书来解密您的流量.
要回答您问题的第二部分,请查看此问题以获取详细信息.实质上,您可以强制用户使用特定的证书,从而阻止用户使用已安装的证书.
然而,他们仍然可以解决这个问题 - 只是以更多的偷偷摸摸的方式,但引导,这是在客户端,任何事情.
| 归档时间: |
|
| 查看次数: |
6632 次 |
| 最近记录: |