首页
社区
课程
招聘
[原创]iOS https(SSL/TLS)数据捕获
发表于: 2013-8-19 16:34 47960

[原创]iOS https(SSL/TLS)数据捕获

obaby 活跃值
20
2013-8-19 16:34
47960

要捕获iPhone上的appstore的数据还真的没那么容易,以前介绍的那些使用代理手工导入证书的方法已经完全失效了,结果就是安装证书之后再打开appstore也无法正常的建立连接。按照我的分析其实是appstore在检测证书无效之后直接就没有发起任何的请求(可以通过wireshark抓包查看网络数据)
随之而来的是第二种方法,patch ssl证书校验函数,根据这个原理实现的有两个工具,一个是ssl kill switch,另外一个是trustme。原理都是一样的,并且也非常的简单,按照作者的说法是truestme实现的更底层一些。但是很不幸的是,结局是同样的悲哀的,在iOS6之后这个东西也是失效了。
其实我这里要说的方法也比较简单,如果阅读过上面两个工具的源代码(请自行搜索相关代码),并且理解mac os/iOS 下https实现的相关原理,那么也就自然的想到hook发送和接收函数的方法来捕获数据了。
需要关心的函数只有两个sslread和sslwrite:

SSLRead
Performs a normal application-level read operation.

 OSStatus SSLRead (
   SSLContextRef context,
   void *data,
   size_t dataLength,
   size_t *processed
);
Parameters
context
An SSL session context reference.
data
On return, points to the data read. You must allocate this buffer before calling the function. The size of this buffer must be equal to or greater than the value in the dataLength parameter.
dataLength
The amount of data you would like to read.
processed
On return, points to the number of bytes actually read.
SSLWrite
Performs a normal application-level write operation.

OSStatus SSLWrite (
   SSLContextRef context,
   const void *data,
   size_t dataLength,
   size_t *processed
);
Parameters
context
An SSL session context reference.
data
A pointer to the buffer of data to write.
dataLength
The amount, in bytes, of data to write.
processed
On return, the length, in bytes, of the data actually written.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (32)
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
2
好吧,你赢了~~学习
2013-8-19 17:23
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
3
2013-8-19 17:28
0
雪    币: 73
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个牛,刚好研究IOS
2013-8-19 17:36
0
雪    币: 136
活跃值: (1470)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
楼主威武啊,感谢
2013-8-19 21:11
0
雪    币: 219
活跃值: (783)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
6
V5 V5 V5
2013-8-20 00:35
0
雪    币: 12688
活跃值: (4294)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
学习了~~ Appstore的数据还真的没那么容易拦截~~用一般代理都没办法打得开~~但用VPN可以~~曾想过在电脑上开个VPN服务~~然后再拦包不知道行不行
2013-8-20 02:51
0
雪    币: 546
活跃值: (1657)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
8
如果是为了破解或开发最好用ios5,当然,有的程序只支持6以上的。

一点小建议:
1、在Window下写个服务端,接收你hook到的数据,这样就可以实时查看了,免去来回倒日志文件的麻烦。
2、对于Gzip的处理,GZip magic标志0x8B1F,一般你数据包要是以它起始,就是Gzip了,你可以写个解压函数尝试自动解密。关于GZip格式的RFC文档:http://www.ietf.org/rfc/rfc1952.txt
2013-8-20 07:08
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
9
建议不错,至于第一个嘛,有时间了实现下。第二个主要是数据分片的问题,有的gzip包不是一个数据包回来的,所以没有折腾这个东西。并且想把二进制的plist一块处理了,也是数据包重组的问题,感觉比较折腾,所以就没做。
2013-8-20 09:26
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
膜拜楼主咯..............
2013-8-20 10:31
0
雪    币: 6
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我自己做的CA证书+Charles可以啊
2013-8-22 22:39
0
雪    币: 546
活跃值: (1657)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
12
理论上时可行的,就是“中间人攻击”
2013-8-22 23:55
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
13
球6.1.2下可以用的模拟过程~
2013-8-23 14:13
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
ios-ssl-kill-switch前几天作了更新,现在已经可以在6.1.x版本下正常使用了。

https://github.com/iSECPartners/ios-ssl-kill-switch

v0.5: Complete rewrite in order to add support for proxy-ing Apple's App Store application.
v0.4: Added hooks for SecTrustEvaluate().
v0.3: Bug fixes and support for iOS 6.
2013-8-23 22:13
0
雪    币: 6
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15


我本地生产一个CA证书和一个对应的P12证书,一个导入到iphone上去,一个导入到Charles里去,Charles开SSL Proxying 和Use Custom CA Certificate,就能读取ssl连接内容了,不过和appstore的数据还是读不了
上传的附件:
  • 1.jpg (56.92kb,207次下载)
2013-8-24 00:08
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
16
说的就是appstore的数据,其余的东西本来就行的。另外楼上有人说 ssl kill switch更新了,可以配合这个试试
2013-8-24 12:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
恭喜 教授!!!
2013-10-18 10:59
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
18
漂guo,不用这么明显吧~
2013-10-18 11:04
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
19
楼主成教授了?
2013-10-18 13:56
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
20
谣言,哈哈 。魔当真
2013-10-18 14:15
0
雪    币: 14
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
师父,这个源码还在吗?发一份到我邮箱学习?还记得你的面试题写itunes抓包工具呢,师父V5
2014-2-13 20:51
0
雪    币: 14
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
22
飘哥好哈!
2014-2-13 20:53
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
貌似信的ssl kill switch 实现是对SSLSetSessionOption()函数做的劫持
2014-3-10 19:21
0
雪    币: 14983
活跃值: (5285)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
24
最新版的已经可以了~
2014-3-10 22:33
0
雪    币: 216
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
Fiddler2 这个软件可以拦到封包的呀!
2014-4-9 11:48
0
游客
登录 | 注册 方可回帖
返回
//