freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

一文学会APP抓包
2023-01-14 11:31:50
所属地 陕西省

一.信任用户证书

安卓7.0及以上系统对于证书的安全策略做了修改,用户证书只能用于代理浏览器的流量,而应用是不会信任这些证书。【ios和安卓<7.0的版本没有此问题】
解决方案:
1、root手机将证书导入到根证书目录下
2、换低版本安卓系统
操作流程:
1.下载Burp证书。
文件名为cacert.der
image.png
2.使用openssl将DER转换成PEM,然后输出subject_hash_old并重命名该文件:

openssl x509 -inform DER -in cacert.der -out cacert.pem

image.png

openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1

image.png
3.将cacert.pem的名字更改为刚才输出的hash.0
image.png
4.将证书复制到设备
先拷贝到sdcard,然后再mv到存放根证书的目录

adb push 9a5ba575.0 /sdcard/tmp/9a5ba575.0

image.png

mount -o rw,remount / 挂载,使sdcard目录可读写
mv /sdcard/tmp/9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0 移动
cd /system/etc/security/cacerts 
chmod 644 9a5ba575.0 更改权限

image.png
5.reboot重启设备即可
以上操作就可以让应用也信任burp证书。
然后burp就可以抓取到应用的数据包。
image.png
image.png

二.抓包

1.单向证书校验

客户端并不会默认信任系统根证书目录中的证书,而是在代码里再加一层校验,这就是证书绑定机制——SSL pinning,如果这段代码的校验过不了,那么客户端还是会报证书错误。

(1)HTTPS单向认证
image.png
在单向认证的实现上,占据主动性的还是客户端,因为只要客户端认可了server发来的签名和认证(CA证书),然后直接告诉服务器我们下次使用什么秘钥进行通讯就行了。单向认证是在客户端上验证的。
(2)绕过单向证书校验进行反抓包
可以利用SSL-Pinning的技术来进行反抓包。中间人攻击的要点是伪造了一个假的服务器证书,让客户端信以为真,那么我在客户端内置了一个server的证书,两者进行比较一下就知道是不是真的了。
工具:justTrustme.apk或者xpose的justTrustme模块

安装justTrustme.apk之后,需要配合xposed去使用。在xposed中勾选该模块。
点击模块
image.png
然后勾选justTrustme模块。
image.png

2.双向证书校验

双向认证是客户端不仅认证服务端的证书,服务端也要验证客户端的证书
(1)HTTPS双向认证
image.png
(2)绕过双向证书校验进行反抓包
逆向APK找到证书文件,找到证书密码。
突破思路:一般在app/assert、或者raw,搜索.p12或者.pks,直接逆向APK,找到对应加载证书和密码的地方,将其密码打印出来。

三.VPN抓包

有些APP或者小程序直接使用burp抓包时是抓不到包的,我们可以通过设置全局代理的方式来抓包。

1.Postern

使用postern进行全局代理,使得所有流量到postern,然后让postern将流量再转发到burp。
步骤:
我使用的是mumu模拟器,首先安装postern.apk。
image.png
打开postern软件,配置代理。
服务器地址选择主机ip,端口输入8080(可更改),代理类型选择HTTPS/HTTP CONNECT。点击保存。
image.png
然后配置代理规则,如下图所示。保存。
image.png
点击下图所示打开VPN,此时模拟器的所有http/https数据都会提交到burp上去。
image.png
打开burp,配置监听。配置的监听为刚才postern的代理服务器地址,端口对应一致。
image.png
此时在模拟器上打开软件,就可以抓包数据包。
image.png

2.proxydroid

https://github.com/madeye/proxydroid
该工具与postern的用法一致。
设置主机,端口与协议,
image.png
然后打开全局代理。
image.png
burp配置同上。然后访问百度抓包。
image.png

3.Drony

https://apps.evozi.com/apk-downloader/?id=org.sandroproxy.drony
与上述两个软件功能类似,不过软件的语言为繁体。
左滑到设置,选择无线网络,因为我模拟器连接的无线网络。
image.png
进行配置。
image.png
代理类型选择普通。
image.png
该软件也可以自定义代理指定的软件。
image.png
设置好之后,打开代理功能。
image.png
然后即可抓取到模拟器上的数据包。
image.png

# 安卓安全 # 移动APP安全 # app测试 # app抓包 # 安卓抓包
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录