Postern + Charles + Burpsuite 进行对 APP 进行抓包

梦幻泡影离殇 / 2023-05-26 / 原文

在实际抓手机 App 包场景中,有很多种方案,经典的就是 Fiddler 、 Burpsuite ,但是 Fiddler 、 Burpsuite 会遇到一个问题,如果 App 为了防止中间人抓包,特意设置了不走代理这个选项,那单独直接用 Fiddler 、 Burpsuite 这些抓包工具就不能抓包的,那总不可能说不能抓包就认为目标系统很安全吧?为了抓到完整的包,于是就衍生出 Postern + Charles 这个组合,是因为 Charles 没有直接监听到 App,Charles 是监听到了 Postern 上,Postern 就是一个VPN ,所以 App 设置不走代理也没用,它是通过 VPN 将所有流量转发到 Charles 的 socks 代理,再打开 Charles 的 External Proxy Server — (外部代理服务器)转发到 Burpsuite,从而实施中间人抓包

环境:

Postern 3.1.3      下载地址https://null119.lanzoul.com/iVsPD06fg65e

Charles v4.6.2      下载地址https://www.charlesproxy.com/download/

Burpsuite Professional v2021.2

 

使用 Charles 对 APP 进行抓包

环境:

Charles v4.6.2

Pixel3 Android11 、已 root + Xposedcharles 是一款非常优秀的抓包工具,全平台支持,在 mac,windows,linux 上都可以使用,既可以抓取 web 端的包,也可以抓 app 端的包charles 主要的功能包括如下几点:

截取 Http 和 Https 网络封包。

支持重发网络请求,方便后端调试。

支持修改网络请求参数。

支持网络请求的截获并动态修改。

支持模拟慢速网络。

代理服务器的工作原理如下所示:

d5c88a24-a401-11ed-bfe3-dac502259ad0.png

客户端发起请求,请求通过 charles 转发给服务器,服务器返回响应,响应通过 charles 转发给客户端。

charles 所起的作用就相当于信使,把信息从 A 传递给 B,并且把回信从 B 传递给 A,正因为他这个信使的工作,所以他对信息的内容了如指掌(不管是原信还是回信),正因为如此,charles 也就可以篡改信息的内容,即篡改请求和响应。

Charles 下载地址:

https://www.charlesproxy.com/download/

d5dfb7da-a401-11ed-bfe3-dac502259ad0.png

然后自行安装之后,要对它进行激活

注册码生成地址:

https://www.zzzmode.com/mytools/charles/

d61b8058-a401-11ed-bfe3-dac502259ad0.png

激活 Charles在 Help->Registered 输入 key 和生成的激活码即可

d655d8ca-a401-11ed-bfe3-dac502259ad0.png

 

d666be74-a401-11ed-bfe3-dac502259ad0.png

设置代理,在 Proxy — Proxy Settings ( 注意:此时我的Windows Proxy是去掉对勾的,因为这里我是想在PC端抓手机端的包,所以没必要打开电脑的本地代理 )

d6a5560c-a401-11ed-bfe3-dac502259ad0.png

填入代理端口 8888(或者自定义,但不能和系统已占用端口冲突),并且勾上 Support HTTP/2 和 Enable transparent HTTP proxying ,点击右下角 OK 即可

d6c0a790-a401-11ed-bfe3-dac502259ad0.png

然后分别在 PC 端和手机端安装证书选择 Help — SSL Proxying — Install Charles Root Certificate 就可以下载安装上 PC 端了

d6e1b926-a401-11ed-bfe3-dac502259ad0.png

 

d6f99168-a401-11ed-bfe3-dac502259ad0.png

证书存储选择 受信任的根证书颁发机构

d731225e-a401-11ed-bfe3-dac502259ad0.png

接下来再给手机端安装证书,步骤如下:选择 Help — SSL Proxying — Install Charles Root Certificate on a Mobile Device or Remote Browser

d74fcf60-a401-11ed-bfe3-dac502259ad0.png

点击后会弹出窗口提示设置的方法,按照提示在手机端将代理设置为电脑的 ip:8888( 我这里是192.168.1.251:8888 ),这里要先确保手机和电脑连接同一个无线网络 。然后在手机的浏览器打开 http://chls.pro/ssl ,按提示下载证书即可。

d76df616-a401-11ed-bfe3-dac502259ad0.png

 

d7891298-a401-11ed-bfe3-dac502259ad0.png

如果 Charles 有弹出提示,一定要点击 Allow

d7a43140-a401-11ed-bfe3-dac502259ad0.png

首先按照我下面的图顺序进行安装证书

 Android 7.0以上系统需要将Charles证书从“用户证书目录”移动到“系统证书目录”

 操作步骤如下:

1、window安装OpenSSL

安装

这一步好像可以跳过,直接把转换后的per证书名称改为9a5ba575.0即可,我看另外一个人的教程计算生成出来的结果和这个一样,可能是统一的吧

下载网站

http://slproweb.com/products/Win32OpenSSL.html

单击这个EXE或者MSI,然后安装的时候一直下一步即可

 

2、配置环境

安装完成后就要配置运行环境了

 

也可以参考这文章

 

https://blog.csdn.net/wuliang20/article/details/121014060

OpenSSL默认的安装路径我这里是

 

C:\Program Files\OpenSSL-Win64\bin

 

我们就新建环境变量OPENSSL_HOME

值为C:\Program Files\OpenSSL-Win64\bin

注意,不要漏掉了bin

 

  • 向环境变量path添加%OPENSSL_HOME%

     

 

  • 测试安装是否成功

  •  

 3、打卡模拟器开发者模式

打开开发者模式后,然后点击返回键,回到上一级的设置界面,可以看到多出一个“开发者选项”了。

 

  • 点进去开启USB调试。

    • 下图为已开启usb调试

       

       

       

       

 4、导入证书

用Charles导出证书,随便命名 charles.pem

 

 

3.将导出的的证书(charles.pem)导入电脑中

4.在cmd中输入

openssl x509 -subject_hash_old -in <Certificate_File>  
<Certificate_File>为刚才下载的证书(charles.pem),这个路径为绝对路径

 将生成的pem格式的文件的文件名称改为d74b60ce.0

 5、移动证书

 打开文件资源管理器,进入夜神模拟器的安装目录,找到nox_adb.exe程序,或者直接everything搜索

 如果是雷电模拟器,可能就是这个名字了

  • 在ADB所在目录打开cmd命令行

    • 输入nox_adb.exe connect 127.0.0.1:62001即可以连接到adb,或者是adb connect 127.0.0.1:62001

 

 把证书放到nox_adb.exe所在目录下

 然后依次执行以下命令,在查看系统证书就会发现成功安装。

adb root // 提升到root权限
adb remount // 重新挂载system分区

//将证书放到系统证书目录 注意文件名是自己的文件名
adb push 9a5ba575.0 /system/etc/security/cacerts/    

 

HTTPS 解析

然后在 Proxy — SSL Proxying Settings 进行 SSL Proxying Settings 设置勾选 enable SSL Proxying 复选框代表开启 SSL Proxying 代理,并在 include 栏中添加域名和端口号。include 中的列表项代表 Charles 能够展示这些域名的 SSL 请求和响应的明文。

并且说明中也提示了我们 Charles 要想使用 SSL Proxying 代理,需要进行 SSL Certificates,即证书签名。这个我们在上面已经完成了。

d9a1e8e8-a401-11ed-bfe3-dac502259ad0.png

Stop SSL Proxying 按钮可以控制 SSL 代理的开关。(必须要开启SSL Proxying)

d9c20e16-a401-11ed-bfe3-dac502259ad0.png

到此,PC 端的设置都已经配置好了,然后就能进行抓包了

d9e6c756-a401-11ed-bfe3-dac502259ad0.png

 

使用 Charles + Burpsuite 进行对 APP 进行抓包

选择勾选 Proxy — External Proxy Settings 就是要将 Charles 作为手机端的代理,再由 Charles 将包转发给 burpsuite,所以对于 Charles 来说,burpsuite 就成了一个 External Proxy Server —— 外部代理服务器

da0509e6-a401-11ed-bfe3-dac502259ad0.png

勾选 HTTP 和 HTTPS 代理,这里 HTTP 和 HTTPS 的代理服务器地址都是 127.0.0.1:8080(这里的配置与 Burpsuite 代理一致)

da258d88-a401-11ed-bfe3-dac502259ad0.png

已经设置了外部代理了,就必须打开 burp(当然了主要是要打开 burp 中对 127.0.0.1:8080 的监听),否则就会出现 连不上网了 的现象。在 burp 的菜单栏中的 Proxy 选项下的 Options 中打开 127.0.0.1:8080 的代理监听(默认应该是已经打开的),在 Intercept 中关闭请求拦截。

da3c4a82-a401-11ed-bfe3-dac502259ad0.png

完成上面的配置步骤后,从手机上打开浏览器搜索内容,应该已经可以在 Charles 窗口左侧的列表中找到想抓的包,并且也可以看到数据包从 Charles 转发到 Burpsuite 了

da4f3b9c-a401-11ed-bfe3-dac502259ad0.png

 

使用 Postern + Charles + Burpsuite 进行对 APP 进行抓包

在实际抓手机 App 包场景中,有很多种方案,经典的就是 Fiddler 、 Burpsuite ,但是 Fiddler 、 Burpsuite 会遇到一个问题,如果 App 为了防止中间人抓包,特意设置了不走代理这个选项,那单独直接用 Fiddler 、 Burpsuite 这些抓包工具就不能抓包的,那总不可能说不能抓包就认为目标系统很安全吧?为了抓到完整的包,于是就衍生出 Postern + Charles 这个组合,是因为 Charles 没有直接监听到 App,Charles 是监听到了 Postern 上,Postern 就是一个VPN ,所以 App 设置不走代理也没用,它是通过 VPN 将所有流量转发到 Charles 的 socks 代理,再打开 Charles 的 External Proxy Server — (外部代理服务器)转发到 Burpsuite,从而实施中间人抓包

环境:

Postern 3.1.3

Charles v4.6.2

Burpsuite Professional v2021.2

Pixel3 Android11 、已 root + Xposed

先配置 Charles

在 Proxy — Proxy Settings ,勾选 Enable SOCKS proxy 进行设置 SOCKS 代理(按照下图的操作),端口号我这里设置 16666(或者自定义,但不能和系统已占用端口冲突)

dad8b39a-a401-11ed-bfe3-dac502259ad0.png

配置代理

dae68222-a401-11ed-bfe3-dac502259ad0.png

添加代理服务器

db3e2dc4-a401-11ed-bfe3-dac502259ad0.png

 

db5d3bba-a401-11ed-bfe3-dac502259ad0.png

点击保存

db826f7a-a401-11ed-bfe3-dac502259ad0.png

配置规则

dbb1e23c-a401-11ed-bfe3-dac502259ad0.png

添加规则

dbc0ba6e-a401-11ed-bfe3-dac502259ad0.png

按照下图进行操作并点击保存

dbe30d4e-a401-11ed-bfe3-dac502259ad0.png

 

dc0ff5e8-a401-11ed-bfe3-dac502259ad0.png

打开/关闭 Postern

dc2ab1f8-a401-11ed-bfe3-dac502259ad0.png

那么只要上面的 使用Charles + Burpsuite进行对APP进行抓包 设置好之后,打开你想要抓的目标 APP 就可以看到数据包已经转发到 Burpsuite 了

dc60809e-a401-11ed-bfe3-dac502259ad0.png