浅析手机抓包方法实践

标签: 技术分享 | 发表时间:2016-01-29 10:07 | 作者:
出处:http://drops.wooyun.org

0x00 摘要


在移动逆向分析以及 App 开发的时候,总会需要对其网络行为进行监控测试,本文总结一些抓包思路,并对其使用方法进行实践

笔者认为在抓包界,Wireshark 应该算是综合排名第一的工具(其实 Wireshark 自带的命令行工具 tshark 更牛逼)

本文总结记录了 5 种抓包方式,掌握其一即可进行实践,欢迎大家一起交流分享

0x01 基于 Wireshark


实验步骤:

1.1 在电脑主机上使用 猎豹 Wifi之类的工具,开启热点,将所要测试的手机连接该热点,记录其IP地址

Alt text

1.2 使用 Wireshark 对以上 IP 地址进行捕获

Capture——Options

Alt text

Alt text

1.3 总结

该方法简单粗暴高效,可以将捕获的数据包随时保存下来,便于后续分析或者进行 PCAP 可视化分析。

关于命令行工具 tshark 在此不做赘述,感兴趣的读者自行研究。

0x02 基于 tcpdump


实验环境:

下载安装 Genymotion 安卓虚拟机,在该模拟器环境种进行实践操作(基于实体手机亦然,前提是 手机必须得 ROOT

笔者仅在 Android 系统下测试,未在 iOS 系统下实验

实验步骤:

2.1 说明

模拟器中自带的 tcpdump 工具,位于: /system/xbin/ 目录下

2.2 数据包捕获

可以通过 adb shell 命令在 CMD 模式下连接模拟器, su 到 root 模式进行抓包

tcpdump -vv -s 0 -i eth1 -w /sdcard/capture.pcap

参数说明:

  • -vv:获取详细的包信息(注意是两个 v 不是 w)
  • -s 0:不限数据包的长度,如果不加则只获取包头
  • -w xxx.pcap:捕获数据包名称以及存储位置(本例中保存在 sdcard 路径下,数据包名为 capture.pcap)
  • -i eth1:捕获制定的网卡(在 genymotion 虚拟机中,使用 busybox ifconfig 命令可以查看相关信息,一般 genymotion 的 ip 地址都为 10.xx.xx.x)
  • 如果你想指定捕获的数据包长度,可以使用 -c 参数(例如 -c 128)

捕获结束,直接按 Ctrl + C 即可

2.3 数据分析

将捕获到的数据包拖到本地使用 Wireshark 进行查看:

adb pull /sdcard/capture.pcap C:\tmp

TIPS:将数据包文件 push 到手机上命令为

adb push C:\tmp\capture.pcap /sdcard/

0x03 基于 Fiddler 4


实验步骤:

3.1 下载 FIddler 4

点击下载 Fiddler 4

3.2 设置 Fiddler 4

打开Fiddler,Tools-> Fiddler Options (配置完成记得重启 Fiddler)

Alt text

Alt text

3.3 设置手机代理

首先,获取安装 Fiddler 4 的 PC 对应的 IP 地址(ipconfig):

Alt text

确保手机和 PC 是连接在同一个局域网中!!!

下面对手机进行设置(笔者使用小米测试机):点击手机中“设置”——Wi-Fi——选择已经连接的wifi——代理设置改为手动

Alt text

下载 Fiddler 的安全证书

使用手机浏览器访问: http://10.2.145.187:8888,点击"FiddlerRoot certificate",然后安装证书即可。

至此,已经全部设置完毕。

3.4 数据包捕获

重新打开 Fiddler 4,然后打开手机中的浏览器,访问任意网址,Fiddler 抓包信息如下:

Alt text

Enjoy!

0x04 基于 Charles


实验环境:

win7 + Charles v3.11

一般使用 Charles 都是基于 MAC OS ,笔者在 mac 平台以及 windows 平台均试验过,操作过程和思路基本一致,因此,本文以 win7 为测试环境

实验步骤:

4.1 捕获 http 数据包

手机设置代理:

Alt text

打开 Charles 即可捕获数据包(Proxy —— Proxy Settings):

Alt text

Alt text

4.2 捕获 https 数据包

手机端安装证书:

Android 手机或者 iPhone 均可直接访问 http://www.charlesproxy.com/ssl.zip ,然后根据图示点击证书安装

Alt text

Alt text

Alt text

设置 Charles:

选择 Proxy —— SSL Proxying Settings —— Locations —— Add

在弹出的表单中填写 Host 域名(也就是你想要抓包链接的主机名),以及对应的 Port 端口(此处相当于过滤作用)

当然,你可以采用更加粗暴的方式:使用通配符,例如你想要捕获所有的 https 包,这里也可以直接都为空,表示捕获所有的主机和端口;或者都分别填“*”星号,匹配所有的字符,捕获所有的 https。

Alt text

Alt text

Alt text

0x05 基于 Burpsuite


实验步骤:

5.1 捕获 http 数据包

PC 端 Burpsuite 设置:

Alt text

手机端代理设置方法同以上 3.3 4.1

打开 Burpsuite 即可捕获 http 数据包:

Alt text

5.2 捕获 https 数据包

手机端设置好代理之后,使用浏览器访问: http://burp/

Alt text

Alt text

此处存在一个问题:下载的证书是 der 格式的,我们手机端安装的是 crt 格式的,需要使用 firefox 浏览器转一下格式:可以首先在 Brupsuite 中导出 der 格式证书,然后导入火狐浏览器,然后从火狐浏览器导出证书格式为 crt

Alt text

打开火狐浏览器:工具——选项——高级——证书——查看证书

Alt text

Alt text

Alt text

成功捕获 https 数据包

Alt text

0x06 总结


  • 当我们停止捕获数据包时,将Fiddler 或 Charles 关闭,此时手机端是无法正常访问网络的,因为设置了代理,这时候需要将代理关闭,即可正常浏览网页

  • 对于大多数走代理的应用可以选择 Fiddler 或 Charles,无需 root,一次配置,终身使用;对于不走代理的 App 可以利用 tcpdump 捕包,然后使用 Wireshark 查看;最简单便捷的便是第一种方法 「0x01. 基于 Wireshark」

  • 以上所有工具各有优劣,读者可以根据工作环境,按需使用,个人觉得一般情况下使用 Wireshark + Fiddler 或者 Wireshark + Charles 即可完成各平台的抓包分析任务

  • 以上工具中只有BurpSuite可以对抓包过程进行交互式操作;Wireshark支持的协议最多,也更底层,功能强大,但过于沉重

  • 对于本文涉及的相关工具的安装、设置、破解、详细使用,不在本文讨论范围之内(Charles 免费版其实还比较厚道,如果重度需要,建议购买正版),本文旨在浅析捕获移动终端数据包的方法和思路

0x07 参考文献


  1. 抓包工具Fidder详解
  2. Mac上的抓包工具Charles
  3. 网络抓包工具Charles的介绍与使用
  4. charles使用教程指南
  5. Android安全测试之BurpSuite抓包
  6. Android利用tcpdump和wireshark抓取网络数据包

相关 [手机 方法] 推荐:

浅析手机抓包方法实践

- - WooYun知识库
在移动逆向分析以及 App 开发的时候,总会需要对其网络行为进行监控测试,本文总结一些抓包思路,并对其使用方法进行实践. 笔者认为在抓包界,Wireshark 应该算是综合排名第一的工具(其实 Wireshark 自带的命令行工具 tshark 更牛逼). 本文总结记录了 5 种抓包方式,掌握其一即可进行实践,欢迎大家一起交流分享.

手机产品交互体验评估方法

- - 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
  交互设计是一个迭代过程,通过交互设计评估,可以及早发现设计中缺陷,进而能进一步完善交互流程. 通过评价,也可发现交互设 计中可行、友善、合理或优秀的地方,从而为后续产品的交互设计提供借鉴.   手机产品交互设计的评估标准还是是否满足用户体验,当然,体验是一个很虚的东西,没有一个具体的量化标准,那我们就落在实 处,从可以量化的维度打分.

手机网站开发及手机中图片加速显示img的Canvas方法

- - CSDN博客Web前端推荐文章
    随着手机开发越来越流行,手机开发的很多框架也应运而生,比较好用的手机网站开发框架推荐如下:.     1、zeptojs,里面封装了很多手机特有方法,例如touch.js等等. 和jquery用法差不多,很好上手. API地址:http://zeptojs.com/#$.extend.     2、jquerymobile   演示地址:http://jquerymobile.com/.

BizzTrust:用虚拟手机的方法解决 Android 的安全问题

- SotongDJ - 爱范儿 · Beats of Bits
一向以严谨著称的德国人,试图用“隔离”的方法来解决 Android 手机的安全隐患,这家名为 Fraunhofer  的公司,发布了 BizzTrust For Android 计划,并提出了“虚拟手机”的概念. “隔离”的概念由来已久,这与欧洲人非常注重自己的私人空间有关. 诺基亚 E71 的老用户应该还记得“工作”和“个人”的两套设置:不同的桌面主题,不同的铃声和快捷方式.

模板方法

- - 博客园_首页
由于前两天刚好用到模板方法这个模式,而且这个模式相对来 比较简单实用,就写写个人的一些认知吧. 大家对宋丹丹和赵本山的小品里有一个很经典的台词一定不会陌生,而且还日常中经常引用:. 《钟点工》中宋丹丹问要把大象装冰箱,总共分几步. 赵本山就懵了,大象那么大,冰箱那么小,怎么才能把大象装冰箱里呢. 答案也很经典:三步:第1步,把冰箱门打开;第2步,把大象装进去;第3步,把冰箱门带上.

详解 equals() 方法和 hashCode() 方法

- - ImportNew
Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码. equals()和hashCode()都不是final方法,都可以被重写(overwrite). 本文介绍了2种方法在使用和重写时,一些需要注意的问题. Object类中equals()方法实现如下:.

mysql优化方法

- - 数据库 - ITeye博客
通过show status和应用特点了解各种SQL的执行频率. 通过SHOW STATUS可以提供服务器状态信息,也可以使用mysqladmin extended-status命令获得. SHOW STATUS可以根据需要显示session级别的统计结果和global级别的统计结果. 以下几个参数对Myisam和Innodb存储引擎都计数:.

WinDump使用方法

- - 研发管理 - ITeye博客
Windump是Windows环境下一款经典的网络协议分析软件,其Unix版本名称为Tcpdump. 它可以捕捉网络上两台电脑之间所有的数据包,供网络管理员/入侵分析员做进一步流量分析和入侵检测. 在这种监视状态下,任何两台电脑之间都没有秘密可言,所有的流量、所有的数据都逃不过你的眼睛(当然加密的数据不在讨论范畴之内,而且,对数据包分析的结果依赖于你的TCP/IP知识和经验,不同水平的人得出的结果可能会大相径庭).

手机防尘塞

- Zoe - 玩意儿
如果你的 iPhone 平常不插耳机,那么如何防止耳机孔进灰尘呢. 其实不仅仅是它,很多手机的耳机孔太大,容易进入异物,时间长了,积累很多灰尘又不容易清理. 日本一家名叫 hashy-topin 的公司推出一款 Plugy 产品,专门堵 iPhone 耳机口. 它的插头设置成了耳机插头的样式,可以填充满耳机接孔,外面是一个个可爱的造型装饰,共有嫩芽、螺丝、发条、水龙头、蘑菇、钥匙6款.