【踩坑系列】最简单的方式对Android App 抓包

【踩坑系列】最简单的方式对Android App 抓包

1.背景1.步骤简述在当下的数字化时代中,HTTPS加密协议已成为众多应用程序保障其后端接口数据传输安全的标准,构筑了一道坚如磐石的信息安全壁垒,此举显著提升了数据传输的保密性和完整性,却也为那些旨在深入审计通信内容的安全专家们设置了一重隐形障碍,尤其是在面对加密流量时,传统的基于网络层的嗅探工具,如Wireshark,显得力有不逮。因此,高效分析此类加密通信的方法论变得尤为关键。正是在这样的需求驱动下,诸如BurpSuite及国内自主研发的Yakit等高级应用层代理工具崭露头角,它们在HTTP/HTTPS协议的深度解析与操控方面展现出非凡效能,成为了网络安全研究人员手中的利刃。然而,当这些工具涉足移动应用程序这一片错综复杂的领域时,未经细致调校便难以发挥其最大效能。

有鉴于此,本文旨在提供一条清晰精炼的路径,直达Android平台应用程序抓包实践的核心。主要步骤如下:

获取证书

对模拟器进行调整,获取root权限

上传证书到模拟器

查看证书、模拟器代理配置以及抓包

2.使用到的物料:雷电模拟器(其他模拟器请自行探索如何获取root权限,开启system.vmdk 可写入)。

yakit (使用burpsuit,仅仅证书获取途径不一样,其余均相同,下载burpsuit证书方式请自行搜索)。

git (windows版),仅用于执行openssl命令,也可以使用linux中的openssl命令。

一双手+一个脑子。

Freebuf知识大陆APP (可选,任意APP,也可以是系统自带的浏览器)

2.获取证书打开yakit,在上方选择MITM,劫持代理监听主机选择0.0.0.0,至于为什么,后面详细说,配置喜欢的端口号,比如8083(等于我没说,默认8083),点击下方的橘色按钮【劫持启动】

在新出现的界面的右上角有个【证书下载】的按钮,下载证书,证书下载后,默认文件名为【yakit证书.crt.pem】

3.对证书进行重命名假设证书下载到了桌面上,在桌面上点击右键,选择git bash here ,打开Git GUI(真的不能再详细了)。

输入命令:openssl.exe x509 -subject_hash_old -in yakit证书.crt.pem,注意第一行输出的8个字符。记录一下,并且将yakit证书.crt.pem 重命名为 10fb1fcc.0 ,注意前面8个字符为命令输出的值,后面跟一个英文的点和一个数字0。

重命名后如下所示:

4.对模拟器进行设置调整对模拟器需要开启root,调整磁盘System.vmdk为可写入,如下图所示在【软件设置】性能设置中,将System.vmdk 设置为为可写入

在其他设置中,配置root权限开启,ADB调试选择为【开启本地连接】

然后到雷电模拟器的安装目录,找到adb.exe,雷电模拟器默认安装在C:\leidian\LDPlayer9>可以在该目录下找到adb.exe。

5.上传证书5.1依次执行如下命令adb devices解释:列出当前的模拟器,如果模拟器开机,至少能看到一条记录,如emulator-5554。

adb root解释: restart adbd with root permissions 以root权限运行。

adb remount解释:remount partitions read-write 以读写方式重新挂载分区。

adb push C:\Users\Administrator\Desktop\10fb1fcc.0 /system/etc/security/cacerts将第三步中的文件上传至模拟器的/system/etc/security/cacerts目录

如需移除证书,进行如下操作:

C:\leidian\LDPlayer9>adb shell rm /system/etc/security/cacerts/10fb1fcc.0

5.2常见错误【未遇到的请直接进入下一步】错误信息如下:

C:\leidian\LDPlayer9>adb remount

remount of the / superblock failed: Permission denied

remount failed

C:\leidian\LDPlayer9>adb shell rm /system/etc/security/cacerts/10fb1fcc.0

rm: /system/etc/security/cacerts/10fb1fcc.0: Read-only file system

请检查第四步中的操作是否完成,如果不行就重启一下模拟器。

6.查看证书假设第五步命令执行没有任何问题,也可以直接进入第七步,该步骤无需任何操作,仅作为了解。

打开模拟器的文件管理其,进入/system/etc/security/cacerts/目录 ,可以看到上传的证书文件。

在系统设置【安全性和位置信息中】可以查看证书的详情

选择【加密与凭据】进入下一步

选择【信任的凭据】进入下一步

拉到最下面,可以看到安装的Yakit MITM Root CA 默认为启用状态。

7.代理配置找到模拟器的无线链接,点击设置,如下所示:

填写代理服务的主机名称,这里填写 电脑的ip地址,

一般在抓取网页流量的时候,burpsuit 习惯填写127.0.0.1,端口8080,但是这里一定不能配置为127.0.0.1,当然也不能填写0.0.0.0。

至于为什么,网上解释比较多。最简单的理解就是127.0.0.1是本地回环地址,任何操作系统都有一个回环地址,pc有回环地址,android模拟器本身也是一个操作系统,它也具有回环地址127.0.0.1,但yakit软件是运行在PC机器上的,因此必须明确pc的ip地址。

这里我填写的是192.168.1.27,因为我的pc机器的地址是192.168.1.27,端口8083,跟yakit上的配置端口保持一致。

pc机器的ip地址(注意可能需要关闭系统自带的防火墙):

8.yakit软件配置及抓包yakit只要简单设置一下,点击启动即可抓包了。

打开【Freebuf知识大陆】输入用户名密码开始抓包

可以看到流量已经成功被截取,后端api交互时,密码采用了base64编码的方式,开发框架用的是 uniapp。

POST /v2/auth/sign-in/username HTTP/1.1

X-Client-Type: android

user-agent: Mozilla/5.0 (Linux; Android 9; ELE-AL00 Build/PQ3A.190605.10261546; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36 uni-app Html5Plus/1.0 (Immersed/24.0)

Content-Type: application/json

Content-Length: 87

Host: gapi.freebuf.com

Connection: Keep-Alive

Accept-Encoding: gzip

Cookie: fb-session=1720250691.099.40.342220|2aeff363556b67bc212fa91212b80e69

{"password":"MTIxMjFgMjEyMTIxMg==","username":"12893912@qq.com","client_type":"uniapp"}

HTTP/1.1 400 Bad Request

Date: Sat, 06 Jul 2024 07:47:43 GMT

Content-Type: application/json; charset=utf-8

Connection: keep-alive

Vary: Origin

X-Request-Id: 5f3bbe2413608e7926d35cf21b524b0f

Strict-Transport-Security: max-age=15724800; includeSubDomains

Server: fbserver/1.1

Content-Length: 86

{ "code": 400, "data": { "show_captcha": false }, "msg": "用户名或密码错误" }

本文完。

相关推荐

为什么游戏叫timi
365登录平台

为什么游戏叫timi

📅 08-26 👁️ 7604
小米手机流量校正失败如何解决 小米手机流量校正失败
注册 Apple ID 时遇到无法注册
www.28365-365.com

注册 Apple ID 时遇到无法注册

📅 09-24 👁️ 1383
用牛奶洗脸可以美白吗?科学解析与正确护肤方法
内存卡能用多久
www.28365-365.com

内存卡能用多久

📅 09-02 👁️ 8384
电脑显示未安装任何音频输出设备怎么处理?
www.28365-365.com

电脑显示未安装任何音频输出设备怎么处理?

📅 08-20 👁️ 3332