前言
每当遇到一些 APP 渗透测试项目的时候,抓不了包的问题令人有点难受,但是抓不了包并不能代表目标系统很安全,那么接下来我会整理一下目前我所了解到的一些抓包方法
使用小黄鸟 HttpCanary 对 APP 进行抓包
环境:
HttpCanary v3.3.6
Pixel3 Android11 、已 root + Xposed
首先安装 HttpCanary APP 应用



HttpCanary 支持 HTTP/HTTPS/HTTP2 网络数据包的抓取和分析,其实和 Charles 类似,要抓取 HTTPS 需要使用 MITM 中间技术对 TLS/SSL 数据包进行解密以及明文输出,因此需要安装自签的 CA 证书


这里要提一下 Android 系统默认对证书信任证书的问题
因为我的 Pixel3 手机是已经 root 了,而且是 Android11 系统,在安卓 7.0 之前系统,直接下载证书装入即可,安卓 7.0 及以上系统对于证书的安全策略做了修改,意味着,从 sdcard 安装用户级 CA 将无法拦截应用流量。我们需要将证书命名为计算出的哈希值后缀 .0 或者直接在手机里面的 用户凭据 可以看到后缀 .0的证书文件 名字,然后导入到根证书目录:/system/etc/security/cacerts 让系统默认可信任。因此安装证书的方式也有所不同,默认它是安装在用户那里的。

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




先导出 HttpCanary根 证书文件 .pem


点击它,即可完成安装证书


那么这里就看到它是安装在用户那里的,但是由于我的设备是已经 root 了,要把这个证书安装在 系统 那里才能进行抓取 HTTPS 流量

那么这时就需要把证书的文件移动到系统目录下就可以了,这里选择导出 System Trusted(.0)


那么就把证书进行移动到系统证书目录 /etc/security/cacerts/


在 Android 10 以及以上安装证书到 /system/etc/security/cacerts/会出现 system 无法写入使用 mount 报错如下:
'/system' not in /proc/mounts
'/dev/block/dm-4' is read-only由于 Android 10 采用了某些安全策略,将系统分区 /system挂载为只读,就算你 root 了也没用,无法写入系统分区也就无法导入系统证书,在使用 HTTPCanary 这样的软件抓包分析的时候,很多 app 只认系统证书,不认用户证书
遇见此类情况有两种方式解决:
1、在 Magisk 里面安装 Move Certificates模块,该插件可以一键将所有用户证书自动转换为系统区证书
https://github.com/Magisk-Modules-Repo/movecert
使用方法:所有证书安装为用户证书后,安装此插件,并重启。


2、创建一个新的挂载点来覆盖 这种方式是内存覆盖的方式所以手机重启后失效。(想要持久化需考虑搞一个开机启动服务)
# 创建一个临时目录,保存当前证书
mkdir /sdcard/tmp/
# 复制现有证书到临时目录
cp /system/etc/security/cacerts/* /sdcard/tmp/
# 创建内存挂载
mount -t tmpfs tmpfs /system/etc/security/cacerts
# 将现有证书复制回 tmpfs 挂载
mv /sdcard/tmp/* /system/etc/security/cacerts/
# 更新 perms 和 selinux
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*再进来这个看证书的界面就已经看到已经把 用户 的证书安装在 系统 那里了



虽然 HttpCanary 是一个很不错的抓包工具,但是它并不能跟其他抓包工具进行一个联动转发抓包,所以当渗透测试人员在使用它进行抓包之后,可以直接在手机上进行修改数据包进行测试,但是可能在手机上工作效率没那么高,于是就把要测试的数据包复制出来到 Burpsuite 上进行修改并发包,这个过程也会浪费很多时间。
下面是 HttpCanary 的工作原理
HttpCanary 采用 VPN 的方式将网络包转发给本地代理服务器,本地代理服务器将数据包转发虚拟网关,由虚拟网关进行不同策略地拦截和协议解析,最后再将数据发送给终端

最重要的一层就是虚拟网关 Virtual Gateway ,需要对协议进行鉴定解析等等,包括数据包的拦截注入都是在这一层处理的,比如 HTTPS 的中间人(MITM)解析出明文包等
因此从上图观察它的工作原理进行分析之后,让我寻找到另一种方式抓包(它的工作方式也和 HttpCanary 有点相似 )可以用它来代替 HttpCanary —— Postern + Charles + Burpsuite组合,至于怎样操作,可以在文章下面 7、使用Postern + Charles + Burpsuite进行对APP进行抓包 进行详细阅读

此文章来自雨苁大佬的博客非原创,原文章链接https://www.ddosi.org/app-packet-captures/
