Koolearn逆向分析
BY 混入21de蒟蒻
抓包分析过程
抓包之路太难了…实验室的网络时有时无,电脑手机都链接不了热点,无奈之下只好开始霍霍室友的安卓手机~~(没有安卓手机难受)~~
下载好Packet Capture
,开始对应的抓包活动,可以抓到如下数据 :
在包中我们可以看到请求的相关信息,设备型号,请求方式等。同时我们多次抓包分析可以看到红色框框的地方可能就是对应的签名,每次的长度固定 32 位。
而签名的生成便是要逆向分析了。
逆向分析签名生成
Jeb
首先按照PDF
上的教程开始利用Jeb
来逆向安卓软件,利用字符串进行定位分析找到对应的validation
。
找到后进行转换伪代码,如下图所示 :
我们根据PDF
中的提示继续进行分析,通过PDF
的提示我们知道validation
的值是由 generateSign
这个⽅法⽣成的。
双击该⽅法我们可以跳转到该⽅法的实现,再次根据PDF
的提示我们可以知道该⽅法被修饰成了 native,该⽅法的具体实现在某个 SO
⽂件⾥⾯,那么我们的重点工作便是逆向分析这个SO
文件。然而定义的native
和 so
在一个类里,通过此方式我们定位对应的SO
文件,打开我们逆向SO
的新大门。
找到对应的SO
后我们拖入IDA
分析。
IDA
进入SO
后我们直接搜索generateSign
,在里面我们可以看到有一个注册的函数进入分析
进入后往下找可以看到有一个MD5
加密,这个也就解释了为什么每次我们在获取到validation
时其长度永远都是 32 位的。
我们同时看到MD5
加密的函数没有去符号表,猜测如果有其他加密那么是不是也会有对对应的符号表,按着这个思路我们继续分析,打开函数列表往下滑了滑就可以明显的看到还有一个RC4
加密算法,通过交叉引用可以定位到如下界面,其中的加密过程便是RC4 + MD5
,我们通过动调进行分析,测试我们输入的数据在这个加密后得到的数据与抓包得到的数据进行比对,我们可以发现出现对应validation
的地方。
进入RC4
部分可以明显的看到其生成的过程,先初始化 256 的一个BOX
密钥流,再对其进行异或加密,对此我们可以仿照其对应的生成相同的密钥流,或者直接提取出来对应的BOX
的值之后对输入数据进行处理。
那么剩下的就是一个MD5
加密了,对于哈希加密我们只能爆破进行求解,但是我们不需要爆破出来所对应的数据,可以通过抓包软件来完成得到数据。因此我们直接利用Python
的哈希库实现同样操作即可。
脚本编写
python
集成了一个requests
库给我们使用,我们可以利用这个库来完成对服务器的请求(小爬虫)
在开始前我们同样的要获取相应的Header
让服务器认为我们是用户而不是爬虫,来提供对应的服务。(UA伪装?爬虫还没有学多少)
同时还有一个Url
给我们的爬虫进行爬取,一个Data
提供爬取数据,之后便是对于服务器端的请求了。
**validation ** 生成:
1 |
|
请求登录:
1 |
|