Android - 逆向分析“她说APP”的加密算法

2022-10-10  本文已影响0人  非典型的程序员

        为了保证App的数据安全,一般都会在客户端上对接口数据做一层加密,然后服务端用对应的解密算法对数据进行校验,以保证数据没有被篡改,所以加解密算法是否安全不容易被破解对客户端来说意义重大。

        加密固然重要,但是我们也需要掌握一般破解的思路,实际上有加密算法泄漏问题的App一抓一大把,所以就以“她说app”为例做一次简单的分析~

 一般破解客户端加密算法,需要用到的工具:

1. 抓包工具(如charles)

    通过抓取http接口数据,分析head或提交参数中相关加密的字段和信息。

2. 反编译工具(如jadx)

    根据抓包得到的相关字段,通过反编译后得到混淆过的代码进行分析,找到java层相关的加密算法。

3. so脱壳工具(后面再出一章单独讲解)

    有些app厂商会选择通过jni的方式将加密算法打包进so库中,所以就需要针对so库做逆向分析,本章不涉及。

    如小红书使用的shield算法就打包在so库中,可参考小红书逆向分析

一、抓包分析

        通过抓包,可以发现,每个接口都带有“accessSign”字段,从名字看应该是和加密相关的字段。

二、反编译得到加密算法

        通过jadx反编译后,全局搜索“accessSign”,不出意外得到了相关的put方法,下图a方法就是其加密算法,先对提交参数拼接成字符串,然后对MD5算法做了简单的偏移再拼接。

com.intelcupid.library.e.a.a()对应的方法

三、建议

1.对“accessSign”字符串拆分成多个字符,如“ac”“ces”“sSi”“gn”,避免在反编译后直接通过搜索“accessSign”而定位的算法的位置;

2.将算法过程拆分成多个方法,增加代码理解的难度;

3.加解密算法通过c/c++编写,打包成so供java层调用,增加破解难度;(强烈建议!!)

四、加密算法泄漏的会导致一些黑产问题

针对“她说APP”,有以下2个问题:

1. 加密算法泄漏,可以在任意http接口修改“accessSign”的值以修改post中的参数;

2. 服务端过度信任“accessSign”算法,只校验算法合法性,但没校验真实参数的有效性;

基于以上2个问题,通过抓包修改post参数accessSign字段,可以挖掘出以下一些漏洞:

1. 购买一次vip可以给多个账号使用:如A用户购买成功的字段,给B用户通过提交小票的接口提交后B用户同样可获得vip特权;

2. 可无限次使用超级喜欢功能:修改个人主页接口,加上超级喜欢次数的字段,即可将其数量修改为任意值。

上一篇 下一篇

猜你喜欢

热点阅读