APP服务端证书校验求助
本帖最后由 yinsel 于 2024-8-9 21:30 编辑本想拿一个APP针对服务端证书校验练手,结果差点给练死了。这APP和常规的不一样,没加固但有混淆,尝试过frida自吐、r0capture大佬的脚本都不行,然后我自己逆向我把公钥证书dump出来了,但没私钥啊,我是真不知道它私钥藏哪了,找了好久的hook点都没拿到,APP里面也没翻到bks、p12、jks证书,倒是有两个不知名的bks,好像是华为什么SDK的,不清楚。
于是便向某朋友求,有个大哥5分钟搞定,但他是ios端从内存挖出来的p12证书,我寻思不是安卓呀,只能来汇聚大佬的吾爱求助了。
APP放这了,我觉得可以当个教学案例,虽然我不知道难道多大,但确实和常规的不一样。
https://wwo.lanzoul.com/iVxSz26wbk3a
密码:8yjj
已解决,但还有细节,后续会出完整过程 如果随便输出一个服务器id,可以拿到这样的信息:```
W/System.err: javax.net.ssl.SSLHandshakeException: server certificate subject not matched: https://22222.121:8663
W/System.err: at org.conscrypt.SSLUtils.toSSLHandshakeException(SSLUtils.java:14)
W/System.err: at org.conscrypt.ConscryptEngine.convertException(ConscryptEngine.java:15)
W/System.err: at org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:39)
W/System.err: at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:49)
W/System.err: at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:18)
W/System.err: at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:2)
W/System.err: at org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:70)
W/System.err: at org.conscrypt.ConscryptEngineSocket$SSLInputStream.access$100(ConscryptEngineSocket.java:1)
W/System.err: at org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:91)
W/System.err: at org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:37)
W/System.err: at xe.c.b(RealConnection.java:66)
W/System.err: at xe.c.f(RealConnection.java:25)
W/System.err: at xe.c.connect(RealConnection.java:161)
W/System.err: at xe.f.b(StreamAllocation.java:214)
W/System.err: at xe.f.c(StreamAllocation.java:1)
W/System.err: at xe.f.newStream(StreamAllocation.java:23)
W/System.err: at xe.a.intercept(ConnectInterceptor.java:26)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:10)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:1)
W/System.err: at we.a.intercept(CacheInterceptor.java:133)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:10)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:1)
W/System.err: at ye.a.intercept(BridgeInterceptor.java:162)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:10)
W/System.err: at ye.j.intercept(RetryAndFollowUpInterceptor.java:49)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:10)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:1)
W/System.err: at ak.retrofit.b.intercept(AcceptLanguageInterceptor.java:22)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:10)
W/System.err: at ye.g.proceed(RealInterceptorChain.java:1)
W/System.err: at okhttp3.n.c(RealCall.java:116)
W/System.err: at okhttp3.n.execute(RealCall.java:27)
W/System.err: at ak.im.module.AKCDiscoverNode.queryDiscoverInstance(AKCDiscoverNode.kt:15)
W/System.err: at ak.im.sdk.manager.AKCDiscoverManager$getServer$observable$1$discoverHandler$1.invoke(AKCDiscoverManager.kt:5)
W/System.err: at ak.im.sdk.manager.AKCDiscoverManager$getServer$observable$1$discoverHandler$1.invoke(AKCDiscoverManager.kt:1)
W/System.err: at ak.im.sdk.manager.AKCDiscoverManager.r(AKCDiscoverManager.kt:353)
W/System.err: at ak.im.sdk.manager.AKCDiscoverManager.c(Unknown Source:0)
W/System.err: at ak.im.sdk.manager.f.subscribe(Unknown Source:6)
W/System.err: at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:11)
W/System.err: at bc.z.subscribe(Observable.java:14)
W/System.err: at io.reactivex.internal.operators.observable.ObservableSubscribeOn$a.run(ObservableSubscribeOn.java:7)
W/System.err: at bc.h0$a.run(Scheduler.java:10)
W/System.err: at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:14)
W/System.err: at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:1)
2024-08-09 15:06:03.238 ? W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err: at java.lang.Thread.run(Thread.java:920)
W/System.err: Caused by: java.security.cert.CertificateException: server certificate subject not matched: https://2222121:8663
W/System.err: at ak.im.module.AkeyChatX509PrivateCA.checkServerTrusted(AkeyChatX509PrivateCA.java:166)
W/System.err: at org.conscrypt.Platform.checkServerTrusted(Platform.java:8)
W/System.err: at org.conscrypt.ConscryptEngine.verifyCertificateChain(ConscryptEngine.java:37)
W/System.err: at org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(Native Method)
W/System.err: at org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:17)
W/System.err: at org.conscrypt.ConscryptEngine.readPlaintextDataDirect(ConscryptEngine.java:7)
W/System.err: at org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:22)
W/System.err: ... 46 more
``` debug_cat 发表于 2024-8-9 15:09
如果随便输出一个服务器id,可以拿到这样的信息:```
W/System.err: javax.net.ssl.SSLHandshakeExcep ...
这个方法可以,但还是找不到私钥放哪了,最后我去翻org.conscrypt的源码,找到一个so层hook点,把私钥导出了,但我还是不知道从私钥哪来的,也没看见硬编码:wwqwq 你得提取客户端的证书 我最近也遇到一个 不是同一个APP吧 有空一起交流下
双证书是响应不会给你正常响应抓包 ias想 发表于 2024-8-8 21:59
双证书是响应不会给你正常响应抓包
是啊,我就是想拿到客户端证书和私钥,也就是p12,bks,jks这类的 你响应报什么错 ias想 发表于 2024-8-8 22:08
你响应报什么错
服务器响应400,no ssl cert yinsel 发表于 2024-8-8 22:26
服务器响应400,no ssl cert
我那个是响应403 ias想 发表于 2024-8-8 22:29
我那个是响应403
纯ip的https,我还加不了好友 楼主有结果了,请更新一下帖子,俺也想知道如何处理 这个app如何触发网络请求,因为打开之后没有服务器id,和扫描,需要什么样操作可以触发你说的抓包信息?
页:
[1]
2