移动端https抓包那些事--进阶篇

本文深入探讨了在已root的Android设备和已越狱的iOS设备上抓取HTTPS流量的方法。介绍了通过Xposed框架结合JustTrustMe模块及SSLKillSwitch2工具实现证书校验的绕过,从而实现深层次抓包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一次和大家介绍了手机端https抓包的初级篇,即在手机未root或者未越狱的情况下如何抓取https流量,但是当时分析应用时会发现,好多应用的https的流量还是无法抓取到,这是为什么呢?

主要原因还是客户端在实现https请求时对于证书的校验上,如果仅仅校验是否有证书但是未严格校验证书的有效性时,就可以通过手机客户端安装抓包工具的证书来绕过签名校验,但是如果客户端做了严格的证书校验,如果不是受信任证书则无法正常进行https通信,遇到这种情况我们该如何抓取https流量来进行业务分析呢?

接下来就进入我们的第二篇章-进阶篇,深层次抓包(浅层次抓包 -> 移动端https抓包那些事--初级篇)。

这一次就会对我们的设备有所要求了,安卓设备要求设备root,iOS设备要求越狱。后续我们依然会分两个平台来依次介绍如何进行操作。

 


Android平台

 

在Android平台上的操作主要是通过hook的方式,将应用及系统中验证https证书的逻辑全部hook为验证结果正确,这样无论安装的证书是否有效,皆可进行正常的https通信。

这里就需要对手机安装hook框架,这里用到的hook框架为Xposted,官方下载地址:

http://repo.xposed.info/module/de.robv.android.xposed.installer ,这里需要注意的是,在Android4.0-4.4是可以直接通过安装apk的方式开刷入Xposted框架,而在Android 5.0以上则需要刷入Xposted的固件包,具体的操作这里就不再赘述了,网上有很多教程已经讲的很详细了。

 

想要进行https抓包的话需要安装Xposted的一个开源模块--JustTrustMe,github链接地址为:https://github.com/Fuzion24/JustTrustMe ,下载最新版本的安装包,安装进手机,在Xposted中激活并重启手机,这时就可以随意抓取手机中的流量了。

 


iOS平台

 

iOS上就需要将手机进行越狱了,可以使用目前市面上比较流行的盘古越狱工具,但是目前只支持iOS10之前的版本,所以做移动安全研究或者渗透测试的,准备一台老版本的测试机还是很有必要的,说不定什么时候哪款工具就在最新系统上用不了了。

言归正传,在iOS上用到的这款工具叫做SSL Kill Switch 2,该工具使用了Cydia Substrate的钩子技术,这个钩子Hook了IOS的验证证书函数,使得他们接受任何证书。

 

SSL Kill Switch 2同样也是一款在Github上开源的软件:https://github.com/nabla-c0d3/ssl-kill-switch2 ,这里给大家简单介绍下如何安装这个工具。

首先在越狱后的Cydia工具中查看以下几项软件是否都安装完成:

Debian Packager

Cydia Substrate

PreferenceLoader

 

如图中所示:

 

 

如果都安装完成,那么从Github上下载最新的release包:https://github.com/nabla-c0d3/ssl-kill-switch2/releases ,如现在最新版的为v0.11 安装包为 com.nablac0d3.SSLKillSwitch2_0.11.deb ,将该文件拷贝到iOS设备中,拷贝文件可用iTools、iFunBox等工具。

如图所示:

用ssh链接iOS设备,找到deb文件传输目录(/User/Media):

 

执行如下命令进行安装:

dpkg -i com.nablac0d3.SSLKillSwitch2_0.11.deb
killall -HUP SpringBoard

回到Cydia中,查看安装的软件,已经在列表中了。

 

这时候就可以抓取https的流量了。

 


测试

证书安装完成之后,用手机访问一个https的网站,这时就发现https的数据包可以抓取到了。

原创作者 @龙刃(JDragons)转载请注明出处如有任何疑问请联系:JDragons@yeah.net
<think>嗯,用户现在的问题是关于如何过滤网络数据包并选择特定的抓包源。用户之前讨论过流签名,但这次的问题转向了网络抓包技术,看起来可能是实际工作中遇到了网络调试或安全分析的需求。 结合用户提供的三个引用内容,需要整合这些信息给出实用方案。引用[1]详细说明了Wireshark的两种过滤器类型,引用[2]补充了tshark和tcpdump的ICMP过滤实例,引用[3]则提到Fiddler的响应头过滤规则。用户的核心诉求很明确:既要精确过滤报文内容,又要指定抓包源。 用户可能正在处理以下场景之一:排查服务器网络问题需要抓取特定端口的流量,或是开发移动应用时只想捕获APP的API请求。考虑到用户之前研究过流签名这种专业流媒体安全技术,应该具备一定的网络基础,但可能对抓包工具链不熟悉。 准备从三个维度构建回答: 首先是抓包源选择,针对不同设备类型给出具体命令参数,比如Wi-Fi网卡名或docker虚拟接口; 其次是过滤条件设计,把协议、IP、端口这些常用过滤字段做成表格方便查阅; 最后补充特殊场景处理,比如容器环境或需要关联进程的情况。 注意到引用[2]里提到长时间抓包的内存压力问题,这点很重要,会在"最佳实践"部分强调先用捕获过滤器减少数据量。用户没有说明操作系统环境,所以必须覆盖Windows(Wireshark)、Linux(tcpdump)和跨平台方案(tshark)。 对于进阶需求,考虑加入BPF语法示例和进程级过滤这种深度定制内容,毕竟用户既然研究过HMAC和流签名,可能会需要高级调试手段。最后用相关问题引导到具体场景,比如容器网络或移动端抓包,这样能更精准解决用户的实际问题。</think>以下是如何过滤网络数据包并选择特定抓包源的完整指南,结合工具使用和场景分类: --- ### 一、抓包源选择(关键第一步) | **场景** | **工具/命令** | **操作示例** | |------------------------|----------------------------------------|-----------------------------------------------------------------------------| | **物理网卡** | Wireshark/tshark/tcpdump | `tshark -i eth0` (Linux) <br> `tcpdump -i en0` (Mac) <br> Wireshark图形界面选择网卡[^1] | | **无线网络** | 指定WiFi适配器名称 | `tshark -i "Wi-Fi"` (Windows) <br> `tcpdump -i wlan0` (Linux) | | **本地环回(127.0.0.1)** | 需特殊配置 | Windows:安装Npcap驱动后选择`Adapter for loopback` <br> Linux:`tcpdump -i lo` | | **Docker容器** | 捕获容器虚拟网卡 | 1. 查找容器网卡:`docker inspect <容器ID> \| grep ifIndex` <br> 2. 捕获:`tcpdump -i vethXXXX` | | **进程级过滤** | `npcapt` (Windows) / `bpfilter` (Linux) | `tshark -i npcap://DeviceNPF_{GUID} -f "process httpd.exe"` (Windows) | > 💡 **特殊场景**: > - **虚拟机流量**:选择宿主机的虚拟网卡(如VMnet) > - **手机抓包**:PC开启热点 → 捕获热点对应网卡流量 --- ### 二、过滤规则设计(分层过滤策略) #### 1. **捕获过滤器**(抓包时过滤,减少内存占用[^2]) | **过滤类型** | **语法示例** | **作用** | |--------------|----------------------------------|--------------------------------------| | 协议过滤 | `tcpdump icmp` | 仅抓ICMP包 | | IP地址过滤 | `tcpdump host 192.168.1.100` | 抓特定IP | | 端口过滤 | `tcpdump port 443` | 抓HTTPS流量 | | 方向过滤 | `tcpdump src 10.0.0.5 && dst port 80` | 抓源IP为10.0.0.5且目标端口80的包 | | 复合条件 | `tcpdump "tcp port 8080 and host 192.168.1.1"` | 多条件组合 | #### 2. **显示过滤器**(抓包后分析,灵活但内存占用高[^1]) | **工具** | **语法示例** | **功能** | |------------|---------------------------------------|-----------------------------------| | Wireshark | `http.request.method == "POST"` | 筛选HTTP POST请求 | | | `ip.src == 192.168.1.1 && tcp.flags.syn == 1` | 抓指定IP的TCP SYN包 | | Fiddler | `Response Headers: Set-Cookie` | 标记含Cookie的响应[^3] | | | `Hide IMAGE/*` | 隐藏所有图片请求[^3] | --- ### 三、最佳实践流程 ```mermaid graph TD A[确定抓包目标] --> B{需要实时过滤?} B -->|是| C[使用捕获过滤器<br>减少数据量] B -->|否| D[全量抓包后<br>用显示过滤器分析] C --> E[设计BPF语法规则<br>例:port 80 and host 1.1.1.1] D --> F[Wireshark:http contains “login”<br>Fiddler:Block image files] ``` --- ### 四、高级技巧 1. **BPF语法优化** ```bash # 抓取非本机且非DNS的HTTP流量 tcpdump 'tcp port 80 and not host 192.168.1.1 and not port 53' ``` 2. **进程关联(Windows)** 使用 `Process Monitor` + `Wireshark` 关联进程ID和网络活动 3. **容器流量捕获** ```bash # 直接捕获Docker容器流量 docker run --net=host corfr/tcpdump -i any -w capture.pcap ``` > ⚠️ **注意**: > - 捕获过滤器会丢弃不符合条件的数据包,**不可恢复** > - 关键故障排查建议先全量抓包,再用显示过滤器分析 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值