某报价大全APP加密参数-iOS逆向抓取

APP抓取 2018-06-09 8:35:50 阅读(27405) 评论(0)

iOS作为一种闭源系统,没有Android那么多的packers和so库,iOS官方封装了自己统一的Crypto库,所以我们HOOK起来也很方便。我以某报价大全 iOS v10.5.5版为例,记录一下巧破加密参数的过程和一些知识点。

此次逆向教程使用到的工具如下:

一部越狱iPhone或iPad

抓包工具:Charles

Hook 框架:frida v12.8.11

一、抓包分析

通过Charles抓取目标APP列表页请求的数据,我们发现含有32位的“sign”参数,且向下滑动加载更多时“sign”参数都会变化。两次抓包请求参数对比如下图:

iOS逆向抓取-巧破某报价大全APP加密参数1

通过对比抓包数据,我们猜测可能使用了MD5加密算法,接下来我们就用frida-trace监控iOS系统封装的CC_MD5加密函数,看能不能巧破该APP的“sign”参数。

二、frida-trace分析

首先通过 frida-ps -Ua (请自行安装frida)查看目标APP的进程id为4934:
iOS逆向抓取-巧破某报价大全APP加密参数2

 

再通过frida-trace跟踪“CC_MD5”函数,命令如下:

iOS逆向抓取-巧破某报价大全APP加密参数3

 

frida-trace参数说明如下:

-U                  使用USB数据线连接设备

-i                    追踪函数

“CC_MD5”    要追踪的函数名

4934              目标APP进程id

接着在终端界面按 Ctrl+C 停止运行。然后在__handlers__/ASEProcessing文件夹中找到CC_MD5.js文件,将代码修改为如下并保存:

iOS逆向抓取-巧破某报价大全APP加密参数4

 

以上代码会在追踪到CC_MD5函数步入时打印待加密的参数值,步出时打印加密后的md5返回值。
接着我们继续使用之前的命令运行frida-trace,然后在目标APP列表页继续滑动即可看到frida-trace追踪到的参数和返回值。然后我们用Charles抓包看到的sign值到frida-trace窗口中搜索即可找到对应参数,如下图:

iOS逆向抓取-巧破某报价大全APP加密参数5

对比请求的url和加密参数:
-请求的url:api.ashx?cateid=3&cityid=&method=news.list&pageindex=3&pagesize=25&productid=7&serialid=&sign=fbe1c8222424f38371f0b59592a6293b-加密的参数:?cateid=3&cityid=&method=news.list&pageindex=3&pagesize=25&productid=7&serialid=2CB3147B-D93C-964B-47AE-EEE448C84E3C

请求url中标注部分与加密参数标注部分完全一致,我们可以确定盐值为:2CB3147B-D93C-964B-47AE-EEE448C84E3C。至此“sign”参数md5加密算法不攻自破了。

iOS逆向抓取-巧破某报价大全APP加密参数6

 

三、总结

本文重点在通过Charles抓包看到“sign”参数为32位字符串,猜测是md5加密,从而使用frida-trace监控目标APP是否使用了iOS系统封装的CC_MD5加密函数。之后一击即中巧破了“sign”参数加密算法。

对于我们爬虫工作者在抓取数据时遇到加密“sign”参数,首先可以猜测其大致的算法,之后用frida-trace去监测系统默认的加密函数,比如iOS系统的:CC_MD5,CC_SHA1,CCHmac等,有可能会有意想不到的收获。如果此方法行不通,我们可以再去想办法逆向分析。

猿人学banner宣传图

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***

说点什么吧...