嗅探 Android 应用程序以查找 API URL

我很好奇,如果 Android 应用程序(我安装的任何应用程序)对某个在线服务器(例如 RESTful 服务)进行 API 调用,我如何才能算出它使用的 API URL。我假设我必须在设备上捕获数据包,然后也许在 Wireshark 或者其他什么地方分析它们来找到 URL?我在 Java/Android 开发方面相当有能力,但在任何类型的网络分析业务方面都有些迷失。

148065 次浏览

你可以做到这一点与 网络鲨鱼的帮助。我在这里列出的步骤

  1. 在计算机上安装 网络鲨鱼
  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. 选择要捕获的接口,然后单击“开始”开始捕获。

    wireshar start image

  9. 现在开始使用这个应用程序,这样数据包就可以来回传输,wireshark 就可以捕捉到它。

    list of packets

  10. 如果你已经使用应用程序覆盖所有类型的活动,那么你可以停止 wireshark 捕获数据包。

  11. 现在开始主营业务仔细分析数据包,但并非所有数据包对我们的工作都有用。所以让我们过滤与你相关的信息包。让你的 IP 地址是192.168.0.32,然后过滤所有 IP 是这个的数据包。所以过滤器表达式将是 ip.addr==192.168.0.32应用这个过滤器。我们仍然应用另一个过滤器列出只有相关的数据包,只有这样,应用程序访问 API 与 HTTP 协议,所以应用 HTTP 过滤器。表达式是 http。您可以申请两个都是过滤器一次按 ip.addr==192.168.0.32 and http进行申请。

    wireshark details

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

使用调试代理。点击播放按钮,您将能够捕获网址和查看更多的细节

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

  1. 安装虚拟盒子和 Genymotion Http://www.2daygeek.com/install-upgrade-oracle-virtualbox-on-ubuntu-centos-debian-fedora-mint-rhel-opensuse/ 并且 < a href = “ http://www.2daygeek.com/install-genymotion-android-Simulator-on-ubuntu-centos-debian-fedora-rhel-opensuse-arch-linux-mint/#”rel = “ nofollow norefrer”> http://www.2daygeek.com/install-genymotion-android-emulator-on-ubuntu-centos-debian-fedora-rhel-opensuse-arch-linux-mint/#
  2. 运行 Genymotion。 3. 之后你想要的安卓 ADV 安装。
  3. 现在用 root 访问启动 wireshark

一个非常快的方法。
进入 PlayStore,搜索 < a href = “ https://play.google.com/store/apps/Details? id = app.greyshirts.sslcatch”rel = “ noReferrer”> < strong > Packet Capture

下载、安装和运行。
它简单快捷,可以提供 API、 URL 的详细信息以及头部的响应。

这个应用程序遵循 包嗅探的概念,因此,这可能不适用于诸如 WhatsApp、 Facebook、 Twitter 之类的安全应用程序。

更新1:
在 Playstore 中已经没有 一个 href = “ https://play.google.com/store/apps/Details? id = app.greyshirts.sslcatch”rel = “ noReferrer”> < strong > 数据包捕获 了,请尝试 < a href = “ https://play.google.com/store/apps/Details? id = com.eolwral.osmonitor”rel = “ noReferrer”> < strong > OS Monitor

更新2:
< strong > 数据包捕获 又可用了。

从这个站点下载用于 PC 的 Android + 6.0镜像: https://www.android-x86.org/

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

确保你的应用程序和这个 Android 版本一起工作——你可以在 Google Play商店里查看最小的 Android 版本——不要为 Android 版本选择太高的数字: 数字越高,安全约束就越多。

安装 VirtualBox,挂载 ISO 映像,启动 Android,并通过 GooglePlay 安装应用程序。

现在你有两个选择:

  1. 如果流量没有加密,你可以将所有的 NIC 流量记录到一个文本文件中

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

  3. 如果应用程序使用证书固定,那么它就会变得更加复杂。读读这个 博客。您必须对 x86图像使用 这个方法。注意,在那篇文章中,作者使用的是 Android x868.1(而不是 x64!)和 Xposed Android SDK27。祝你好运! !

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

  1. 进入设定 > 网络及互联网 > 流动热点,并启用与其他设备分享我的互联网连接。

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

  3. 现在获得互联网接入在您的移动点击更改适配器选项。

  4. 通过右键单击互联网所在的网络适配器转到属性 共享给你的窗口机器。

  5. 方法,在“共享”选项卡中选择“ Internet 连接共享”选项 适当的连接(移动设备使用的局部区域连接) ,然后点击确定。

现在,如果你选择移动设备所使用的局域网连接,你就可以看到移动设备在 Wireshark 的所有网络流量。为了通过 http 流量过滤结果,您可以在 filter 字段中输入 http,对于 https网络流量,您可以输入 tls.handshake.type eq 1

试试经典的 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]

我知道这个帖子已经很老了,但是在2022年使用邮递员代理服务会有所帮助。 查看这个链接可以看到简单的步骤 Https://blog.postman.com/using-postman-proxy-to-capture-and-inspect-api-calls-from-ios-or-android-devices/

请参阅此处设置 https 流量 https://learning.postman.com/docs/sending-requests/capturing-request-data/capturing-https-traffic/

你可以使用以下 https://github.com/kendarorg/httpansweringmachine : 能够记录(更改和重播)所有 http 和 https 调用以及拦截所有联系的服务器。只需像这样设置: https://github.com/kendarorg/HttpAnsweringMachine/blob/main/docs/generated/googlehack_android.md添加需要捕获的地址的 dns 和 ssl 证书,然后记录它们(https://github.com/kendarorg/HttpAnsweringMachine/blob/main/docs/generated/localsample.md)。它将存储所有可读的内容。只需要一个个人电脑或 mac 与 java 11,并准备开始:) PS 我是项目的创造者: p