Python中app抓包遇到sslpinning等技术,使用xpose+justtrustme后依然无法获取接口数据怎么办?

app 下载地址: https://pinggu-m.itouchtv.cn/download
大佬们有时间帮忙看一下吧. Thanks.
说一下解决的思路就好.
Python中app抓包遇到sslpinning等技术,使用xpose+justtrustme后依然无法获取接口数据怎么办?

13 回复

https://i.loli.net/2019/07/09/5d244e3a6345b79168.png
随手丢进 Jadx 搜了一下,目测是混淆导致的 JustTrustMe 失效,可以看看我的这篇文章: https://zhuanlan.zhihu.com/p/63028507


遇到SSL Pinning确实头疼。Xposed+JustTrustMe失效通常是因为应用用了更高级的防抓包手段。试试这几个方案:

  1. 用objection直接绕过SSL绑定
objection -g com.target.app explore
android sslpinning disable
  1. 如果还不行,上Frida脚本
import frida
import sys

jscode = """
Java.perform(function() {
    var SSLContext = Java.use('javax.net.ssl.SSLContext');
    SSLContext.init.overload('[Ljavax.net.ssl.KeyManager;', '[Ljavax.net.ssl.TrustManager;', 'java.security.SecureRandom').implementation = function() {
        console.log('SSLContext.init hooked');
        return this.init.apply(this, arguments);
    };
});
"""

process = frida.get_usb_device().attach('com.target.app')
script = process.create_script(jscode)
script.load()
sys.stdin.read()
  1. 终极方案:在模拟器里装系统级证书
  • 把Burp/Charles证书导出为.der格式
  • 重命名为hash.0格式(用openssl x509 -inform DER -subject_hash_old -in cert.der获取hash)
  • 推送到/system/etc/security/cacerts/并改权限为644
  1. 换个思路,用mitmproxy的addon
# addon.py
from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    flow.request.headers.pop('If-Modified-Since', None)
    flow.request.headers.pop('Cache-Control', None)

def response(flow: http.HTTPFlow) -> None:
    if flow.request.pretty_url.endswith(".apk"):
        flow.response.headers["Content-Type"] = "application/octet-stream"

mitmproxy -s addon.py,手机配好代理。

  1. 实在搞不定就上VirtualXposed或太极,把目标app和JustTrustMe都装进去。

建议先试objection,不行再上Frida。

大佬,通过你的方法已经不会出现开启代理后没有网络的情况了,但是用 fiddler 抓包的时候接口依然是锁头状态无法获取接口参数及数据,请问有什么办法呢

界面上有什么提示吗?有的话反编译搜一下提示内容


这个就是提示的内容:

这是 response 的 headers:
HTTP/1.1 200 Connection Established
FiddlerGateway: Direct
StartTime: 15:54:25.412
Connection: close


这是返回的文本:

Encrypted HTTPS traffic flows through this CONNECT tunnel. HTTPS Decryption is enabled in Fiddler, so decrypted sessions running in this tunnel will be shown in the Web Sessions list.

Secure Protocol: Tls12
Cipher: Aes128 128bits
Hash Algorithm: Sha256 256bits
Key Exchange: ECDHE_RSA (0xae06) 256bits

== Server Certificate ==========
[Subject]
CN=.itouchtv.cn, S=广东省, L=广州市, O=广州荔枝网络有限公司, C=CN

[Issuer]
CN=WoSign OV SSL CA, O=WoSign CA Limited, C=CN

[Serial Number]
12D6A4902E380B52703CF0F6880C617F

[Not Before]
2017/10/27 14:34:56

[Not After]
2020/10/25 14:34:56

[Thumbprint]
17A1C052BA4F0B4EC151FA22EBBEF2F122F175BB

[SubjectAltNames]
.itouchtv.cn, itouchtv.cn

#4 emmmmmm 我指的是 APP 的界面上

没有提示。可以正常刷新数据, 正常播放视频.

#6 那你这个有点奇怪的啊,可以正常请求,但是抓包工具上看不到具体内容,而且虽然看不到具体内容但是还可以看到 CONNECT 请求。。

#6 你抓浏览器 APP 的包能抓到吗?如果没问题的话,有可能是做了代理检测,你试试在解了 ssl pinning 的基础上加个全局代理试试,就是我那个抓包系列文章中的初级篇内容。

使用了文章中的两种方法都不行。开启强制代理或者 vpn 后,就又和没有网络一样了.

强制代理或者 vpn 后没有网络 , 说明还是 ssl pinning 导致的问题

采集其他的包都是没有问题的,采集这个 app 的图片和视频地址也可以采集到, 只有接口的地址和数据无法获取.

大佬,能再提供个思路么。。0.0 没有头绪了

回到顶部