iPhone 和 WireShark

69
我该如何在我的网络中从我的iPhone上嗅探数据包?有人可以给我一些指示吗?我尝试了Google搜索,但没有任何教如何嗅探iPhone数据包的东西。我使用的是Windows系统。

我找到了一个使用WireShark的方法。然而,我需要逐步说明或者一些关于如何同时使用Wireshark和代理的指导。 - Strawberry
如何将我的iPhone连接到WLAN?什么是WLAN? - Strawberry
我知道 WLAN 是什么,但我不确定如何将这个难题解决。 - Strawberry
10个回答

69

更新(2021-04-01):由于使用了极古老版本的Java,Paros不再能够在许多操作系统上轻松安装和运行。

然而,现在有一个名为OWASP ZAP的分支可以用来达到相同的目的。

基本步骤如下:

  1. 在iOS设备上安装ZAP的根CA证书。
  2. 配置iOS设备的代理设置指向运行中的ZAP。
  3. 进行捕获。

有一篇由Omer Levi Hevroni撰写的博客文章,介绍了如何执行这些步骤的详细信息:OWASP ZAP结合iOS


你可以使用Paros来嗅探iPhone的网络流量。查看这篇优秀的逐步帖子以获取更多信息:http://blog.jerodsanto.net/2009/06/sniff-your-iphones-network-traffic/。此外,还可以在评论中查看一些使用其他代理工具完成相同任务的建议。

需要注意的是,通过上述方法Paras仅会嗅探HTTP GET / POST请求,因此要想嗅探所有网络流量,请尝试以下操作:

  1. 只需开启WiFi网络共享并运行数据包嗅探器,如(在OSX中)Cocoa Packet Analyzer
  • 然后在 iPhone 上通过 WiFi 连接到新网络。(系统偏好设置->共享->互联网共享)
  • 如果你想在 Windows 上嗅探这些数据包,可以使用以太网连接到互联网,共享你的互联网连接,并将 Windows 计算机作为你的接入点。然后,像往常一样运行 Wireshark 并拦截通过流动的数据包,按起始点过滤。或者,尝试使用网络集线器,因为 Wireshark 可以跟踪通过网络流动的所有数据包,如果它们使用相同的路由器端点地址(例如集线器)。


    谢谢,如果我想嗅探所有的数据包,我可以在Windows上使用什么程序? - Strawberry
    这篇博客文章没有明确说明一件事:如何获取用于代理的地址?你应该启动Mac上的“网络实用工具”应用程序。您将在“信息”选项卡(第一个选项卡)上看到一个“IP地址”。那就是您应该使用的地址。 - William Jockusch
    2
    链接中的说明非常糟糕。有很多人无法使其正常工作(请参见评论)。作者似乎是随意选择一个IP地址作为代理,但它应该是计算机/笔记本电脑的IP地址。 - Mike S
    1
    我可以让Paros处理SSL错误,但那是我所能做到的全部。对于无法接受无效证书的合法应用程序的流量嗅探而言,这非常无用。 - sam1370
    Paros在Windows上已经无法工作了。 - Nubcake

    40

    这对我很有用:

    1. 通过USB连接您的iOS设备

    2. $ rvictl -s UDID 其中 UDID 是您设备的UDID(位于XCode下的“设备”中,可使用快捷键 2

    3. $ sudo launchctl list com.apple.rpmuxd

    4. $ sudo tcpdump -n -t -i rvi0 -q tcp$ sudo tcpdump -i rvi0 -n

    如果 victl 不起作用,请安装 Xcode 和开发人员工具。

    有关更多信息,请参见远程虚拟接口,如需原始教程,请查看 Use Your Loaf博客文章


    我建议阅读 tcpdumpman 页面以了解标志的含义。此外,使用 -w 标志和 stdout 输出之间似乎存在差异。请参见 https://dev59.com/onfZa4cB1Zd3GeqPUKN2#19873132 - Jeff
    OP正在询问如何在Windows上完成这个任务。 - Nubcake

    21

    我已经成功使用代理工具Fiddler2来捕获HTTP网络流量,该工具可以安装在您的网络中的任何Windows计算机上。

    1. 在Fiddler中,打开“工具”->“Fiddler选项”->“连接”,勾选“允许远程计算机连接”。
    2. 确保您的Windows防火墙已禁用。
    3. 在iPhone/iPod上,进入无线设置,使用手动代理服务器,在代理服务器地址中输入Fiddler计算机的IP地址和相同的端口号(默认为8888)。

    7
    +1 好建议。我找到了一个逐步操作的指南:这里。此外,关于在 Fiddler 网站上获取 https 的帮助,请参考这里这里 - hmqcnoesy

    8
    以下方法适用于iPhone 4S(iOS 5)和Macbook Pro(10.8.2)
    1. 在您的Mac上,进入“系统偏好设置>共享>互联网共享” 2. 在您的iPhone上,进入“设置>无线局域网”,选择您的Mac作为无线接入点。点击旁边的蓝色详细信息披露,记下IP地址(在我的情况下是192.168.2.2)。此时,Mac任务栏上的wifi图标应更改为以下内容: 3. 打开wireshark。单击“开始捕获”并使用现在应该在选项中可用的新桥接接口。 4. ??? 5. 收益!
    与所有网络相关的东西一样,您可能需要重新启动wifi等,重复步骤并调用您最喜欢的神灵才能使此咒语起效 :)

    5

    我不得不做类似的事情,以找出为什么我的iPhone在几天内耗尽500Mb的流量,占用80%的蜂窝网络数据。

    不幸的是,我必须在3G/4G上进行数据包嗅探,不能依赖于无线网络。因此,如果您需要一个“工业级”解决方案,那么这就是如何嗅探任何网络上的全部流量(而不仅仅是http)。

    基本步骤:

    1. 安装VPN服务器
    2. 在VPN服务器上运行数据包嗅探器
    3. 将iPhone连接到VPN服务器并执行操作
    4. 从VPN服务器下载.pcap文件,并使用您最喜欢的.pcap分析器对其进行分析。

    详细说明:

    1. 获取一个Linux服务器,我使用了来自Digital Ocean 的5美元/月的Fedora 20 64位
    2. 配置OpenVPN。OpenVPN有全面的说明文档
    3. 确保您配置了通过VPN路由所有流量的部分
    4. 请注意(3)的说明均为iptables,而iptables已被防火墙firewall-cmd取代(在撰写本文时)。此网站解释了如何使用firewall-cmd
    5. 检查您是否可以连接您的iPhone到VPN。我通过下载免费的OpenVPN软件来完成这个过程。然后我设置了一个OpenVPN证书。您可以通过在<ca></ca>、<crt></crt><key></key>块中打开并嵌入--- BEGIN CERTIFICATE --- ---- END CERTIFICATE --- 来嵌入您的ca、crt和key文件。请注意,当我在Win上使用notepad.exe时,我必须在Mac上用文本编辑器来完成这个步骤。然后,我将它发送到我的iPhone并安装。
    6. 检查iPhone是否连接到VPN并通过VPN路由其流量(在iPhone上运行“google what's my IP”应该返回VPN服务器IP)
    7. 既然您可以连接,请进入您的Linux服务器并安装wireshark(yum install wireshark)
    8. 这会安装tshark,它是一款命令行数据包嗅探器。使用screen tshark -i tun0 -x -w capture.pcap -F pcap(假设VPN设备为tun0)在后台运行它
    9. 现在,当您想捕获流量时,只需在计算机上启动VPN即可
    10. 完成后请关闭VPN
    11. 从服务器下载.pcap文件,像往常一样进行分析。当数据到达服务器时,它已被解密,因此流量可以以明文查看(显然https仍然加密)。

    请注意,以上实现不侧重于安全性,而是关于获取所有iPhone在3G/4G/无线网络上传输的详细数据包捕获。


    1
    最后,为了结束这个问题,我发现是什么在消耗数据。我将其配置为个人热点,如果我重新启动路由器,那么我的电脑会连接到它并通过它路由所有数据。所以最终我发现当电脑正在进行某种网络流量时,我必须重置路由器,否则我的数据就会被耗尽! - PompeyPaul

    4

    tcpdump工具可以在GNU下使用。

    你可以使用它来替代wireshark


    3

    我推荐 Charles Web Proxy

    Charles是一款HTTP代理/HTTP监视器/反向代理工具,可以让开发人员查看他们的计算机与互联网之间的所有HTTP和SSL / HTTPS流量,包括请求、响应和HTTP头部(其中包含了cookie和缓存信息)。

    • SSL代理 - 查看以纯文本形式显示的SSL请求和响应
    • 带宽限制 - 模拟较慢的互联网连接,包括延迟
    • AJAX调试 - 将XML和JSON请求和响应作为树形结构或文本查看
    • AMF - 将Flash Remoting / Flex Remoting消息内容作为树状结构查看
    • 重复请求以测试后端更改,编辑请求以测试不同的输入
    • 断点 - 拦截和编辑请求或响应
    • 使用W3C验证器验证记录的HTML,CSS和RSS / atom响应的有效性

    它是跨平台的,用JAVA编写,非常好用。不像Wireshark那样令人不知所措,并且会自动设置代理等繁琐的东西。唯一的缺点是需要支付50美元的费用。但它是一个非常有用的工具。

    阅读有关Charles功能的更多信息。


    1
    这不适用于通过iPhone传递的数据包。 - Yozef

    2
    这样做最简单的方法当然是使用wifi。您需要确定您的wifi基站是作为集线器还是交换机。如果它作为一个集线器,那么只需将您的Windows PC连接到它,Wireshark就能够看到来自iPhone的所有流量。如果它是一个交换机,那么您最简单的选择就是购买一个便宜的集线器,将您的wifi基站的WAN端口连接到集线器上,然后再将运行Wireshark的Windows PC连接到集线器上。在那时,Wireshark就能够看到所有通过集线器传输的流量。

    1
    +1 这是我一直在使用的设备。效果非常好。如今最难的部分是找到一个合适的集线器... 我个人使用的是 Netgear DS104。 - Rob Napier

    2

    0
    您可以按照以下步骤进行:
    1. 安装Charles Web Proxy
    2. 禁用SSL代理(在代理 -> 代理设置... -> SSL中取消选中标志
    3. 按照此处所述的方法将您的iDevice连接到Charles代理。
    4. 通过Wireshark或Charles嗅探数据包。

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