type
status
date
slug
summary
tags
category
icon
password
目标:抓包分析、frida hook分析登录协议并使用python复现
工具:Jadx、Frida、Charles、雷电模拟器
一、抓包分析
1.1 登录界面登录

1.2 Charle抓包
通过这个包可以看出它是一个加密了的数据,但是是什么加密的就不知道了,一眼是看不出来的,就像看电影只看了一个龙头,啥电影还是不知道。

发现了一个关键字"
Encrypt”,把它放到jadx里去搜索碰碰运气。二、Jadx反编译静态分析&Frida动态分析
2.1 ”Encrypt“关键字搜索
把安装包拖进Jadx,搜索Encrypt

可以看到这里搜出来了,但是有两个,不知道它是走的哪个函数,挨个点进去看
2.2addRequestMap函数
2.2.1 函数分析

它对
addMap进行了一系列操作,首先加了一个时间戳进去,然后给paraMap处理了一下,最后Des加密后传值给encrypt的。2.2.2 addReuestMap的hook
不知道传进函数的addMap是什么值,hook看一下。
以上是hook的代码,执行如下

addMap的值就是{loginImei=Android010138025009594, equtype=ANDROID, userPwd=asd1234, username=13966666666}还没有经过任何的处理,可以看到有输入的用户名和密码。hook出来就说明在登录的时候执行了这个函数,不然会没反应。2.2.3 paraMap的hook
传进来的addMap知道是什么值了,但是后面还进行了paraMap的处理,先去看下paraMap函数。 分析:它先是把addMap排序了一下,然后转成了StringBuilder,又经过了md5函数的处理,这个md5不一定是标准的md5加密,还是要进去看函数具体实现,最后又加进了addMap里面。

hook一下,看下它的传参以及返回值是什么。
执行如下

从返回值看,确实是排序了,还把
sign加了进去,sign就是进行md5加密后的值。2.2.4 md5的hook
进去md5函数sign的签名算法是如何实现的。

把传参和返回值hook出来,去验证一下是不是标准的MD5加密。
执行如下

把
equtype=ANDROID&loginImei=Android010138025009594&timeStamp=1718279734313&userPwd=asd1234&username=13966666666&key=sdlkjsdljf0j2fsjk扔到加密网站看看
发现和hook出来的一样,那就是标准的。
paraMap的作用就是给addMap加了个sign。
2.3 Des加密分析
通过上述分析知道,paraMap是加了一个签名进去,后面的encodeDesMap函数才是真加密。另立小标题,不然太冗余😀
进去看下
encodeDesMap函数
没啥看的,关键在
DesSecurity类里面,进去看看
关键看InitCipher这个函数,它把secKey转成的md5(注意des加密中key只取前8个字节,而md5有16个字节),然后进行DES/CBC/PKCS5Padding加密
hook检验一下
这里直接调用了javax.crypto.spec.DESKeySpec来把key hook出来
结果如下

2.4 paraMap函数
虽然上面已经把登录协议的大致流程和算法已经弄清楚,但是搜索有两个,还有paraMap函数没有看,这个和上面分析的paraMap不一样,参数数量不同。
直接hook
执行后什么也没有输出,说明登录没有走这个函数。
三、协议算法复现
协议算法:原始addMap———>添加时间戳,给paraMap处理———>排序,并将数据MD5加密作为sign加入到addMap———>secKeyMD5加密取前八个字节作为key———>DES/CBC/PKCS5Padding加密
用python实现如下
四、验证
可以看到服务器返回过来的数据解密后是{"code":-1,"message":"账号或密码错误","data":{}}说明解密没问题,根据内容来看发送加密的数据也没有问题。

五、分析过程中遇到的问题
在2.2.2中,hook addReuestMap时,其传参addMap是Map类型,如果直接打印输出的是[object],没有具体的数据,因此要对其进行转换,输出其里面的字符串。
类似的还有2.3 Des加密时,因为源码中在加密的过程中还进行了base64编码,所以hook代码输出的key要用base64的编码输出,hook代码里调用了安卓的系统函数去编码的。
- Author:展叶
- URL:https://rxblog.redcar.top/article/dc70092d-a4b6-474a-a6c9-53d7341701ce
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!