【APP小程序】APP抓包绕过-双向校验和绕过系统代理检测
本公众号的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
免责申明
本公众号的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
双向证书验证
双向证书验证就是客户端会校验服务端证书,服务端会验证客户端证书。
对抗双向认证需要完成两个环节:
(1)让客户端认为 burp 是服务端 ,这一步其实就是破解 SSL pinning,方法和上述过程完全相同。
(2)让服务端认为 burp 是客户端 ,这一步需要导入客户端的证书到 burp,客户端的证书一定会存在本地代码中,而且还可能会有密码,这种情况下需要逆向客户端 app,找到证书和密码,并转为 pkcs12 格式导入到 burp。
第一步单项证书验证可以参考如下步骤:
第二部获取客户端证书
一般证书放置在资源目录“app/asset”下
后缀名为 p12 、 pfx的文件。当然也可能会伪装成其他文件
由于本文没有找到双向认证的案例,简单说下分析思路
一般获取到证书的方式:
1.通过逆向分析的方式找到明文密码
2.通过hook api java.security.KeyStore使密码自吐
Jadx 中搜索证书的名字、或者证书链 x509certificate 分析定位到关键位置。
或者利用大佬的JS脚本
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)
执行命令
Frida –U –f APP包名 –l 1.js --no-pause
Burpsuite 里面选择 setting -> TLS -> Client TLS Certificates -> Add 进行导入证书,Destination host写*进行匹配所有地址,证书类型选择File(PKCS#12),然后选择Next
然后导入证书并输入密码就可以正常抓包。
绕过系统代理检测
现在部分APP对系统代理做了检测,检测到系统代理就直接退出了
为了绕过检测,使用Postern代理软件,这属于应用代理
安装Postern工具
配置新的代理
根据自己配置填写名称、地址、端口、代理类型
配置好代理后,增加配置规则

设置完成后直接通过Burp抓包
在未开启手机代理的情况下进行抓包
更多推荐

所有评论(0)