某浇油app系列1-安全分析

声明


以下只是搬运下我公众号的东西。很早就发过了。原帖地址:

某浇油app系列1-安全分析

前言

其实之前也发过浇油类的app的分析,感兴趣可以在我博客里找找。

分析

下面这个是注册:

抓包结果:用的是某厂的sdk包

下面这个是登录包:

卧槽,加密参数还不少,还有shumei啥的,有点东西啊

随便输入点信息之后,就进入了首页的内容

他是根据位置获取展示数据的,根据抓包的结果,大概率就是这两个接口了:

根据返回的加密数据长度,应该是这个结尾为city的了(啥原因不说了,搞多了你就懂了)

访问了好几个页面,基本都是一样的请求模式,请求体和返回体做了一层加密,然后请求头带有很多参数

那么本篇文章的重点就选择大家都感兴趣的首页的小姐姐列表了(也就是上面),反正加密方式都一样。

1.分析加密参数

先看看抓到的包的请求头加密参数:

还不少

开搞!

脱完壳之后,怎么脱的具体就不说了,开始搜加密参数:URS_APPID

卧槽,随随便便搜的几个加密参数都能直接找到,看来unpack工作做的很好

然后跟一下,都能找到这个地方:

这还有啥说的,直接干就完了

2.分析请求体和返回体加密

也就是下面这两个的加密解析了:

其实看到这两个加密字符,开头几个字母基本一致,大概率猜测,两个用的同一种加密方式,而且secretkey估计都是同一个

啥都没有,目前是一头雾水,问题不大,换一个抓包工具, OkHttpLogger-Frida

哎呀卧槽,刺激,直接就能拿到结果

现在怎么办,直接修改okhttp_poker.js(OkHttpLogger-Frida项目的文件)文件,把打印调用栈的逻辑加进去不就可以看到这段的调用栈了吗?

直接在printerRespoonse函数里加入如下代码:

g,貌似没啥有用的

看来得另想办法了。(这个方法对于一些app是可行,只是这里这个app没得搞)

目前,我想到的思路是(临时现想的,也许还有更好的思路)

1.hook 通用的加密方法,查看调用栈2.hook JSONObject 对象,因为okhttp的hook,已经验证,最后返回是JSON,查看调用栈一定可以找到3.搜索request、response、params、encode、decode等特殊字符4.hook 请求头的加密参数,找到实际的主逻辑,进而找到请求体的加密5.hook hashmap 的put方法看看有没有所需的参数

好的,接下来就是分析里最繁琐也最有意思的环节,通过一步步的试错尝试,找出实际的加密逻辑

我选用的hook json的方法:

hook 方法 com.alibaba.fastjson.JSON.toJSONString,结果果然调用了:

下面报了个错,是因为数据太长了,就会导致这样:

看看调用栈,这不就找到了吗,嘿嘿

继续跟逻辑,找到这个方法:

com.xxx.xxx.network.retrofit.ApiResult.getData

他返回结果实际就是展示在app上的数据,可以,返回的json已经找到,再继续跟逻辑

没过多久,跟到这个方法:

com.xxx.xxx.biz.home.impl.home.bean.UserListRequest.getCondition

这个方法的参数刚好是这个筛选条件:

感觉很接近了,继续看,发现了翻页的方法

在分析的同时,我发现一段代码,很有意思:

数据居然是sql,然后追了下,居然是本地的数据库SQLlite

搜了下,好多sql语句,有点东西啊

秀了,也就是说,这里面的小姐姐,我猜测,很可能只是本地app的sql数据.....


 

所以我一个刚注册的号,能收获这么多打招呼的消息?

继续看,通过上面跟逻辑,找到这个方法:

com.xxxxxx.xxxxx.xxxx.xxxx.c.j

但是jadx根本无法显示这个j方法:

换GDA,刺激,主逻辑全都在这里:

经过一段时间,终于找到核心的加密,就在如下

仔细看了下,这段像smali又像java代码,感觉不像是加密,就是把请求头参数,转成了array,然后转二进制,二进制再转字符串,所以难怪我hook标准的加密找不到,还是有点东西,具体就没去深究了

不知道由于这个app是用kotlin开发的,所以有些语法,jadx和gda都无法完美解析

具体还原工程就不展示了

测试

反正能跑就行了

结语

搜ID:geekbyte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值