首页 > 其他分享 >某app请求参数分析

某app请求参数分析

时间:2023-04-28 14:57:35浏览次数:23  
标签:这个 请求 app 接口 sign hook 参数 md5

前言

这篇的前言有点冗长了,赶时间的朋友可以直接跳过。

 

记得还在读大学的时候,我就开始在网上到处找网络安全相关的知识,吾爱破解,看雪,飘云阁,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(我之前呆过的某安全公司参与过的项目)

 

下期再见!

 

标签:这个,请求,app,接口,sign,hook,参数,md5
From: https://www.cnblogs.com/Eeyhan/p/15953305.html

相关文章

  • 解决 VMware 虚拟机 Linux /dev/mapper/ubuntu--vg-ubuntu--lv 磁盘空间不足的问题
    之前在VMware安装UbuntuServer的时候磁盘分区选择了LVM,所以系统根目录默认占用磁盘大小只有4G,在安装软件时发现磁盘空间4G已经无法满足,所以需要利用LVM对磁盘进行扩容使用Docker拉取MySQL镜像时发现磁盘空间不够:nospaceleftondeviceroot@ubuntu:~#......
  • Unknown run configuration type SpringBootApplicationConfigurationType;Servlet Ser
    UnknownrunconfigurationtypeSpringBootApplicationConfigurationType社区版的idea自己安装插件,去配置大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来沉......
  • java serice wrapper mac M2 入门
    先下载javasericewrapperhttps://download.tanukisoftware.com/wrapper/3.5.53/wrapper-macosx-universal-64-3.5.53.tar.gz解压设置arch-x86_64zshuname-mcdwrapper-macosx-universal-64-3.5.53/bin测试用例bin/testwrapperconsole新建项目packageo......
  • golang常用的http请求操作
    之前用python写各种网络请求的时候写的非常顺手,但是当打算用golang写的时候才发现相对来说还是python的那种方式用的更加顺手,习惯golang的用法之后也就差别不大了,下面主要整理了常用的通过golang发起的GET请求以及POST请求的代码例子golang发起GET请求基本的GET请求//基本的GE......
  • 硬盘预读参数变化分析
    问题描述硬盘通过RAID(raid驱动为megaraid)方式挂载至系统。修改块设备sdb的预读参数(read_ahead_kb),使用dd命令向块设备写数据,预读参数发生了变化。问题总结预读参数改变的原因是由于systemd-udevd服务对sd块设备做了IO监听,一旦发生写操作,就会触发on_inotify处理函数重新获取分......
  • Python关于jsonpath路径里面包含中文或进行参数化的解决方案
    jsonpath路径包含中文当jsonpath路径包含中文时,我们只需要在jsonpath路径里面把中文用引号包裹即可准备json文件{"data":[{"Details":[{"姓名":"张三"}]}......
  • swagger2的常用注解,传递参数的注意使用方法
    背景介绍:刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。在集成了swagger2后,找了半天的原因,发现使用@ApiImplicitParam这个注解可以解决这个问题。对应下面的参数。所以我们可以使......
  • 参数
     /*目录:参数一:实参1位置2关键字3原子化二:形参1无默认参数2默认参数(a)普通(b)空(c)None三:可变参数四:可变命名参数五:书写顺序*/  ......
  • Android Studio 运行报app未指定模块错误
    github上clone别人的项目,运行的时候报 app未指定模块综合网上的分析,应该是IDEA的一个bug。解决方法:1.setting.gradle文件里面最后一行,include‘:app’剪切掉;2.同步构建一下gradle;3.将剪切掉的一行重新粘贴回原文件;4.重新同步构建一下gradle;问题解决。......
  • iOS APP启动广告实现方式 与 APP唤端调用
    APP启动广告功能实现要从2个方面思考一是UI方案,怎样处理广告页与主页之间的切换方式。二是广告页展示时机,是使用后台实时广告数据还是使用本地缓存广告数据。后台数据方式获取广告最新但是用户要等待后台返回数据后才能展示,增加用户等待时间。使用本地缓存启动速度快但数据更新......