1.Charles
Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看他们的机器和Internet之间的所有HTTP和SSL / HTTPS通信。这包括请求、响应和HTTP头(包含cookie和缓存信息)。
2.Charles 使用与配置
-
2.1 抓取HTTP请求
打开Charles,打开Charlels主题菜单,找到Proxy
勾选上macOS Proxy就可以了
在macOS Proxy 的下方有Proxy Settings选项,点击打开
在Port出输入8888,并且勾选下方Enable transparent HTTP proxying 选项,点击OK即可.
- 2.2 找到我们mac的ip,以方便在mac上抓取移动端app的数据包
三种种方式找到我们的mac ip地址
第一种:
(设置中找到网络即可看到mac ip地址)
第二种:
(在Charles菜单栏中,找到Help-->Local IP Address,打开即可找到ip地址)
第三种:
(终端-->ifconfig)
-
2.3 手机配置
2.4 然后就可以愉快的抓取http包了.
3.抓取https包
- Charles可以抓取http协议的包,也能抓取https协议的包.
- 由于https是经过加密的,抓取的包以密文方式展现的
- 配置Charles的SSL可以以明文查看https协议传输的内容
菜单栏中找到Help-->SSL Proxying -->>Install Charies Root Certificate!
在钥匙串中,找到Charles Proxy 证书,这个是我信任后的证书
安装的后的证书是不被信任的.
我们选中证书,右键,显示简介就可以出现上图,我们信任证书即可
然后输入mac密码确认.
证书到这里已经完成安装
- 配置SSL
菜单栏--> Proxy --> SSL Proxying Settings
Host: *
Port: 443
点击ok即可完成配置
- 好了,这里就可以以明文的方式查看https传输的详情了.
4.Charles抓包工具的中文乱码解决办法
装好了,打开Charles后,发现抓到的包content都是乱码.
下面有个解决办法,有助于大家参考,解决了问题.
菜单栏找到-->Tools-->Rewrite
开启Enable Rewrite ,添加charset
Name: UTF-8-Set
点击Add,添加内容
红框出添加或者勾选,点击ok即可完成配置.
我们的问题就可以解决了.
5. AppStore 数据包抓取
如果我们完成了所有的配置,是不是就可以愉快地抓包了呢?心情会变得开心。但是问题随之而来,到底是什么问题呢?这么神秘吗?这个问题确实有点神秘。
我们到了这一步都还顺利,但突然出现了意想不到的问题。当我们输入密码和账号后,点击登录按钮时却提示连接到Apple服务器出错,这让我们非常不开心。当时甚至无法打开AppStore,显示连接不到Apple服务器。其他软件可以正常抓取数据,所以我们猜测是不是苹果设置了反抓取机制。
后来,我们找到了原因:越狱手机需要禁止SSL Pinning证书,而AppStore使用的是SSL Pinning(证书锁定)。因此,无法通过抓包工具直接抓取包。要想抓取包,必须通过安装插件来禁止SSL Pinning。这是目前最有效的解决方法,但不确定是否有效。我们决定尝试一下。
- 我们首先准备越狱机(系统版本为iOS 9.3.1,并已越狱)。
- 2.下载(SSL KillSwitch 2)插件。
地址: https://github.com/nabla-c0d3/ssl-kill-switch2
- 3.越狱机都有cydia软件,一定要装上插件OpenSSH
这里就不介绍如何安装了,请看我写的"技艺精进:iOS逆向工具精选" ,有讲到OpenSSH. - 4.连接手机终端,将deb包传输到越狱手机。
scp com.nablac0d3.sslkillswitch2_0.12.deb root@host:var/root/
安装sslkillswitch
dpkg -i com.nablac0d3.sslkillswitch2_0.12.deb
安装中遇到的问题:
主要cydia没有安装插件 preferenceloader
在cydia中找到该插件,并安装.就可以解决问题.
安装完成后,手机会立即重启,重启后我们进入设置,最下面会多了一个SSL Kill Switch2
- 5.这一步完成后,应该可以使用了.虽然禁止了SSL Pinning,我们登录的时候仍然是报服务器请求错误.
Why SSL Kill Switch didn’t work
I initially thought the issue to be that the strategy used by the SSL Kill
Switchto disable certificate validation somehow wasn’t enough to
bypass *itunesstored*’s certificate pinning. However, it turns out that the SSL
Kill Switch was just not being injected into the *itunesstored* process at all,
for a couple reasons:
The itunesstored process is started as a daemon by launchd early during
the device’s boot sequence, before MobileSubstrate and MobileLoader get
started. Therefore, none of the MobileSubstrate tweaks installed on the
device, including the SSL Kill Switch, get injected into this process.
The SSL Kill Switch had a MobileLoader filter so that the code disabling
certificate validation would only be loaded into apps linking the UIKit bundle
(ie. applications with a user interface). This was initially done to restrict the
effect of the SSL Kill Switch to App Store apps only.
However, itunesstored is a daemon that doesn’t have a user interface,
hence the filter prevented MobileLoader from injecting the SSL Kill Switch
into the process.
After figuring this out, getting *itunesstored* to stop validating SSL
certificates was very straightforward. First of all, make sure you’re using the
latest version of the SSL Kill Switch(at least v0.5). Then, all you need to do is
kill the itunesstored process:
iPad-Mini:~ root# ps -ef | grep itunesstored
501 170 1 0 0:00.00 ?? 0:01.95 /System/Library/PrivateFrameworks/iTunesStore.framework/Support/itunesstored
0 432 404 0 0:00.00 ttys000 0:00.01 grep itunesstored
iPad-Mini:~ root# kill -s KILL 170
原因是在早期启动时,itunesstored进程作为守护进程启动,并且在设备的引导序列中开始了MobileSubstrate和MobileLoader。因此,SSL Kill Switch作为MobileSubstrate的插件,无法注入到itunesstored进程中。
解决方法是必须杀掉itunesstored进程,因为itunesstored作为守护进程会自动启动。在自启时,SSL Kill Switch 就会被注入到itunesstored进程中。操作命令如下,我们也可以自己操作一下。
kill进程后,我们重启App Store,就可以愉快地抓包了。
我第一次操作时并没有得到任何结果,开始觉得这个方法并没有解决问题。后来,我尝试了关机重启,然后再次执行kill命令,最后,一切都正常了。
如果你也遇到了类似情况,可以尝试重启手机多次,多操作几次。
6.总结
因为最近研究抓取AppStore的数据包,我开始研究了一下Charles。刚接触就遇到了一些问题,所以我把自己的解决方法告诉了大家,希望能帮助大家少走弯路,节省更多的时间。
本文简单介绍了Charles的配置和使用,如何获取AppStore的数据包。当然,Charles还有许多其他功能等待你去研究。希望这篇文章能对你有所帮助。
我还有许多文章准备更新,敬请持续关注。
公众号:听木子说心语。文章也会同步在公众号上发布,有需要的朋友可以关注一下。