大家好,我是TheWeiJun。时隔一个半月,App逆向章节又迎来了重大更新;今天给大家带来一个葫芦娃套娃的逆向案例。文中若有错误内容,欢迎各位读者多多指正;最后希望各位读者在阅读的同时不要忘记点赞+关注哦
目录
一、抓包分析
二、Jadx反编译
三、hook调试
四、算法分析
五、思路总结
趣味模块
小东是一名后端开发工程师,自从上次使用了魔改md4算法+auth_token参数算法请求量控制了不少。但是好景不长,没过多久,恶意请求量就又卷土重来了。小东思索片刻后,在headers中加入了一个新的参数:signature。加上这套策略后,恶意请求量立马下降了很多。接下来,让我们去分析一下小东是如何设计的此方案吧!
一、抓包分析
1、首先使用神器"AirDroid"应用工具将手机端画面镜像到电脑本机,截图如下所示:
推荐理由:使用"AirDroid"的目的是为了方便在电脑端对手机画面进行截图分析,呈现详细流程给大家观看。
2、和以往一样,打开指定App,使用charles工具进行App抓包,截图如下:
经验分享:如果此处联网失败,是因为此App为国外应用,需要对charles应用进行配置,再抓包即可。
3、使用charles过滤筛选指定域名,然后访问指定页面,此时抓包截图如下:
说明:观察上图,我们可以确定本次分析的参数为x-nor-signature,初步判断该参数后,无法确定使用的什么加密手段。那么,接下来让我们进入反编译调试环节吧!
二、Jadx反编译
1、由于此App没有加壳,所以我们直接使用jadx打开指定apk,截图如下所示:
2、等待jadx反编译完毕后,使用最简单的方法(指定关键参数搜寻),截图如下:
3、经过分析及追踪java源代码,最后定位到x-nor-signature参数的位置如下图所示:
环节说明:分析上面代码,我们确定本次需要hook的函数为createNonce。接下来让我们去hook这个java函数的返回值,看看是不是我们想要的结果。
三、hook调试
1、通过分析java源码,构建frida hook代码如下:
2、启动frida脚本,执行刚刚写好的hook方法后,刷新手机页面,分析截图如下:
此刻,我们将charles中的该请求包也截图,进行对比分析:
总结:观察上面两张图的参数值,我们可以清楚的看到入参、出参和charles中的参数一一对应,接下来我们只需要通过python还原算法即可。
四、算法还原
1、结合java源码分析x-nor-signature参数,我们发现它其实是将三个入参做了hmacSha256、base64加密,截图如下:
总结:这里使用了葫芦娃套娃的思想,将第一次hmacSha256后的ret加密值同第二个参数进行hmacSha256加密,然后再将第二次的加密结果同第三个参数进行hmacSha256加密,最后使用base64进行编码。
2、Python代码还原算法后,完整代码如下:
3、代码运行起来后,打印结果如下图所示:
hook打印的结果如下:
charles应用抓包截图如下:
总结:通过对比,我们发现打印的值与frida hook及charles中抓包参数的结果值一致,此刻算法还原流程到此就结束了,请求headers中还有多个加密值,本期就不一一讲解了。
五、总结分享
回顾整个分析流程,本次难点主要概括为以下几点:
如何快速定位加密参数的位置
熟悉hmacSha256、hmacSha512
如何使用python还原java代码
领取专属 10元无门槛券
私享最新 技术干货