我试图搜索此信息,但到目前为止尚未找到任何线索,但我相信这里有人可以纠正我或以适当的逻辑回答我的问题。
当我们在移动应用程序(Android/iOS)中实现SSL固定时,数据包无法从Burp或Wireshark工具中嗅出。因此,我在这里的问题是,在网络上,谁将获得此加密数据包并从中提取域名,然后将其解析?
使用SSL固定,我们正在尝试隐藏此客户端的服务器通信,而当我们能够隐藏此客户端时,谁将能够读取此软件包,然后将其提取域名形式,然后将流量传递到Internet上的相关服务器?
SSL固定基本上确保没有人在途中接受与固定SSL不同的SSL接受数据包。
就嗅探数据包而言,这不是由于SSL固定而而仅造成的,而是由于SSL造成的。
但是,您对域分辨率的查询,SSL固定不用于域分辨率,使用全局OS解析器解决了域,它不是特定于应用程序的,并且您的域SSL固定证书在域分辨率中没有作用。
虽然我同意@mdeora,但我试图用简单的术语来解释现场发生的事情,并希望它会有所帮助。
让我们首先定义几个术语
客户端(" C"):使用SSL/TLS库的移动应用程序。此外,客户可能会被配置为识别由内部认证机构(CA)签署的证书。
服务器(" s"):服务请求
的目标服务器代理(" p")或透明的代理(" tp"):拦截SSL请求,并通过代表" S"发送证书,向客户介绍一个确实是目标服务器的幻想由代理服务器创建的内部CA证书签名。例如。Burp Suite,Squid
DNS服务器:解决IP地址名称的服务
客户端DNS服务器:在移动设备连接到网络(Telecom或WiFi)
时,在移动设备上配置的DNS服务器的一个或多个IP地址代理DNS服务器:在配置代理服务的同一台计算机上配置的DNS服务器的一个或多个IP地址
案例A.当客户和服务器之间都没有代理或透明代理时
- " c"通过查询客户端DNS服务器来找到" S"的IP地址(例如" IP-S")。
- " C"使用SSL/TLS连接到" IP-S"并完成通信。整个通信都是加密的。
在这种情况下,Burp Suite/Wireshark看不到纯文本流量。
案例B。当手机配置为使用代理服务器" P"
- " c"通过查询客户端DNS服务器,说" ip-p"来找到" p"的IP地址。
- " C"通过HTTP或HTTPS协议连接到" IP-P"。
- 如果" C"通过HTTP协议连接到" P",则" P"拦截请求,检查URL并获取域名。
- 如果" C"通过HTTPS协议连接到" P",则" P"将通过SNI理解目标服务器名称作为SSL/TLS握手的一部分 - 扩展到SSL/TLS。(https://en.wikipedia.org/wiki/server_name_indication)
- " p"将使用代理DNS服务器获取" S"的IP(例如" IP-S")。" P"将连接到" IP-S"。
- 在普通情况下," p"(或" tp")将从" c"转到" s",并从" s"转换为" s"到" c"。" C"将始终获得" S"one_answers" P"/" TP"的真实证书,除了" C"正在与" S"交流。
- 但是,如果发生拦截器(例如burpsuite)," P"(或" TP")将呈现由内部CA签署的证书,模仿" S"。如果" C"配置为识别内部CA签署的证书,则" C"中的SSL库将被迫假定它确实在与" S"交谈。
没有SSL固定," C"将与" P"(或" TP")相互作用,就好像是" S"一样。" P"将解密流量,并与" S"建立连接,重新加入流量并将其发送给" S"。同样的方式," P"将收到" S"的响应,并将其发送回" C"。" C"one_answers" S",两者都不知道" P"已经拦截(并且可能已经改变)流量。
使用SSL固定(https://github.com/owasp/cheatsheetseries/blob/master/cheatsheets/pinning_cheat_sheet.md)," C"如果找到" p"/" tp"的证书,则不会继续进行与" S"的真实证书不匹配。
案例C。当移动设备使用网络时,透明代理(" tp")存在
在这里," C"试图将其连接到" s",但在网络中存在的" tp"截止了流量,就像" p"一样,静止在案例B(4)上。p>总结一下,当您使用SSL固定时," C"只有在认为它正在通过安全的频道通信到真实的" S"而不是代理。>