吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15854|回复: 66
收起左侧

[Android 分享] 突破HTTPS双向认证抓包

    [复制链接]
森林雪人 发表于 2020-12-4 14:16
本帖最后由 森林雪人 于 2020-12-22 18:49 编辑

      移动APP应用安全测试,抓包分析数据是测试的重要部分。从最初导入代{过}{滤}理证书能抓取到HTTPS数据,到后来flutter应用通过代{过}{滤}理软件抓取数据,再到后来的HTTPS双向认证,移动应用安全上的加固保护让数据抓包越来越困难。
目前最困难的还是突破HTTPS双向认证,我整理了笔记借用一个案例分享给大家--如何突破HTTPS双向认证实现抓包。

一、前置知识-Https单向认证和双向认证
单向认证.png
双向认证.png





二、突破客户端对服务端证书的认证,客户端已保存有服务端证书
需要破解的是单向认证第3步,客户端校验服务端证书是否合法。大部分使用证书锁定的APP采用的是HTTPS单向认证,仅使用本节介绍的xposed框架+SSLUnpinning  即可突破证书锁定。
APP客户端在发送请求前,客户端会拿APK包中的证书(含服务器公钥)和收到的证书对比,若不一致则不发送网络数据。
以burpsuite为例子,burpsuite生成的证书导入到android手机中,客户端对比发现burpsuite证书和APK包内中的证书不一致,则不发送网络数据。
我们需要绕过客户端证书的对比,让客户端认为收到的证书和自己包内的证书是一致的,自己在“安全”的环境中。

我直接使用的是xposed框架+SSLUnpinning模块实现绕过证书对比。
xposed框架
https://repo.xposed.info/module/de.robv.android.xposed.installer
SSLUnpinning:
https://repo.xposed.info/module/mobi.acpm.sslunpinning

sslunpinning.png


打开SSLUnpinning后,点击需要绕过证书验证的软件,软件后面显示unpinned,再重启软件,即可突破HTTPS证书单向锁定。
brower.png


三、突破服务端对客户端证书的认证,服务端已保存有客户端证书
对大部分证书锁定的APP使用上面第二节介绍的xposed框架+SSLUnpinning  即可突破证书锁定(大多数APP只验证服务端证书)。
如果使用xposed框架+SSLUnpinning后,服务端返回错误:
re.png
说明客户端未发送证书及公钥至服务端,服务端没有收到证书所以返回这个错误。

突破服务端对客户端证书的验证,即是破解双向认证第4,5步,需要把客户端证书和公钥发送至服务端。
必需找到客户端证书和公钥才行呀,这两个需要由客户端私钥生成。现在的目标就是找客户端私钥。


3.1 获取客户端私钥文件

对APK包进行反编译,在\assets\cer目录找到客户端私钥文件:client_ssl.chain.bks
cer.png
另一文件是服务端公钥:server_ssl.chain.crt,由于已使用xposed+sslunpinning破解了客户端对服务端公钥的认证,所以这个文件不用关注。


client_ssl.chain.bks是android使用的证书文件含有私钥,需要转换为burpsuites可以认识的p12格式,尝试将bks格式证书转换成p12格式证书,转换后发现无法使用,哪位大侠转换成功过可以告诉我,感谢!
不过我还有两种方式找到这个p12格式证书:
1、IOS包使用P12格式,可以从IOS包获取这个证书文件。
2、如果你测试公司自有产品,可以让研发同事将p12格式证书给你。
导入burpsuite时要知道这个p12格式证书的密码。导入方式:
22.png

Destination host是你测试的目标域名或IP,留空不用填写。点下一步后进入选择文件及输入密码窗口。
55.png
现在的目标是找到私钥文件的密码。


3.2 获取客户端私钥的密码
客户端证书私钥文件的密码是AES加密后保存到SO文件中,AES的密钥也保存在SO中,AES加密模式在java代码中实现。下面介绍分析过程
1、使用androidkiller反编译APK,搜索关键字:client_ssl.chain.bks,,找到TheApplication文件
1.png

关注getBksAesKey()方法及SecurityMainBoard,CC2类,为方便分析使用jd-gui查询对应的java代码。
g2.png

sec.png
观察SecurityMainBoard()代码,发现引用了一个so文件。

2、将APK后缀改为.rar格式,使用rar软件打开base.rar,将目录\lib\armeabi-v7a\下的libxxx-security.so文件解压出来。

lib.png

使用IDA对这个libxxx-security.so文件进行静态分析,在function窗口找到
4.png

双击进入,找到AES密钥,及加密后的密文。
3.png
3、查找证书密码的AES加密方式
TheApplication中找到 cc2.class,发现localObject1为密钥,localObject2IV,取密钥一半为IV使用AES/CBC/PKCS7Padding方式。根据密钥、IV、密文、加密模式等信息解密出证书密钥密码
5.png

这里的AES加密后的密文及密钥是二进制的base64编码后的形式。AES解密时需要先转换为16进制,在工具中输入16进制的密文、密钥、IV,选择模式,成功解密出证书私钥密码。

6.png
以上是通过静态分析解密出密码,想简单方便也可以用另一个软件xposed 框架下的动态分析软件Inspeckage,运行后分析日志应该能找到解密后的密码。


3.3 burpsuite导入客户端私钥-开始抓包
7.png
8.png

输入解密后的密码,可以开始愉快地抓包了。


四、小结
1、客户端对服务端证书验证:使用xposed+SSLUnpinning绕过
2、服务端对客户端证书验证:burpsuite需要发送客户端证书及公钥才能证明自己是合法的,而证书及公钥由私钥生成,所以拿到客户端私钥即可,私钥保存于APK包内,所以找到私钥密码即可使用这个私钥。
以上内容以一款采用HTTPS双向认证的APP为例,简单介绍了突破HTTPS双向验证的过程,不同APP还需要具体分析,重要的是了解原理,理清思路。写的简略难免有出错的地方,欢迎指正。

免费评分

参与人数 22吾爱币 +24 热心值 +19 收起 理由
zqxms + 1 + 1 用心讨论,共获提升!
uyucn + 1 + 1 用心讨论,共获提升!
zl0733 + 1 + 1 用心讨论,共获提升!
丶七年 + 1 + 1 谢谢@Thanks!
Atnil + 1 用心讨论,共获提升!
wshq + 1 + 1 谢谢@Thanks!
小六升臣 + 1 + 1 谢谢@Thanks!
hnwang + 1 + 1 我很赞同!
wwww7788549 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
夏蓝 + 1 + 1 热心回复!
朮小凯 + 1 + 1 谢谢@Thanks!
Light紫星 + 2 + 1 我很赞同!
tanghengvip + 1 SSLUnpinning很多手机webview会无法访问,建议用justtrustme.v4
chuying + 1 + 1 用心讨论,共获提升!
woshuoxiang + 1 + 1 谢谢@Thanks!
CWZ326237076 + 1 + 1 用心讨论,共获提升!
神枪泡泡丶 + 2 + 1 用心讨论,共获提升!
xyl52p + 1 + 1 用心讨论,共获提升!
WAlitudealiy + 1 热心回复!
无知灰灰 + 1 + 1 用心讨论,共获提升!
67052785 + 2 + 1 学习到了
i66235 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

phantomer 发表于 2020-12-4 14:53
标题党啊,点进来啥都没讲,链接还是链接的一篇16年的文章。
woshicp 发表于 2020-12-4 14:24
Vvvvvoid 发表于 2020-12-4 14:48
digitalhouse 发表于 2020-12-4 14:23
完全沒提到突破啊...

這都是常識了
田田爱崽崽 发表于 2020-12-4 14:25
这,好TM复杂
qazwsxlty 发表于 2020-12-4 14:25
这只发了原理啊
穆塔muta 发表于 2020-12-4 14:25
然后呢,这就完了
pinesnow 发表于 2020-12-4 14:35
该说这是词不达意呢还是说标题党呢?说好的突破呢
xfmiao 发表于 2020-12-4 14:40
本文只是简单介绍了常识,并没有提出解决方案
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-7-23 09:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表