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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 某社交App cs签名算法解析(一) SSL双向认证

一、目标


奋飞: 老板,咱们得招几个妹子呀,咱们公司男女比例太失衡了。


李老板: 你去这个App上晃晃,据说上面妹子很多。30.png我去,包都抓不到,耍个毛线呀。


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

31.png

然后输入证书监控的host , *.sxxapp.cn ,端口是 443


32.png

迫不及待了,跑一把试试。

33.png

完美收工。


三、总结


frida的spawn模式启动这个App的时候会崩掉,我认为是Xposed的原因,把Xposed关掉就好了。当然也许是我的手机环境有问题。


大家都在进步,所以要多掌握几种方法,东边不亮西边亮。


Dump证书的方法,参考 github.com/CreditTone/… 中的 keystore_dump.js 感谢大佬们提供的神奇工具。


34.png


当别人都很老实的时候,你就耍点儿小聪明;当别人都耍小聪明的时候,你就老实做人。当别人既会耍小聪明又会做老实人的时候,你就干点别的。


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号: 奋飞安全,最新技术干货实时推送



相关文章
|
11天前
|
负载均衡 算法 Java
Spring Cloud全解析:负载均衡算法
本文介绍了负载均衡的两种方式:集中式负载均衡和进程内负载均衡,以及常见的负载均衡算法,包括轮询、随机、源地址哈希、加权轮询、加权随机和最小连接数等方法,帮助读者更好地理解和应用负载均衡技术。
|
17天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
114 1
|
25天前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
105 1
|
26天前
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
56 1
|
1月前
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
39 1
|
26天前
|
存储 网络安全 Windows
【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤
【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤
|
27天前
|
JSON 数据格式 索引
【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?
【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?
|
27天前
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
|
27天前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
29天前
|
域名解析 网络协议 数据中心
【应用服务 App Service】当遇见某些域名在Azure App Service中无法解析的错误,可以通过设置指定DNS解析服务器来解决
【应用服务 App Service】当遇见某些域名在Azure App Service中无法解析的错误,可以通过设置指定DNS解析服务器来解决

推荐镜像

更多