坑点之Hyper-V不兼容问题:
https://www.bilibili.com/read/cv13748859/
https://nga.178.com/read.php?tid=27069263
一、渗透背景
最近被安排对app进行渗透测试了,但是有一些东西比较让我困扰,就在今天遇到了burp和模拟器不能进行抓包的情景,这是因为什么呢
安卓安全测试中,其中一个维度测试就是服务端业务逻辑安全性测试,主要通过抓包实现。 其实说白了就是中间人攻击,装着要测试APP的安卓手机发包给我们电脑的burpsuite,我们可以使用bp截包改包的内容,再发给服务端,服务端收到请求后响应,把返回包发给电脑的bp,bp最后发给我们手机上的app。 随着移动端安全逐渐加强,现在越来越多的app已经无法抓到包,或者提示网络相关错误。其实根本原因在于客户端发包时对于服务端的ssl证书进行了校验。
用人话来说,这个app进行了保护处理,他在检测到代理模式的情况下不会正常让你运行程序,会提示网络错误或者程序错误等信息。在这种情况下想要抓包该怎么办呢?没错就是再它之上!
我们今天所用的frida可以有效的绕过后三种情景
二、SSL Pinning&&代理检测
这两种都是app的防御机制,什么是SSL pinning呢
证书锁定(SSL/TLS Pinning)即将服务器提供的SSL/TLS证书内置到APP客户端中,当客户端发请求时,通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性。 所以,ssl pinning需要开发人员将APP代码内置仅接受指定CA或域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性。但是CA签发证书都存在有效期问题,所以缺点是在证书续期后需要将证书重新内置到APP中。
也就是说他只会接受程序指定的CA证书,因此burp证书或者其他的证书是不被接受的,那么这样真正的安全了吗?假设他有一个检测函数check.js
,那么我们只需要使用frida创建一个hook去勾住这个函数即可。对于代理检测也是同一个道理!
三、Frida绕过APP检测
这种方法一般是通用的hook手法。先说明一下使用工具
- Frida
- 夜神模拟器
- https://github.com/frida/frida/releases
- Burpsutie
这三个工具即可完成我们队app的处理。那么开始操作流程
(1)安装Frida
frida是pip下的一个应用,这里推荐使用python3.8或者python3.7,这里我使用的为3.8。让我们进入3.8的pip目录运行
首先婴儿级别安装多版本python,去官网下载zip python的包,然后复制到指定位置,之后重写安装一下pippython3 -m pip install --upgrade --force-reinstall pip
然后让我们进入pip目录执行以下语句pip3.8 install frida
pip3.8 install frida-tools
在python的script目录检测是否有frida.exe,运行frida --version
(2)夜神模拟器安装frida-server
为什么用夜神呢,因为他有很好的兼容性,以及他已经root了。and他有自带的adb特别方便文件操作,所以狠狠的爱了,他的adb在安装包的bin目录下
先cmd下用adb看看cpu版本:adb shell getprop ro.product.cpu.abi
确认是x86后让我们去github下载server
https://github.com/frida/frida/releases
下载后解压一下就是一个二进制文件了,然后我们用adb把他放到安卓目录下adb push xxxx /data/local/tmp
然后adb shell
进入shell界面去赋一下权限以及更改文件名mv ./frida-server-16.0.19-andro ./fs
chmod 777 fs
到这里准备工作算是完成了
(3)Burp+frida配合抓包
首先做一下基本准备
- 确定目标
- burp打开,开启代理
- 手机模拟器配置好了burp的代理地址
- 手机安装了burp证书
之后我们就可以先查看包名:adb shell am monitor
运行之后会进入监听模式,然后打开模板app
获取内容了后,留意一下,记住它
然后再模拟器上启动frida-server服务器
1 | adb shell |
随后准备在windows上运行hook
1 | Java.perform(function() { |
frida -U -f com.fahai.investigation -l frida.js
那么现在完事具备,你已经可以抓包拉。
四、frida脱壳
1、模拟器运行frida-server
1 | adb shell |
然后打开需要脱壳的app,等待下一步操作
2、windows运行py脚本脱壳
安装好FRIDA-DEXDump
下载链接
1 | https://github.com/hluwa/FRIDA-DEXDump |
(注:建议下老版本哈,新版本可能会出点小问题)
然后到frida_dexdump目录下运行
1 | python3 main.py |
返回结果中能看到dex文件已经保存到本地的main.py的同一目录下的新文件夹的路径,本地打开即可
3、查看代码
可以使用jadx直接打开dex文件查看代码
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.