APP服务端挖掘

基础抓包

常用模拟器
①夜神模拟器7.0.0.6
②MuMu模拟器

burp抓包思路(真机或者虚拟机思路均同)
这里以真机来复现
电脑配置的
1.)电脑开热点
在这里插入图片描述

2.)查看本机的ip
ipconfig
image.png
3.)burp中抓包设置
image.png
然后点击ok 即启动监听了

手机配置
1.)连接wifi
在这里插入图片描述

2.长按该wifi
点击修改网络
去设置代理
ac4cadda71d1b80ed0c77eb416e385e.jpg

3.浏览器中访问http://burp
然后点击ca 进行下载证书 (或者电脑下载一个然后传到手机去 建议这种方法)
f503ac7ec29827f6fd40b17fd08e4f4.jpg
4.)将下载下来的证书 改名为
crt格式的(手机和模拟器一般就是这种格式的)
7ad281a4f23a0108b47a678888209b2.jpg
5.)去安装证书
一般的位置在(跟手机相关)
设置–>安全–>加密与凭证–>从存储设置安装证书
071db38736c294ab47e089b813d11c9.jpg
然后找到证书的位置进行安装即可此时的证书是用户证书 虽然也能抓 但是最好转系统证书比较好
证书转换方法
Magisk 有个插件叫做 Move Certificates ,该插件可以一键将所有用户证书自动转换为系统区证书

使用方法:所有证书安装为用户证书后,安装此插件,并重启。

一般没有监测之类的app就可以愉快的抓包了
image.png

对抗抓包

看了很多文章发觉核心就是三个对抗

一.root监测对抗

绕过思路

1.)xpose hide

这个能绕一些app的root监测 但是银行这些不行
78b6638bbd1c5ed88e570b8466cead4.jpg

2.) 利用magisk进行绕过

2.1)高版本自带zygisk进行

这个要比较新版本的magisk才可
直接在框架里面扔即可
实测可绕过银行
不过这个无法跟xpose的插件兼容 难受就难受到这里
17b6217e951a3300ffce97e03fc0a17.jpg

2.2)手动安装riru-momohider模块绕过

这个核心就是安装的Riru-MomoHider 模块
低版本安装该模块方法
①下载Riru-MomoHider
https://github.com/canyie/Riru-MomoHider/releases/download/0.0.7/Riru-MomoHider.zip
将下载的zip文件拷贝到设备存储目录
②打开Magisk管理界面,进入插件模块,选择从本地安装插件
e229693741391c50f54b0356a72fea5.jpg
选中上传的Riru-MomoHider.zip 直接进行安装
③进行配置文件
安装重启后,对Riru-MomoHider 进行配置
执行adb shell,进入手机命令终端
cd /data/adb/modules/riru_momohider/config
分别在/data/adb/modules/riru_momohider/config目录下
创建以下几个文件

touch setns 
touch app_zygote_magic
touch initrc touch isolated

创建完成后,重启手机即可

3.)app anrc(这个我一般不咋用 不太好用 没上面两种方法好用)

一个绕root监测的app
直接把要绕的加到应用列表里面就好了
image.png

二.代理问题对抗

1.)APP不走代理问题

常见现象:burp 拦截时 抓不到包 但是可以正常访问页面
产生原理:

  • android系统设置的代理并不是强制对所有app生效的
  • app可以在网络请求类库中通过自定义代理设置,选择是否要走系统代理

通信协议可直接设置即默认app不走系统的代理了
proxy(Proxy.NO_PROXY)
代码如下
image.png
绕过方法:使用全局系统代理的工具即可,即抓的是系统本身的流量
最简单方法:

1.1)手机

抓的话直接使用:httpCanary绕过(需要root), Packet Capture(不需要root这个我用的很少 我一般都是使用前面的一个)
e3aa382fed0d6a8799ddf26ef079230.jpg
个人比较喜欢的
httpcanary+scrcpy结合使用很舒服
image.png
image.png

1.2)电脑:

结合模拟器使用绕的
使用proxifier直接抓模拟器进程的流量
image.png

真机
方法很多 不过个人喜欢burp+drony的方法抓,看个人习惯吧
①下载一个设置全局代理的软件
这里用Drony
https://files.cnblogs.com/files/lulianqi/Drony_102.apk
②安装后
点击进去选择设置
bf2555b031db954b9b50979bd2e9fc0.jpg
点击wifi
点进去后选择自己电脑设置的wifi
image.png
然后设置端口以及ip
1672dae4c460496b6360e7d97b141cd.jpg
这里已经就可以进行抓包了

过滤默认值默认为允许全部,点击编辑过滤规则
但是为了方便防止抓到额外不想要的包
去进行设置filter
178c10df5299dc6277b6ca9a33e22bf.jpg
进行设置
规则rule设置为本地代理链全部
f9bb3035a0e3ed638ab1dc7d9135ea4.jpg然后选择自己要设置的apk即可
image.png
然后启动该代理后访问时电脑抓包即可
image.png

1.3)hook方法绕

就是该代码(这种没必要拿来绕no_proxy 要用绕的话肯定也拿去绕监测代理的)
使用frida来hook网络请求框架的限制函数,从而绕过验证。
不过还是写出来好了

2.)app做了代理监测

现象:设置手机代理后,APP无法获取网络数据。会出现无法连接网络的情况出现
简单看下原理:
一般都是代码中写了监测方法导致的
image.png
绕过方法:
这种就只能利用friba来hook请求框架的方法进行绕了

三.证书监测对抗

1.)基础知识:

SSL Pinning:
开发者预先把证书相关信息预置到 App 中再打包,这样在 https 通讯过程中 App 本地可以与服务器返回的 CA 证书可以做合法性校验,如果发现不一致,那么可能就是由于中间人攻击(比如 Fiddler/Charles 抓包工具),App 客户端可以终止 https 链接。而在新版本的系统规则中,应用只信任系统默认预置的 CA 证书,如果是第三方安装的证书(比如 Fiddler 安装的)则不会信任
即将服务端证书相关信息打包在客户端里,在进行通信时,对比客户端和服务端证书是否一致。

Android实现Https的几种方式:
1.通过 OkHttp 来实现
2.自定义证书和 HostnameVerify 来实现 Https 校验
3.通过 HttpsURLConnection 来实现HttpsURLConnection 中进行 SSL 证书校验

hook:
改变程序执行流程的一种技术,即改变最开始的代码执行流程 劫持成自己想执行的代码 进而绕过apk这些的执行流程

一般其实就两种情况
典型现象
也是抓包显示400 且小黄鸟抓包时显示使用固定证书
image.png
或者抓包时显示burp疯狂显示400这些东西
image.png

2.)单向固定证书问题

绕过ssl pinning的常用方法

2.1)利用xpose安装模块进行绕过

下载 JustTrustMe 安装包并安装到手机里,在 Xposted 中激活并重启手机,就可以抓取手机中的流量。
SSLUnpinning 2.0 插件和 JustMePlush 插件当然也可以
插件的原理:将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查
image.png

2.2)使用Objection绕过

(这个我用的少 毕竟xpose模块方便一点)
objection是基于frida开发的一个工具,将一些简单常见的操作进行集成,减少代码重复编写的工作。。
frida-server下载的地址
https://pan.baidu.com/s/1YSgdh0ojCabbFGoRJqiGgA
密码:wagx
注意电脑配置
安装模块

python3 -m pip install frida
python3 -m pip install frida-tools
python3 -m pip install objection

一定要这个版本 不然后面会报错为
image.png
安装方法
①查看有几个设备
adb devices
image.png
②将friba-server拷贝到手机中
adb push 电脑的文件路径 /data/local/tmp
image.png
如果有多个设备的话
就加上-s 就是指定上面的设备的
如 adb -s 6fb4046c push 电脑的文件路径 /data/local/tmp

然后进入操控手机
adb shell
su 且切换为root权限
如果遇到了禁止这个的话就看看手机是否root 且magisk中 是否允许shell为超管
image.png
cd /data/local/tmp
chmod 777 frida-server
./frida-server 这样已经算是启动成功了
image.png

在开一个窗口进行tcp转发
adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042
image.png

然后另外开一个窗口进行测试frida
frida-ps -U
如果出现这种情况就是上面的电脑环境没配置好
image.png
解决方法回到上面电脑配置的 依次输入三个命令
然后等待安装完成后
image.png
安装成功后再次运行即可完美解决问题
image.png

然后在使用
adb shell pm list packages 查看手机中的包名和数量
image.png
将objection将附加到目标应用程序上
objection --gadget 包名 explore (此时 Objection 将注入到目标应用程序上)
注意点:需要关闭手机上 Magisk 的 magisk hide 功能(不关闭会有冲突)
关闭 app 的 SSL 校验:
android sslpinning disable
image.png
即成功关闭,即可成功抓取到流量

3.)双向证书问题

解决这类问题的核心获取两个东西:

证书文件
证书密码
3.1)确定方法:

如果抓包爆400且反编译的文件中存在证书+逻辑代码中存在引用定义
如下即存在双向证书问题
image.png
反编译app看看是否存在证书
然后查看re目录或者assets目录中是否存在证书
常见证书的格式
“.pfx” “pkcs12” “p12” “keyStore” “cer”

3.2)获取证书的解密密钥:
3.2.1)通用思路

①hook底层框架代码java.security.KeyStore,实现密钥自吐
-f的是app的包名 ssl 是指的js的文件

 frida -U -f cn.soulapp.android -l ssl.js  --no-pause
 
 如
 frida -U -f cn.xxxxapp.android -l .\hook_Key.js --no-pause

②hook网络框架抓包获取密钥
1、首先确定使用的框架,主流框架为okhttp、HttpURLconnection

# android hooking list classes

2、然后搜索过滤类文件中值得怀疑的框架:

.objection # cat objection.log |grep -i volley
.objection # cat objection.log |grep -i okhttp
.objection # cat objection.log |grep -i HttpURLconnection

可以看到当我们在APP上操作时候,经过了okhttp框架

找到APP使用的框架后如okhttp,然后通过frida加载js脚本来进行绕过。同样可以看到数据请求和返回。

3.2.2)批量与绕过思路

①批量hook查看轨迹
②hook强混淆app抓包

3.3)导入证书:

注意点:
如果是p12证书的话 直接上面hook获取密钥
然后直接burp中导入客户端中的证书即可
image.png
①导出证书的key
image.png
如果证书没有密码的话且存在一个crt证书时
直接导出证书的key
openssl pkcs12 –in client.pfx –nocerts –nodes –out client.key
导出的话 如果有密码的话 必须要输入密码 就需要hook获取密码了
②将crt和上面提取的key合并生产.p12证书
会需要设置密码 随便设置一个密码就好了
openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12
image.png
③导入证书即可
image.png
然后选择第一个
点击next后
然后导入上面合并生成的证书
image.png

四.通杀脚本

1.)r0capture通杀脚本

https://github.com/r0ysue/r0capture
image.png
r0capture使用方法
https://bbs.pediy.com/thread-272116.htm
缺点:只能结合wireshark分析流量包
不能和burp等抓包软件代理抓包(当然如果未加密可以解密请求包然后给burp重发)
但是可以结合起来挖付费资料文档和视频的思路
即包文档之前返回回来
思路
如果是windows的话 需要安装库
image.pngimage.png

在开启frida后进行输入下面的即可
①抓取app的包为pcap

python r0capture.py -U com.打码.android.servant -v -p ./pkg/001-xxx/001.pcap

image.png
image.png
②wireshark打开
进行过滤内容http.responsem 获取到其的十六进制
然后十六进制解码即可获取内容
image.png
image.png
image.png

参考链接

https://cloud.tencent.com/developer/article/1878983
https://www.secpulse.com/archives/177572.html
https://www.cnblogs.com/tomyyyyy/p/15310537.html#tid-dWRAmC
https://www.6b8.me/index.php?m=home&c=article&a=index&id=400
https://ch3nye.top/%E3%80%90%E5%AE%9E%E6%88%98%E3%80%91%E6%9F%90%E4%BA%A4%E5%8F%8Bapp%E7%9A%84%E5%8F%8C%E5%90%91%E8%AE%A4%E8%AF%81crack/#0x1-%E6%A3%80%E6%9F%A5%E8%AF%81%E4%B9%A6%E6%A0%A1%E9%AA%8C%E6%96%B9%E5%BC%8F
https://ch3nye.top/Android-HTTPS%E8%AE%A4%E8%AF%81%E7%9A%84N%E7%A7%8D%E6%96%B9%E5%BC%8F%E5%92%8C%E5%AF%B9%E6%8A%97%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93/#0x2-https-%E5%BF%BD%E7%95%A5%E8%AF%81%E4%B9%A6%E9%AA%8C%E8%AF%81

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goddemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值