安卓APP 抓包博弈:突破限制,掌握抓包技巧

admin 2024年10月23日17:40:14评论93 views字数 4677阅读15分35秒阅读模式
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧

东方隐侠安全团队

安卓APP 抓包博弈

突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

在移动应用安全测试中,APP 抓包是一项重要的技术手段,但安卓 APP 的抓包往往面临诸多挑战。本文将详细介绍安卓 APP 抓包的相关技术和方法,帮助读者了解如何突破各种限制,成功进行抓包操作。

安卓APP 抓包博弈:突破限制,掌握抓包技巧
前言
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧

    与 web 端和小程序端不同,APP 抓包检测存在多种机制,如反代理机制、单向证书校验、双向证书校验以及 Root 环境检测等。这些机制使得 APP 抓包变得复杂,在实际的渗透测试项目中,很容易在这一环节遇到问题,浪费大量时间和精力。本文作者通过查阅大量资料,总结了安卓类 APP 抓包的相关类型和方法,希望能给读者带来帮助,不足之处请指正。

安卓APP 抓包博弈:突破限制,掌握抓包技巧
环境准备
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧

设备与工具:

  • 笔记本电脑

  • burp/Charles

  • 模拟器 / 实体机

  • Proxifier

  • Xposed

  • JustTrustMe 和 JustMePlush 框架

  • Postern

  • Frida

安卓 7.0 以上安装 CA 证书:

背景:安卓 5 所安装的 burp 证书是安装到系统根目录下的,从 Android 7.0 开始,系统不再信任用户 CA 证书,所以需要把 CA 证书安装到系统 CA 证书目录。

方法一:

  • 用 burpsuite 导出证书,在 Kali 终端将 der 证书转为 pem 证书:openssl x509 -inform der -in burp.der -out burp.pem

  • 生成 pem 证书的 hash:openssl x509 -inform PEM -subject_hash_old -in burp.pem

  • 改名后上传证书到模拟器系统证书目录,如adb push 9a5ba575.0 /system/etc/security/cacerts,并修改权限adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0

方法二:

  • 连接手机进入 shell 模式adb shell,如果不是 root 权限使用su root切换

  • 移动至用户证书目录cd /data/misc/user/0/cacerts-added

  • 将系统证书目录权限改成可读可写mount -o remount,rw /system,使用cp或mv命令移动证书文件到/etc/security/cacerts/

  • 移动完之后记得把权限改回只读mount -o remount,ro /system

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧
抓包场景及方法
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧
场景 1:代理 + burp + 模拟器 / 实体机

步骤1:burp 开启代理

安卓APP 抓包博弈:突破限制,掌握抓包技巧

步骤2:查看Windows本地IP地址,然后在模拟器端或者实体机上配置代理,访问该地址下载证书:

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

配置证书:在文件管理中找到下载的证书,并对该证书进行修改后缀名;然后在设置-安全-从sd安装

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

测试中可能出现的问题及解决方法:安卓 7.0 以上版本证书如果没有安装到系统目录下,可能会出现安全证书问题。可通过上述安卓 7.0 安装 CA 证书的方法解决。

安卓APP 抓包博弈:突破限制,掌握抓包技巧

场景2:反代理场景 - Proxifier+burp + 模拟器 / 实体机

步骤1:首先 burp 配置好代理

步骤2:Proxifier配置代理和相关规则

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

场景 3:利用 VPN 场景 - Postern+burp + 模拟器 / 实体机

Postern 是⼀个基于 VPN 的 Android 全局代理⼯具,并且可将 VPN 流量进⾏⼆次转发。⽀持的代理协 议有:SSH,Shadowsocks,SOCKS5,HTTPS/HTTP CONNECT,gfw.press

步骤1:首先 burp 配置好代理

步骤2:模拟器/实体机安装Postern,配置代理与规则

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

开启vpn抓包,然后点击app即可抓包

场景 4:单向证书校验场景 - xposed+burp+Proxifier + 模拟器 / 实体机突破单向证书限制

Xposed 是一个框架,它可以改变系统和应用程序的行为,而不接触任何 APK。它支持很多模块,每个模块可 以用来帮助实现不同的功能。JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。xposed可以在模拟器商店进行下载 JustMePlush模块:http://www.xfdown.com/soft/157702.html JustTrustMe:https://www.anfensi.com/down/20310.html

步骤1:安装与配置环境,并开启JustMePlushJustTrustMe模块,他俩的作用是利用模块的功能来hook检测机制,绕过单向证书校验;

安卓APP 抓包博弈:突破限制,掌握抓包技巧

xposed安装后重启,然后安装两个apk:JustTrustMe.apk和JustMePlush.apk,然后再次重启。然后再 次开启代理 在Xposed上,然后选择模块

安卓APP 抓包博弈:突破限制,掌握抓包技巧

步骤2:配置burp代理+Proxifier配置

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

此时即可实现app抓包。

场景 5:双向证书校验场景 - 双向证书校验 - Frida 来 hook

APP 除了校验服务端的证书,服务端还会检验 APP 的证书。HTTPS 双向证书校验在实际中几乎很少用到,

因为服务器端需要维护所有客户端的证书,这 无疑增加了很多消耗,因此大部分厂商选择使用单向证书绑定。

对抗双向认证需要完成两个环节:

(1)让客户端认为 burp 是服务端 ,这一步其实就是破解 SSL pinning;

(2)让服务端认为 burp 是客户端 ,这一步需要导入客户端的证书到 burp,客户端的证书一定会存在本

地代码中,而且还可能会有密码,这种情况下需要逆向客户端 app,找到证书和密码,并转为 pkcs12 格式

导入到 burp。User options -> SSL -> Client SSL Certificate。

Frida脚本:https://github.com/apkunpacker/FridaScripts

Frida安装:

(1)本地电脑安装frida:

安装Frida:

pip install frida

安装frida-tools:

pip install frida-tools

查看frida版本

frida --version

模拟器安装或者实体机安装frida服务端:

查看Android手机设备设置:

adb shell #进入shell

su root #提权

getprop ro.product.cpu.abi #查看版本然后下载对应版本的Frida

地址:

https://github.com/frida/frida/releases

安卓APP 抓包博弈:突破限制,掌握抓包技巧

#通过push命令将frida导入到实体机或者虚拟机里

adb.exe push frida-server-15.2.2-android-x86 /data/local/tmp

#进入shell

adb.exe shell

cd /data/local/tmp/ #进入传送的目录里

chmod 777 frida-server-15.2.2-android-x86/ #赋予执行权限

./frida-server-15.2.2-android-x86/ #执行

本地电脑执行:frida-ps -U #判断是否建立连接

安卓APP 抓包博弈:突破限制,掌握抓包技巧

以上内容就是Frida建立连接的过程,接下来我们小试牛刀。

【案例】

使用jadx工具进行反编译:目的是为了找到证书,然后将反编译的内容保存为文件 通常情况下应用会将证书放置在资源目录 `app/asset`下,后缀名为 `p12` 、 `pfx`的文件。当然也可 能会伪装成其他文件。服务器对客户端进行校验过程中,客户端将证书公钥发送给服务器,以及从服务器获取 session 和私钥解密 过程中,需要 API 进行操作,API 存在于 java 层框架内,所以 hook 框架层代码 java.security.KeyStore,使密码自吐。这里下图的案例 APK 解压之后在 assets 目录下有一个 client.p12 的证书文件,但是不知道它的密码,因此要使用 Frida 对目标 APP 进行 hook,让它密码 自吐。注意:.p12后缀的证书文件是由 .crt证书和 key 文件合并成.p12证书文件,并且在合并生成 .p12 文件 的时候必须对证书进行加密(也就是加个证书密码),不加密码 Burpsuite 是无法导入的

安卓APP 抓包博弈:突破限制,掌握抓包技巧

找到该证书:

安卓APP 抓包博弈:突破限制,掌握抓包技巧

给少侠们提供hook的小脚本,主要是找到客户端证书的密码:

function hook_KeyStore_load() {Java.perform(function () {var StringClass = Java.use("java.lang.String");var KeyStore = Java.use("java.security.KeyStore");KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));console.log("KeyStore.load1:", arg0);this.load(arg0);};KeyStore.load.overload('java.io.InputStream', '[C').implementation =function (arg0, arg1) {console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) :null);this.load(arg0, arg1);};console.log("hook_KeyStore_load...");});}setImmediate(hook_KeyStore_load)

1、adb.exe shell am monitor #查找包名的 

2、Frida -U -f com.paopao.im -l 1.js --no-pause #使用命令进行hook 密码为111111

安卓APP 抓包博弈:突破限制,掌握抓包技巧

找到证书的密码后,接下来把证书安装到burp里,这样我们就可以绕过双向证书的检测了,可以正常抓包了

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧

导入我们的找到的客户端证书,然后输入我们hook的密码 客户端证书就安装成功了。

安卓APP 抓包博弈:突破限制,掌握抓包技巧

开启burp+Proxifier+模拟器/实体机来进行抓该app的包,这里使用Proxifier的目的是:app一般都会做 反代理校验的,直接用Proxifier来操作就可以绕过。

安卓APP 抓包博弈:突破限制,掌握抓包技巧

安卓APP 抓包博弈:突破限制,掌握抓包技巧
APP测试
安卓APP 抓包博弈:突破限制,掌握抓包技巧
安卓APP 抓包博弈:突破限制,掌握抓包技巧

1、使用appinfoscan工具对app进行信息收集,提取出app的相关域名,因为有的域名可以直接在web上进行 渗透,快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、 CDN、指纹信息、状态信息等;

2、使用查壳工具apkscan来查看app有没有壳,要是没有壳可以直接对app进行反编译,存在壳的话看能不能 脱壳了; 

3、使用jadx等相关工具对app进行反编译,获取源码后进行分析和审计,可以找key、证书、加解密函数等 等; 

4、对app抓包后挖掘业务相关漏洞; 

5、遇到app数据包加密的可以使用burp插件brida以及Frida框架,找到加密函数后来编写加解密脚本,来 进行爆破、逻辑越权等操作。

安卓APP 抓包博弈:突破限制,掌握抓包技巧
东方隐侠
为安全界刮起一股侠客风

原文始发于微信公众号(东方隐侠安全团队):安卓APP 抓包博弈:突破限制,掌握抓包技巧

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月23日17:40:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓APP 抓包博弈:突破限制,掌握抓包技巧https://cn-sec.com/archives/3303517.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息

  • 目录
  • 在线咨询

    13688888888
    QQ在线咨询

    微信

    微信
  • CN-SEC 中文网

    本页二维码