首页
论坛
专栏
课程

[原创]记一次APP抓包与报文签名伪造

2019-9-17 01:28 3465

[原创]记一次APP抓包与报文签名伪造

2019-9-17 01:28
3465
记一次APP抓包及分析:
1.分析报文,可知通信方式为HTTPS,有cert,data,sign三个数据段;
2.脱壳反编译,静态分析三段报文的构成方式,此处可用字符串搜索,ddms堆栈调用截取等方式判断调用函数;

3.frida确定调用函数,打印上一步找到的函数参数列表以及返回值,精确找到报文构成函数,此处可以得出a(String str)函数即为报文构成函数,分析此处代码可知,cer数据段为产生随机数的加密值;data数据段为通信数据报文加密值;sign数据段为签名值,构成为 sign=md5(data + "key=" + 随机数)

4.分析data段加密方式,使用jadx,jeb等工具分析data数据段加密方式,此处由 String a2 = c.a(str, str2, "UTF-8")可知data数据调用了c.a函数,跟进可得data数据报文使用了AES/CBC/PKCS5Padding对称加密算法,且明文硬编码key为 qwemoQAPydFvWWLq,初始化向量IV为  wOzCypMUYVuiQO9f,此时即可以加解密报文。

5.伪造报文,由上得知 sign=md5(data + "key=" + 随机数),此时固定随机数就可以伪造报文签名,进而伪造通信报文进行正常的数据通信。使用frida 将a(int i)函数固定为任意16字节字符串,写脚本伪造数据报文即可。


这里需要注意,加密后的报文要进过url编码;md5值需要区分大小写,此时既可以伪造请求报文,进行数据通信。




[招生]科锐逆向工程师培训(3月6日远程教学班首开特惠, 第37期) !

最新回复 (5)
zzpydwz 2019-9-17 09:53
2
0
脱壳是核心,希望有脱壳教程之类的
PeterJoin 2019-9-17 10:11
3
1
zzpydwz 脱壳是核心,希望有脱壳教程之类的
该用例是数字壳,使用fart或者f8可以脱壳。
miyuecao 2019-9-17 16:42
4
0
学习了
kxzpy 2019-9-18 05:37
5
0
PeterJoin 该用例是数字壳,使用fart或者f8可以脱壳。
数字壳,
小白求科普,是不是360加的壳?
PeterJoin 2019-9-18 09:19
6
0
是的
游客
登录 | 注册 方可回帖
返回