V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhaoboy666
V2EX  ›  Python

*oulapp 的双向证书破解

  •  
  •   zhaoboy666 · 2020-03-08 20:52:42 +08:00 · 2350 次点击
    这是一个创建于 1481 天前的主题,其中的信息可能已经有所发展或是发生改变。

    *oulapp 的双向证书破解

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

    破解双向证书: 之前见过单向证书校验,比如企查查、饿了么等,这个最简单的方法就是使用JustTrustMe,当然这个要依赖Xposed,手机没有 root 的话,你也可以使用太极、 VirtualXposed 等一些免 root 的 xposed 框架,这里就不主要说了,今天的重点是双向证书校验的破解。 双向证书校验顾名思义,就是双向认证,服务端会校验客户端(也就是我们的 app )的证书;客户端也会校验服务端的证书,先来看看这篇文章的资料。SSL/TLS 双向认证(一) — SSL/TLS 工作原理_网络_ustccw-CSDN 博客,看完这篇文章就可以了解到,对于双向证书校验要破解有: 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 博客 我们安装 Inspeckage,然后在 xposed 里面打钩、重启.

    记得先在电脑执行adb forward tcp:8008 tcp: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 的参数破解挺有意思,喜欢的可以抽时间玩玩。 全篇废话较多,想什么写什么,思维有点跳跃。 以上分析仅用于学习交流。 欢迎关注小白微信公众号 [小白技术社] ,一起学习一起交流.

    3 条回复    2020-03-09 13:44:52 +08:00
    saluton
        1
    saluton  
       2020-03-08 21:25:56 +08:00
    发推广文章走点心啊,图片都没了,排版也奇奇怪怪的
    话说,这个破解其实挺好玩的,之前用 burpsuite 抓过包,有几个 api 就是抓不到,想到可能是证书认证了,不过没查到资料
    zhaoboy666
        2
    zhaoboy666  
    OP
       2020-03-09 10:56:24 +08:00
    @saluton 亲建议您 打开网络
    flewsea
        3
    flewsea  
       2020-03-09 13:44:52 +08:00
    推广能不能用点心,图片因为防盗链全挂了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2943 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:31 · PVG 08:31 · LAX 17:31 · JFK 20:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.