分享一个安全小白一周的app破解流程
本帖最后由 echo72 于 2020-7-22 14:17 编辑一 起因
某厂商自带的app太烂了,为了获取某信息必须要手动地一次又一次地完成 拖动,点击,返回三种动作。实在是让人头疼。
为了能用得更舒坦,只能试着抓包。
二 经过
1 fiddler
fiddler 是windows系统上很好用的抓包软件,能够抓取http,https数据包。特别是在安装根证书后,能够解析https数据包的内容。
通过将安卓手机的http代{过}{滤}理地址设置为局域网内的计算机,
就能将所有数据转发给fiddler,完成抓包动作。
2 android根证书
android 自android 7.0 以后,直接在系统里安装证书还不够。
所以将证书手动拷贝至 system/etc/security/cacerts, 需要root权限 , 注意文件名应改为相应的模式,具体教程参照网上
3 脱壳dump
仍然没有数据,除了抓到app启动时的一些广告信息,想要的数据一个都没有。
在这里思路断了。只能反编译app看看源码。最开始使用了androidkiller, 效果不太理想 ,后来才知道包里面的qihoo.smali ,表明这是用了360加固。
于是改换门路,用xposed + 易开发,可惜仍然失败。
不甘心,于是继续使用了frida。一个似乎比xposed 更好注入的工具。
在google上搜索到了一个脱壳项目 github地址 https://github.com/hluwa/FRIDA-DEXDump
后来发现居然是论坛里的项目论frida-dexdumphttps://www.52pojie.cn/thread-1116812-1-1.html
早点加入论坛应该就不会走这么多弯路了
4 安装frida注意事项
先安装python ,再frida 。注意frida的版本,这里可以参考 https://blog.csdn.net/m0_37696990/article/details/103916289
实测雷电模拟器3,4 ,一个运行frida报错,一个不支持http转发。mumu模拟器,支持不错。
注意frida-server的权限需设置为755 ,运行时注意设置成后台运行,即 在路径后添加 &
5 dump后的dex
用jd-gui可以打开dex文件,项目地址 https://github.com/java-decompiler/jd-gui
在项目文件里发现了okhttp3.0类,大概读了读源码发现是用了okttp3.0去和服务器通讯。于是继续谷歌搜索 okttp3.0 抓包
于是又了解到app使用okhttp3.0检测了系统代{过}{滤}理,将系统数据绕过了代{过}{滤}理。绕过代{过}{滤}理好办啊,那就用iptables 转发443端口数据,让app必须走fiddler。
6 失败
转发之后,app直接不和服务器通讯了。继续谷歌,了解到是okthttp3.0 做了证书锁定。
于是又在github找到了frida的hook脚本,通过hook该app的证书检验过程,使得app信任我们的证书,继续和服务器通讯。
项目地址 https://github.com/WooyunDota/DroidSSLUnpinning
7 抓包和复现
这里换用了安卓系统的httpCanary代替fiddler抓包。效果不错。
接着使用postman来测试我们的接口是否正确。
抓到的接口分为两种,一种是特定的url的get请求,一种是特定body的post请求。一边请求,一边修改接口设置。
筛选得到我想要的数据只用到了两个接口,直接对这两个接口请求,发现服务器没有对接口做限制。
8 自动化
这里使用了python编写脚本实现抓数据---存数据----筛选数据,也可以直接输出到txt文件
用到的python第三方库:
进度条 https://github.com/tqdm/tqdm
数据库连接项目https://github.com/PyMySQL/PyMySQL
9 git
python增删了几次,总得有个版本控制吧,万一改错了,想复原怎么办。
这里推荐使用git版本控制,比自己手动存很多个副本要来得舒服。
于是创建了master分支,dev分支,bug分支,push到github 。体验了一把
虽然看的一脸懵,但还是给你打个分 一张图都没有吗?{:17_1082:} 谢谢,非常实用 谢谢分享 我能说没有图的话我一点都看不懂吗{:1_937:} 看起来都打脑壳 厉害,可是还是看不懂 楼主可以的{:301_997:} 挺好的,谢谢分享