iOS 测试 IOS 抓 2/3/4G 数据包,附带实例

nuk · 2016年04月24日 · 最后由 fengcanfly 回复于 2017年02月09日 · 2035 次阅读

事件过程:

上周发现 APP 的某个 webview 页面底部会出现一个透明浮层,导致整个页面无法点击,反复测试排查后发现只有在移动网络下时而能复现,毫无规律可言,最后是在某手机上使用 4G 网络能固定复现。

查找过程:

有了能稳定复现的环境,就该缩小范围来定位问题了,最简单的思路就是抓包观察这个浮层来知何处,但传统的通过 Charles 走 WIFI 代理进行抓包就没办法复现这个 Bug 了,想到的办法有:

  1. 手机 A 移动网络放出热点→PC 连接并配置代理→手机 B 连接 PC 上的代理(这样就达到抓移动网络下的包体目的,但是太费流量且过程麻烦,PASS)
  2. 使用 Safari 的 Web 检查器配合 iPhone 调试分析(事后发现的一种解决方案,详情可看 https://chon.io/blog/safari-ios-iphone-itouch-web-dev-inspector/
  3. IOS 神器 rvictl ,一根数据线实现使用 Tcpdump、Wireshark 抓包分析,原理是将移动设备虚拟一个网卡接口给 Mac,出入口流量都可以通过这个接口传输给 Mac,Tcpdump、Wireshark 再监控这个虚拟网卡接口就可以抓到移动设备上的包了

使用第三种 rvictl 办法,步骤如下

  1. 将 iPhone 通过数据线连接上 Mac,打开 iTunes,复制设备的 UDID(位置在’ 摘要 ‘tab 页中)
  2. 打开 Terminal,输入 rvictl -s 设备 udid
  3. 打开 Wireshark,在捕获选项中能看到这个 rvi0 这个网卡,选中,然后输入合适的过滤符就可以抓包成功

数据包中可以查到一个来源不是我们自己服务器且代码中不存在的一个http://static.hnfjx.com/static/image/close.png链接

最后定位到是 common-9bdeaba34f.build.js 里包含了这张图片的引用,但是并不是我们自己所写,仔细一看这个文件被篡改了,这个 js 文件是放在七牛 CDN 上,原因自然就清楚了,七牛 CDN 返回给客户端的 JS 文件不是我们之前上传的文件。

劫持流程:

  1. 客户端请求 build.js

  2. cdn 节点返回假的 build.js 文件

  3. 假的 build.js 加载成功,插入了广告

事后分析

请求这个 Js 文件放在七牛 CDN 上,是七牛的根域名且是 https,返回的却是可解析非客户预期的文件:

想想可能性,细思极恐,七牛的域名被劫持,劫持方还有他的证书,是谁呢?



共收到 10 条回复 时间 点赞

这个是运营商的劫持吧,很正常

幕后黑手就是&%#¥

nuk #3 · 2016年04月24日 Author

#1 楼 @lihuazhang 这个文件走的是七牛的 HTTPS,感觉是七牛内部有人(或离职员工拥有各种权限)。。。 的可能性大些吧, 运营商劫持 HTTPS 可能性小,私钥证书他取不到

也许可能是这台服务器被人黑掉了. 直接篡改的文件. 比如机房的管理员...
以前游戏行业竞争激烈的时候, 不是都花钱请机房的管理员拔对手服务器的网线吗

被你发现了,哈哈,广告商要不开心了...

第一次听 rvictl ,学习了~

涨知识了,1024

学习了,之前抓包 还比较麻烦 这个 相对简单一些

别的不说,第二个方法肥肠 cooooool~~

可以使用 iphone 的手机上功能,用 wifi 模拟 2G,3G,4G 啊

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册