Meta Quest 2渗透测试环境搭建指南
随着Meta Quest等商用虚拟现实头显的出现,虚拟现实和增强现实与日常生活的融合感觉比以往任何时候都更加接近。随着这些设备变得越来越普遍,保护和确保它们收集和存储的数据安全的需求也将增加。
本文旨在为Meta Quest 2应用程序建立基线安全测试环境,分为三个部分:启用开发者模式、建立拦截代理和注入Frida Gadget。Quest 2运行在Android开源项目(AOSP)的修改版本以及Meta开发的专有软件之上,允许采用许多成熟的Android测试方法。
启用开发者模式
在Quest上设置安全测试环境的第一步是启用开发者模式。这允许用户通过Android调试桥(ADB)连接到头显,并提供对设备文件系统的编程访问。
在Quest 2上启用开发者模式的前提是拥有注册为Meta组织管理员的Meta账户。请参阅以下列表获取相关Meta服务的链接,用于账户和组织注册及验证。
- 创建Meta账户:https://auth.meta.com/
- 创建组织:https://developer.oculus.com/manage/organizations/create/
- 验证账户:https://developer.oculus.com/manage/verify/
账户完全验证为管理员后,按照以下步骤将头显置于开发者模式:
- 在头显或Meta Quest移动应用中,登录开发者账户
- 打开设置,然后进入系统 > 开发者并启用USB调试
- 将头显连接到计算机,然后戴上头显
- 应该会出现一个提示,要求允许USB调试,并可以选择始终允许此计算机连接
注意:如果弹窗消失,请检查通知菜单(菜单栏时间旁边的铃铛图标)。有时即使之前勾选了"始终允许"按钮,也可能需要再次授予权限。如果ADB出现问题,请检查头显上的通知,看看是否要求允许来自计算机的连接。
设置拦截代理
应用程序安全测试的一个重要部分是分析应用程序与其服务器之间发送和接收的数据。要查看传输中的数据,必须为设备配置拦截代理。通常,这需要拥有设备的root访问权限;然而,目前没有公开可用的方法可以获得Quest的root权限。代替传统的root访问方法,将使用VPN隧道。
设置Kali虚拟机
使用虚拟化软件(如VirtualBox或UTM)启动Kali Linux虚拟机,确保其处于桥接模式。桥接模式使设备与主机处于相同的网络位置,而不是隐藏在其中。这允许同一网络上的其他设备(如Quest 2)访问它。
在Kali上设置OpenVPN服务
使用以下脚本在Kali虚拟机上设置OpenVPN服务:
|
|
第一个提示将询问用于VPN的IP地址;确保使用Kali机器在本地网络上的IP地址,例如192.168.0.160。其余提示可以保留默认设置。
完成后,脚本将输出存储在/root目录中的.ovpn配置文件,需要将其复制到头显上。可以通过在Kali机器上托管HTTP服务器,在头显上使用浏览器下载该文件。将其移动或复制到安全位置,并使用Python托管HTTP服务器:python3 -m http.server。请注意,此命令默认在端口8000上打开服务器。
在Quest上下载并安装OpenVPN
OpenVPN目前在Meta Quest商店中不可用;但是,可以从其他站点(如Uptodown或F-Droid)获取副本。
APK下载完成后,使用ADB安装它:adb install openvpn-connect.apk
在Quest上打开OpenVPN Connect
通过ADB安装的应用程序可以在应用程序列表的"未知来源"部分找到,并且方便地未列在所有应用程序列表中。
注意:如果OpenVPN卡在启动画面,请尝试使用adb shell am force-stop net.openvpn.openvpn终止进程。如果这仍然不能解决问题,重新安装通常可以解决。
下载配置文件
现在OpenVPN已安装并(希望)正常工作,是时候导入之前创建的.ovpn文件了。在Quest上,打开浏览器并导航到端口8000上的Kali主机IP地址(例如:http://192.168.0.3:8000)。单击.ovpn文件进行下载,这应该会打开OpenVPN并提示导入配置文件。如果OpenVPN没有自动打开,请导航到Quest文件系统中的下载文件夹并从那里打开它。配置文件安装后,连接到Kali VPN隧道。
或者,如果Kali机器能够直接与头显交互,可以直接使用adb将配置文件推送到设备:
|
|
使用iptables将VPN流量路由到Burp
此时VPN隧道几乎完成,剩下的就是将流量从VPN路由到burp。有两个选项:
- 将流量路由到主机
- 直接在Kali虚拟机中捕获流量
注意:iptables规则不是持久的,这意味着每次Kali机器重启时都需要重新运行这些命令。
将流量路由到主机
使用iptables将流量从VPN(tun0)重定向到主机上Burp的位置(192.168.0.2:8080),使用DNAT。MASQUERADE规则用于将流量路由回其源。请注意,命令需要以root身份运行。
|
|
将流量路由到虚拟机
使用iptables将流量从VPN(tun0)重定向到端口8080。
|
|
使用Objection注入Frida Gadget
现在已经建立了编程访问和拦截代理,最后一步是使用Frida设置动态插桩。这提供了一种将自定义脚本注入应用程序的方法,以在运行时分析和操作其行为。在标准的Android安全测试中,可以将Frida服务器推送到设备上并以root身份运行;但是,在没有root访问权限的情况下,必须改用Frida Gadget。为了简化修补过程,将使用Objection框架。
有关Frida和Objection的更多信息可以在以下位置找到:
从设备拉取APK
将Frida Gadget注入APK的第一步是在设备上定位APK文件,并使用adb将其拉取到主机。注意包名(com.app.name)及其路径,因为稍后将需要这些信息。值得注意的是,应用程序二进制文件存储在Android的/data/app/目录中。将以Meta Horizon World为例。
定位应用程序二进制文件:
|
|
将应用程序二进制文件拉取到主机:
|
|
使用Objection修补APK
接下来,使用objection的patchapk函数修补APK。
|
|
在设备上安装修补后的APK
objection完成其过程后,当前目录中应该有一个base.objection.apk。使用第一步中的包名卸载应用程序的当前版本,然后安装修补后的APK。
|
|
使用Objection
要使用Objection CLI与应用程序交互,请在设备上打开应用程序,并在主机上运行objection explore。请注意,应用程序将卡在其加载画面,直到与Objection的调试器连接。
Objection CLI简化了利用过程,允许更多时间进行实验,减少编写利用代码的时间。例如:无需编写Frida脚本来绕过SSL固定,只需运行android sslpinning disable即可禁用目标应用程序的SSL固定。
Objection CLI的其他显著功能包括:
- 禁用root检测
- 搜索和转储内存
- 与SQLite数据库交互
- 探索文件系统
- 操作Android方法和意图
- 查看Android密钥库
- 以及更多功能…
展望未来
随着objection的设置和拦截代理的运行,环境设置已完成!现在可以开始寻找漏洞,如损坏的访问控制、不安全的数据存储、硬编码的凭据和意图重定向。
随着扩展现实的兴起,可能不久之后每个家庭都会有一台设备。与所有新技术一样,安全将在指导其发展方面发挥重要作用。保持领先地位,立即预约咨询!