1. 威客安全首页
  2. 安全资讯

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

记一次APP抓包及分析:

1.分析报文,可知通信方式为HTTPS,有cert,data,sign三个数据段;
[原创]记一次APP抓包与报文签名伪造
2.脱壳反编译,静态分析三段报文的构成方式,此处可用字符串搜索,ddms堆栈调用截取等方式判断调用函数;
[原创]记一次APP抓包与报文签名伪造
3.frida确定调用函数,打印上一步找到的函数参数列表以及返回值,精确找到报文构成函数,此处可以得出a(String str)函数即为报文构成函数,分析此处代码可知,
cer数据段为产生随机数的加密值;
data数据段为通信数据报文加密值;
sign数据段为签名值,构成为 sign=md5(data + “key=” + 随机数)
[原创]记一次APP抓包与报文签名伪造
4.分析data段加密方式,使用jadx,jeb等工具分析data数据段加密方式,此处由 String a2 = c.a(str, str2, “UTF-8”)可知data数据调用了c.a函数,跟进可得data数据报文使用了
AES/CBC/PKCS5Padding对称加密算法,且明文硬编码key为 
qwemoQAPydFvWWLq,初始化向量IV为  
wOzCypMUYVuiQO9f,此时即可以加解密报文。
[原创]记一次APP抓包与报文签名伪造
5.伪造报文,由上得知 sign=md5(data + “key=” + 随机数),此时固定随机数就可以伪造报文签名,进而伪造通信报文进行正常的数据通信。使用frida 将a(int i)函数固定为任意16字节字符串,写脚本伪造数据报文即可。
[原创]记一次APP抓包与报文签名伪造
[原创]记一次APP抓包与报文签名伪造
这里需要注意,加密后的报文要进过url编码;md5值需要区分大小写,此时既可以伪造请求报文,进行数据通信。

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

本站声明:网站内容来源于看雪论坛,原文链接:http://bbs.pediy.com/thread-254496.htm,如有侵权,请联系我们,我们将及时处理。

本文转为转载文章,本文观点不代表威客安全立场。