首页
社区
课程
招聘
[原创]记一次APP抓包与报文签名伪造
发表于: 2019-9-17 01:28 8148

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

2019-9-17 01:28
8148
记一次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值需要区分大小写,此时既可以伪造请求报文,进行数据通信。



[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 4
支持
分享
最新回复 (5)
雪    币: 105
活跃值: (4185)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
脱壳是核心,希望有脱壳教程之类的
2019-9-17 09:53
0
雪    币: 18
活跃值: (791)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
zzpydwz 脱壳是核心,希望有脱壳教程之类的
该用例是数字壳,使用fart或者f8可以脱壳。
2019-9-17 10:11
1
雪    币: 574
活跃值: (364)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了
2019-9-17 16:42
0
雪    币: 3496
活跃值: (749)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
PeterJoin 该用例是数字壳,使用fart或者f8可以脱壳。
数字壳,
小白求科普,是不是360加的壳?
2019-9-18 05:37
0
雪    币: 18
活跃值: (791)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
是的
2019-9-18 09:19
0
游客
登录 | 注册 方可回帖
返回
//