数据包捕获应用程序一旦启动就不再具有其他应用程序的互联网连接
Packet capture app once started doesn't have internet connectivity for other apps anymore
我已经在我的 android phone - Samsung Galaxy S7 edge 运行 Android 8.0 版上安装了数据包捕获。它没有根
我按照所有步骤安装了 SSL 证书。
这是应用link
当我单击“开始”按钮以捕获流量时,应用程序的互联网连接不起作用。 Chrome 虽然在 phone 上有效。
我尝试过但无法访问互联网的应用程序是 Amazon、Owl Cam、Arlo
知道我缺少什么设置或更改吗?
在 Whosebug 上查找类似问题但没有任何答案
1) Question1
简答:
您的问题没有完整的解决方案。而且是不可能解决的。出现这个问题的原因是"Certificate Pinning"的存在。简单的root也解决不了你的问题
仍然有部分解决方案。 Turn off 'SSL Capture'
。然后所有应用程序将开始工作。但是您将无法解密通过 SSL 连接发送的数据包的内容。但是您仍然可以看到数据包的源地址和目标地址。如果您的数据包嗅探器应用程序没有关闭 SSL 数据包嗅探的选项,在这种情况下请卸载该应用程序,删除已安装的所有自定义 CA 证书,然后重新安装该应用程序。
长答案:
普通数据包嗅探器(不需要 root)如何在 Android.
上工作
Android 允许应用充当 'VPN Gateway app'。当应用程序告诉 Android 它想要提供 VPN 连接时,Android 会将所有发往互联网的 IP 数据包从所有其他应用程序转发到 VPN 应用程序。然后 VPN 应用程序通常会加密这些数据包并将其发送到 VPN 服务器,数据包将从那里到达其原始目的地。
Packet Sniffer 数据包利用了上述功能。在 Android 看来,它们就像一个 VPN 应用程序。因此,一旦打开,Android 会将所有 IP 流量发送到此应用。但是为了将它们转发到 VPN 服务器,Packet Sniffer 应用程序会简单地将它们发送到它们的原始目的地。这样,Packet Sniffer 应用程序就像一个透明代理。该应用程序能够传入和传出所有流量。这些应用程序本质上就像 "man-in-the-middle".
TSL/SLL 和证书颁发机构
SSL(和 HTTPS)的构建几乎完全是为了防止任何类型的 "man-in-the-middle" 攻击。 SSL 在正常的 TCP 连接上运行。它的作用是使用只有客户端和服务器知道的密钥对在客户端和服务器之间发送的所有流量进行加密。您可以阅读有关 SSL 工作原理的更详细和准确的信息 here
在建立 TLS/SSL 连接时,客户端设备会要求服务器出示它的数字签名证书(也称为 SSL 证书),以证明该服务器就是它声称的身份。即当 Amazon App 尝试连接到 amazon.com 时,它会要求服务器生成一个数字签名证书,证明该服务器实际上是 amazon.com 。当服务器发回证书时,应用程序将询问 Android 操作系统证书是否由 Android
的某人进行了数字签名
信任。如果证书实际上是由 Android 操作系统信任的 CA(证书颁发机构)签署的,则连接会继续。否则应用程序将显示无法连接的错误。
数据包嗅探应用程序通常如何能够嗅探 TLS/SSL 数据包?
Packet Sniffer 应用程序将要求用户在 Android 的系统上安装自定义 CA 证书。该 CA(证书颁发机构)证书将使 Packet Sniffer 应用程序在该设备上被视为合法且受信任的 TSL/SSL 证书颁发机构。
现在默认情况下所有应用程序都将接受由 Packet Sniffer 应用程序签名的 TSL/SSL 证书。因此,如果像 Amazon App 这样的应用程序尝试建立 SSL/TLS/HTTPS 连接,而 Packet Sniffer 应用程序是 运行,PacketSniffer 应用程序将建立 TLS/SSL/HTTPS 连接 - Amazon App 和Packet Sniffer,另一个介于 Packet Sniffer 应用程序和 amazon.com 服务器之间的工具。数据包嗅探器将显示一个伪造的 SSL 证书,声称它实际上是 amazon.com 服务器。由于 Android 现在信任任何由 Packet Sniffer 应用程序签名的 SSL 证书,连接继续欺骗亚马逊应用程序。
通过这种方式,Packet Sniffer 应用通常能够捕获和解密那些通过 SSL 连接发送的数据包。
证书固定
如果像上面描述的那样的数据包嗅探器应用程序可以解密通过 SSL 连接发送的信息,那么恶意人员也可以做同样的事情。他需要做的就是以某种方式说服用户在 Android 上安装他的 CA 证书。然后他将能够读取所有 WhatsApp 消息、来自银行应用程序的银行密码、亚马逊应用程序发送到 amazon.com 的信用卡信息......等等。
因此,某些应用程序的开发者,尤其是那些处理信用卡详细信息等高度机密数据的应用程序的开发者,决定不再信任 Android OS(或 iOS, Ubuntu 和 Windows) 判断应用程序是否确实连接到合法服务器。
于是他们开始效仿certificate pinning
。
这些应用程序的制造商所做的是,他们可以在应用程序中嵌入服务器 SSL 证书本身的副本,或者嵌入他们使用的证书颁发机构的 SSL 证书副本。
然后,这些应用程序会将服务器生成的任何证书与应用程序中嵌入的证书进行比较。如果它们不匹配,应用程序将简单地拒绝连接。这些应用程序不信任操作系统。因此,Packet Sniffer 应用程序安装的自定义 CA 证书对这些应用程序没有影响。
没有已知的方法可以轻松绕过证书固定(除了反编译每个应用程序并替换嵌入的证书,这在根设备上也是如此)。证书固定的存在仅仅是为了防止您试图实现的目标。如果您在 Packet Sniffer 应用程序上启用 SSL 嗅探,所有使用证书固定的应用程序都将停止工作。
解决方案
关闭 SSL Capture
。
如果您的数据包嗅探器应用程序没有关闭 SSL 数据包嗅探的选项,在这种情况下请卸载该应用程序,删除已安装的所有自定义 CA 证书,然后重新安装该应用程序。
我已经在我的 android phone - Samsung Galaxy S7 edge 运行 Android 8.0 版上安装了数据包捕获。它没有根
我按照所有步骤安装了 SSL 证书。
这是应用link
当我单击“开始”按钮以捕获流量时,应用程序的互联网连接不起作用。 Chrome 虽然在 phone 上有效。
我尝试过但无法访问互联网的应用程序是 Amazon、Owl Cam、Arlo
知道我缺少什么设置或更改吗?
在 Whosebug 上查找类似问题但没有任何答案
1) Question1
简答:
您的问题没有完整的解决方案。而且是不可能解决的。出现这个问题的原因是"Certificate Pinning"的存在。简单的root也解决不了你的问题
仍然有部分解决方案。 Turn off 'SSL Capture'
。然后所有应用程序将开始工作。但是您将无法解密通过 SSL 连接发送的数据包的内容。但是您仍然可以看到数据包的源地址和目标地址。如果您的数据包嗅探器应用程序没有关闭 SSL 数据包嗅探的选项,在这种情况下请卸载该应用程序,删除已安装的所有自定义 CA 证书,然后重新安装该应用程序。
长答案:
普通数据包嗅探器(不需要 root)如何在 Android.
上工作Android 允许应用充当 'VPN Gateway app'。当应用程序告诉 Android 它想要提供 VPN 连接时,Android 会将所有发往互联网的 IP 数据包从所有其他应用程序转发到 VPN 应用程序。然后 VPN 应用程序通常会加密这些数据包并将其发送到 VPN 服务器,数据包将从那里到达其原始目的地。
Packet Sniffer 数据包利用了上述功能。在 Android 看来,它们就像一个 VPN 应用程序。因此,一旦打开,Android 会将所有 IP 流量发送到此应用。但是为了将它们转发到 VPN 服务器,Packet Sniffer 应用程序会简单地将它们发送到它们的原始目的地。这样,Packet Sniffer 应用程序就像一个透明代理。该应用程序能够传入和传出所有流量。这些应用程序本质上就像 "man-in-the-middle".
TSL/SLL 和证书颁发机构
SSL(和 HTTPS)的构建几乎完全是为了防止任何类型的 "man-in-the-middle" 攻击。 SSL 在正常的 TCP 连接上运行。它的作用是使用只有客户端和服务器知道的密钥对在客户端和服务器之间发送的所有流量进行加密。您可以阅读有关 SSL 工作原理的更详细和准确的信息 here
在建立 TLS/SSL 连接时,客户端设备会要求服务器出示它的数字签名证书(也称为 SSL 证书),以证明该服务器就是它声称的身份。即当 Amazon App 尝试连接到 amazon.com 时,它会要求服务器生成一个数字签名证书,证明该服务器实际上是 amazon.com 。当服务器发回证书时,应用程序将询问 Android 操作系统证书是否由 Android
的某人进行了数字签名
信任。如果证书实际上是由 Android 操作系统信任的 CA(证书颁发机构)签署的,则连接会继续。否则应用程序将显示无法连接的错误。
数据包嗅探应用程序通常如何能够嗅探 TLS/SSL 数据包?
Packet Sniffer 应用程序将要求用户在 Android 的系统上安装自定义 CA 证书。该 CA(证书颁发机构)证书将使 Packet Sniffer 应用程序在该设备上被视为合法且受信任的 TSL/SSL 证书颁发机构。
现在默认情况下所有应用程序都将接受由 Packet Sniffer 应用程序签名的 TSL/SSL 证书。因此,如果像 Amazon App 这样的应用程序尝试建立 SSL/TLS/HTTPS 连接,而 Packet Sniffer 应用程序是 运行,PacketSniffer 应用程序将建立 TLS/SSL/HTTPS 连接 - Amazon App 和Packet Sniffer,另一个介于 Packet Sniffer 应用程序和 amazon.com 服务器之间的工具。数据包嗅探器将显示一个伪造的 SSL 证书,声称它实际上是 amazon.com 服务器。由于 Android 现在信任任何由 Packet Sniffer 应用程序签名的 SSL 证书,连接继续欺骗亚马逊应用程序。
通过这种方式,Packet Sniffer 应用通常能够捕获和解密那些通过 SSL 连接发送的数据包。
证书固定
如果像上面描述的那样的数据包嗅探器应用程序可以解密通过 SSL 连接发送的信息,那么恶意人员也可以做同样的事情。他需要做的就是以某种方式说服用户在 Android 上安装他的 CA 证书。然后他将能够读取所有 WhatsApp 消息、来自银行应用程序的银行密码、亚马逊应用程序发送到 amazon.com 的信用卡信息......等等。
因此,某些应用程序的开发者,尤其是那些处理信用卡详细信息等高度机密数据的应用程序的开发者,决定不再信任 Android OS(或 iOS, Ubuntu 和 Windows) 判断应用程序是否确实连接到合法服务器。
于是他们开始效仿certificate pinning
。
这些应用程序的制造商所做的是,他们可以在应用程序中嵌入服务器 SSL 证书本身的副本,或者嵌入他们使用的证书颁发机构的 SSL 证书副本。
然后,这些应用程序会将服务器生成的任何证书与应用程序中嵌入的证书进行比较。如果它们不匹配,应用程序将简单地拒绝连接。这些应用程序不信任操作系统。因此,Packet Sniffer 应用程序安装的自定义 CA 证书对这些应用程序没有影响。
没有已知的方法可以轻松绕过证书固定(除了反编译每个应用程序并替换嵌入的证书,这在根设备上也是如此)。证书固定的存在仅仅是为了防止您试图实现的目标。如果您在 Packet Sniffer 应用程序上启用 SSL 嗅探,所有使用证书固定的应用程序都将停止工作。
解决方案
关闭 SSL Capture
。
如果您的数据包嗅探器应用程序没有关闭 SSL 数据包嗅探的选项,在这种情况下请卸载该应用程序,删除已安装的所有自定义 CA 证书,然后重新安装该应用程序。