MASTG-TECH-0122: 被动窃听
此方法涉及使用诸如 Wireshark、 tcpdump或 Android tcpdump等工具被动捕获网络流量。它对于识别网络端点、分析协议元数据以及了解应用程序如何与其服务器通信非常有用。但是,它不能自动解密 TLS 加密通信。也就是说,如果您可以获取预主密钥,则TLS 解密是可能的。有关 Android 的具体示例,请参阅这篇文章。
何时有用?¶
被动监听在以下情况下特别有用:
- 解决活动 MITM 问题:识别 TLS 握手错误、证书验证失败以及可能导致主动拦截技术失败的路由异常。
- 分析纯文本非 HTTP 流量:监控应用程序使用的 XMPP、MQTT、DNS、SMB 和自定义 UDP/TCP 协议等协议。也可用于分析来自 Android 上的 Google Cloud Messaging (GCM) / Firebase Cloud Messaging (FCM) 或 iOS 上的 Apple Push Notification Service (APNS) 等服务的推送通知流量。
- 分析来自非代理感知应用程序的流量:某些移动应用程序会忽略系统代理设置(例如,使用 Xamarin 构建的应用程序)或主动检测并阻止 MITM 代理。被动监听允许在不触发检测机制的情况下进行监控。
- 调查网络异常和意外数据泄露:被动监控可以帮助检测意外的第三方通信、通过 DNS 请求进行的数据泄露或异常的出站连接。此外,即使 TLS 加密阻止了直接有效负载检查,元数据泄露(例如,请求大小、时间模式、域名或数据包序列)仍然可以提供有价值的见解,并且可能有助于进行侧信道攻击。
它是如何工作的?¶
可以通过两种方式执行被动监听:
-
直接在已root的 Android 或已越狱的 iOS 设备上:如果设备已root(Android)或已越狱(iOS),您可以使用
tcpdump
或类似工具直接捕获网络流量,而无需主机。这允许您实时监控所有传出和传入的数据包。 -
通过主机路由流量(适用于已root/已越狱和未root/未越狱的设备):如果无法或不希望在设备上直接捕获数据包,您可以将其网络流量路由到主机,并使用诸如 Wireshark或 Android tcpdump等工具分析。此方法适用于已root/已越狱和未root/未越狱的设备,通常通过以下方式实现:
- 使用拦截代理来拦截和分析 HTTP/S 流量。
- 设置基于 VPN 的捕获以将流量重定向到受控的网络隧道。
- 执行 ARP 欺骗或在 Wi-Fi 网络上设置透明网络分路器。