总结
在本文中,我们将向您展示如何在 Android 上拦截 HTTP 流量。我们的方法基于 VPN 隧道方法。
免責聲明
本文仅供参考和教育目的,适合那些愿意并好奇地了解和学习安全和渗透测试的人。不得将内容用于非法目的。如果您准备好学习新事物,请继续阅读。
详
在 Android 应用程序中使用 Burp 代理拦截 HTTP 流量并不像在传统浏览器 Web 应用程序中那样容易。在传统 Web 应用程序中拦截 HTTP 流量就像使用代理服务器配置浏览器一样简单。Android(和 iOS)应用程序没有代理服务器配置。这使得很难将 HTTP 流量重定向到 Burp Suite 等代理服务器。这很困难,但并非不可能。通常,有三种方法可以将流量从您的移动应用程序重定向到您的代理服务器。Jeroen Beckers 写了一篇很棒的文章,解释了 iOS 的所有三种方法 (https://blog.nviso.eu/2020/06/12/intercepting-flutter-traffic-on-ios/)。
本文介绍如何在移动应用程序和攻击 (渗透测试器) 计算机之间使用 VPN 连接。此外,我们还将展示如何将 Burp 代理服务器证书传输到移动设备,并配置 Burp 代理以进行移动设备流量拦截。
POC 由 1 台移动设备和 Kali Linux 组成:受害者 (Samsung J3) 和一台攻击者机器 (Kali Linux 2022.3)。
受害者:
— 三星 J3(Android 5.1,未 root)
— IP 地址:192.168.43.136
攻击者(用于 Burp 代理):
— Kali Linux
— IP 地址:192.168.43.136
以下部分向您展示如何在 Kali 机器上安装 OpenVPN 服务器、如何在移动设备上安装 OpenVPN 客户端、如何导入打嗝代理证书以及如何使用 burp 代理拦截 HTTP 流量。
准备 PoC 环境
在我们开始 PoC 之前,让我先向您展示 PoC 要求。为了执行这些步骤,您必须:
- 使用物理移动设备(无法使用 Android 虚拟设备)
- 启用 Android 开发者选项
- 在 Kali 攻击者机器和移动设备之间建立 TCP 连接(例如,两者都连接到同一个 Wifi 网络或通过 USB 连接)
在此 PoC 中,我们将使用 USB 连接与我们的 Kali 主机建立 TCP 连接。您也可以使用 WiFi 而不是使用 USB 连接。在这种情况下,您的移动设备和 Kali Linux 系统都必须连接到同一个 WiFi 网络。如果您选择使用 WiFi 网络,则可以跳过此部分并从步骤 7 继续。
1. 在 192.168.43.1(受害者,三星 J3)上执行。
在我们的移动设备上启用 Developer 选项。
转到“设置”
点击“关于设备”或“关于手机”点击
“软件信息”
点击“内部版本号”七次。...
可选:输入您的图案、PIN 或密码以启用 Developer options (开发人员选项) 菜单。
“开发者选项”菜单现在将出现在您的设置菜单中。
https://www.samsung.com/uk/support/mobile-devices/how-do-i-turn-on-the-developer-options-menu-on-my-samsung-galaxy-device/
注意:这些步骤特定于 Samsung J3 设备。查看您的供应商网站以获取您的说明。
2. 在 192.162.43.1(受害者,Samsung J3)上执行。
启用 USB 调试 在 开发者选项 中。
确保 Developer options 开关(位于右上角)打开 Switch on 图标。
轻敲 USB 调试开关将其打开。
3. 在 192.162.43.1(受害者,三星 J3)上执行。
将移动设备连接到 Kali 攻击者机器的空闲 USB 端口。选择 Linux 作为要连接的目标设备。
4. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
如果尚未完成,请安装 Android Debug Bridge 工具。打开 Bash 终端选项卡并执行:
sudo apt install android-tools-adb
5. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
使用 adb 列出可用设备。您应该会看到 Samsung J3 设备。
adb devices
6. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
使用 adb 测试 shell 对移动设备的访问。尝试使用 ping 来测试与我们的 Kali 攻击(渗透测试)机器和 Internet 的连接。
adb shell
ping -c 2 192.168.43.136
总结
:我们将受害者设备(三星 J3)通过 USB 连接到我们的 Kali 机器。该设备与我们的 Kali 攻击者机器有 TCP 连接。
PoC 安装 OpenVPN 服务器
我们具备在 Kali 渗透测试机和移动设备之间设置 VPN 的所有要求。
7. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
安装 OpenVPN 服务器。我们将使用 Jeroen Beckers 的安装脚本。
wget https://git.io/vpn -O openvpn-install.sh
sed -i "$(($(grep -ni "debian is too old" openvpn-install.sh | cut -d : -f 1)+1))d" ./openvpn-install.sh
chmod +x openvpn-install.sh
sudo ./openvpn-install.sh
8. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
OpenVPN 安装脚本向导:选择连接到 Internet 的网络设备。
9. 在 192.168.43.136(攻击者机器,Kali Linux)上执行。
OpenVPN 安装脚本向导:键入应终止 VPN 的 IP 地址。在我们的例子中,它是 IP 地址 192.168.43.136。
10. 在 192.168.43.136(攻击者机器,Kali Linux)上执行。
OpenVPN 安装脚本向导:选择 UDP 作为首选协议。
11. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
OpenVPN 安装脚本向导:我们将对下一个选项使用默认设置。按 ENTER 键可查看端口规范、系统解析程序和客户端名称。按任意键继续...
我们已经安装了我们的 VPN 服务器。我们的客户端配置文件存储在 /root/client.ovpn 中。
12. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
启动 OpenVPN 服务
sudo service openvpn start
我们的 OpenVPN 服务器现已启动并运行。是时候在我们的移动设备上安装 OpenVPN 客户端软件了。
PoC 安装 OpenVPN 客户端
在接下来的部分中,我们会将文件从 Kali Linux 计算机复制到您的移动设备。它涉及以下文件:
-
client.ovpn (OpenVPN 配置文件)
- openvpn-connect-3-3-0.apk (OpenVPN 客户端软件)
- cert-pro.cer (Burp Suite 服务器证书)
接下来部分中的步骤基于在您的移动设备和 Kali Linux 系统之间使用 USB 连接。如前所述,不需要 USB 连接。也可以使用共享 WiFi 网络。使用 WifI 网络时,可以通过将文件放在 Kali Linux 系统的 /tmp 目录中并通过临时 http 服务器(python3 -m http.server 80 — 目录 /tmp)为该目录提供服务,将必要的文件复制到移动设备。然后,可以使用现有的 Web 浏览器从移动设备下载所需的文件。
13. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
使用 adb 将配置文件 client.ovpn 复制到我们 Android 设备的 sdcard 中。
sudo cp /root/client.ovpn /tmp
adb push /tmp/client.ovpn /sdcard/Download/client.ovpn
14. 在 192.168.43.136(攻击者机器,Kali Linux)上执行。
下载 OpenVPN 客户端 *.apk 安装包。打开 Web 浏览器 (Firefox) 并导航到:https://openvpn-connect.en.uptodown.com/android/download。点击绿色的 [下载] 按钮。
将下载的 apk 文件移动到 /tmp。
mv ~/Downloads/openvpn-connect-3–3–0.apk /tmp
15. 在 192.168.43.136(攻击者机器,Kali Linux)上执行。
使用 adb 在我们的 Android 设备上安装 openvpn-connect-3–3–0.apk。
adb install /tmp/openvpn-connect-3–3–0.apk
16. 在 192.168.43.1 上执行(受害者,三星 J3)。
打开内置的文件资源管理器应用程序并浏览到 /sdcard/Downloads/client.ovpn。
点击 client.ovpn 并安装 OpenVPN 配置文件。继续执行安装步骤。
我们在移动设备和 Kali 攻击者机器之间有一个成功的 VPN 隧道。从现在开始,我们能够拦截来自 Android 设备的流量。我们仍然需要导入 Burp 代理服务器证书,才能使用 Burp 代理进行 HTTPS 拦截。
PoC 安装 Burp 服务器证书
17. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
启动 Burp 社区版。保留默认代理设置 (127.0.0.1:8080)。
18. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
使用 wget 下载 Burp 服务器证书。重要提示:证书文件需要 *.cer 扩展名。
wget http://127.0.0.1:8080/cert -O /tmp/cert-pro.cer
19. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
使用 adb 将 Burp 证书 (cert-pro.cer) 复制到我们 Android 设备的 SD 卡中。
adb push /tmp/cert-pro.cer sdcard/Download/cert-pro.cer
20. 在 192.168.43.1 上执行(受害者,三星 J3)。
在我们的移动设备上安装 Burp 证书。
打开内置的文件资源管理器应用程序并浏览到 /sdcard/Downloads/cert-pro.cer。检查是否选择了“用于 VPN 和应用程序”。点击 cert-pro.cer 并导入服务器证书。
21. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
配置 Burp 代理以侦听所有接口。进入代理> 选项 > 选择界面> [编辑] > 选项卡绑定;为 “alle interfaces” 选择。点击 [确定]
22. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
将 Burp 代理配置为使用“不可见代理”。进入代理>选项>选择界面> [编辑] > 请求处理 标签页;为“支持不可见代理 ”选择。单击 [确定]。
23. 在 192.168.43.136(攻击者计算机,Kali Linux)上执行。
配置 iptables 以将端口 80 和 443 上的传入流量重定向到侦听端口 8080 的 Burp 代理。
sudo iptables -A PREROUTING -t nat -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -A PREROUTING -t nat -i tun0 -p tcp --dport 443 -j REDIRECT --to-port 8080
PoC 使用手机 App 拦截流量
24. 在 192.168.43.1 上执行(受害者,三星 J3)。
现在,您可以拦截来自移动设备应用程序的 HTTP 流量。出于演示目的,我们将使用荷兰公司 Talpa 拥有的 Radio10 应用程序。您可以使用通过 TCP 端口 80 或 443 通信 HTTP 的任何其他应用程序。您不得将此应用程序用于实际的渗透测试或任何其他(其他)滥用它的方式。请首先咨询 Talpa 关于他们的漏洞赏金计划和负责任的披露。
如您所见,我们捕获了移动应用程序的流量。User-Agent 被识别为 okhttp/4.4.1。
就是这样!我希望你喜欢它。在我的下一篇博客中,我将向您展示您可以使用 Burp Suite 做的一些有趣的事情。
功劳
- Jeroen Beckers 出色的 OpenVPN 安装脚本。
其它课程
QT开发底层原理与安全逆向视频教程(2024最新)
linux恶意软件开发对抗与基于ebpf网络安全视频教程(2024最新)
linux文件系统存储与文件过滤安全开发视频教程(2024最新)
linux高级usb安全开发与源码分析视频教程
linux程序设计与安全开发
-
windows恶意软件开发与对抗视频教程
-
-
-
windows网络安全防火墙与虚拟网卡(更新完成)
-
-
windows文件过滤(更新完成)
-
-
USB过滤(更新完成)
-
-
游戏安全(更新中)
-
-
ios逆向
-
-
windbg
-
-
还有很多免费教程(限学员)
-
-
-
更多详细内容添加作者微信
-
-
原文始发于微信公众号(安全狗的自我修养):在 Android 上使用 OpenVPN 拦截 HTTP 流量
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论