更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
发布时间:2020-06-04 来源:西安鲲之鹏官微
【经验分享】58同城APP证书固定机制绕过(ssl unpinning)方法
1. 直接抓包,APP提示网络错误(图1),logcat显示有okhtt3 connectTls相关函数异常(图2)。
2.反编译APK,根据异常提示定位到证书锁定相关代码。
3. 使用Frida Hook绕过相关证书验证代码。具体frida脚本如下:
Java.perform(function() {
console.log("##### com.wuba SSL UNPINNING #####");
var OkHostnameVerifier = Java.use('okhttp3.internal.tls.OkHostnameVerifier');
OkHostnameVerifier.verify.overload('java.lang.String', 'java.security.cert.X509Certificate').implementation = function(arg1, arg2){
console.log("OkHostnameVerifier.verify('java.lang.String', 'java.security.cert.X509Certificate') called.");
console.log(arg1);
console.log(arg2);
return true;
}
OkHostnameVerifier.verify.overload('java.lang.String', 'javax.net.ssl.SSLSession').implementation = function(arg1, arg2){
console.log("OkHostnameVerifier.verify('java.lang.String', 'javax.net.ssl.SSLSession') called.");
console.log(arg1);
console.log(arg2);
return true;
}
var CertificatePinner = Java.use('okhttp3.CertificatePinner');
CertificatePinner.check.overload('java.lang.String', 'java.util.List').implementation = function (arg1, arg2) {
console.log('CertificatePinner.check() called. ');
console.log(arg1);
console.log(arg2);
}
var OpenSSLSocketImpl = Java.use('com.android.org.conscrypt.OpenSSLSocketImpl');
OpenSSLSocketImpl.verifyCertificateChain.implementation = function (arg1, arg2) {
console.log('OpenSSLSocketImpl.verifyCertificateChain() called.');
console.log(arg1);
console.log(arg2);
}
}};
'''
4. 成功抓到相关HTTPS数据包(图3)。
1. 直接抓包,APP提示网络错误(图1),logcat显示有okhtt3 connectTls相关函数异常(图2)。
2.反编译APK,根据异常提示定位到证书锁定相关代码。
3. 使用Frida Hook绕过相关证书验证代码。具体frida脚本如下:
Java.perform(function() {
console.log("##### com.wuba SSL UNPINNING #####");
var OkHostnameVerifier = Java.use('okhttp3.internal.tls.OkHostnameVerifier');
OkHostnameVerifier.verify.overload('java.lang.String', 'java.security.cert.X509Certificate').implementation = function(arg1, arg2){
console.log("OkHostnameVerifier.verify('java.lang.String', 'java.security.cert.X509Certificate') called.");
console.log(arg1);
console.log(arg2);
return true;
}
OkHostnameVerifier.verify.overload('java.lang.String', 'javax.net.ssl.SSLSession').implementation = function(arg1, arg2){
console.log("OkHostnameVerifier.verify('java.lang.String', 'javax.net.ssl.SSLSession') called.");
console.log(arg1);
console.log(arg2);
return true;
}
var CertificatePinner = Java.use('okhttp3.CertificatePinner');
CertificatePinner.check.overload('java.lang.String', 'java.util.List').implementation = function (arg1, arg2) {
console.log('CertificatePinner.check() called. ');
console.log(arg1);
console.log(arg2);
}
var OpenSSLSocketImpl = Java.use('com.android.org.conscrypt.OpenSSLSocketImpl');
OpenSSLSocketImpl.verifyCertificateChain.implementation = function (arg1, arg2) {
console.log('OpenSSLSocketImpl.verifyCertificateChain() called.');
console.log(arg1);
console.log(arg2);
}
}};
'''
4. 成功抓到相关HTTPS数据包(图3)。
特别说明:该文章为鲲鹏数据原创内容 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/