浅析手机抓包方法实践(zt)
原文:http://drops.wooyun.org/tips/12467
0x00 摘要
在移动逆向分析以及 App 开发的时候,总会需要对其网络行为进行监控测试,本文总结一些抓包思路,并对其使用方法进行实践
笔者认为在抓包界,Wireshark 应该算是综合排名第一的工具(其实 Wireshark 自带的命令行工具 tshark 更牛逼)
本文总结记录了 5 种抓包方式,掌握其一即可进行实践,欢迎大家一起交流分享
0x01 基于 Wireshark
实验步骤:
1.1 在电脑主机上使用猎豹 Wifi之类的工具,开启热点,将所要测试的手机连接该热点,记录其IP地址

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


1.3 总结
该方法简单粗暴高效,可以将捕获的数据包随时保存下来,便于后续分析或者进行 PCAP 可视化分析。
关于命令行工具 tshark 在此不做赘述,感兴趣的读者自行研究。
0x02 基于 tcpdump
实验环境:
下载安装 Genymotion 安卓虚拟机,在该模拟器环境种进行实践操作(基于实体手机亦然,前提是手机必须得 ROOT)
笔者仅在 Android 系统下测试,未在 iOS 系统下实验
实验步骤:
2.1 说明
模拟器中自带的 tcpdump 工具,位于: /system/xbin/ 目录下
2.2 数据包捕获
可以通过 adb shell 命令在 CMD 模式下连接模拟器,su 到 root 模式进行抓包
|
1
|
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 进行查看:
|
1
|
adb pull /sdcard/capture.pcap C:\tmp |
TIPS:将数据包文件 push 到手机上命令为
|
1
|
adb push C:\tmp\capture.pcap /sdcard/ |
0x03 基于 Fiddler 4
实验步骤:
3.1 下载 FIddler 4
3.2 设置 Fiddler 4
打开Fiddler,Tools-> Fiddler Options (配置完成记得重启 Fiddler)


3.3 设置手机代理
首先,获取安装 Fiddler 4 的 PC 对应的 IP 地址(ipconfig):

确保手机和 PC 是连接在同一个局域网中!!!
下面对手机进行设置(笔者使用小米测试机):点击手机中“设置”——Wi-Fi——选择已经连接的wifi——代理设置改为手动

下载 Fiddler 的安全证书
使用手机浏览器访问:http://10.2.145.187:8888,点击"FiddlerRoot certificate",然后安装证书即可。
至此,已经全部设置完毕。
3.4 数据包捕获
重新打开 Fiddler 4,然后打开手机中的浏览器,访问任意网址,Fiddler 抓包信息如下:

Enjoy!
0x04 基于 Charles
实验环境:
win7 + Charles v3.11
一般使用 Charles 都是基于 MAC OS ,笔者在 mac 平台以及 windows 平台均试验过,操作过程和思路基本一致,因此,本文以 win7 为测试环境
实验步骤:
4.1 捕获 http 数据包
手机设置代理:

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


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



设置 Charles:
选择 Proxy —— SSL Proxying Settings —— Locations —— Add
在弹出的表单中填写 Host 域名(也就是你想要抓包链接的主机名),以及对应的 Port 端口(此处相当于过滤作用)
当然,你可以采用更加粗暴的方式:使用通配符,例如你想要捕获所有的 https 包,这里也可以直接都为空,表示捕获所有的主机和端口;或者都分别填“*”星号,匹配所有的字符,捕获所有的 https。



0x05 基于 Burpsuite
实验步骤:
5.1 捕获 http 数据包
PC 端 Burpsuite 设置:

手机端代理设置方法同以上 3.3 4.1
打开 Burpsuite 即可捕获 http 数据包:

5.2 捕获 https 数据包
手机端设置好代理之后,使用浏览器访问:http://burp/


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

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



成功捕获 https 数据包

0x06 总结
当我们停止捕获数据包时,将Fiddler 或 Charles 关闭,此时手机端是无法正常访问网络的,因为设置了代理,这时候需要将代理关闭,即可正常浏览网页
对于大多数走代理的应用可以选择 Fiddler 或 Charles,无需 root,一次配置,终身使用;对于不走代理的 App 可以利用 tcpdump 捕包,然后使用 Wireshark 查看;最简单便捷的便是第一种方法「0x01. 基于 Wireshark」
以上所有工具各有优劣,读者可以根据工作环境,按需使用,个人觉得一般情况下使用 Wireshark + Fiddler 或者 Wireshark + Charles 即可完成各平台的抓包分析任务
以上工具中只有BurpSuite可以对抓包过程进行交互式操作;Wireshark支持的协议最多,也更底层,功能强大,但过于沉重
对于本文涉及的相关工具的安装、设置、破解、详细使用,不在本文讨论范围之内(Charles 免费版其实还比较厚道,如果重度需要,建议购买正版),本文旨在浅析捕获移动终端数据包的方法和思路
0x07 参考文献
- 抓包工具Fidder详解
- Mac上的抓包工具Charles
- 网络抓包工具Charles的介绍与使用
- charles使用教程指南
- Android安全测试之BurpSuite抓包
- Android利用tcpdump和wireshark抓取网络数据包
浅析手机抓包方法实践(zt)的更多相关文章
- ADB工具和手机抓包方法介绍
Android抓包方法 工具包内容如下:(下载地址:http://download.csdn.net/download/yezhaohui2011/8368061) adb ——谷歌提供的安卓远程调试 ...
- fiddler手机抓包配置方法
一.下载工具包 百度搜索”fiddler 下载“ ,安装最新版本 下载的软件安装包为“fiddler_4.6.20171.26113_setup.exe”格式,双击安装.安装成功,在“开始”-“所有程 ...
- [fiddler] 手机抓包
最近工作涉及到与原生app联调,需要抓取手机上的请求.借此机会研究了下fiddler,简直神器. 以下简单介绍通过fiddler进行手机抓包的方法,之后也会陆续更新fiddler的其他功能 设置fid ...
- Android抓包方法(三)之Win7笔记本Wifi热点+WireShark工具
Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等 ...
- Android抓包方法(二)之Tcpdump命令+Wireshark
Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...
- Android抓包方法(一)之Fiddler代理
Android抓包方法(一) 之Fiddler代理 前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机 ...
- Fiddler手机抓包工具如何设置过滤域名?
fiddler手机抓包工具如何设置过滤域名?如题.fiddler抓包可以完成我们移动开发者的调试测试需求.所以说抓包尤其重要,但是多余的网页请求和手机的其他链接影响我们手机开发的需求.下面我教大家怎么 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
- Android 下使用tcpdump网络抓包方法
Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...
随机推荐
- mysqldump 逻辑备份的正确姿势
在上一篇文章 MySQL 命令行工具之 mysqldump 深入研究 中,我们搞定了mysqldump的参数和基本原理.那么我们该怎么样最好的使用它的?它有哪些坑呢? 1. 利用mysqldump进行 ...
- linux文件分发脚本
1.说明 此脚本可分发两类文件,1.固定内容文件,2.(每台被分发主机)内容不同的文件 ppp.sh为拨号脚本,每台被分发主机内容不同 根据分发文件名字不同(ppp.sh和其他文件)自动选择分发方式 ...
- Android UI编程(1)——九宫格(GridView)
(转自:http://blog.csdn.net/Thanksgining/article/details/42968847) 参考博客:http://blog.csdn.net/xyz_lmn/ar ...
- Android设置AlertDialog点击按钮对话框不关闭(转)
(转自:http://blog.csdn.net/winson_jason/article/details/8485524) 当我们在用到Android alertDialog创建对话框 的时候,我们 ...
- scp报错:not a regular file,解决方法:加参数 -r
命令:scp -P1234 /data/aa root@192.0.0..0:/data 文件结构:/data/aa/yearmonth=2015-09 报错:not a regular fi ...
- Linux 下从头再走 GTK+-3.0 (一)
原本由于项目需求在 Linux 下学习过一段时间的 GTK+2.0 图形开发,时隔一段时间,想真正深入学习一下 GTK . 这次直接从头学习 GTK+-3.0 ,并写下博文便于日后查看,也方便新手入门 ...
- 一:c语言(数据类型和运算符)
#include <stdio.h> /*就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作.*/ int main() /*C程序就是执行主函数 ...
- 理解 QEMU/KVM 和 Ceph(1):QEMU-KVM 和 Ceph RBD 的 缓存机制总结
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
- JAVA bio nio aio
[转自]http://qindongliang.iteye.com/blog/2018539 在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? ...
- 150924-还是起得来床的好-HTML(CSS)
一早醒来是9:10,这些天最晚的了,也可能是睡的最爽的了. 不废话,早上Matlab仿真干不出来,不如学学html,上代码~ <!DOCTYPE HTML><html>< ...