简介

SSL Pinning,即HTTPS的证书校验

作用

具体解释要从HTTPS的诞生说起了

HTTP是明文传输的协议,在C/S不自行做加密处理的情况下,所有数据都是以明文形式在网络中传输的。
而在目前的庞大互联网中,大多数情况下从Client到Server要经过十几级网关转发。
而这中间,小到自己家的路由器、大到运营商的区域转发都是可以任意查看通信数据甚至篡改通信数据的。
这就是中间人攻击。

为了防止中间人攻击,产生了HTTPS,即在HTTP基础之上附加SSL来保护安全
简单来说,各个具备HTTPS的网站会将自己的公钥公开,客户端访问时用服务器的公钥加密一个密钥,再将密文交还给服务器,服务器用私钥解密后就得到了该密钥。接下来通信皆使用这个对称密钥,从而保证了通信安全

然而这一切都建立在公钥可信,即客户端拿到的“服务器公钥”真的是目标服务器的。如果中间人同样交给客户端一个公钥,再申请目标服务器的公钥,作为一个中间方分别跟Client和Server建立一个HTTPS连接,那么这个加密就毫无意义了。

因此提出了证书,这一项保证公钥的可信的内容。
证书由CA机构颁发,由CA机构的可信担保。换句话说,人们决定无条件相信所有公钥,不如自己选择一些较大的、公开的机构来担保、鉴别。
同样的,当用户信任的CA出现了问题,例如收受贿赂向意图不轨的终端颁发证书时,用户也将毫无安全可言。

理想状态下,恶意中间人没有CA机构颁发的证书,它发出的服务器公钥就不会得到客户端的承认,进而阻止了恶意链接和信息泄露。

有时用户为了得到一些本来不便拿到的中间数据,会自行选择信任一些证书,从而使“中间人”可以获取信息,即抓包

大多数情况下这个行为是可以接受的,因为用户对于自己通信的数据本身就有掌控,所以并无不可。
但是当前对于一些程序而言,它不希望用户可以获得接口、数据。静态的代码可以进行混淆和加固,从而难以找到数据生成的路径,但数据总归是要发送出去的,如果抓到了明文的包就可以轻而易举地忽略程序,将其视为黑盒。

此时用户可以自己安装中间人的证书,使其受信,代替自己向服务器通信数据。

于是产生了SSL Pinning技术
即该程序仅希望和固定的某些服务器通信,而不接受其他的即使系统信任的服务器。

原理

HTTPS库在接收到证书以后对证书进行校验,确保其跟自己保存的本地证书或硬编码数据相同,才可放行
否则视为被中间人监听,拒绝通信

一般来说该项技术常应用在安卓中
很多第三方的库都有实现这些功能,例如okhttp3等

反制

攻防从来都是互相发展的,有了SSL Pinning技术自然就有破除校验的技术
对于安卓程序而言,大部分代码运行在JAVA层,此时的代码对于反编译几乎没有抵抗能力

于是产生了JustTrustMe、SSLUnPinning等Xposed模块,针对常见的第三方库进行Hook,使校验证书的函数直接返回True

然后前两天遇到的一个APP在抓包的时候上述两个模块都无效,甚至使未抓包时本该正常的通信都宕了
对于普通的Web狗而言估计就无能为力了(还可以换ios端了)

而优ku秀bi的二进制狗还要继续面对安卓,想办法破解
查了一下上述模块的原理,都是对常见的第三方库进行通用Hook
而逆向发现该包中调用的第三方库被混淆了
众所周知Xposed依赖包名和函数名进行运行时Hook,如果混淆必然无法捕捉到真正的方法

于是自己对字符串(X509\SHA1)进行搜索,找到相关校验函数进行Hook完成突破

180724 安卓-SSLPinning及反制相关推荐

  1. 谷歌浏览器安卓_谷歌终于动手了,安卓将在国内收费,免费的午餐到头了!

    大家好,我是阿萌.谷歌安卓收费在之前就已经传的沸沸扬扬了,只不过一直都是欧洲那边的消息,事情没砸到自己头上是不会觉得疼的,国内也就没有多大的反应.不过前几天有媒体爆料说谷歌将在2019年第三季度开始对 ...

  2. 利用Windows11安卓子系统对APP进行渗透测试

    参考:orange cyber defense https://docs.microsoft.com/en-us/windows/android/wsa/ 前言: 随着 Windows 11 的发布, ...

  3. 极客日报:恶意软件感染超1000万台安卓设备;淘宝App已支持“云闪付”付款;OpenSSH 8.8发布

    一分钟速览新闻点! OPPO在德国反诉诺基亚专利侵权 抖音支持外放音量过高提醒功能 淘宝App已支持"云闪付"付款 理想汽车称玻璃存在自动开裂可能性 阿里申请"阿里元宇宙 ...

  4. 安卓安全技能树整理v1.0

    声明 以下只是搬运下我公众号的东西.很早就发过了.原帖地址: 安卓安全技能树整理v1.0 已经发公众号的为什么还发csdn 有的圈内朋友,不经过我的允许,删减摘录我公众号的内容,这里就不提谁了,心里清 ...

  5. chatGPT与逆向的相遇,快速解决sslpinning抓包问题

    项目场景: 这是一款金融类型的安卓app,有着root检测,与sslpinning校验,并且带有壳.下载的unpinning脚本根本行不通,接下来咱们看看该怎么去分析.众所知周,要分析一款app抓包只 ...

  6. 【安卓安全】透明代理定向抓APP包

    参考了以下大佬的文章: 文章一 文章二 文章三 工具:iptables + redsocks2 + Charles 前期准备 配置charls证书 要使用charles抓https的流量,就需要正确配 ...

  7. 逆向学习(二) 安卓逆向

    安卓逆向 0.准备工作和大纲 JAVA环境.apktool.android APK.JADX.keytool.jarsigner(最后两个为JAVASDK自带工具) java基本知识:源代码文件为XX ...

  8. 细思极恐!安卓被曝严重漏洞,你中招了没?

    点击上方的终端研发部,右上角选择"设为星标" 每日早10点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 前言 近日,问题频发的安卓系统 ...

  9. 抖音新版抓包方案,绕过sslpinning 直接修改so 抓https数据包

    前言 一般需要抓取https的数据包,只需要电脑安装抓包工具例如fiddler.charles .然后手机上配置代理,保证手机跟电脑在同一网络下,然后手机安装抓包工具的证书,基本都可以抓到https的 ...

最新文章

  1. acwing算法题--01背包问题
  2. ReactNative windows下打包生成安卓apk
  3. WCF 第八章 安全
  4. python计算商品总价_GitHub - ideaOzy/data_analysis: 基于Python的南京二手房数据采集及可视化分析...
  5. SCI论文写作中常见的语言问题汇总
  6. react中的状态机_在基于状态图的状态机上使用React的模式
  7. JetBrains下载历史版本
  8. linux修改文件句柄数生效_linux修改句柄数
  9. Paypal如何实现循环扣款(订阅)?
  10. REHL 5.4 下编译安装LNMP(上)
  11. 【python】打造一款自动扫描全网漏洞的扫描器
  12. 微信公众号自定义消息模板(处理数据)
  13. 大疆御air2怎么看经纬度_人人都能拍大片的无人机 – 大疆御 Mavic Air 2 评测
  14. 两张ID卡,完美消除互相干扰合二为一,实现“一卡”正反两用。
  15. 小程序毕业设计选题springboot+vue自习室预约小程序 图书馆预约小程序 自习室预约系统java
  16. 自建docker私服-客户端配置
  17. 基于egou论坛的新帖子提醒chrome扩展
  18. SqlServer发送邮件
  19. 解决复制项目或者svn下载项目后项目名称不改变的问题:org.eclipse.wst.common.component
  20. 测试用例优先级划分_测试用例的重要级别如何划分?

热门文章

  1. 水果店收银系统解决方案
  2. 苹果审核-(三)—— 苹果公司联系邮箱大全
  3. 直接插入排序顺序结构
  4. [FineReport帆软]决策报表frm中实现添加监控声音报警
  5. 第48节:Java当中的集合框架
  6. MATLAB解线性方程组
  7. x123.fun gf.php,hao123网址源码下载,hao123源码php版带后台 v2.1
  8. Addressable设置的要点
  9. excel查重技巧:如何用组合函数快速统计重复数据(上)
  10. 软件工程详细设计师竞聘演讲稿