在Wireshark上捕获手机流量

303

我该如何在Wireshark上捕获手机流量?


Windows用户可以尝试这个 https://dev59.com/EmIi5IYBdhLWcg3w9wUU#65774666 - Mohammed Javad
15个回答

383

以下是一些建议:

  1. 对于任何网络的Android手机:Root您的手机,然后在上面安装tcpdump。 这个应用程序 是一个tcpdump包装器,它将安装tcpdump并启用您使用GUI开始捕获。 提示:您需要确保为捕获提供正确的接口名称,这因设备而异,例如-i eth0-i tiwlan0 - 或使用-i any记录所有接口

  2. 适用于Android 4.0+手机Kismet的Android PCAP 使用USB OTG接口支持数据包捕获,无需root权限。我没有尝试过这个应用程序,而且对所支持设备的类型有一些限制(请参见其页面)

  3. 对于Android手机tPacketCapture 使用Android VPN服务拦截数据包并捕获它们。我已经成功地使用了这个应用程序,但它似乎也会影响大流量(例如视频流)的性能

  4. 适用于任何网络的IOS 5+设备:iOS 5添加了一个远程虚拟接口(RVI)功能,使您可以使用Mac OS X数据包跟踪程序从iOS设备捕获跟踪。有关更多详细信息,请参见这里

  5. 对于所有仅支持Wi-Fi的手机:将您的Mac或者PC设置为无线接入点,然后在计算机上运行 Wireshark。

  6. 对于所有仅支持Wi-Fi的手机:获取一个可以嗅探Wi-Fi的捕获设备。这种方法可以获取802.11x头部信息,但是有可能会漏掉一些数据包。

  7. 使用VPN服务器进行抓包:使用 OpenVPN 轻松创建自己的 VPN 服务器。然后将移动设备设置为VPN 客户端,并在服务器端捕获流量。


1
如果你有兴趣在Windows 7及以上平台上设置一个流氓接入点,并使用Wireshark捕获数据包,请查看我在http://mohit.io/blog/windows-capture-analyze-mobile-device-network-traffic/上整理的步骤。这将适用于任何支持WiFi的设备(Android,iOS,Wii,XBox等)。 - mohit
3
关于选项2:那几乎是不存在的选项。从他们的页面上看:“您将需要[...]和一个基于RTL8187的无线网卡”!!! - matteo
1
对我来说,选项 #3 是最简单的方式,用于执行简单任务,例如检查某个应用程序调用了什么。 - Nighto
1
大多数情况下,这些方法对于从未离开设备的数据包或已经使用 VPN 的情况都不起作用。因此,它们对于解决 MTU/分段相关问题是无用的。 - anon
1
如果我想做相反的事情怎么办?使用我的usb连接的智能手机来捕获我的PC数据包?基本上在我的Android手机上运行类似Wireshark的软件。 - dominicbri7
显示剩余6条评论

47
除了rupello的出色回答外,还有一个“不太正当”但非常有效的技巧:
对于所有手机,在任何(本地)网络中:设置您的PC来中间人攻击您的移动设备。
使用Ettercap在您的移动设备和路由器之间进行ARP欺骗,并且所有移动设备的流量都将显示在Wireshark中。请参阅此教程以获取设置详细信息。

3
在Mac OS上,您还可以使用Charles代理进行HTTP流量捕获,它有一个非常不错的界面和功能。您需要将您计算机的本地IP设置为手机上的代理。如果您在手机上安装了Charles的证书,则还可以嗅探TLS流量而不会收到警告。 - minipif

42

这里没有提到的另一个选择是,使用来自Android SDK的Android模拟器运行您要监视的应用程序。然后,您可以轻松地在同一台计算机上使用Wireshark捕获流量。

对我而言,这是最简单的选择。


2
这是一个有趣的选项。它能处理SSL数据包吗? - ransh
最好和最简单的选择就是这个。为什么要折腾手机?获取 root 权限,编译 tcpdump 以兼容 ARM CPU,对本地网络进行 arpspoofing 以将流量定向到以太网 BLAH BLAH BLAH,最终运行 Wireshark 并捕获数据包?只需在模拟器中安装应用程序并捕获以太网即可。非常简单。 - pouya
1
由于存在一些无法更改的第三方库,它们会检测到应用程序在模拟器上运行并改变其行为。因此,您需要使用真实设备来测试应用程序。 - Vaulter

30

Wireshark + OSX + iOS:

总体来说,这是一篇很好的概述,但如果您想了解有关 Wireshark + OSX + iOS 的详细信息,请执行以下操作:

  • 在您的计算机上安装 Wireshark
  • 通过USB电缆将iOS设备连接到计算机
  • 将iOS设备和计算机连接到相同的WiFi网络
  • 在OSX终端窗口中运行此命令:rvictl -s x 其中 x 是您的iOS设备的UDID。 您可以通过iTunes找到iOS设备的UDID(确保使用的是UDID而不是序列号)。
  • 进入 Wireshark Capture->Options,然后会出现对话框,单击行 rvi0,然后按 Start 按钮。

Wireshark Capture Options Dialog Box

现在,您将看到 iOS 设备上的所有网络流量。 这可能会非常压倒性。 以下是一些提示:

  • 不要使用带有 VPN 的 iOS,您将无法理解加密流量
  • 使用简单的过滤器关注有趣的流量
  • ip.addr==204.144.14.134 查看源或目标地址为 204.144.14.134 的流量
  • http 只查看 HTTP 流量

以下是一个示例窗口,用于显示从 204.144.14.134 下载 PDF 的 TCP 流量:

Wireshark TCP traffic for pdf download from 204.144.14.134


11

对于 Android 手机,我使用了 tPacketCapture 应用程序: https://play.google.com/store/apps/details?id=jp.co.taosoftware.android.packetcapture&hl=en

这个应用程序真是救了我的一命。我要调试我的 Android 应用程序的 SSL/TLS 握手失败问题。先尝试设置临时网络以便在笔记本电脑上使用 Wireshark 来捕获数据包,但不起作用。这个应用程序让我能够快速地捕获网络流量,并将它分享到 Google Drive 上,以便我可以在我的笔记本电脑上下载并使用 Wireshark 来分析!非常棒,而且不需要 root 权限!


如果您的问题仅在使用VPN时出现(并且从未出现在中心/路由器上),则无法解决。 - anon

8

Packet Capture Android app 实现了一个VPN,可以记录Android设备上的所有网络流量。您无需在计算机上设置任何VPN /代理服务器。不需要Root权限。支持SSL解密,而tPacketCapture则不支持。此外,它还包括一个良好的日志查看器。


那个 VPN 不工作了... 没有页面打开或数据获取... 有那个 VPN 就像没有互联网连接一样... - Himanshu Bansal

7

前提条件:您的计算机已安装adb和wireshark,并且您有一个已root的android设备。

  1. 下载tcpdump 到~/Downloads
  2. adb push ~/Downloads/tcpdump /sdcard/
  3. adb shell
  4. su root
  5. mv /sdcard/tcpdump /data/local/
  6. cd /data/local/
  7. chmod +x tcpdump
  8. ./tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap
  9. 在捕获足够的数据包后,按CTRL+C
  10. exit
  11. exit
  12. adb pull /sdcard/dump.pcap ~/Downloads/

现在您可以使用Wireshark打开pcap文件。


5

3
仅适用于HTTP/HTTPS流量。 - Brad

4
与将您的PC变成无线接入点类似,但要简单得多的是使用反向绑定。如果您恰好拥有HTC手机,则可以在网络/移动网络共享设置下找到一个名为“Internet pass-through”的漂亮的反向绑定选项。它会将所有流量路由通过您的PC,并且您只需要在那里运行Wireshark即可。

3

将您的笔记本电脑变成手机(任何手机)的wifi热点,并连接到互联网。使用Wireshark在您的wifi接口上嗅探流量。

您将了解到许多反隐私的内容!


8
你能否更具体地说明如何在至少一个平台上完成它(Windows、Linux或Mac OS X)? - Alexandre Marcondes
@FireCruZ,如果您能提及如何在Mac OS上执行此操作,那就太好了。 - Sepideh Vatankhah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接