APP逆向分析分享,参数加密,第3饭

查看 101|回复 10
作者:wxyzyou   
吃饭不香,无法下饭的朋友们,第3次下饭操作来了.
本次是APP的POST参数加密,逆向分析,还原
同样的,有图,有代码,不发APP
Fiddler抓到的包文


fd.jpg (51.66 KB, 下载次数: 0)
下载附件
2020-3-25 14:27 上传

发现一个奇怪的问题,PSOT的参数呢?这个是登录接口,正常会有账号密码参数的, POST数据长度 Content-Length:0 并且确实没有POST任何数据,是否很奇怪?
仔细看协议头部分,发现有个token字段,它的值比较长,那基本可以确认了,这里面的数据就是POST数据,
正常token字段,不都是用来校验,验证的吗?这里,程序员另辟蹊径,不按套路出牌,把数据放到协议头的token中,并且加密了.
首先我们仔细看这个token的结构,像是一个数组,更加确认了它不是一个正常token.
结构: [内容,内容]


data1.jpg (50.78 KB, 下载次数: 0)
下载附件
2020-3-25 14:30 上传

从token的数组内容上看,像是BASE64编码,我尝试了解码,解出来是乱码,果然没那么简单(这不废话吗,如果解码成功了,还分享个XX)
2话不说,开始APP反编译,文件结构分析,一系列操作
掏出ApkToolAid查壳,居然是360壳,这可有点难受了
不管它,直接反编译,看看成功否


jc.jpg (33.27 KB, 下载次数: 0)
下载附件
2020-3-25 14:38 上传



fby.jpg (48 KB, 下载次数: 0)
下载附件
2020-3-25 15:28 上传

成功了,看来运气不错
首先到反编译出来的目录下查看文件结构,喜闻乐见的 assets目录内有 index.android.bundle 文件,这个再第1饭里讲过了,ReactNative+NodeJS开发的APP标准特征
首先分析这个文件,看看有没有我们要的东西,没有时,再去查看反编译的安卓代码
把index.android.bundle改后缀名为 index.android.js,到自己习惯的JS代码编辑器里查看该文件,我用的vscode
搜索 token字样,搜索到300多个结果,一个个的看下去,定位到了名为 do_request的函数,看起来没错了
从函数的代码上分析 token来自参数 t ,
t 又从JSON对象转为字符串赋值给 0 ,
然后 this.fenduan(o)函数对 0 做了处理后返回给 c,
c 再次对象转字符串,赋值给了最终的 token
从上面的结果来看,t 和 c 就是关键了,首先要确定 t 传进来时,是什么样的内容,其次,分析this.fenduan 这个函数在干什么


js1.jpg (59.88 KB, 下载次数: 0)
下载附件
2020-3-25 14:49 上传

搜索 do_request 函数名,看看有哪些地方在调用,定位到 hhtc_request 函数,看到第2个参数  s 是一个标准的JSON对象赋值,并且是明文,那我们的重心就要放到 this.fenduan上去了


sj2.jpg (45.32 KB, 下载次数: 0)
下载附件
2020-3-25 14:58 上传

fenduan函数,分析一下这个函数在干什么
把参数 n 的内容做了个分割,
每80位长度,分割1次,赋值给了 s ,
然后把 s 加密,加密后的内容 push给了数组 0 ,最后返回0
那看来关键点就是  this.encrypt的加密方案了, this字段的意思是,当前JS文件,当前页面内,也就是说加密方案,就在当前的代码附近了


js3.jpg (16.4 KB, 下载次数: 0)
下载附件
2020-3-25 14:58 上传

代码附近上下找找,果然找到了 encrypt加密函数,和 decrypt解密函数
下面还有关键的  RSA加密公钥,私钥,看来没跑了,这个加密到这里,就完事了
BEGIN PUBLIC KEY  公钥
BEGIN PRIVATE KEY 私钥


rsa.png (38.56 KB, 下载次数: 0)
下载附件
2020-3-25 15:19 上传

正常来说,本地没有解密操作时,是不需要存放 私钥 的,只需要公钥加密即可
既然它有私钥,我们尝试对token解密一波,看看参数内容
自写解密工具,解密出来参数明文.


jm.jpg (30.13 KB, 下载次数: 0)
下载附件
2020-3-25 15:24 上传

易语言改的加密函数


e.jpg (29.15 KB, 下载次数: 0)
下载附件
2020-3-25 15:26 上传

下载次数, 函数

wtujoxk   

虽然成功了,但是楼主直接带壳反编译是错误的。。。。
如果不是boundjs打包的。。。楼主肯定这波就无缘了。。。。
和pc的一样,脱壳是第一位的。。。。
特别是数字壳楼主如果不是想分析分析的post而是想改代码。肯定都是不行的。。。
(一般数字壳都是hook签名过校验的,能直接脱的大佬很少。。。)
柒汐   

我看到token的第一眼就想可能是RSA,后面公私钥在一起,捡到宝了!,谢谢分享!
w456789   

我有排学这些咯~
Dream_Peng   

感谢楼主 学到了不少
zncliving   

楼主 如果没有私钥 你怎么玩呢?
thysut   

学习了  非常感谢
hackgsl   

学习了  非常感谢
wxyzyou
OP
  

厉害了。
Dream_Peng   


Dream_Peng 发表于 2020-3-25 16:25
楼主 如果没有私钥 你怎么玩呢?

本身就不需要私钥,只需要公钥加密提交参数就行了,
它提供了私钥,我们也只是解密一下看看参数内容而已,没实际用途
您需要登录后才可以回帖 登录 | 立即注册

返回顶部