跳过内容

MASTG-TECH-0125: 拦截 Xamarin 流量

Xamarin 是一个移动应用开发平台,允许开发者使用 Visual Studio 和 C# 创建原生 AndroidiOS 应用

在测试 Xamarin 应用时,在设备 Wi-Fi 设置中设置系统代理不会捕获拦截代理中的任何 HTTP 请求。这是因为 Xamarin 应用不使用设备的本地代理设置。有三种方法可以绕过这个限制

选项 1:操纵 Xamarin 的网络堆栈默认代理

通过在 OnCreateMain 方法中添加以下代码,修补应用程序以使用默认代理

WebRequest.DefaultWebProxy = new WebProxy("192.168.11.1", 8080);

最后,重新编译并签署修补后的应用程序。

或者,使用 Frida Hook 到 WebRequest.DefaultWebProxy 属性,并动态将代理设置为您的拦截代理。

选项 2:通过 ARP 欺骗实现 MITM 位置

使用 bettercap来实现 MITM 位置,并将端口 443 重定向到在本地主机上运行的拦截代理。

在 macOS 上

echo "
rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

在 Linux 上

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:8080

最后,在 Android Studio的侦听器设置中启用“支持隐形代理”

选项 3:DNS 欺骗

如果您可以修改设备的 DNS 解析(DNS 欺骗),您可以将应用程序的流量重新路由到您的代理。例如,在已 root 的 Android 设备上,您可以在 /etc/hosts 中添加一个条目,将应用程序的服务器域名映射到您的代理机器的 IP。这使得应用程序认为您的机器是合法的服务器。

由于 DNS 欺骗在域级别重定向流量,因此传入连接仍将使用原始目标端口(例如,HTTPS 为 443)。为了通过您的代理正确拦截流量(代理可能在不同的端口上运行,例如 8080),您需要端口重定向。这确保了到达 443 的流量被转发到代理的侦听端口。

重定向后,代理可以检查、修改或将流量转发到实际服务器,从而有效地充当 MITM(正如使用 bettercap所做的那样)。

设置流量重定向和拦截代理

如果您尚未设置拦截代理,请参阅使用拦截代理拦截 HTTP 流量

提示:在重定向流量时,仅为范围内的域和 IP 创建特定规则,以减少范围外流量的干扰。

确保您的拦截代理在重定向规则中定义的端口(在本例中为 8080)上侦听。

将流量重定向到您的拦截代理后,您需要将其转发回其原始目标。以下步骤是在 Burp Suite中设置重定向

  1. 打开代理选项卡,然后单击选项
  2. 从代理侦听器列表中选择并编辑您的侦听器。
  3. 导航到请求处理选项卡并配置
    • 重定向到主机:将其设置为原始服务器目标。
    • 重定向到端口:指定原始端口。
    • 启用“强制使用 SSL”(如果使用 HTTPS)和“支持隐形代理”

开始拦截流量

现在,开始使用该应用程序并触发其功能。如果配置正确,HTTP 消息应显示在您的拦截代理中。

注意:使用 Bettercap 或 DNS 欺骗时,请在代理选项卡 → 选项 → 编辑接口下启用“支持隐形代理”。确保代理设置配置正确,以处理 HTTP 和 HTTPS 流量,以实现完全可见性。