android系统root、抓包、劫持摄像头

工具

Magisk框架

Magisk是安卓获取ROOT的主流方式。通过 Magisk 来安装一些模块,主要是进行隐藏 root 和 代理相关的行为,避免被 APP 探测到。
使用LSPosed需要先安装Magisk(https://topjohnwu.github.io/Magisk/install.html)。

1. Make sure you have 24.0+ installed on your device.
2. For zygisk favor enable zygisk in Magisk APP, for Riru favor install [Riru](https://github.com/RikkaApps/Riru#install) 26.1.7+.
3. Download LSPosed from [here](https://github.com/LSPosed/LSPosed/releases/latest).
4. Go to Magisk's `Modules` tab and install LSPosed.
5. Reboot your device and wait for a while, you will see the LSPosed status notification.
6. Launch LSPosed by tapping the notification and checking the activation status.

安装使用Magisk,需要了解如何使用adbfastboot
Magisk安装教程:https://magiskcn.com/

LSPosed插件

LSPosed是Edxposed的一个分支,相比于 EdXposed,它精简了许多。它基于 Riru/Zygisk 的 ART hook 框架,提供与原版 Xposed 相同的 API, 使用 LSPlant 进行 hook。

Xposed 框架是一套开放源代码的框架服务,可以在不修改APK文件的情况下修改目标应用的运行,基于它可以制作功能强大的模块,且在功能不冲突的情况下同时运作。

官方Wiki地址:https://github.com/LSPosed/LSPosed/wiki
LSPosed安装教程:https://magiskcn.com/lsposed-install

如果在migisk框架下安装该插件,须先到GitHub下载zip包,然后通过migisk去安装。

adb

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。
adb使用教程:https://github.com/mzlogin/awesome-adb
windows10安装adb/fastboot教程

进入手机的shell:

adb shell

安卓端的虚拟机

刷面具(Magisk)需要解锁BL(BootLoader)。像华为,荣耀,OPPO,VIVO这些国产手机已经不开放解锁BL。
光速虚拟机是一款支持Magisk的虚拟机APP:不用Root、不用解锁BL,也不用刷机。
下载地址:https://magiskcn.com/gsxnj

虚拟摄像头

一个apk安装包。
下载地址:
https://github.com/Xposed-Modules-Repo/com.example.vcam
https://github.com/w2016561536/android_virtual_cam

证书单向绑定(SSL Pinning)

首先介绍一下证书相关的概念,以及证书校验的相关知识:
可信CA:
CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数字证书的机构。CA的作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改,以及对证书和密钥进行管理。
双向锁定
在客户端锁定服务端证书的基础上,服务端对客户端的证书也进行锁定,需要客户端再做一次证书预埋。多见于金融业务。
证书链:
证书链就是Root CA签发二级Intermediate CA,二级Intermediate CA可以签发三级Intermediate CA,也可以直接签发用户证书。从Root CA到用户证书之间构成了一个信任链:信任Root CA,就应该信任它所信任的二级Intermediate CA,从而就应该信任三级Intermediate CA直至信任用户证书。
逐级验证
客户端对于收到的多级证书,需要从站点证书(leaf certificate)开始逐级验证,直至出现操作系统或浏览器内置的受信任CA 根证书(root certificate)。

SSL Pinning技术指的是在应用程序中只信任固定证书或是公钥。应用程序开发人员在程序中使用SSL pinning技术作为应用流量的附加安全层。实现SSL pinning的方法主要有两种:
证书固定:开发者将SSL证书的某些字节码硬编码在用程序中。当应用程序与服务器通信时,它将检查证书中是否存在相同的字节码。如果存在,则应用程序将请求发送到服务器。如果字节码不匹配,它将抛出SSL证书错误。此技术可防止攻击者使用自己的自签名证书。
公钥固定:在客户访问网站时进行公钥固定中,服务器将其公钥固定(通过注入)在客户端(客户)浏览器中。当客户端重新访问同一网站时,服务器将标识其公共密钥以检查连接的完整性。此技术还可以防止攻击者使用他/她的自签名证书。

SSL Pinning的作用

通常我们在测试一个应用的时候会设置代理,从而获取应用在运行过程中的流量。我们使用代理工具获取流量的话,需要在设备中安装我们自己的证书到可信任的根证书中,这样应用程序才会将我们的证书视为可信任的有效证书,允许代理工具拦截应用的流量。但是使用的SSL pinning技术的应用程序,只信任指定的证书,那么我们就算把我们的证书安装到设备中,应用程序也不会信任我们的证书,这样的话我们就不能通过代理的方式来拦截应用的流量了。

参考:
https://zhuanlan.zhihu.com/p/127847550

root安卓设备

现阶段比较流行的是通过magisk来root。

  1. 获取当前系统的镜像,一般在官网可以找到,是一个zip包,解压后拿出里面的boot.img镜像文件
  2. 安装magisk后,在主界面里选择“安装”,选择“修复文件”,选择前面的boot.img文件进行修复,修复完成后在Download目录下生成一个被magisk patched过的镜像文件,一般是以magisk_patched开头
  3. 利用fastboot刷入该镜像,重启

不同的设备root的方式存在差异,一些是需要解锁BL后才能通过fastboot刷入镜像的,但大致的过程就和上面一样。

安装LSPosed模块

一般情况下,我们可以用LSPosed的API(好像和Xposed没啥区别)hook应用(某个函数或者类构造器等),进而修改应用的行为。
后面提到的插件就是基于该框架的,如TrustMeAlready和vcam。
下载:https://github.com/LSPosed/LSPosed/releases
下载到的zip包在Magisk的“模块”里安装即可,要先在设置里开启Zygisk(这个比Riru好用?),然后按要求重启手机,也可以等把所有模块都安装好了再一次过重启。

抓包

如果要抓包安卓流量,根据应用的安全程度的不同,可以划分三个级别。

普通抓包

第一个级别是安装一个burpsuite证书就可以抓包了,比如百度浏览器。步骤如下:

  1. burpsuite以der格式导出证书,修改证书后缀为.cer,发送到手机
  2. 手机上搜索“证书”进行证书安装
  3. 电脑和手机连接同一个wifi,比如手机热点
  4. 在手机设置代理,一般是选择连接的wifi进行设置,ip设置为电脑的ip,端口则是burpsuite抓包的监听端口
  5. 开始抓包

绕过SSL Pinning抓包

第二个级别就是使用了SSL Pinning的,此时需要在magisk上安装可以绕过SSL Pinning的插件,比如TrustMeAlready,此类插件有很多,开启插件后,步骤同上。

绕过root检测抓包

第三个级别就是应用还会对手机进行root检测,此时在上一种情况下,还需要安装一个Shamiko插件来隐藏magisk和root。

magisk自带了一个隐藏功能,通过Magisk随机包名来隐藏,位置在“设置-App-隐藏Magisk应用”。

如果Magisk随机包名后出现弹窗说:“超级用户权限丢失,应用无法在隐藏状态下继续工作,请恢复到原始Magisk应用”,不用点安装,重启手机即可

Shamiko可以对检测root的应用隐藏Magisk、Zygisk本身、二进制文件“su”,甚至是“Bootloader未锁定”的状态(只限部分机型)。 Shamiko有白名单模式和黑名单模式。
给文件管理器授权root查看手机根目录,找到data文件下的adb文件里的Shamiko文件夹。请记住不是modules文件里的zygisk_shamiko文件。没有则创建Shamiko文件夹,接着在该文件夹下创建whitelist文件。此时启动Shamiko,会处于白名单模式。把whitelist文件删除,则处于黑名单模式。Shamiko能够隐藏root时会出现笑脸。

白名单模式,是向所有应用隐藏root,如果白名单模式下给新应用root权限,只要在终端输入su (新应用的uid) -c su就可以给权限了。mt和Termux或者其他管理器都可以在终端模拟器执行。
UID怎么获取呢,第一种方法,应用UID可用文件管理器从/data/system/packages.xml获取查找。
第二种就是用DevCheck这个app用来查应用uid,然后用终端获取root执行命令即可。

黑名单模式,则是需要在magisk里打开设置,然后在“设置-配置排除列表”里选择要隐藏root的应用,该应用就检测不到root了。

设置里的“遵守排除列表”选项不可以打开,它和“Shamiko”模块两者冲突。

至此,应用的root检测绕过了,SSL Pinning也因为TrustMeAlready也绕过了,就可以抓包了。

参考:
隐藏root保姆级教程第(一)期之用“Shamiko”模块隐藏root

安装虚拟摄像头vcam

LSPosed的模块是以apk安装在设备上的,安装上后LSPoesd就会有通知去选择模块的作用范围,就在LSPosed的“模块”页面里。
在“模块”页里点开vcam的作用范围,选择应用该虚拟摄像头的应用即可生效。

posted @ 2024-04-08 14:16  叶际参差  阅读(279)  评论(0编辑  收藏  举报