吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 5547|回复: 22
收起左侧

[Android 原创] Android端某商用验证码破解

  [复制链接]
DS_FLY100 发表于 2020-6-8 17:17
本帖最后由 DS_FLY100 于 2020-6-12 12:40 编辑

一、前言
先说些废话···本人大学学的专业偏硬件,毕业后从事的第一份工作就是和逆向有关,当时没有同事教,都是自己看书,看论坛,发帖求助,一点点学习到今天。着实不易,所以想写点东西,一是为了有干货体现自己的能力,二是希望能帮助大家,如果大家能从我的帖子学习到一点知识,我也算功德无量拉~~~
本次是对Android端的某商用验证码的破解,主要介绍思路和一些踩过的坑。文笔不好多多见谅,有不对的地方请大佬斧正,有侵权请管理删帖。多谢~
二、抓包分析流程
11.png
如上图所示,登录请求上面有四个请求,第一个请求,请求了两个明文字符串,这里主要分析第二个请求和第三个请求,第二个请求如下:
22.png
请求体中是一段加密数据,从这段数据上看,可以稍微做一点点猜测,这段数据可能是两端字符串拼接的,前面那段也用了base64编码。
三、反编译寻找加密代码段
JADX反编译apk,搜索 base64.  结果如下:
33.png

因为这个apk是用了这个验证码的SDK,所以在SDK包名下的这个base64参与的地方,应该就是和加密有关的地方。直接跟过去如下:
44.png

可以发现这里用了RSA加密,有些和密钥相关的方法。
右键  查找用例, 发现只有一个地方调用了这个和密钥有关的函数,继续跟过去,如下:
55.png
这里发现这个sdk 混淆的还是可以的 全是 00oo00的函数名,看起来挺费劲的,所以大家要耐心点,我这边为了使这个加密流程更清晰,就把相关函数扣下来,并把所有函数名都重命名了。具体如下:
66.png
可以看到这个函数传了两个字符串参数,然后最后输出的结果是两个字符串的拼接,这就符合我们上面的猜想了。虽然原SDK混淆的厉害,但是调用加密还是用了加密库,一个RSA加密,一个AES加密,所以这里我命名时候就用了RSAEncrypt 和 AESEncrypt。这样比较好区分···
四、分析传参模拟加密
把加密参数抠出来并且重命名后,接下来就是分析传参了,传的两个字符串到底是啥~,然后知道传参后,就能调用这个加密函数完成加密模拟了。
这里提供两个方法,一个是打断点,动态调试。第二个是hook大法。这里图省事,就直接用xposed  hook这个函数。hook代码如下:
77.png
hook结果为:  第一个参数为 抓包时候第一个请求返回的两个字符串,第二个参数为一个16个字节的字符串,这里需要继续弄清楚这个16字节的字符串是如何生成的, JADX 右键这个加密函数,查找用例,结果如下:
88.png
可以发现这个第二个参数 ,是由上面那个传参 16的函数生成的,ctrl+左键跟到那个传参16的函数去:
99.png
可以发现就是一个随机数。可以在我们模拟的流程中,直接照抄这段代码。
分析到这里已经完成了所有了加密流程的分析(SDK中还是调用了很多混淆的函数,照抄就行,想好看点就修改下函数名)
五、发送请求,验证结果
在登录之前有四个请求,其中第二个和第三个请求携带了加密数据,经过分析发现第三个请求和第二个请求用了同一套加密。第三个请求的传参也是通过xposedhook就行,传输了一些手机信息和鼠标点击坐标等。下面就是模拟这四个请求验证我们模拟的加密了。
1o.png
如上图所示,发送post请求时候,携带我们模拟的加密数据。返回值如下:
111.png

可以发现和正常操作的返回值是一样的。后续的登录接口也能返回正常的数据,不会报错了。至此我们就通过模拟同样的加密,过掉了此款商用验证码。
六、总结及踩坑
这个验证码,区别于传统的滑块验证,没有校验移动轨迹,只是通过校验加密参数来校验是否是正常访问。所以通过模拟同样的加密就可以过掉了。下面介绍一下我遇到的坑,大家下次遇见可以借鉴一下:
1、base64 模式的问题,这个sdk用的是base64.(str,4),如果用其他的可能会出错(eclipse或IDEA导入的base64jar包)
2、不同平台RSA公钥解析问题,同样的字符串,在android和windows解析出来的RSA公钥不同。这点卡了我非常久的时间。windows下默认的是sun JDK  Android上默认的是OpenJDK 。 我当时在Eclipse模拟加密一直报错,就是这个RSA公钥解析的问题。

3、混淆情况下函数名问题,如果照抄混淆的函数名,会和很多变量名一样,会报错,大家在理清流程的时候可以把代码扣出来,然后修改函数名和变量名。一定要耐心~~~



本文只是提供一个思路,具体的样本和验证码厂商就不公布了。谢谢理解。如果大家能点个赞给个热心那就更棒了!!! 多谢~
最后加上国际惯例:
本文仅供学习使用,如果用于非法用途,自行承担后果~

免费评分

参与人数 15威望 +1 吾爱币 +33 热心值 +15 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
weiwensi + 1 + 1 用心讨论,共获提升!
字数补丁 + 1 + 1 用心讨论,共获提升!
a626661352 + 1 + 1 谢谢@Thanks!
liloooo + 1 + 1 用心讨论,共获提升!
dreamlivemeng + 1 + 1 用心讨论,共获提升!
smilingk + 1 + 1 思路清晰,很容易看懂!
Linshengqiang + 1 + 1 鼓励转贴优秀软件安全工具和文档!
生有涯知无涯 + 1 + 1 我很赞同!
sgh2zlx + 1 + 1 很有参考价值,技术含量很高!!!
笙若 + 1 + 1 谢谢@Thanks!
LML + 1 + 1 我很赞同!
小飞虫 + 1 + 1 谢谢@Thanks!
Likey + 1 用心讨论,共获提升!
ericgao + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| DS_FLY100 发表于 2020-6-10 09:55
spy7 发表于 2020-6-10 07:42
绝对大佬级别,学习一下

菜鸡一枚,共同学习····
 楼主| DS_FLY100 发表于 2020-6-9 10:33
ericgao 发表于 2020-6-8 17:26
 楼主| DS_FLY100 发表于 2020-6-8 17:27
ericgao 发表于 2020-6-8 17:26
不错啊,加油!顶一个

多谢拉!
 楼主| DS_FLY100 发表于 2020-6-8 17:38
hesqiang 发表于 2020-6-8 17:34
不错,顶一个。。。

多谢拉!
小飞虫 发表于 2020-6-8 18:42
加油!顶一个
A00 发表于 2020-6-8 20:02
不错啊,加油,大家一起交流
wwb66668 发表于 2020-6-8 21:40
感谢楼主的分享~
lxm138198 发表于 2020-6-8 23:03
还没看懂,慢慢琢磨!!
dxaw2458 发表于 2020-6-9 00:00
看不懂系列   顶一个
扬州八怪 发表于 2020-6-9 07:40
膜拜大神谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2021-7-28 01:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表