"探索未知:倾听青花瓷Charles在AppStore的轻声细语"

1.Charles

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!
C6E600A0-161E-4AF2-8CAC-FA5E6EA88A1F.png
在钥匙串中,找到Charles Proxy 证书,这个是我信任后的证书
安装的后的证书是不被信任的.
信任证书
我们选中证书,右键,显示简介就可以出现上图,我们信任证书即可
然后输入mac密码确认.
证书到这里已经完成安装
  • 配置SSL
SSL Proxying Settings
菜单栏--> Proxy --> SSL Proxying Settings
Host: * 
Port: 443
点击ok即可完成配置
  • 好了,这里就可以以明文的方式查看https传输的详情了.

4.Charles抓包工具的中文乱码解决办法

装好了,打开Charles后,发现抓到的包content都是乱码.
下面有个解决办法,有助于大家参考,解决了问题.


Rewrite
菜单栏找到-->Tools-->Rewrite
Enable Rewrite
开启Enable Rewrite ,添加charset
Name: UTF-8-Set
点击Add,添加内容
E6A6F6F7D8C8E5F365EC9111E33EB1F4.png
红框出添加或者勾选,点击ok即可完成配置.

我们的问题就可以解决了.

5. AppStore 数据包抓取

如果我们完成了所有的配置,是不是就可以愉快地抓包了呢?心情会变得开心。但是问题随之而来,到底是什么问题呢?这么神秘吗?这个问题确实有点神秘。

iTunes Store 与 App Store
登录

我们到了这一步都还顺利,但突然出现了意想不到的问题。当我们输入密码和账号后,点击登录按钮时却提示连接到Apple服务器出错,这让我们非常不开心。当时甚至无法打开AppStore,显示连接不到Apple服务器。其他软件可以正常抓取数据,所以我们猜测是不是苹果设置了反抓取机制。

后来,我们找到了原因:越狱手机需要禁止SSL Pinning证书,而AppStore使用的是SSL Pinning(证书锁定)。因此,无法通过抓包工具直接抓取包。要想抓取包,必须通过安装插件来禁止SSL Pinning。这是目前最有效的解决方法,但不确定是否有效。我们决定尝试一下。

ssl-kill-switch2
sslkillswitch--deb
  • 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

安装中遇到的问题:


没有安装preferenceloader
主要cydia没有安装插件 preferenceloader
在cydia中找到该插件,并安装.就可以解决问题.
安装preferenceloader

安装完成后,手机会立即重启,重启后我们进入设置,最下面会多了一个SSL Kill Switch2

SSL Kill Switch 2
Disable Certificate Validation
  • 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进程

kill进程后,我们重启App Store,就可以愉快地抓包了。

我第一次操作时并没有得到任何结果,开始觉得这个方法并没有解决问题。后来,我尝试了关机重启,然后再次执行kill命令,最后,一切都正常了。

如果你也遇到了类似情况,可以尝试重启手机多次,多操作几次。

6.总结

因为最近研究抓取AppStore的数据包,我开始研究了一下Charles。刚接触就遇到了一些问题,所以我把自己的解决方法告诉了大家,希望能帮助大家少走弯路,节省更多的时间。

本文简单介绍了Charles的配置和使用,如何获取AppStore的数据包。当然,Charles还有许多其他功能等待你去研究。希望这篇文章能对你有所帮助。

我还有许多文章准备更新,敬请持续关注。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容