双向认证APP自吐证书密码与抓包
2022-4-20 17:3:0 Author: mp.weixin.qq.com(查看原文) 阅读量:5 收藏


前言

在许多业务非常聚焦比如行业应用、银行、公共交通、游戏等行业,C/S架构中服务器高度集中,对应用的版本控制非常严格,这时候就会在服务器上部署对app内置证书的校验代码。

双向认证APP读密码

当抓包出现如下提示时,我们确定出此APP为服务器校验app客户端证书


对于此类APP抓包而言通常需要完成两项内容:

1、找到证书文件2、找到证书密码

服务器对客户端进行校验过程中,客户端将证书公钥发送给服务器,以及从服务器获取session和私钥解密过程中,需要API进行操作,API存在于java层框架内,所以hook框架层代码java.security.KeyStore,使密码自吐

# frida -U -f cn.soulapp.android -l ssl.js --no-pause


可以发现我们通过hook框架层代码得到了证书密码

}%2R+\OSsjpP!w%X

这时我们还需要拿到证书文件,首先使用常规方式解压搜索app包里的证书文件。一般apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径.



如果在安装包内找不到证书的话,也可以进行hookjava.io.File

# android hooking watch class_method java.io.File.$init


通过hook也可以找到该证书文件。

objection -g cn.soulapp.android explore --startup-command "android hooking watch class_method java.io.File.$init  --dump-args

然后再使用抓包工具点击导入证书(burp同理)


密码随意设置
然后进去之后导入p12证书和密码(自吐出的密码}%2R+\OSsjpP!w%X),host和port输入*


可以看到可以成功抓到了数据包

Hook网络框架抓包

当然除了通过hook底层框架自吐证书和证书密码的方式外,我们还可以通过hook网络层框架来直接抓包。
1、首先确定使用的框架,主流框架为okhttpHttpURLconnection
我们使用objection来进行分析。首先打印内存中所有的类

# android hooking list classes

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

.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脚本来进行绕过。同样可以看到数据请求和返回。


批量hook查看调用轨迹

下面推荐一款批量hook查看调用轨迹的工具ZenTracer

# git clone https://github.com/hluwa/ZenTracer

点击Action之后,会出现匹配模板(Match RegEx)和过滤模板(Black RegEx),将M:java.net.HttpURLConnection填入后会将该类的所有方法进行hook并运行。



同时手机点击登录、注册等功能模块时,发现经过了该方法java.net.HttpURLConnection.getFollowRedirects()


然后使用objectionhook该方法

# android hooking watch class_method java.net.HttpURLConnection.getFollowRedirects --dump-args --dump-return --dump-backtrace


根据打印出的com.cz.babySister.c.a.a(HttpClients.java:22)
直接定位到了收发包函数的地址,然后查看收发包的内容如下:

# android hooking watch class_method com.cz.babySister.c.a.a --dump-args --dump-backtrace --dump-return

同样可以发现了接口请求。

Hook强混淆APP抓包

如果APP做了代码混淆,那么我们靠hook的方式来分析网络框架会变得比较困难,当然可以使用大佬的伦子OkHttpLogger-Frida进行解决
1、首先将okhttpfind.dex 拷贝到手机 /data/local/tmp/目录下

# adb push okhttpfind.dex /data/local/tmp/# chmod 777 *

2、执行命令启动frida -U -l okhttp_poker.js -f com.example.demo --no-pause 可追加 -o [output filepath]保存到文件

# frida -U -l okhttp_poker.js -f org.sfjboldyvukzzlpp --no-pause


然后复制被混淆后的类名,粘贴到okhttp_poker.js文件中,重新运行后运行hold()开启hook拦截,然后操作App后,会出现拦截的内容如下:

# nano okhttp_poker.js

同样也可以抓到做了强混淆APP的数据包,如下


总结

通过hook框架层代码可实现对APP的降维打击。

参考资料



https://www.anquanke.com/post/id/197657https://bbs.pediy.com/thread-258776.html

E

N

D

Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章370余篇,自研平台达到26个,目有15个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247497211&idx=1&sn=3ebe54040f10f7a3823547f937917088&chksm=ce5dd79af92a5e8c8980e9734090f1071d5acfab8d2fc0736845c1e90b4083c545e4e9768e9e#rd
如有侵权请联系:admin#unsafe.sh