首页 文章 精选 留言 我的

精选列表

搜索[语聊社交],共5958篇文章
优秀的个人博客,低调大师

社交App cs签名算法解析(一) SSL双向认证

一、目标 奋飞: 老板,咱们得招几个妹子呀,咱们公司男女比例太失衡了。 李老板: 你去这个App上晃晃,据说上面妹子很多。 我去,包都抓不到,耍个毛线呀。 TIP: 新鲜热乎的 v3.83.0 二、步骤 SSL双向认证 问了下谷歌,有不少同道都遇到了返回值是 400 No required SSL certificate was sent 这种情况。 他们一致认为,是遇到了SSL双向认证。 不过谷歌传来的消息是,搞SSL双向认证很简单,把客户端证书,搞出来,然后再导入到 Charles,就大功告成了。 client.p12 在Apk包里面轻松找到 /assets/client.p12, 下一步就是找对应的证书密码,so easy嘛。 Jadx上,搜索字符串 "client.p12" 或者 "client.cer", 字符串倒是都找到了,不过问题是,找不到这些字符串被调用的地方。 看来被同道们搞了好几轮,新版本的App做了修改了。 Hook KeyStore来Dump证书 只要客户端有证书,那就一定会在使用中导入,我们在他导入的时候Dump出来,这样应该可以通杀了。 Java.perform(function() { console.log("在https双向认证的情况下,dump客户端证书为p12. 存储位置:/sdcard/Download/client_keystore_{nowtime}.p12 证书密码: fenfei"); Java.use("java.security.KeyStore$PrivateKeyEntry").getPrivateKey.implementation = function() { var result = this.getPrivateKey(); let filePath = "/sdcard/Download/client_keystore_" + "_" + getNowTime() + '.p12'; dump2sdcard(this.getPrivateKey(), this.getCertificate(), filePath); return result; } Java.use("java.security.KeyStore$PrivateKeyEntry").getCertificateChain.implementation = function() { var result = this.getCertificateChain(); let filePath = "/sdcard/Download/client_keystore_" + "_" + getNowTime() + '.p12'; dump2sdcard(this.getPrivateKey(), this.getCertificate(), filePath); return result; } }) 运行之前先允许这个App有读写存储卡的权限,因为最后我们是把证书写到sd卡里面了,否则会提示: Error: java.io.FileNotFoundException: /sdcard/Download/client_keystore__2021_05_24_xx_xx_xx_53.p12 (Permission denied) 跑一下,程序崩溃了。 这也难不倒我们,估计大概率是被检测到了, 那么换frida端口,然后把fridaServer换成hluda-server。 再来,还是崩溃。奇怪,还有啥呢? Xposed。 把Xposed Status关掉。 再来。 dump File dump OK !!! dump:/sdcard/Download/client_keystore__2021_05_24_16_48_09_24.p12 完美,证书出来了,咱们赶紧拷出来。 Charles添加证书 Proxy -> SSL Porxy Settings 然后输入证书监控的host , *.sxxapp.cn ,端口是 443 迫不及待了,跑一把试试。 完美收工。 三、总结 frida的spawn模式启动这个App的时候会崩掉,我认为是Xposed的原因,把Xposed关掉就好了。当然也许是我的手机环境有问题。 大家都在进步,所以要多掌握几种方法,东边不亮西边亮。 Dump证书的方法,参考 https://github.com/CreditTone/hooker 中的 keystore_dump.js 感谢大佬们提供的神奇工具。 当别人都很老实的时候,你就耍点儿小聪明;当别人都耍小聪明的时候,你就老实做人。当别人既会耍小聪明又会做老实人的时候,你就干点别的。 TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。 关注微信公众号: 奋飞安全,最新技术干货实时推送

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册