乐于分享
好东西不私藏

app攻防系列4-记一次绕过证书检验的抓包

app攻防系列4-记一次绕过证书检验的抓包

免责声明

由于传播、利用本公众号所发布的而造成的任何直接或者间接的后果及损失,均由使用者本人承担。LK安全公众号及原文章作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢大家!!!

请勿利用文章内的相关技术从事非法测试,由于传播,利用此文所提供的信息而造成的任何直接或者间接的后果与损失,均由使用者本人负责,文章作者不为此承担任何责任

0x01 前言


随着现在攻防环境的升级,app渗透也成为了越来越多网络安全从业者关注的重点,故此推出app渗透系列。

0x02 证书校验
在上一篇文章中我们提到了两种最常见的app抓包手法,wifi代理抓包和vpn抓包,当然也有对应的检测方法,在apk的java层或者so层来实现,往往可以通过frida hook来搞定,除此之外,app往往也会采用证书校验这种方式来防抓包,首先我们来介绍到证书校验的概念。
提到证书,我们最先接触到的就是在安装好burpsuite之后,需要将这些抓包软件的证书导入到浏览器中,否则就无法抓取https的数据包,其实在这里的原理就是:在 HTTPS 中,证书校验主要来负责浏览器或客户端用来确认对方身份是否可信,并且验证通信中使用的服务器证书是否由受信任机构签发,并且是否未被伪造或篡改。
其实本质来说,证书校验机制就是App在和服务器建立HTTPS连接时,不仅校验证书“是不是合法”,还要校验“是不是我认识的那一张证书/公钥”。
以下案例就是典型的一个证书校验的例子,当我们使用vpn抓包时,app的反馈如下图所示
此时是无法正常抓包的
0x03 hook 校验函数

一、抓包本质是什么?

在这个案例中,我有限考虑到的是使用frida hook;很多现成的请求库当中有证书验证的函数,有一些是系统库,有一些是第三方库
当然这种方法是有局限性的,如果是第三方库混淆或者改了名字之后就无
法hook到了
果然,运行hook脚本之后,发现还是无法绕过,怀疑没有hook到地方
再次理解一下抓包的本质

当我们开 VPN / Charles / Burp 抓 HTTPS,本质是:做一次「中间人攻击(MITM)」流程如下

1.App 访问 https://api.xxx.com

2.拦截

3.攻击者伪造一个证书给 App

4.App 和攻击者建立 TLS

5.攻击者再和真正服务器建立 TLS

6.攻击者在中间解密数据

关键在:攻击者必须能解密 TLS 数据

而 TLS 的安全性来自:

  • 公钥

  • 私钥

  • 证书签名链

如果攻击者没有私钥,就无法解密

二、证书校验为什么会失败?

当攻击者做 MITM 时:服务器真实证书:A;攻击者签发的中间人证书:B

App 会验证:

服务器证书是否是我信任的?

如果 App 开启了:证书固定(SSL Pinning);它会:不信任系统 CA,只信任预埋在 App 内的公钥 / 指纹

这时攻击者抓包就失败。

三、已经 hook 了很多库,为什么还不行?

在第一步时已经hook了:OkHttp,WebView,Xutils,Trustkit,Cronet,Apache HttpClient;这些都属于:上层网络库

但是现在有个问题问题是:如果目标 App:自己写了 TLS 验证逻辑或直接调用系统底层加密库或 JNI 调用 native 层 OpenSSL或做了二次校验

那么hook 的第三方库就失效了

四、TLS 验证真正发生在哪里?

不管用什么库,最终一定会走到:

Android 标准加密实现:

javax.net.sslcom.android.org.conscryptOpenSSL

真正的证书校验发生在:

TrustManagerImpl.verifyChain()

或者

OpenSSLSocketImpl.verifyCertificateChain()

或者 native 层

libssl.so

所以如果:上层没命中/混淆了/自定义实现,那最终一定会走到底层加密实现。

五、为什么最后要 hook 标准加密库 API?

不管 App 用什么网络库,最终都要走 TLS 验证;hook 底层相当于:在“终极验证入口”直接放行

hook标准加密库的脚本之前已经实现了,直接贴进来就ok,然后继续用frida去hook,使用app弹出的关键字与堆栈当中的信息去做对比

成功对比到一处 在堆栈中发现check$okhttp

所以在第一步没有hook到的原因就是这里的证书检测方法是check$okhttp,而原来的脚本中hook的是check方法

hook check$okhttp方法

此时已经成功绕过证书检测

抓到请求的数据包

广告时间-LK网安学院-漏洞实战挖掘与渗透测试课程持续更新中!!

价格1000出头!课程内容覆盖企业赏金SRC、众测赏金、CNVD、Edusrc、网安岗入职技能培训等~~

课程优势

该课程集合了讲师多年的漏洞挖掘/渗透测试/工作经验,旨在让各位同学用最短的时间,最快的速度挖到人生第一洞;让只会打靶场,挖不到漏洞或者在实战中没有挖洞思路的同学挖到人生第一洞;让只会挖公益漏洞挖不到赏金漏洞的同学挖到人生第一桶金;让认真付出愿意报名的学员真正的学会技术;一次报名即可永久学习,并且赠送永久纷传圈子

往期学员成果汇报

众多学员入职小米/长t/安h/奇安x/绿m等互联网或网安大厂;众多学员成功挖到人生第一桶金/人生第一洞

学员挖洞战绩
五个sql注入 恐怖如斯
某平台私密项目 
重复漏洞也有钱拿
人生第一洞
内部项目 带各位师傅一起赚钱
学员反馈
出货的快乐
学员反馈
学员战绩
斩获edu证书
跟着我学了三个月 干到edu正式白帽子
学员就业案例
某学员斩获3个offer 手握ct/360/安h实习offer
大弟子 手把手带 从只能挖点垃圾洞的网安小白到单洞2k,在上海找到10k+工资的正式网安人员
刚认识的时候,很菜
经过一段时间的学习,已经可以单洞2k
也拿了不错的offer,恭喜上岸
另外一个大学生,刚认识的时候也是什么都不会,经过学习拿下小米offer
学员就业案例 太多了 就不一一展示了
手把手带着学员们做项目
各种短期项目 
带学员做各种项目
太多了 好多我也没整理
课程加量不加价、上述课表中的内容,不代表第四期的全部内容,实际上课会比课表多更多。

技术交流/加群聊/课程咨询

技术群聊已满200人 群内各种福利 欢迎各位师傅进群交流

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » app攻防系列4-记一次绕过证书检验的抓包

评论 抢沙发

1 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮