MASTG-TECH-0125: 拦截 Xamarin 流量
Xamarin 是一个移动应用开发平台,允许开发者使用 Visual Studio 和 C# 创建原生 Android和iOS 应用。
在测试 Xamarin 应用时,在设备 Wi-Fi 设置中设置系统代理不会捕获拦截代理中的任何 HTTP 请求。这是因为 Xamarin 应用不使用设备的本地代理设置。有三种方法可以绕过这个限制
选项 1:操纵 Xamarin 的网络堆栈默认代理¶
通过在 OnCreate
或 Main
方法中添加以下代码,修补应用程序以使用默认代理
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中设置重定向
- 打开代理选项卡,然后单击选项。
- 从代理侦听器列表中选择并编辑您的侦听器。
- 导航到请求处理选项卡并配置
- 重定向到主机:将其设置为原始服务器目标。
- 重定向到端口:指定原始端口。
- 启用“强制使用 SSL”(如果使用 HTTPS)和“支持隐形代理”。
开始拦截流量¶
现在,开始使用该应用程序并触发其功能。如果配置正确,HTTP 消息应显示在您的拦截代理中。
注意:使用 Bettercap 或 DNS 欺骗时,请在代理选项卡 → 选项 → 编辑接口下启用“支持隐形代理”。确保代理设置配置正确,以处理 HTTP 和 HTTPS 流量,以实现完全可见性。