Lazy loaded image
技术分享
🗒️Yakit 全端抓包教程
字数 2566阅读时长 7 分钟
2024-10-15
2024-12-3
type
status
date
slug
summary
tags
category
icon
password

1、启动 Yakit MITM:

使用前请先安装证书,参考 Yakit 证书安装。
点击劫持启动。

2、Proxifier 添加 proxy server:

添加完成后,点击 OK 保存。

3、手动添加规则

Windows Rules配置

Windows 下 Proxifier 添加 Proxification Rules:
Add 添加一条规则,填写如下:
注意 Applications 填写 wechatappex.exe, Action 选择上一步添加的 proxy server, 点击 OK 保存。
 

Mac OS Rules配置

Mac 下 Proxifier 添加 Proxification Rules:
Add 添加一条规则,通过+按钮点击:
通过 command+shift+G 打开 /Applications/WeChat.app/Contents/MacOS 路径
选择 Mini Program.app
注意: 新版 Mac 微信小程序的可执行路径发生了变化,可以尝试此路径 /Applications/WeChat.app/Contents/MacOS/WeChatAppEx.app/Contents/Frameworks/WeChatAppEx Framework.framework/Versions/C/Helpers/WeChatAppEx Helper.app/Contents/MacOS/WeChatAppEx Helper
Proxifier 会自动添加完毕。
或者直接复制 "Mini Program.app"; "Mini Program"; com.tencent.xinWeChat.MiniProgram 到 Applications 中。
注意: 新版 Mac 微信小程序可以使用 “WeChatAppEx Helper.app”; “WeChatAppEx Helper”; com.tencent.xinWeChat.WeChatAppEx.helper 作为应用程序名称。
Action 选择上一步中添加的 proxy server, 点击 OK 保存。

4、开始抓包:

使用 PC 端微信打开需要的小程序,然后在 Yakit 中查看抓包数据。
 

自动导入规则

Profile 导入
为了方便配置 Proxifier 代理小程序,我们提供了一个 profile,可以通过导入 profile 文件,实现对 微信小程序的代理,profile 规则中内置了 Windows 和 Mac OS 所需的微信小程序规则,如下所示:
同时也内置了一个 Proxy Server 地址,默认Address 为 127.0.0.1 ,端口 8083,类型为 HTTPS,如果你 MITM 监听的端口不为 8083,请修改为 Yakit MITM 监听的端口
 
导入方式
Windows 和 Mac 的导入方式一致,下载 Yakit-WeChatAppEx.ppx 后,选择 File -> Import Profile…
点击后可能会出现如下提示,让你保存当前的规则配置,如果你有其他的一些规则配置,可以点击取消后保存你之前的规则配置
这里我们没有需要保存的规则配置,直接点击是,选择下载的 Yakit-WeChatAppEx.ppx 文件
发现如下的加载成功即可
随后即可对小程序进行抓包

常见错误排查

 
在 Yakit v1.3.0 添加Windows 自定义安装路径之后,我们需要对 Yakit 的证书进行重新安装,并且证书安装完成后,需要重启微信
证书最常见的错误就是,Yakit 证书安装错误,表现为打开小程序后,小程序显示网络错误,或者卡在加载界面,此时 Yakit MITM 也没有相应的流量。
网络错误、网络异常的情况
一直显示加载中的情况
 

利用yakit进行app抓包

步骤 1: 配置 yakit

在Yakit MITM界面进行配置代理监听的配置,然后点击劫持启动。
 

步骤 2: 设置手机/模拟器的代理

App的抓包可以用手机或者手机模拟器,操作是相同的,这里以夜神模拟器为例进行演示
注意:要确保运行 Yakit 的计算机和手机或者模拟器是处于同一网络中的,以便模能够连接到 Yakit 的代理。
  1. 启动夜神 模拟器:
  1. 配置网络代理:
    1. 在模拟器中,打开设置 > WLAN>长按wiredSSID >修改网络
    2. 在“代理主机名”处输入你电脑的局域网 IP 地址,端口填写为 9999(或你在 Yakit 中设置的端口)。
    3. 保存设置。

步骤 3: 安装 Yakit 的 CA 证书

关于Android 7.0以下的证书安装过于简单,网上有太多相关文章,这里不过多的赘述,下面主要
介绍Android 7.0以上的证书安装。为了大家便于理解,这里我们先对安卓的证书先简单的做一个介绍。
Android 设备上的 CA 证书和其他系统中一样分为两种,分别是系统证书和用户证书,两者的区别如下:
系统 CA 证书
  • 内置证书:系统 CA 证书是 Android 系统内置的,由设备制造商或操作系统开发者预装。这些证书通常来源于全球公认的证书颁发机构(CA)。
  • 存储位置:如你所述,系统 CA 证书存放在 /etc/security/cacerts/ 目录下,文件名基于证书的 subjectDN 的 MD5 值。
  • 安全性:由于系统 CA 证书是预装的,它们通常被视为更加安全和可信。应用程序和系统服务依赖这些证书来建立安全的 HTTPS 连接。
  • 管理权限:修改系统 CA 证书需要 Root 权限,这是因为改动系统证书可能会影响到设备的整体安全性和稳定性。
用户 CA 证书
  • 用户安装:用户 CA 证书由设备的用户手动安装。这对于某些特定的使用场景非常有用,比如开发和测试,或者连接需要特定 CA 证书的企业网络。
  • 存储和管理:用户 CA 证书可以通过设备的设置菜单安装,通常在 设置 → 系统安全 → 加密与凭据 → 从 SD 卡安装 下。安装后,这些证书会显示在 设置 → 系统安全 → 加密与凭据 → 信任的凭据 下的“用户”部分。
但是从 Android 7.0 (Nougat) 开始,Google 引入了新的安全增强功能,系统不再信任用户安装的 CA 证书对于所有应用的 HTTPS 流量。为了让 Yakit 能够解密和捕获 HTTPS 流量,我们需要绕过限制,让 APP “信任” Yakit 的 CA 证书。绕过的方式有很多种,这里我们介绍较为简单快捷的一种方式:将Yakit的证书导入在系统证书内。
方式一、机内手动安装证书
1.在Yakit中下载证书,并重命名为yakit.cer
2.然后将证书复制到模拟器中(直接拖动到模拟器中即可),证书会出现在/storage/emulated/0/Pictures目录中
3.进入模拟器中设置-安全-从SD卡安装证书,选择证书导入,然后设置证书名称。第一次添加证书时会要求设置密码。
4.打开文件管理器(记得开启Root权限,模拟器右上角设置中开启)
进入根目录,然后进入/data/misc/user/0/cacerts-added 复制证书
将证书粘贴到  /etc/security/cacerts 目录下
点开属性,并赋予权限
5.访问app或网站即可抓到HTTPS的数据包
另外,对于其他无法手动安装证书的模拟器,也可以通过第二种方式,原理是一样的。
方式二、adb上传证书
转化cer格式为pem(yakit下载为pem,故省略此步骤)
openssl x509 -in xxxx.cer -inform DER -out xxxx.pem -outform PEM
1.直接在Yakit下载证书,然后利用openssl(windows需要自行下载,方法见:)计算证书hash值
openssl x509 -inform PEM -subject_hash_old -in yakit证书.crt.pem
2.重命名“yakit证书.crt.pem”文件为38555061.0 (图中计算出的hash值)
3.使用adb上传证书至模拟器(夜神)
(1)找到夜神模拟器的NOX目录下的bin目录,并将重命名之后的证书38555061.0复制到这个文件夹
(2)在这个目录下打开cmd命令行
(3)adb.exe devices命令查看设备的连接情况,如图就是正常
(4)进行上传文件 adb.exe push 38555061.0 /sdcard/
(5)以读写方式(rw)重新挂载/分区
adb.exe shell
mount -o remount,rw /system
(6)将证书复制到系统安全目录并给读写权限,然后reboot重启模拟器即可
cp /sdcard/38555061.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/38555061.0
reboot
(7)在模拟器中设置-安全-信任的凭据中确认证书是否添加
4.使用adb上传证书至模拟器(雷电)
安卓9需要安装为系统证书。
打开雷电模拟器,开机启动。在CMD中进入雷电模拟器安装目录,例如:D:\LDPlayer9,并输入如下命令:
查看连接设备:
adb devices
 
可以看到已经连接模拟器。再依次输入下列命令,进入shell:
adb root adb remount adb shell
执行shell命令:
su chmod 777 /system/etc/security/cacerts exit
上传证书文件:
adb push [证书文件路径(后缀为.0)] /system/etc/security/cacerts
完成,开始fiddler抓包之旅吧~
 
备注:adb连接安卓设备失败failed to start daemon
连接设备后,使用adb devices命令查看目前连接的设备,出现如下提示失败:
使用网上大部分讲的可能是5037端口被占用,杀进程的方法不行,因为查看Windows任务管理器中没有发现5037端口被占用。
临时方法
  1. 输入命令:adb nodaemon server,则dos页面上显示静止,表示此命令正在执行
  1. 再打开一个新的dos命令行窗口cmd
  1. 输入adb devices,成功显示目前连接的设备
永久方法
  1. 请解压ADB包里面的所有文件,复制到C:\Windows\SysWOW64目录下
我在 C:\\Windwos/system、C:\\Windwos/system32这两个目录放置了adb所有文件。
  1. 输入adb devices,成功显示目前连接的设备
附录:常见命令
 
上一篇
杭州银行初面
下一篇
shiro的默认密钥竟能导致黑客入侵