SSL固定后如何检测并解析域名

时间:2019-03-13 13:29:12

标签: networking dns ssl-certificate android-security certificate-pinning

我试图搜索这条信息,但到目前为止还没有发现任何线索,但是我相信这里的人可以纠正我或以适当的逻辑回答我的问题。

当我们在移动应用程序(android / ios)中实现SSL固定时,无法从Burp或Wireshark工具中嗅探数据包。因此,我的问题是,在网络上,在哪里和谁将获得此加密的数据包并从中提取域名,然后将其解析?

使用SSL Pinning,我们试图隐藏此客户端与服务器之间的通信,当我们能够隐藏此通信时,谁(哪个权限)将能够读取此程序包,然后从中提取域名,并通过流量到互联网上的相关服务器?

2 个答案:

答案 0 :(得分:0)

SSL固定基本上可以确保没有人通过SSL接收与固定ssl不同的数据包。

就嗅探数据包而言,它不是专门由于SSL固定,而仅仅是由于SSL。

但是,关于域解析的查询不会将SSL固定用于域解析,而是使用全局OS解析程序来解析该域,它不是特定于应用程序的,并且域SSL固定证书在域解析中没有任何作用。

答案 1 :(得分:0)

虽然我同意@mdeora的观点,但我试图以一种简单的方式来解释(从长远来看)幕后发生的事情,并希望它会有所帮助。

让我们先定义几个术语

客户端(“ C”):使用SSL / TLS库的移动应用程序。另外,可以将客户端配置为识别由内部证书颁发机构(CA)签名的证书。

服务器(“ S”):服务于请求的目标服务器

代理(“ P”)或透明代理(“ TP”):拦截SSL请求,并通过代表“ S”发送证书向客户端展示它确实是目标服务器的错觉,但是由代理服务器创建的内部CA证书签名。例如。乌贼Burp Suite

DNS服务器:将名称解析为IP地址的服务

客户端DNS服务器:由于明确配置或在移动设备连接到网络(电信或Wifi)时由网络连接提供,因此在移动设备上配置的DNS服务器的一个或多个IP地址

代理DNS服务器:在配置代理服务的同一台计算机上配置的DNS服务器的一个或多个IP地址

案例A。当客户端与服务器之间既没有代理也没有透明代理时

  1. “ C”通过查询客户端DNS服务器找到“ S”的IP地址(例如“ IP-S”)。
  2. “ C”使用SSL / TLS连接到“ IP-S”并完成通信。整个通信已加密。

在这种情况下,Burp Suite / Wireshark无法看到纯文本流量。

案例B。当移动设备配置为使用代理服务器“ P”

  1. “ C”通过查询客户端DNS服务器(例如“ IP-P”)找到IP地址“ P”。
  2. “ C”通过HTTP或HTTPS协议连接到“ IP-P”。
  3. 如果“ C”通过HTTP协议连接到“ P”,则“ P”将拦截请求,检查URL并获取域名。
  4. 如果“ C”通过HTTPS协议连接到“ P”,则“ P”将通过SNI将目标服务器名称理解为SSL / TLS握手的一部分。 SSL / TLS。 (https://en.wikipedia.org/wiki/Server_Name_Indication
  5. “ P”将使用代理DNS服务器获取“ S”的IP(例如“ IP-S”)。 “ P”将连接到“ IP-S”。
  6. 在正常情况下,“ P”(或“ TP”)将逐字节请求从“ C”中继到“ S”,并将响应从“ S”中继到“ C”。 “ C”将始终获得真实的“ S”证书,而“ P” /“ TP”将不知道“ C”与“ S”进行通信这一事实。
  7. 但是,在拦截器(例如BurpSuite)的情况下,“ P”(或“ TP”)将出示由内部CA签名的证书,并假冒“ S”。如果将“ C”配置为识别由内部CA签名的证书,则“ C”中的SSL库将被迫假定它确实在与“ S”通信。

如果没有SSL固定,则“ C”将与“ P”(或“ TP”)交互,就好像它是“ S”一样。 “ P”将解密流量,并与“ S”建立连接,重新加密流量并将其发送到“ S”。同样,“ P”将接收来自“ S”的响应,并将其发送回“ C”。 “ C”和“ S”都不会意识到“ P”已拦截(并且可能已更改)流量。

使用SSL固定(https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Pinning_Cheat_Sheet.md)时,如果发现“ P” /“ TP”提供的证书与真实的“ S”证书不匹配,则“ C”将不会继续进行。

情况C。当移动设备正在使用存在透明代理(“ TP”)的网络时

在这里,“ C”尝试像情况A一样连接到“ S”,但是网络中存在的“ TP”像“ P”一样拦截流量,其余情况随着情况B(4)继续。

总而言之,当您使用SSL固定时,仅当“ C”认为它正在通过安全通道与真实的“ S”而非代理进行通信时,才会与“ S”进行通信。