Xiao's blog


  • 首页

  • 归档

绕过 ins ssl pinning 复现

发表于 2019-03-08

非逆向专业人士 Correct me if I am wrong!

受 Github 项目启发,本次复现主要参考 How to bypass Instagram SSL Pinning on Android

patch 过的 .so 文件

工具

  • Macbook pro (Mac OS 10.13)
  • 夜神模拟器(安卓5.1)和红米4(需要root权限)
  • ida
  • Burp Suite 社区版

Ins 版本 78

之前一直苦于绕过F家的ssl pinning,尝试过 frida、objection、JustTrustMe ,可惜都没能成功。
而 Github 项目 中的 Ins 版本略老,无法满足需求。幸运的是,无意中发现了 How to bypass Instagram SSL Pinning on Android ,折腾几个小时居然成功了。

下面进入正题

这里主要夜神模拟器(x86)过程,红米4(arm)类似。对于 arm,ida 需要安装 keypatch 后面会提

查看架构 adb shell getprop ro.product.cpu.abi

首先至少启动instagram一次,确保 /data/data/com.instagram.android/lib-zstd/ 目录下 libliger.so 已存在

输入以下命令

  • adb connect 127.0.0.1:62001 (127.0.0.1:62001 是夜神模拟器的默认 ip 和端口号,如果使用真机可跳过)

  • adb push libliger.so /data/data/com.instagram.android/lib-zstd/libliger.so

拿到 libliger.so 之后,用ida打开。接着打开 View > Open Subviews > Strings ,在窗口中搜索(Search) verifier failure , 让后双击 verifier failure ,然后右击 aVerifierFailur 选择 List cross refferences to ,并进入 Graph View(Text View 按空格即可)可以分析程序执行流程。

这里我需要把 jnz 替换成 jz (Edit > Patch program > Assemble),下图已修改

vefifier failure

根据原文,修改之后还是会出现 unexpected message ,所以再次搜索 openssl cert verify error ,重复上述过程,下图已修改(jnz 替换成 jz)

openssl cert verify error

如果是 arm 平台,上述修改过程可能会遇到问题 “this processor does not support the assembler“

解决方案:安装 keypatch,对于Mac OS 10.13无法按照官网上的步骤build,可以用这个 repo。Edit > Patch program > Assemble => Edit > Keypatch > Pacher 即可完成代码修改。

接下来,Edit > Patch program > Apply patches to input file 生成patch过后 .so 文件。用下面这个命令覆盖原来的 .so 文件。

adb push libliger.so /data/data/com.instagram.android/lib-zstd/libliger.so

本人平时也习惯用 Charles,不过这里如果用Charles会出现 “unknown cipher suite” 。所以这里用 Burp Suite 来抓包 (需要用高版本 JDK, 不然也会出现 unknown cipher suite),当然这里要确保手机或模拟器上已安装好 Burp Suite 证书 (通过 java -jar burpsuite_community.jar 打开 Burp Suite)。在手机上设置好代理之后就是见证奇迹的时刻啦。

ins crack

小结

由于是第一次接触逆向,同时也是第一次使用 ida, 有很多不熟练的地方,且只知其然不知其所以然。这次完全是依葫芦画瓢完成的,并不会分析所需修改的位置。今后还需要多学习一些逆向的原理,举一反三。

Xiao

1 日志
© 2019 Xiao
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4