概览

知识点:

1、资产提取-AppinfoScanner
2、评估框架-MobSF&mobexler
3、抓包利器-Frida&r0capture

章节点:

1、信息收集-应用&资产提取&权限等
2、漏洞发现-反编译&脱壳&代码审计
3、安全评估-组件&敏感密匙&恶意分析

核心点:

0、内在点-资产提取&版本&信息等
1、抓包点-反代理&反证书&协议等
2、逆向点-反编译&脱壳&重打包等
3、安全点-资产&接口&漏洞&审计等

实例

移动安全的测试点:

1.渗透测试
app资产 域名IP 服务器做的安全测试
2.逆向破解
app功能破解 限制等

抓包遇上的问题:
开代理:部分代理出现 反代理机制证书鉴定机制 –中大型APP
或者版本问题(非主要)

静态提取:基于静态反编译提取(网站展现的部分与网站源码的部分不一样)

内在-资产提取-AppinfoScanner(静态提取/源代码直接提取)

非主要,后面的任何一个都比这个好。

#  这是执行命令
python app.py android -i gf.apk
# 执行完成后,可以看见在app.py的目录下有一个xml文件,打开就能看到静态测试数据

AppinfoScanner一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。
https://github.com/kelvinBen/AppInfoScanner

内在-安全评估-MobSF&mobexler(静态提取/源代码直接提取)

  • 移动安全框架 (MobSF) 是一种自动化的一体化移动应用程序 (Android/iOS/Windows) 渗透测试、恶意软件分析和安全评估框架,能够执行静态和动态分析。MobSF 支持移动应用程序二进制文件(APK、XAPK、IPA 和 APPX)以及压缩源代码,并提供 REST API 以与您的 CI/CD 或 DevSecOps 管道无缝集成。动态分析器可帮助您执行运行时安全评估和交互式仪器测试。

  • Mobexler是基于Elementary OS的定制虚拟机,旨在帮助进行Android和iOS应用程序的渗透测试。Mobexler预装了各种开源工具,脚本,黑客必备软件等,这些都是安全测试Android和iOS应用程序所必需的。

# 需要用到虚拟机
# 下载并且启动镜像
# MOBSF虚拟机的那个版本是专门用来做安全测试的,但是起始内存必须大于50G
# MOBSF虚拟机其实只需要用临时搭建的服务器直接安装带动即可测试软件,不过只能在线测试,不能实机测试。

# MOBSF GitHub地址:
https://github.com/MobSF/Mobile-Security-Framework-MobSF

# mobexler,移动安全测试虚拟机。
# 集成了安卓测试的各个软件
# 需要安装到本地虚拟机
# 需要7.5G 需要保证2G2核心以上
# 硬盘要大于50G,老师给了180G 2h2G
# 上手比较友好,集成了上面的MOBSF
# 虚拟机打开usb支持后,安卓测试可以测试真机
# 集成Android studio(安卓开发ide),frida
https://mobexler.com/

# docker环境下启动MOBSF
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:latest

抓包

分为抓到和抓不到
抓不到的情况:
1.没走http/s协议 - 其它协议全抓包 - 鲨鱼等抓包
2.反代理或证书校验的检测 防抓包机制 - Frida+安卓模拟器

上传后:自动反编译,指出软件缺陷,版本,URL等。

外在-证书抓包-frida-server&r0capture

  • r0capture仅限安卓平台,测试安卓7、8、9、10、11 可用 ;

无视所有证书校验或绑定,不用考虑任何证书的事情;
通杀TCP/IP四层模型中的应用层中的全部协议;
通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf等、及它们的SSL版本;
通杀所有应用层框架,包括HttpUrlConnection、Okhttp1/3/4、Retrofit/Volley等等;
无视加固,不管是整体壳还是二代壳或VMP,不用考虑加固的事情;

  • Firda 是一款易用的跨平 Hook(底层消息钩子) 工具, Java 层到 Native 层的 Hook 无所不能,是一种 动态 的插桩工具,可以插入代码到原生 App 的内存空间中,动态的去监视和修改行为,原生平台包括 Win、Mac、Linux、Android、iOS 全平台。

测试环境:

Windows10  Python3.7 夜神模拟器 r0capture frida-server wireshark
https://github.com/r0ysue/r0capture
https://github.com/frida/frida/releases

1、本地安装Frida

# 可以使用国内镜像源pip安装
# 一定一定一定要跟frida-server同版本!!!
pip install frida
pip install frida-tools

可使用pip list|grep frida查frida版本

2、模拟器安装Frida

注意:版本要与本地Frida一致
下载:https://github.com/frida/frida/releases
真机:ARM版本及位数 模拟器:无ARM的位数

# 这里后面测试的时候,测试试验了第一个机,转第二个机的时候(新建手机模拟器),出现了无法连接的问题
# 具体原因不详,等到刷23年的课程再解决吧。
# 目前观察来看,框架可能有问题,需要直接卸载重装
# 抓包打游戏,打游戏的过程中数据包没有任何反应,代表对面是机器人
# --------------------------------------
# 安卓模拟器
模拟器使用x86x64的server
# 安卓真机
手机测试使用arm的server

# 切换到夜神模拟器(夜神这时候比较好使)bin目录,查当前运行的夜神模拟器
# 查到了就返回一个连接
./nox_adb.exe devices

# 使用bin下的adb进行连接
# 连接的方法1
# 出了点问题
# nox_adb.exe connect IP地址:端口
# 连接的方法2
nox_adb.exe shell

# 查电脑的框架是arm还是其它(不是重点)
# 这个是测试模拟器cmd用的(这才是重点)
getprop ro.product.cpu.abi

# 测试出,模拟器是x86,先退出模拟器:
exit
# 把frida-server-16.1.4-android-x86_64发送进虚拟机
# 实际操作:(这是个大坑!版本用不对,哪怕是差个'_64',都会导致失败!)
nox_adb.exe push frida-server-16.1.4-android-x86 /data/local/frida-server
# 发送上去后,就能在上面/data/local目录找到了

# 传上去后,在模拟器启动,创建服务端,再使用本机去连接。
nox_adb.exe shell
cd /data/local/
# 给个权限,再执行它
chmod 777 frida-server
# 运行成功会无回显,一直卡在光标闪烁
./frida-server


# 运行成功后再开个cmd查看效果
ps | grep frida
# 回显如下
root 5042 4932 113256 10788 40183b4e S ./frida-server2

3、转发并启动Frida

# 把端口从模拟器转发到本地的端口
adb forward tcp:27042 tcp:27042
# 两条命令必须成功!
连接判断:
frida-ps -U # 显示USB-安卓模拟器的进程信息
frida-ps -R # 显示本地-安卓模拟器的进程信息(转发成功才能看到)

4、获取包名并运行抓包

获取包名:
# 1.程序的data/data目录下的所有包名,具体哪个包名靠你猜喽
ls /data/data
# 2.利用apk提取器,获取所有的安装包信息和安装包包名
Apk Messenger

# 使用脚本抓包名并且导包为鲨鱼抓包的流量包保存起来
python r0capture.py -U -f 包名 -p xxxx.pcap
python r0capture.py -U 包名 -v -p xxxx.pcap

# 可以支持联动BP
# 部分尝试失败,原因可能如下:
# 1.BP没有联通过
# 2.没开root
# 3.没开开发者模式
# 具体的原因还是得看2023的录屏,22版的夜神我就成功了一个靶机模拟器