飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3030|回复: 0

[Android] 安卓APP抓包之双向认证突破

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-15 14:44
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2021-6-7 17:08:44 | 显示全部楼层 |阅读模式
    本帖最后由 空心 于 2021-6-7 17:35 编辑

    APP抓包问题已经是老生常谈的一个问题了,今天正好碰到这个问题,经过一番折腾最终解决了这个问题。
    先解决安卓7手机/模拟器正常抓包问题:
    1、 先把burp的der证书导出
    1.png
    2.png
    3.png


    2、 使用opensl对证书进行相应的配置
    将der转换成pem,命令如下:
    [Bash shell] 纯文本查看 复制代码
    openssl x509 -inform DER -in cacert.der -out cacert.pem
    4.png


    3、 查看pem证书的hash值并记录,命令如下:
    [Bash shell] 纯文本查看 复制代码
    openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
    5.png

    4、 将pem证书改名为“hash值.0”:
    [Bash shell] 纯文本查看 复制代码
    mv cacert.pem 9a5ba575.0
    6.png

    5、 将证书上传到手机/模拟器:
    使用root权限启动
    [Bash shell] 纯文本查看 复制代码
    adb root
    7.png


    6、 重新安装分区读写:
    [Bash shell] 纯文本查看 复制代码
    adb remount
    8.png


    7、 把9a5ba575.0证书文件复制到手机/模拟器的系统证书文件夹,并设置644权限,设置完成后重启手机/模拟器:
    以下路径与手机/模拟器一致(如:/sdcard/Download/9a5ba575.0)
    [Bash shell] 纯文本查看 复制代码
    adb shell
    mv /sdcard/Download/9a5ba575.0 /system/etc/security/cacerts/
    chmod 644 /system/etc/security/cacerts/9a5ba575.0
    9.png


    8、 重启完成后查看证书是否为系统级信任证书
    10.png


    至此,安卓7的burp证书已被系统信任(上述演示的模拟器为逍遥模拟器,这个模拟器我也只是偶尔用一下,其他手机/模拟器操作步骤差不多),但是经过以上一顿乱搞后,你会发现抓手机/模拟器浏览器的包时还是会弹出证书的问题,被测APP如果不是证书绑定(SSL Pinning)和双向认证的问题,还是可以正常进行抓包测试的。我安卓7用的少,因为证书问题有点麻烦,基本上都是用安卓5进行测试,除非一些APP只能安卓7以上版本才能运行,才会用到安卓7进行测试。


    开始进入正题(突破双向认证)
    之前有看到过双向认证证书的突破思路,今天正好在项目中碰到了,而且app又正好没有加固,免除了脱壳烦恼,因此有了以下突破过程:
    刚开始不知道APP做了双向证书校验,结果杯具就发生了。
    11.png




    然后开始寻找之前某大佬提供的突破思路
    因为app没有进行加固,可以直接用jadx反编译出来,然后全局搜索".cer"、".crt"、".pfx"、"PKCS12"、"keyStore"等关键字,我这里搜索的是client.pfx。
    12.png


    转到代码位置查看详情(证书安装密码、其他密码等等信息),可以看到,pfx证书没有设置密码(本地测试安装了下,看到有需要输入密码,第一次尝试过输入密码,结果提示密码错误,第二次尝试不输入密码却安装成功了,于是开启了全局搜索之旅,看到没有设置证书安装密码):
    13.png


    可以看到,pfx证书没有设置密码
    1、 将APP以压缩包形式解压出来
    14-1.png


    2、 进入解压出来的目录,可以搜索一些证书的后缀文件,例如cer/p12/pfx等,一般安卓下的为bks,也可以先去assets或者res目录下去找找。我碰到的apk就在assets目录下存放:
    15.png


    3、 本来以为还得在文件夹里面继续找key,找了一圈无果,然后咨询了某大佬,大佬让我直接把key导出来,因为之前没遇到过,觉得有点新鲜,就刚了一波
    16.png

    [Bash shell] 纯文本查看 复制代码
    openssl pkcs12 –in client.pfx –nocerts –nodes –out client.key
    17.png


    这里需要注意的是,导出key的时候需要输入密码,也就是这个地方(如下图)
    18.png

    因为我这里是没有设置密码的,所以不用输入,直接回车导出;如果设置了证书密码,这里需要输入证书密码才能把key导出来。
    4、将key和crt进行合并,得到".p12"证书文件 ,合并的时候记得对证书进行加密(也就是加个证书密码),不加密码burpsuite是无法导入的。
    合并证书命令如下:
    [Bash shell] 纯文本查看 复制代码
    openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12
    19.png
    5、 将证书导入到burpsuite:
    20.png
    21.png
    22.png


    6、 证书导入成功,并且已启用
    23.png


    7、 接下来就是见证奇迹的时刻了,为了保险起见先重启一下手机/模拟器(最好是彻底关闭然后再打开,我是这样操作的)
    24.png
    25.png


    以上就是本次突破双向认证成功抓包的全过程,有问题可共同探讨、学习。
    参考链接:
    https://www.secpulse.com/archives/117194.html
    https://www.secpulse.com/archives/54027.html

    图片被水印遮挡看不清的可访问文章原地址查看无水印的图片:https://www.kongxin.org/notes/77.html

    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表