某app请求参数分析
前言
这篇的前言有点冗长了,赶时间的朋友可以直接跳过。
记得还在读大学的时候,我就开始在网上到处找网络安全相关的知识,吾爱破解,看雪,飘云阁,hack80,i春秋,seebug,知道创宇,补天网啥的,要找个东西,能想到的平台都去搜,找到的虽然基本都很老的东西,但是对于小白的我来说,是真的有用,尤其是i春秋里的课程,我现在成为一个开发者,是看了一篇文章决定的,这篇文章就是当时还在知道创宇的余玹大佬发的信息安全技能树,自此之后走向了一条不归路,链接:https://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html
https://evilcos.me/security_skill_tree_basic/index.html
大学毕业没几个月,因为专业对口的工作不满意,我开始自学开发,在自学期间,我一个大学同学找到我,说她被骗了两千多(99+399+599+899,别问我过去这么久了为啥还记得这么清除,因为我这里都还有转账记录),问我能不能搞。过程我就不细说了,结果就是我帮她找回来了并给了她。
然后她顺便跟我说了整个被骗的过程,就是在Q群,微信群,有所谓的兼职,工作是快递单号填写,打字员之类的,你加完qq去聊,他先跟你说保证绝对免费之类的,玩的就是各种话术了,最后大部分人都会被骗的,其中他们是用某语音在聊天,然后这个app只会保存几天的消息(现在改没有就不知道了),聊天记录时间长了就会自动清除,所以你如果报警,聊天记录已经不好提供了(截图的话,我听说是不太具有可信度的,因为可以p图)
然后这个某语音app就是今天的目标了,当时我同学是很想举报这个软件的,这个app网上搜,应用市场里的评论基本都说是骗子啥的,大部分被骗案例在那段时间里也确实用的这个软件,我个人觉得,当时来看,这个软件的归属者一定有责任的,该平台没有举报中心,没有审核机制,谁都可以在里面发消息,发的诈骗消息他们也不管的。
如今突然想起来这个app,当时的我还不会app逆向,再看它,感觉整改过了,所以还得多亏有关部门这几年来的严厉打击网络犯罪啊
声明下,这个app本身不存在诈骗,因为里面没有金融类功能,是通过微信转账的,只是涉及诈骗的人在使用这个app
分析
老办法,打开charles,打开postern转发,打开app,开始抓包
1.短信验证码获取接口
这个请求参数的type为md5就有点意思,直接就给我们提示了,哈哈哈哈。
2.登录接口:
同时发现这个登录接口有抓包检测,开着postern一直显示登录中
3.用户信息接口:
4.广场列表接口:
5.滚动头条接口:
6.直播间推荐接口
7.首页banner滚动接口:
8.工会接口:
9.关注列表:
10.直播列表:
随便点开一个直播间,直播间请求参数类型是octet-stream,多半是protobuf了,这个直接用blackboxprotobuf库就可以了,我看到这个数据提交都没有加密参数,我就没去研究了
聊天接口也是,就是tcp协议的传输,也不去看了
细心的朋友发现了,除了聊天和直播以外的接口,其他的接口请求数据基本都有带有这个sign,这次的重点就是上面的接口里的sign了。
参数定位
老路子,打开jadx或者jeb分析一波再说,打开一看,卧槽,有壳
那得先脱壳一波,脱壳过程就略过了,你懂的。
没过多久,脱壳成功,文件如下:
然后用jadx打开,直接搜sign,两百多个,也还好,排除掉这个app用的第三方sdk的包名的,剩下的没几个
随便找几个,指向的都是这个一段,因为这个是脱壳后编译出来的,没法编译出安卓样式的代码,不过看逻辑倒是能看懂
看完逻辑,说明sign就是掉的这个xxx.getSign方法,进入这个方法看看,同样的没法正常编译,问题不大,基本还是看得懂
调试
那先不废话,直接hook一下就知道了,hook代码如下,用attatch模式启动,然后这边app刷新下,结果数据如下:
为了验证确实是,再看看charles这边的结果,直接拿到最后一个打印出来的返回值搜,确实有
那就ojbk了,这么简单?当我正准备接着看逻辑的,时候,app直接闪退了:
还是可以,至少还有点反调试的套路,看看进程,这就一目了然了
还是有点东西,不过东西不多,我还是能hook上,这个不重要,我都已经跟到逻辑了,接着再看下最后的结果:
所以,实际传的确实是两个参数,但是,jadx看到的方法体里,是三个参数,同时看这个逻辑,就很奇怪,怎么直接就return r3了,都没看到进入后面的逻辑啊
按理应该0009走了之后会走0016,但是并没有,奇怪
这个不管了, 应该是脱壳出来的效果不太好
那就用objection看看实际的方法体吧,不是说objection 对于java层来说简直是嘎嘎乱杀吗?
结果看到没有,卧槽,这应该是加固过的原因,这就有点意思了啊
行,因为有个sign_type已经给了提示是md5,接着再看刚才那个方法体,其实就是加了盐的md5
但为了验证一下,还是hook 这个xxxx.md5看看,变成了啥
果然了,那至于这个代码逻辑为啥看着有点怪,不纠结了,能搞定问题就行了。没想到这么简单,嘻嘻嘻
还原代码我就不贴了吧,就是加盐的md5,from hashlib import md5就搞定的事,就不多逼逼了
结语
这个app对于很多朋友来说简直分分钟,可能直接都懒得写hook代码,看源码都能看懂了,大佬应该都不屑于看。我发出来的想法是,记录过去,憧憬未来,最近一直在研究app,突然想起了它,同时也刚好有了能拿下它的能力,嘿嘿
另外,因为某些原因,我暂时没有做安全了,所以涉及到诈骗的事,哥哥们不用找我了,我也没精力管了,遇到问题可以打报警电话的,可以装个国家反诈中心app(我之前呆过的某安全公司参与过的项目)
下期再见!