绕过 Android SSL Pinning

这篇具有很好参考价值的文章主要介绍了绕过 Android SSL Pinning。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

转载请注明出处。请前往 Tiga on Tech 查看原文以及更多有趣的技术文章。

SSL Pinning 指的是,对于 target sdk version > 23 的 Android App,App 默认指信任系统的根证书或 App 内指定的证书,而不信任用户添加的第三方证书。这会导致我们在对 App 做逆向分析的时候,使用 Charles 无法抓 https 包(如图): 绕过 Android SSL Pinning,android,ssl,网络协议

针对 SSL Pinning,常见的绕过方法有两种:

1.重打包 APK,修改 AndroidManifest 的配置:优点是一次重打包永久有效,在其他手机/电脑上抓包时不需要重复搭建环境,而且也不需要手机有 root 权限。缺点是因为重打包后 APK 签名被改了,容易被检测出来,可能需要进一步绕过签名校验。
2.使用 injection + hook 的办法绕过 client 端的证书校验,常见的 native 注入框架 xposed, frida 和 objection 都有相关的工具:优缺点和重打包恰好相反。

重打包

重打包是绕过 SSL Pinning 比较常见且实用的办法。因为在 APK 的 target sdk version <= 23 时,默认是信任用户添加的第三方证书的,因此我们的目标是修改 AndroidManifest 里的 target sdk version 为 23(APK 当前设置的是 29)。

1. 使用 apktool 直接重打包

  • 第一步:解包。因为我们只需要修改 AndroidManifest 的配置,因此不需要 decode source,只需要 decode resource,因此使用的命令是:apktool d -s origin.apk
  • 第二步:修改 AndroidManifest 的 targetSdkVersion
  • 第三步:重打包。命令 apktool b <decode output directory>

在对某个 App 做实验的时候,第三步重打包时出现了以下 error。搜索了一下,大概知道是 apktool 编译资源文件时的问题,并且没有找到相应的解决办法。 绕过 Android SSL Pinning,android,ssl,网络协议

2. 只 decode AndroidManifest

因为重新编译资源的时候会失败,那我们可否不 deocde 资源文件而只 decode AndroidManifest?然而 apktool 目前也不支持这个功能,官方的回答 (github.com/iBotPeaches…%25E6%2598%25AF “https://github.com/iBotPeaches/Apktool/issues/1135)%E6%98%AF”) AndroidManifest 也会依赖其他资源(如 strings, drawable 等),如果只 decode AndroidManifest 的 effort 会很大。

3. 直接修改 AndroidManifest 的 binary

因为我们对 AndroidManifest 只需要做很小的修改,既然不能 decode 资源文件,我们可以直接修改 AndroidManifest 的 binary。上述解包的命令变为 apktool d -r -s origin.apk。然后参考这个博客文章 (juejin.cn/post/684490…%E7%90%86%E6%B8%85%E6%A5%9A “https://juejin.cn/post/6844903747169026061)%E7%90%86%E6%B8%85%E6%A5%9A”) AndroidManifest 文件的 binary 格式,加上 010 editor 的 AndroidManifest 模板,即可轻松实现修改。修改后用命令 apktool b 重打包,然后用 apksigner 进行重签名即可得到重打包完成后的 APK。签名的命令为 apksigner sign --ks spykey.keystore --out signed.apk --ks-pass pass:spykey --ks-key-alias spykey --key-pass pass:spykey --v2-signing-enabled true rebuilt.apk 。其中 spykey.keystore 可以在 AndroidStudio 或其他工具生成。

安装重打包后的 APK,APK 可以正常打开,然而在点击同意使用条款之后 APP 就 crash 了。看 logcat 并没有明显的 log 指示错误原因,但能大概猜想到是 APP 里做了 APK 签名校验。因为 logcat 没有明显的线索,需要绕过签名校验可能需要较大的 effort。因此到此决定放弃重打包的办法。

Injection + Hook

如果 App 在 Android 11 的 x86 模拟器上能正常运行,因此有很好的 root 环境,很方便做 Injection 和 Hook。Objection 框架提供了现成的 SSL Pinning Bypassing 功能,因此我们采用了该框架:github.com/sensepost/o… 。具体的原理和操作步骤可以参考这个博客文章:www.hackingarticles.in/android-hoo…

这里简单记录一下各个步骤:

  • 第一步:Mac 上安装 objection:pip3 install objection
  • 第二步:下载 Frida server for Android 并且 push 到手机 /data/local/tmp 上,root 权限下把 frida server 运行起来。下载地址是 github.com/frida/frida… ,x86 Android 模拟器下载的是 frida-server-14.2.13-android-x86.xz (github.com/frida/frida…) 。Mac 端需要执行的命令 adb push frida-server-14.2.13-android-x86 /data/local/tmp 。手机端进入 adb shell 并进入 su 后,需要执行的命令:chmod 0755 /data/local/tmp/frida-server-14.2.13-android-x86 && /data/local/tmp/frida-server-14.2.13-android-x86
  • 第三步:启动 App
  • 第四步:注入 App 进程,Mac 上执行命令:objection -g <app package name>
  • 第五步:第四步命令执行后会进入一个 objection 的 shell,执行命令 android sslpinning disable 即可 disable APP 的 SSL Pinning。

上述步骤执行完之后,这时再用 Charles 即可顺利抓 https 包: 绕过 Android SSL Pinning,android,ssl,网络协议

rk:4536:0:0:0.image" style=“margin: auto” />

绕过 Android SSL Pinning,android,ssl,网络协议## 网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

绕过 Android SSL Pinning,android,ssl,网络协议

第二阶段:Web渗透(初级网安工程师)

绕过 Android SSL Pinning,android,ssl,网络协议

第三阶段:进阶部分(中级网络安全工程师)

绕过 Android SSL Pinning,android,ssl,网络协议

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!文章来源地址https://www.toymoban.com/news/detail-794998.html

学习资源分享

绕过 Android SSL Pinning,android,ssl,网络协议

到了这里,关于绕过 Android SSL Pinning的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓渗透指南(二)-Kitsune Mask模块 绕ssl pinning,绕root检测,绕system动态分区

    安卓版本大于11,root之后,system分区无法操作,这让我们把证书安装到根目录泡汤了。现在装上这几个模块,可以绕ssl pinning,绕root检测,绕system动态分区,让抓包不在困难。 一台成功刷入狐狸面具(Kitsune Mask)的手机 magic_overlayfs LSPosed JustTrustMe TrustMeAlready https://github.com/

    2024年03月22日
    浏览(51)
  • 网络安全协议之比较(SSH、PKI、SET、SSL)

    一、SSH介绍  什么是SSH?  传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据, 别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(

    2024年02月15日
    浏览(41)
  • SSL协议是什么?关于SSL和TLS的常见问题解答,被面试官问的网络安全问题难倒了

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月22日
    浏览(36)
  • 【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

    macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 手机需要root,macbook上需要安装好mitmproxy 需要完成下文1-3: https://github.com/doug-leith/cydia (接入有线网并开启无线热点) 启用 IP 转发: sudo sysctl -w net.inet.ip.forwarding=1 保存文件: https://github.com/doug-leith/cy

    2024年01月22日
    浏览(35)
  • 常见网络通信协议(http、https、ws)及安全协议(SSL、TLS、XTLS)

    文章内容删除了一大半不合适的内容,发不出来,你懂得。🥰 HTTP和HTTPS都属于 应用层协议 ,它们都是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议。它们都是 基于 TCP/IP 协议 来传递数据的,支持 客户端-服务器模式 的通信。 HTTP和HTTPS的区别主要在于HTT

    2024年02月10日
    浏览(34)
  • Android中使用Webview SSL 自签名CA证书安全校验方案

    前言:              因为我们的项目是Android + H5,之前的做法是把H5所需要的资源和html下载到本地这样证书校验不会走系统浏览器层只需要项目中预埋根证书就可以了,但是如果 用webview加载线上的域名自签名证书就会走系统级校验在onReceivedSslError中返回ssl证书不受信,

    2024年02月13日
    浏览(35)
  • 关于网络通信安全协议的一些知识(ssl,tls,CA,https)

    首先了解一下http协议的变迁。 http1.0默认短连接,1.1默认长连接并且可以管道传输,但是存在队头阻塞问题; https就是在tcp和http之间加了SSL/TLS层。 http2也是安全的,改进是hpack二进制和编码压缩减小体积,stream没有队头阻塞了(TCP层还有),以及服务器主动推送功能; http

    2024年02月15日
    浏览(42)
  • Java调用HTTPS接口,绕过SSL认证

    网络编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密的方式在计算机网络上进行安全通信的协议。网络传输协议,跟http相比更安全,因为他加上了SSL/TLS协议来加密通信内容。 Java调用HTTPS,需要与客户端建立连接,但是建立连接的时候,需要进行SSL认证。有的时候

    2024年02月06日
    浏览(34)
  • 解决网络编程中的EOF违反协议问题:requests库与SSL错误案例分析

    1. 问题背景 近期,一个用户在使用requests库进行网络编程时遭遇到了一个不寻常的问题,涉及SSL错误,并提示错误消息为 SSLError(SSLEOFError(8, u\\\'EOF occurred in violation of protocol (_ssl.c:661)\\\'),)) 。该用户表示已经采取了多种方法来解决这个问题,包括更换设备、更新操作系统和库等措

    2024年02月20日
    浏览(36)
  • 抖音最新版抓包方案,修改so绕过ssl

    dy过ssl charles抓包 及xposed的justtrustme安装到手机上只能过系统的ssl。 抖音写了一个非系统的ssl所以需要反编译so来处理。 第一步,charles 我用的是magisk手机,先重charles把证书下载到pc端 在通过adb push 传入到sdcard 通过手机安装证书[wifi 的高级选项中,安装证书] 把用户证书通过

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包