打造最强移动测试平台
笔者今年换掉了服役N年的旧手机,新手机12G的RAM,比自用的本子内存都大,如果只是玩游戏感觉不能完全发挥出全部机能,但又因为怕影响日常使用没有进行root,经过一番折腾,发现即使不root也不影响把它变成一款测试利器,有同类需求的可以参考此文。
安卓虚拟机
移动应用测试肯定是需要一个root环境,很多人选择用安卓模拟器,笔者为了使用WSL2启用了Hyper-V,导致与绝大多数的安卓模拟器冲突,从此告别安卓模拟器。笔者也尝试用了VirtualXposed、太极等免root的Xposed框架,发现兼容性不是太好,app容易闪退崩溃。后来发现安卓平台也有虚拟机,目前共有VMOS、光速虚拟机、X8沙箱三款产品。其中VMOS分普通版和Pro版,Pro版非会员支持选择ROM,也可以导入网友提供的ROM,其他虚拟机皆内置ROM无法修改。
经过笔者一番测试,对比如下
VMOS |
VMOS PRO |
光速虚拟机 |
X8沙箱 |
|
---|---|---|---|---|
内存占用 |
186MB |
233MB |
188MB |
181MB |
提供root |
提供 |
提供 |
提供 |
提供 |
提供XP |
提供 |
提供 |
不支持 |
提供 |
提供Play |
提供 |
提供 |
提供 |
无 |
程序兼容 |
差 |
好 |
好 |
好 |
安卓版本 |
5.1.1 |
5.1.1 / 7.1.2 |
7.1.2 |
5.1.1 |
是否含广告 |
是 |
是 |
无 |
视频广告 |
权限要求 |
电话、位置、相机、录音、存储 |
无 |
电话、位置、存储、录音、 |
存储 |
综合来说,光速虚拟机最快,干净无广告,遗憾的是目前版本不支持xposed框架,VMOS Pro自带rom兼容性比较差,使用酷安网友提供的ROM兼容性较好,而且关闭所有应用权限也不影响虚拟机使用,很不错。
想一下手机里跑个虚拟的安卓系统,带root环境且与本机隔离,简直是移动测试的最佳方式。
下图是笔者四个虚拟机同时小窗开启的,独立互不冲突,加起来内存占用可能还不到1G,毫无压力。
Kali Nethunter
官方文档提供一种NetHunter Rootless的方式,即免root安装,同样也是支持KeX的,所以可以实现下图的效果,外接显示器获得完整的桌面体验。
与其他版本的Nethunter差别参见下图,能够实现绝大部分功能。
Feature |
NetHunter Rootless |
NetHunter Lite |
NetHunter |
---|---|---|---|
App Store |
Yes |
Yes |
Yes |
Kali cli |
Yes |
Yes |
Yes |
All Kali packages |
Yes |
Yes |
Yes |
KeX |
Yes |
Yes |
Yes |
Metasploit w/o DB |
Yes |
Yes |
Yes |
Metasploit with DB |
No |
Yes |
Yes |
NetHunter App |
No |
Yes |
Yes |
Requires TWRP |
No |
Yes |
Yes |
Requires Root |
No |
No |
Yes |
WiFi Injection |
No |
No |
Yes |
HID attacks |
No |
No |
Yes |
主要原理基于Termux+Kex实现的,Termux真的是一款神器,一款不需要Root的神器,具体介绍参见国光前辈的文章https://www.freebuf.com/geek/170510.html
NethunterRootless安装方法可以参考官方文档https://www.kali.org/docs/nethunter/nethunter-rootless/
建议termux通过f-droid下载https://f-droid.org/packages/com.termux/
实际效果如下图,具体就不展开讲了,国光大佬那篇文章写的很详细
题外话,wsl2现在也支持kex了,效果如下图,美滋滋!https://www.kali.org/docs/wsl/win-kex/
Docker环境
虚拟的安卓有了,虚拟的kali有了,想搭靶机了,能不能有个Docker呢,答案是肯定的!
虽然Termux很强大,可以安装各种linux,但基于termux版linux还是不能运行Docker,需要Termux上装Qemu虚拟机,Qemu装alpine linux,这个时候才是原汁原味的x86 linux。
这种套娃的操作可能会劝退不少人,幸运的是有人把Termux+Qemu+Alpine整合好了,名为alpine-term,开箱即用,安装一个apk打开就是配置完全的alpine linux,项目地址为:https://github.com/xeffyr/alpine-term/releases
你需要做的只是手动装一个docker
#更新apk软件源apk update#安装dockerapk add docker#使docker开机启动rc-update add docker#开启docker服务service docker start#后台启动setsid containerdsetsid dockerd
内置用户alpine初始配置存在一些限制,可以使用sudo -s 切换root用户操作。
docker起来后还需要手动配置下Qemu的网络映射,在termux导航栏选择QEMU,执行以下操作添加端口映射。
#映射手机10022端口到虚拟机22端口(qemu)hostfwd_add tcp::10022-:22#删除到10022的端口映射(qemu)hostfwd_remove tcp::10022#查看端口映射和网络连接(qemu)info usernet
详细帮助文档参见https://xeffyr.github.io/alpine-term/docs/help.html
代理抓包
最后推荐一个移动端的抓包工具HttpCanary,支持HTTP、HTTPS、HTTP2和WebSocket等多种协议。基于NetBare框架的虚拟网关-拦截器设计,可以非常方便的对单个app进行抓包、修改、重放等操作。完全脱离电脑对某个app进行抓包分析。详细使用可参考作者写的系列文章https://juejin.im/post/6844903745562607624
结束
到这里本文就结束了,希望能起到抛砖引玉的效果,如果你还有更好用的移动平台安全工具,欢迎在评论区补充。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法