移动安全:多方法实现Android导入系统证书并用Burp抓包

文章目录


0x0需求

一般来说在Android7以上的系统版本,系统会严格的区分系统证书和用户证书,而一些安全性较好的apk会禁止在Android7以下的系统版本运行,这就对安全测试的同学们产生了一定障碍。本文会图文介绍在Android7以上导入系统证书实现抓包

以下是本篇文章正文内容

1x0 环境准备

1)已root的Android设备
2)adb
3)burpsuite

2x0 导入系统证书

将Burp证书设置为Android手机的系统证书一般来说中有两种方法,但是这里需要注意,第一种方法适合Android模拟器用户,而第二种adb方法比较通用,推荐用第二种方法

2x1 方法一:Android访问代理

1)Android挂Burp代理,访问http://burp下载证书,此时,Burp的证书会下载到sdcard/Download/目录中,这个目录是手机浏览器的默认下载目录。
移动安全:多方法实现Android导入系统证书并用Burp抓包

2)使用adb将下载下来的证书push到存有系统证书的目录,详细命令如下:

adb shell
su
mv /sdcard/Download/<cert>.0 /system/etc/security/cacerts/
cd /system/etc/security/cacerts/
chmod 644 <cert>.0
chgrp root <cert>.0

2x2 方法二:adb推入证书

1)打开Proxy下的Options标签行,按照如下所示导出证书
移动安全:多方法实现Android导入系统证书并用Burp抓包
2)更改证书格式:
使用openssl的x509指令进行cer证书转pem证书 和 用md5方式显示pem证书的hash值

  1. 证书转换
openssl x509 -inform DER -in cert.cer -out cacert.pem 
  1. 进行MD5的hash显示
openssl x509 -inform PEM -subject_hash_old -in cacert.pem	
  1. 将pem证书重命名
    使用上面复制的值(类似于9a5ba575)对pem证书进行重命名,为9a5ba575.0 (其中0为序号,用于区分hash重复的证书)

3)把证书push到用户目录中去

(1)User(root后)版本需要先把证书导入到用户目录中,再进入超级管理用户,把这个证书导入到系统证书目录。
移动安全:多方法实现Android导入系统证书并用Burp抓包

输入如下命令

adb shell
su
#挂载system分区,可写一般情况/system分区是只读的,需要挂载为读写。
mount -o rw,remount /system

mv /sdcard/Download/<cert>.0 /system/etc/security/cacerts/
cd /system/etc/security/cacerts/
chmod 644 <cert>.0
chgrp root <cert>.0

(2)Userdebug版本(完全root的开发版本)用户不用有User版本的中转操作,直接adb超级权限就可以导入证书,一般来说各大windows平台的Android模拟器都是Userdebug版本的,具体命令如下:

# 每次开机需要输入一次
adb root
# 每个设备只需输入一次
adb disable-verity
# 每次开机需要输入一次
adb remount

adb push <cert>.0 /system/etc/security/cacerts/
adb shell chmod 644 /system/etc/security/cacerts/<cert>.0
adb shell chgrp root /system/etc/security/cacerts/<cert>.0

3x0 抓包测试

在Android设备上已经可以抓取成功抓取加密数据包。
移动安全:多方法实现Android导入系统证书并用Burp抓包

总结

中间是遇到一些坑的,以前在Android模拟器上是不需要用Openssl转换证书格式的,但是在真机测试时出现了问题,发现.der证书不太能用,踩了些坑。

上一篇:Burp的安装配置与启动


下一篇:burpsuite模块详解