使用Burp、Android Killer进行安卓app渗透测试
一、对安卓APP进行抓包(包括HTTPS的流量数据包)
从Nougat开始,Android更改了对用户安装证书的默认信任行为。这意味着,从sdcard安装Burp CA将无法拦截应用流量。除非另有说明,否则应用程序将只会信任系统级别的CA。
因此,在安卓7.0及以上系统中,用户证书只能用于代理浏览器的流量,而应用是不会信任这些证书的。(ios和安卓<7.0的版本没有此问题)
开始操作之前,先运行Burp。
操作流程:
1、生成证书文件
以DER格式导出CA证书,这里将它保存为cacert.der。
下载安装OpenSSL:
http://slproweb.com/products/Win32OpenSSL.html
用OpenSSL将DER证书转换成PEM格式:openssl x509 -inform DER -in cacert.der -out cacert.pem
获取证书对应的hash值(在输出内容的第一行):
OpenSSL 版本>=1.0时:openssl x509 -inform PEM -subject_hash_old -in cacert.pem
OpenSSL 版本<1.0时:openssl x509 -inform PEM -subject_hash -in cacert.pem
如图,这里获取到的hash值为:9a5ba575
把PEM格式的证书文件重命名为hash值并以.0结尾的文件名。
(这里以hash值为“9a5ba575”为例,文件名修改为“9a5ba575.0”)
2、Android 7.0+导入ca证书(设备需要ROOT)
将证书复制到设备
(1)用adb来复制证书,但由于必须将其复制到/system文件系统,所以我们需要将它重新挂载为可写。作为root用户,adb remount非常简单。
在CMD命令行中运行以下命令(假设PEM格式的证书已经重命名为<hash>.0,这里的文件名为“9a5ba575.0”,因此要把“<hash>.0”改成“9a5ba575.0”再运行):
adb root
adb remount
adb push <hash>.0 /sdcard/
(2)进入adb shell将文件移动到/system/etc/security/cacerts,并将文件权限修改为644:
在CMD命令行中运行以下命令(这里的文件名为“9a5ba575.0”,因此这里同样要把“<hash>.0”改成“9a5ba575.0”再运行):
adb shell
su
mount -o rw,remount /system
mv /sdcard/<hash>.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/<hash>.0
(3)重启设备:reboot
检查导入的证书是否生效
证书导入完成,设备重启后,在手机“设置->安全和隐私->加密与凭据->信任的凭据” 里查看有没有刚刚导入的证书。
3、开始抓包
按照抓包软件的通常使用方式启动抓包即可。(如配置抓包软件的代理监听端口,在安卓系统中配置系统代理为抓包软件所监听的IP和端口,然后启动抓包软件的抓包功能,在安卓系统中打开要抓包的APP开始抓包解密)
打开WLAN设置:
长按WiFi名称弹出菜单,选择“修改网络”:
“代理”选项选择“手动”:
填写Burp监听的默认端口8080,以及开机Burp的电脑的IP地址,然后点“保存”:
运行APP并切换回Burp,可以看到抓到的数据包:
二、对抓取到的数据包地址进行代码定位分析
1、下载并运行Android Killer
下载地址:https://down.52pojie.cn/Tools/Android_Tools/AndroidKiller_v1.3.1.zip
2、解压后运行,然后把apk文件拖到界面的空白处:
3、分析完成,点击“工程搜索”:
4、在“搜索字符”输入框中输入抓包中抓取到的网址,然后点击“搜索”按钮:
5、在“搜素结果”中点开搜索结果左边的“+”号,再双击下方的代码,即可定位到代码中的逻辑部分:
6、点击图中框起来的那个图标还可以打开jd反编译工具查看整理成java格式的代码,从中可以分析URL的参数和构成逻辑,寻找参数类型上的漏洞,然后再用Burp来做常规的漏洞测试:
获取更多网络安全信息:
+Q Q群:863658976
V X公众号: 哈客部落
哈客社区:hake.cc