首页
论坛
课程
招聘
Android APP漏洞之战(15)——非root环境下的抓包、脱壳、Hook
2022-12-16 15:40 96010

Android APP漏洞之战(15)——非root环境下的抓包、脱壳、Hook

2022-12-16 15:40
96010

Android APP漏洞之战(15)——非root环境下的抓包、脱壳、Hook

目录

一、前言

近年来随着手机性能的不断增强,逆向分析过程中的三个基本技能:抓包、脱壳、Hook,研究测试人员使用比较多的便是Google系列机型,例如nexus系列、pixel系列,而国产的手机小米、一加也成为热门的测试机,这一切都很多程度上由于手机方便root,root作为众多逆向方法的基础,导致一个手机能否root成为选择的先决条件之一。针对非root手机,当前也存在着相应的解决方案,本文整合网上方法,实现非root环境下的抓包、脱壳、Hook。

 

本文第二节简单介绍虚拟机基本知识

 

本文第三节实现脱壳方案

 

本文第四节实现hook方案

 

本文第五节实现抓包方案

二、基础知识

在了解手机虚拟机前,我们先看看虚拟化技术和容器化,Android上虚拟化技术应用到VitualBox、BlackBox等上,具体架构如下所示:

 

传统虚拟机:

 

 

虚拟化容器:

 

 

两者之前的差异:

 

 

每个虚拟化容器相当于一个沙盒,容器与容器之间互不干扰;虚拟化容器作为一个应用级别抽象(进程级),而虚拟机是作为操作系统级别。

 

而手机虚拟机不断的发展,现在的手机性能完全可以支持手机上运行多个虚拟机,因此虚拟机的研究也在快速发展,比较有代表的就是光速虚拟机、VMOS虚拟机、X8虚拟机等等,当然这些虚拟机也各有差异,下面就让我们简略了解各虚拟机的特点吧。

1.x8虚拟机

这个虚拟机就是一个简易的沙箱,就连官网也是这样描述的:

 

 

image-20221216143421932

 

沙箱机制的原理主要基于Linux系统的UID/GID机制,Android对传统的Linux的UID/GID机制进行了修改。在 Linux 中,一个用户 ID 识别一个给定用户;在 Android 上,一个用户 ID 识别一个应用程序。应用程序在安装时被分配用户 ID,应用程序在设备上的存续期间内,用户 ID 保持不变。其沙箱原理和VM技术类似,具体可以参考VitualBox原理,当然详细的技术原理,大家可以自行去研究。

2.VMOS虚拟机

VMOS虚拟机官网并未给出具体实现的技术细节,经过调研应该是采用了类似anbox技术,anbox技术是一种类似容器的实现方案,即Linux上运行Android系统,通过容器的方式运行,通俗的理解就是Android系统上可以运行Linux,而Linux内核通过Linux命名空间以容器方式运行Android虚拟机,

 

image-20221216142004548

 

这里我们看一个Anbox的基本原理图:

 

image-20221216140319587

 

上图中可以看出 Anbox Session Manager做了三件事情:

1
2
3
1.虚拟一个Android的sufaceflinger, 就是虚拟Android的图像系统,可以将Android里的不同APP渲染的结构进行图层的合成,使所有APP的渲染结果最终合成在一个窗口上
2.虚拟一个windowmanager,给Android里的APP提供对应的窗口
3.虚拟一个activitymanager,就是管理Android内部的进程的,比如app的启动,关闭等等

Anbox Container Manager则是和容器docker类似,来运行Android的镜像,因此Anbox将Android应用放入到容器中,无需直接访问硬件或数据,所有的硬件访问通过主机上的 anbox 守护进程,由于是直接使用本机的Linux内核,不是通过虚拟化所以导致性能极大提升。

3.光速虚拟机

根据光速虚拟机官网的描述,光速虚拟机是通过Android来实现Android,在安卓用户态实现了一个完整的安卓内核和安卓硬件抽象层

 

 

从图中可以看出,光速通过代理虚拟化出了一个完完整的内核抽象层,在Android 内核基础上完整实现了内存管理,进程管理,文件系统和设备管理等安卓内核功能,这样就可以使得其内部运行不依赖手机内核。

4.总结

综合三类虚拟机进行对比,具体的效果如下:

VMOS VMOS PRO 光速虚拟机 X8沙箱
内存占用 186MB 233MB 188MB 181MB
提供root 提供 提供 提供 提供
提供XP 提供 提供 Magisk+Lsposed 提供
提供Play 提供 提供 提供
程序兼容
安卓版本 5.1.1 5.1.1 / 7.1.2/9.0 7.1.2 10.0 7.1
是否含广告 视频广告
权限要求 电话、位置、相机、录音、存储 电话、位置、存储、录音、 存储
 

这里也收集了网上用户的使用评价:

1
2
3
VMOS Pro:能白嫖(启动速度比较慢,但这个支持的安卓版本最多)
51/X8虚拟机:要看广告,部分白嫖,功能比上一个少(启动速度第二)
光速虚拟机:暂时无需要付费功能(这个启动最快)光速10.0需要vip

三、非root环境下脱壳实现

1.实验准备

手机虚拟机VMOS + Magisk+反射大师

 

实验手机:华为Mate10(非root)

2.实验步骤

VMOS可以提供不同版本的Android系统虚拟机,你可以根据需求来使用,这里我们拿Android7.1版来举例实操

 

开启虚拟机已经支持了Xposed和root权限,我们再安装上wifiadb,就可以十分方便的进行逆向工作了

 

image-20221020112024592

 

我们测试一下root权限

 

image-20221020112322217

 

然后这里我们使用DITOR的脱壳模块进行快速脱壳

 

打开模块,我们可以选择动态注入就是Xposed,以及此模块还支持frida注入,但是虚拟机不支持frida,这里我们就选择动态注入

 

image-20221020112203767

 

 

这里我们选择需要脱壳的目标应用,这里就选第一个

 

image-20221020112749115

 

image-20221020112810032

 

image-20221020112840431

 

然后我们把保存的dex打开

 

image-20221020112930742

 

成功的脱壳,这样是不是脱壳工作变得十分简单了

四、非root环境下Hook实现

1.实验准备

手机虚拟机(光速)+Magisk+Xposed

 

实验手机:华为Mate10(非root)

2.实验步骤

这里我们再换一个虚拟机来操作,上面的VMOS其实已经实现的hook操作

 

我们可以安装手机虚拟机,例如光遇虚拟机,然后在虚拟机中安装Magisk,安装Xposed,这样我们就可以使用前面功能,还可以应对更多场景

 

image-20221016193759059

 

image-20221016193834221

 

这样是不是一些有Magisk需求的朋友也可以快速的进行使用了,这里我们就直接使用Lsposed,进入仓库选择一个模块

 

image-20221216172909835

 

我们直接安装完成,然后再下载某乎应用,我们来测试一下hook效果

 

首先我们在真机上下载某乎应用,发现每次进去都会有广告:

 

image-20221216173049242

 

我们进入虚拟机,然后打开会发现加载知了模块

 

image-20221216173211733

 

然后我们进某乎的设置,进行开启模块,这个时候就会发现没有广告了,比如加入标题提示:

 

Hook前:

 

image-20221216173609768

 

Hook后:

 

image-20221216173656004

 

是不是感觉Hook功能又好用起来了呢

五、非root环境下抓包实现

很多朋友使用抓包工具,比如Fiddler、Charles、Burpsuit等,我们都知道在Android7.0后,系统只信任根目录下的证书,而以往用户目录下的证书不可信,导致之前的https流量无法抓取,当然针对高版本的Android,不少用户采用抓包应用证书移植到手机的根目录下,比如常用的MoveCertificate模块等,但是这些都基本针对root环境的手机比较容易操作,但是针对非root环境的手机就不是很容易操作了,本文主要讲述网络上另一种非root环境抓包的思路:

 

VMOS Pro+小黄鸟HttpCanary+MT管理器 实现非root环境下抓包

1.实验准备

VMOS Pro+小黄鸟HttpCanary+MT管理器+QtScrcpy

 

实验手机:华为Mate10(非root)

 

这些工具都上传过知识星球:安全后厨,需要朋友前往星球自取

2.实验步骤

(1)真机安装小黄鸟HttpCanay和安卓虚拟机Vmos Pro

 

这里我们使用投屏软件QtScrcpy来记录本次实验

 

image-20221208120524937

 

image-20221208120650953

 

(2)安装好小黄鸟,在小黄鸟里的设置中,目标应用-指定为VMOSPro

 

image-20221208120801527

 

(3)可以手机安装证书,SSL证书设置-选择导出根证书,类型System Trusted (.0); 导出的证书储存路径为:内部储存/HttpCanary/cert/

 

image-20221208120901930

 

首次没有安装证书的,可能需要安装一下证书,这里就直接安装就可以了,安装后导出证书

 

image-20221208121134998

 

image-20221208121149012

 

(4)打开虚拟机VMOSPro,新建一个虚拟机,这里可以使用Android7极客版,然后给root权限

 

image-20221208121623860

 

(5)导入你要抓包的目标APP(或者apk安装包)+xxxxx.0格式的证书(这个证书就是第3步获取的证书);打开MT文件管理器,刚刚导入的证书自动保存在虚拟机的VMOSfiletransferstatio目录下,将其复制到虚拟机的系统内:/system/etc/security/cacerts/目录下即可

 

image-20221208121725440

 

并在虚拟机中安装MT管理器,并打开,并移动证书到右边

 

image-20221208121937325

 

(6)在vmospro里安装好小黄鸟,打开,点击开始抓包,会提示安装CA证书,根据提示安装即可,会让你设置锁屏密码

 

image-20221208122102503

 

(9)返回真机启动小黄鸟,注意是在真机里抓包,而不是在vmosPRO虚拟机里抓包!!目标应用-设置VMOS-开启抓包 返回虚拟机-启动目标APP 即可在真机抓包了

 

这里我们虚拟机设置为目标APP为浏览器,这里你可以设置你需要抓包的应用

 

image-20221208122254465

 

然后真机中选择目标应用为VMOSPRO开始抓包

 

image-20221208122425563

 

image-20221208122537987

 

image-20221208122728168

 

image-20221208122954403

 

可以发现就成功的抓包了,当然我们结合VMOSPro中的Xposed,还可以安装JustMe,可以绕过一般的SSLpining

六、实验总结

本文演示了非root环境下的抓包、脱壳与Hook,这里只是给非root环境手机逆向的一种方案,经过测试实际使用还未达到root环境真机的效能,感兴趣的大家可以自行的探索了,相应的可以关注github:

 

WindXaa

七、参考文献

1
2
3
4
5
6
https://blog.csdn.net/qq_36383272/article/details/105163579
https://codeantenna.com/a/cnBEw7uwCs
https://developer.aliyun.com/article/767940
https://mabin004.github.io/2019/02/09/itural-APP%E7%A0%94%E7%A9%B6/
https://www.freebuf.com/articles/neopoints/348470.html
https://www.freebuf.com/articles/endpoint/245747.html

[2023春季班]《安卓高级研修班(网课)》月薪两万班招生中~

最后于 2022-12-16 17:38 被随风而行aa编辑 ,原因:
收藏
点赞8
打赏
分享
最新回复 (12)
雪    币: 1903
活跃值: 活跃值 (1439)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangjw 活跃值 2022-12-16 16:52
2
0

精的帖子,要坐沙发

最后于 2022-12-16 16:52 被huangjw编辑 ,原因:
雪    币: 6142
活跃值: 活跃值 (18497)
能力值: ( LV12,RANK:540 )
在线值:
发帖
回帖
粉丝
随风而行aa 活跃值 10 2022-12-17 11:53
3
0
huangjw 精的帖子,要坐沙发
感谢支持
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
TrumpWY 活跃值 2022-12-19 12:49
4
0
vmos 数字壳 闪退 咋解啊
雪    币: 6142
活跃值: 活跃值 (18497)
能力值: ( LV12,RANK:540 )
在线值:
发帖
回帖
粉丝
随风而行aa 活跃值 10 2022-12-19 13:23
5
0
TrumpWY vmos 数字壳 闪退 咋解啊
这只是非root环境下的多种逆向手段的一种思路,要是针对数字壳还是用其他方式更好一点
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
TrumpWY 活跃值 2022-12-26 19:31
6
0
随风而行aa 这只是非root环境下的多种逆向手段的一种思路,要是针对数字壳还是用其他方式更好一点
那看来只能上脱壳机了啊
雪    币: 1334
活跃值: 活跃值 (1237)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guijingwen 活跃值 2022-12-29 19:52
7
0
这些虚拟化有没有开源代码,想学学他们怎么实现的
雪    币: 6142
活跃值: 活跃值 (18497)
能力值: ( LV12,RANK:540 )
在线值:
发帖
回帖
粉丝
随风而行aa 活跃值 10 2022-12-30 13:30
8
0
guijingwen 这些虚拟化有没有开源代码,想学学他们怎么实现的
一般向这种虚拟机基本都不是开源哦
雪    币: 0
活跃值: 活跃值 (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chenhuaqin 活跃值 2023-1-3 15:42
9
0
拼夕夕使用的LongLink进行的数据传输怎么弄?
雪    币: 346
活跃值: 活跃值 (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
月影小子 活跃值 2023-1-15 16:00
11
0
收费的吗?有联系方式不
雪    币: 25
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_dskwbnui 活跃值 2023-1-24 23:05
12
0
知识星球4个月不到就过期
雪    币: 6142
活跃值: 活跃值 (18497)
能力值: ( LV12,RANK:540 )
在线值:
发帖
回帖
粉丝
随风而行aa 活跃值 10 2023-1-27 18:04
13
0
mb_dskwbnui 知识星球4个月不到就过期[em_1]
没有 只是提示,没办法群通知是全部通知的,不过有问题可以直接反馈
游客
登录 | 注册 方可回帖
返回