Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

admin 2024年7月4日16:51:52评论1 views字数 4107阅读13分41秒阅读模式

[TOC]

一、前言

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

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

本文第三节实现脱壳方案

本文第四节实现hook方案

本文第五节实现抓包方案

二、基础知识

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

传统虚拟机:

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

虚拟化容器:

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

两者之前的差异:

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

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

1.x8虚拟机

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

沙箱机制的原理主要基于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虚拟机,

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

上图中可以看出 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 App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

从图中可以看出,光速通过代理虚拟化出了一个完完整的内核抽象层,在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,就可以十分方便的进行逆向工作了

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

我们测试一下root权限

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

然后我们把保存的dex打开

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

四、非root环境下Hook实现

1.实验准备

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

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

2.实验步骤

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

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Hook前:

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Hook后:

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

是不是感觉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来记录本次实验

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

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

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳

可以发现就成功的抓包了,当然我们结合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

- source:security-kitchen.com

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月4日16:51:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android App漏洞之战(3)——(虚拟机)非root环境下hook、抓包、脱壳https://cn-sec.com/archives/2919394.html

发表评论

匿名网友 填写信息