威立山

记录心路历程

0%

Wireshark抓包

介绍

网络抓包是个基础技能,对于网络协议的掌握有一定的要求。iOS上实现网络抓包可以用Charles(针对http和https),tcpdump(快速分析网络包),和Wireshare。和tcpdump相比,Wireshark提供丰富的GUI交互,而且能分析所有的网络协议。

  1. 首先安装软件 官网下载,目前最新版本v2.2.7

打开主界面
Wireshark主界面
Wireshark在第一个界面就把当前系统所包含的网卡列出来了,直接点击任何一项就可以开始监听通过该网卡的所有网络流量。

RVI接口创建和管理

当我们把iPhone通过usb连接macbook时,Wireshark并不能直接监听通过iPhone的网络流量,需要通过一个系统程序在我们的Mac系统上,建立一个映射到iPhone的虚拟网卡

  1. 通过数据线连接好iOS设备,拿到设备的UDID(Xcode或iTunes都行)
  2. terminal输入命令,格式是rvictl -s 设备UDID

执行命令之后Wireshark能立即识别新增加的rvi0网卡,也就是上图中高亮的部分,双击rvi0这一项,Wireshare即进入如下界面开始监听iPhone设备上的所有流量。

  • Android手机,可以下载个PacketCaptrue软件,用于抓包

如果出现下图错误,请用在终端用 sudo wireshark 命令启动
error

网络包结构

经典的TCP/IP五层结构:

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

应用层是最内层的payload,除了应用层这一层之外,其他层都是用自己这一层的协议header+所包含那一层的payload。可以用如下公式表示:
TCP Layer = TCP Header + Application Payload
IP Layer = IP Header + TCP Payload

使用Filter过滤包

使用Wireshark和使用Charles最大的区别在于,Charles只捕获HTTP流量,而Wireshark捕捉的是经过目标网卡所有的流量,流量包可以在几秒内膨胀到难以阅读的数量,所以此时我们需要使用Filter来做包的过滤,Filter规则定的越细,剔除掉的干扰信息就越多,分析起来就越快。

Wireshark的Filter分为两种,一种为Capture Filter,另一种是Display Filter。

  • Capture Filter出现在初始界面,在网卡列表的上方有个输入框,允许我们输入capture filter,一旦输入了特定的capture规则,Wireshark就只捕获符合该规则的流量包了。

  • Display Filter出现在流量监控界面,在工具栏的下方有个输入框,允许我们输入display filter,display filter只是从界面上过滤掉不符合规则的包,Wireshark实际上还是监听了这些包,一旦去掉display filter,所有的包又会出现在同一界面。
    Display Filter

语法规则可以查看Wireshark官方文档

流量跟踪

Wireshark默认情况下将不同网络连接的流量都混在一起展示,即使给不同协议的包上色之后,要单独查看某个特定连接的流量依然不怎么方便,我们可以通过Wireshark提供的两种方式来实现这个目标。

Follow Stream

当我们选中某个包之后,右键弹出的菜单里,有个选项允许我们将当前包所属于的完整流量单独列出来,如
TCP追踪流

Flow Graph

Flow Graph可以通过菜单Statistics->Flow Graph来生成,这样我们可以得到另一种形式的流量呈现

和Follow Stream不同的是我们获取到的是完整的流量,iPhone手机IP地址发出的流向多个服务器的网络流量,包括DNS解析和SSL安全握手等。当然我们也可以在上图中下方的操作区域做进一步的过滤,可以使用Display Filter做进一步的流量定位。