专栏首页Python爬虫与数据分析*oulapp的双向证书破解

*oulapp的双向证书破解

*oulapp的双向证书破解

今天简单说一下双向证书的破解,顺便说一个比较好用的工具,案例:c291bA==

破解双向证书: 之前见过单向证书校验,比如企查查、饿了么等。

这个最简单的方法就是使用JustTrustMe,当然这个要依赖Xposed,手机没有root的话,你也可以使用太极、 VirtualXposed 等一些免root的xposed框架,这里就不主要说了。

今天的重点是双向证书校验的破解。双向证书校验顾名思义,就是双向认证,服务端会校验客户端(也就是我们的app)的证书;客户端也会校验服务端的证书,先来看看这篇文章的资料。

SSL/TLS 双向认证(一) — SSL/TLS工作原理网络ustccw-CSDN博客,

https://blog.csdn.net/ustccw/article/details/7669124

看完这篇文章就可以了解到,对于双向证书校验要破解有:

1. 证书密码 2. cer或者p12证书 知道上边两点,那就开始探索这个app吧。

定位

下载一个app(豌豆荚下载最新版),解压然后在资源文件里面找cer或者p12证书文件。

直接找到,省了很多事。。。。然后我们要继续看它的证书密码了,这个先来逆向反编译看一看。然后我们全局搜他的关键词 client.cer(我这里用的是jadx).

如上边的图,直接就定位到了(第一个是全局变量,可以直接去看第二个,这里jadx反编译没全部成功,但是也能阅读),我们跳转看看。

又找到了它的关键点 load,这个load是干什么的呢???KeyStore (Java 2 Platform SE 6)根据JavaApi文档来看,

第一个参数就是证书的文件io,可以不用管,第二个参数就是我们需要的证书密码,这里就很方便的找到了hook点(我们也可以直接根据jadx来分析他的的构造)。

上边是三个步骤中第一步和第二步就是他最后需要的处理密码的地方,透露一下,这是最后追踪到native了,这里我们继续看,看a方法在哪。

找到这个方法的实例化位置,然后在 SoulNetworkSDK这个类下面找 a方法。

这获取密码,名字都很那啥。就跟那啥似的。我们继续查找用例。下图就是我们最后需要的。

HOOK

现在到了hook的时候,打开frida,打开开发工具。。。。。。。其实这里有个问题,它密码会不会在app启动的时候就已经初始化了呢??firda的spawn是可以应对这种问题的(这里我尝试好几次,都没hook到,应该是我使用方法有问题。),但是我们今天要说的是另外一个xposed工具,很方便、经常用、10几分钟一个算法都有可能。工具就是:Inspeckage [GitHub - ac-pm/Inspeckage: Android Package Inspector - dynamic analysis with api hooks, start unexported activities and more. (Xposed Module)](https://github.com/ac-pm/Inspeckage)

这是我之前看的一篇文章也推荐给大家。

Inspeckage使用笔记(app安全检测工具)移动开发coderchc的专栏-CSDN博客.

https://blog.csdn.net/tom__chen/article/details/78216732

我们安装Inspeckage,然后在xposed里面打钩、重启.

可以直接局域网访问,也可以使用 adb

记得先在电脑执行 adb forward tcp:8008tcp:8008 ,并打开 127.0.0.1:8008.

现在打开app,等待出现密码。。。。。(这里我清理了app数据,密码才出来)

验证

有了密码和证书,我们就该做爬虫该干的事了。这里推荐一个[GitHub - m-click/requests_pkcs12: Add PKCS#12 support to the Python requests library in a clean way, without monkey patching or temporary files](https://github.com/m-click/requests_pkcs12)框架,有p12和密码就能直接请求。

错误:

正确:

导入Charles

这里我比较喜欢用Charles,不喜欢fd

最后就确定,开始抓包玩吧。。。。这个app的参数破解挺有意思,喜欢的可以抽时间玩玩。全篇废话较多,想什么写什么,思维有点跳跃。以上分析仅用于学习交流。

本文分享自微信公众号 - Python爬虫scrapy(python_scrapy)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • APP 逆向 —— Windows 下安装 Frida 环境

    百度安装 Frida 全是直接 pip ,搜出来按照人家的步骤安装,结果坑一大堆。反正我是遇到一大堆的坑。

    andrew_a
  • 抖音app的抓取------准备工作

    抓取app的话,首先需要一个手机或者在自己的电脑上安装模拟器,模拟器你需要知道各个模拟器的默认端口

    andrew_a
  • Python爬虫视频以及使用python3爬取的实例

    链接: https://pan.baidu.com/s/18iRD2I9t4xHxiSqoe-hFHg 密码: afaf

    andrew_a
  • AFNetWorking用法及缓存处理 原

    AFNetWorking 在IOS开发中是一个经常会用的第三方开源库,其最好处是维护及时,源码开源。

    珲少
  • APP Https双向认证抓包

    在一次测试中偶然遇到一个https双向认证的手机app(fiddler抓包提示需要提供客户端证书),平时一梭子能搞定地抓包姿势没有效果了,本着所有客户端发出的数...

    安恒网络空间安全讲武堂
  • JS监听页面关闭

    JS可以监听浏览器页面的关闭,主要使用了window对象的onbeforeunload方法

    书童小二
  • golang之runtime.SetFinalizer

    在实际的编程中,我们都希望每个对象释放时执行一个方法,在该方法内执行一些计数、释放或特定的要求,以往都是在对象指针置nil前调用一个特定的方法,golang提供...

    henrylee2cn
  • 附003.Kubeadm部署Kubernetes

    Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。

    木二
  • 垂直属性

    元素的盒模型有几个较为重要的属性,本篇文章主要将脚垫聚集在与height相关的属性上。 对于一个并未显式设置高度块框来说,其height的高度不仅仅取决去内容的...

    欲休
  • ESA2GJK1DH1K安全篇: MQTT配置单向SSL

    杨奉武

扫码关注云+社区

领取腾讯云代金券