freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

【Frida Hook 实战】某手机银行APP数据加解密分析
2022-12-17 23:01:11
所属地 广东省

前言:一篇入门级别的加解密hook文章。

安卓测试机:一加6(Kali Nethunter)
Frida版本:14.2.7
反编译工具:jadx

r0capture:https://github.com/r0ysue/r0capture

1、通过 r0capture 输出堆栈内容如下:

1666749223_6358932709e137926f99f.png!small

2、jadx 搜索关键字“cn.com.hybird.http.HttpsClient”,根据搜索结果,需要关注就两个地方:“cn.com.hybird.http.HttpsClient”和“cn.com.xxxxx.main.base.BaseActivity”。

1666749251_635893431fd5b91698133.png!small

3、先看“cn.com.xxxx.main.base.BaseActivity”的内容,关键就是HttpsClient.getResObject(url, "POST", BaseActivity.this.postEncryption(url, map, key))

1666749269_635893556ead1d85e8856.png!small

4、这里需要拆分两个部分进行分析:

BaseActivity.this.postEncryption(String url, Map<String, String> map, String key)	/* 应该是加密方法 */
HttpsClient.getResObject(String url, String type, Map<String, String> map)
/* 应该是数据请求方法*/

5、先看看BaseActivity.this.postEncryption(String url, Map<String, String> map, String key),这里定义了post数据的加密方式,需要传入三个参数,第一个是URL链接,第二个明文数据内容,第三个加密key。

RSA的公钥信息通过Base64Coder.encodeString()EncodeFrontPubKey.rsaGetPublicKey()进行编码加密,而数据包明文信息通过SHA512.SHA512Encrypt()AESUtil.encrypt()进行数据加密,最后返回加密后数据。

1666749287_63589367d18dac698d0ed.png!small

6、接着看看HttpsClient.getResObject(String url, String type, Map<String, String> map),这里需要传递三个参数,第一个参数是URL链接,第二个参数是请求方法,第三个是数据包内容。

最后函数直接返回了post()的内容。而post()方法主要执行sendInitialization(url, postorget, encodeParameters(params))

1666749338_6358939a432e2920e8b3f.png!small

7、继续跟进sendInitialization(String urlPath, String type, byte[] data),其实这里功能主要就是对“get”或“post”请求类型进行判断,然后构造数据包。

1666749379_635893c3948c33cea1fbb.png!small

8、因此现在思路已经很清晰了,post方法中需要传入“data”参数,参数的值是加密过后的数据内容,而get方法中不需要传入“data”参数。

因此可以判断只要是post请求的数据都经过加密处理,处理数据加密的位置为:

1666749394_635893d281b1dcd8e3f96.png!small

9、找到cn.com.core.util.crypto.AESUtil文件,可以看到这里采用aes加密,通过hook encrypy方法,打印出参数“content”的内容就是http请求包中的明文数据,通过hook decrypt方法就可以实现对http响应包中数据解密。

1666749460_63589414849f23c6ba5a1.png!small

10、cn.com.core.util.crypto.SHA512文件采用SHA512哈希加密,hook原理同上。

1666749483_6358942b2067eb4d4d5d2.png!small

11、最后frida hook 脚本可以写成如下:

1666749502_6358943e93ba548a1c834.png!small

12、注入脚本,获取明文请求信息。

1666749532_6358945ccdff37236f4a4.png!small

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