【问题标题】:Sniffing an Android app to find API URL嗅探 Android 应用程序以查找 API URL
【发布时间】:2014-01-13 17:02:55
【问题描述】:

我很好奇,如果 Android 应用程序(我已安装的任何应用程序)对某个在线服务器(例如 RESTful 服务)进行 API 调用,我该如何计算它使用的 API URL。我想我必须在设备上捕获数据包,并可能在 Wireshark 或其他东西中分析它们以找到 URL?我在 Java/Android 开发方面相当胜任,但在涉及任何类型的网络分析业务时有点迷茫。

【问题讨论】:

  • 你可以使用像 Charles 这样的调试 HTTP 代理。
  • 正如我所指出的,我对网络分析或调试不是很有经验,您能否扩展您的评论?谢谢
  • 基本上,你在你的电脑上安装 Charles,告诉你的 Android 设备使用那台电脑作为 HTTP 代理,然后所有的请求都将通过那里发送,让你可以看到通过应用程序发出的各个请求. SSL 稍微复杂一些。

标签: android wireshark packet-capture packet-sniffers network-security


【解决方案1】:

您可以在WireShark 的帮助下完成此操作。我在这里列出步骤

  1. 在您的计算机上安装 WireShark
  2. 现在我们必须创建 Android 虚拟设备 (AVD),所以我们将从官方网站下载 Android SDK。 Android SDK自带模拟器进行测试
  3. 设置 Android SDK 后,创建一个 Android 虚拟设备 (AVD),我们将在其上安装应用程序
  4. 启动该虚拟设备。您可以使用命令行启动 (emulator @<AVD name>)
  5. 创建虚拟设备后使用 adb 命令安装应用程序adb install app_file_name.apk
  6. 现在我们可以开始捕获数据包,因此我建议关闭您计算机上正在使用网络的其他应用程序,以便我们捕获的数据包更加相关。
  7. 现在以 root 权限启动 wireshark
  8. 选择您要捕获的接口并单击开始开始捕获。

  9. 现在开始使用该应用程序,以便数据包来回传输,wireshark 将捕获它。

  10. 如果您使用过涵盖各种活动的应用程序,则可以停止使用wireshark 来捕获数据包。

  11. 现在开始主要业务仔细分析数据包,但并非所有数据包都对我们的工作有用。因此,让我们过滤与您相关的数据包。让你的 IP 地址是 192.168.0.32 然后过滤所有 IP 是这个的数据包。所以过滤器表达式将为ip.addr==192.168.0.32 应用此过滤器。我们仍然应用另一个过滤器来仅列出相关数据包,因此可能该应用程序正在使用 HTTP 协议访问 API,因此应用 HTTP 过滤器。表达式为http。您可以同时应用这两个过滤器ip.addr==192.168.0.32 and http 按回车键应用。

  12. 仔细查看列出的数据包的信息,您会看到许多重要的细节、API 密钥、cookie 等

【讨论】:

  • 你必须安装android sdk才能获得adb和模拟器
  • 那么 https 呢?如果通过 https 协议连接的应用程序仍然可以 whireshark 记录?
  • 使用 https,协议是“TLS 1.2”并且请求是加密的,所以请求由wireshark记录但没有太多有用的信息(没有端点,没有cookie)
  • 是否显示https日志?
【解决方案2】:

一种非常快速的方法。
进入PlayStore,搜索Packet Capture

下载、安装并运行。
这很容易简单快速。它将为您提供有关 API、URL 和响应及其标头的详细信息。

此应用程序遵循Packet Sniffing 的概念。因此,这可能不适用于 WhatsApp、Facebook、Twitter 等非常安全的应用程序。

更新 1:
Packet Capture 在 Playstore 中不再可用,请尝试 OS Monitor

更新 2:
Packet Capture 再次可用。

【讨论】:

  • Play 商店不再提供该应用。有替代解决方案吗?
  • 原来建议的应用程序仍然可用(再次)和以前一样。
  • 这很简单,对我有用。这应该是公认的答案,谢谢。
  • 目前在最近的android中被破坏了。
【解决方案3】:

在 windows 10 机器上,只需按照以下步骤操作:

  1. 进入设置>网络和互联网>移动热点并启用与其他设备共享我的互联网连接。

  2. 将您的移动设备连接到该共享热点。

  3. 现在要在您的移动设备中访问互联网,请单击更改适配器选项。

  4. 通过右键单击互联网所在的网络适配器转到属性 正在共享到您的 Windows 机器。

  5. 通过选择共享选项卡中的 Internet 连接共享选项 适当的连接(移动设备使用的本地连接),然后单击确定。

现在,如果您选择移动设备使用的本地连接,您将能够在 Wireshark 中查看移动设备的所有网络流量。要按 http 流量过滤结果,您可以在过滤字段中输入 http,对于 https 网络流量,您可以输入 tls.handshake.type eq 1

【讨论】:

  • 简单的解决方案,但要使用现代 Android 应用程序分析 HTTPS 内容几乎是不可能的
【解决方案4】:

从此站点下载适用于 PC 的 Android +6.0 映像:https://www.android-x86.org/

例如:https://www.android-x86.org/releases/releasenote-6-0-r3.html

确保您的应用适用于此 Android 版本——您可以在Google Play 商店查看最低 Android 版本——并且不要为 Andriod 版本取过高的数字:数字越高,有更多的安全限制。

安装VirtualBox,挂载ISO镜像,启动Android,通过Google Play安装应用。

现在你有两个选择:

  1. 如果流量未加密,您可以将所有 NIC 流量记录到文本文件中。例如VBoxManage modifyvm "vm-name" --nictrace1 on --nictracefile1 c:\file.pcap(参见here

  2. 如果流量已加密,您可以使用中间人方法。一个允许这样做的应用程序是HttpCanary。它将建立一个 VPN 连接并通过该 VPN 重定向您的流量。它可以解密并且运行良好,但请注意您的私人数据。

  3. 如果应用程序使用证书固定,那么它会变得更加复杂。阅读此blog。您必须在 x86 图像上使用 this 方法。请注意,在那篇文章中,作者使用的是 Android x86 8.1(不是 x64!)和 Xposed Android SDK27。祝你好运!!

【讨论】:

  • HTTPCanary 是唯一适合我的解决方案
【解决方案5】:

使用调试代理。单击播放按钮,您将能够捕获 URL 并查看更多详细信息

https://play.google.com/store/apps/details?id=com.dans.apps.webd

【讨论】:

    【解决方案6】:

    【讨论】:

      【解决方案7】:

      试试经典tcpdump

      $ tcpdump -D
      1.eth0 [Up, Running, Connected]
      2.any (Pseudo-device that captures on all interfaces) [Up, Running]
      3.lo [Up, Running, Loopback]
      4.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless]
      5.usbmon2 (Raw USB traffic, bus number 2)
      6.usbmon1 (Raw USB traffic, bus number 1)
      7.usbmon0 (Raw USB traffic, all USB buses) [none]
      8.nflog (Linux netfilter log (NFLOG) interface) [none]
      9.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
      10.dbus-system (D-Bus system bus) [none]
      11.dbus-session (D-Bus session bus) [none]
      12.bluetooth0 (Bluetooth adapter number 0)
      13.eth1 [none, Disconnected]
      

      【讨论】:

        猜你喜欢
        • 2012-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 2016-01-20
        • 1970-01-01
        • 2011-07-23
        相关资源
        最近更新 更多