首页
社区
课程
招聘
[分享] android逆向学习--绕过非标准http框架和非系统ssl库app的sslpinning
2021-6-8 23:48 35592

[分享] android逆向学习--绕过非标准http框架和非系统ssl库app的sslpinning

2021-6-8 23:48
35592

随意在安卓应用市场上下载了一个电子书app,发现还是有点东西的:
Charles首次抓包报错如下:
图片描述
第一反应就是有sslpinning,感觉挺简单的,但是几乎找了所有公开的unsslpinning脚本都无济于事, dump证书也如此。

 

对apk解包时发现里面有okhttp3,以为使用了okhttp3库,但hook后发现并不如此。

 

既然okhttp3 hook不到,就找了更深层次点的函数SSLOutputStream的write, 奇怪的是也没发现有调用,突然意识到事情可能没那么简单了!。

 

对于这种情况,貌似就只能多对一些底层或者基础的涉及网络的函数进行hook,终于在java.net.url函数打开了突破口
图片描述
看这个调用栈大概能看出,这个app因该是自己根据okttp3魔改了一个自己的框架,看后面的文件名感觉有点熟悉。
图片描述
这不就是okhttp的拦截器吗?
Ok直接看源码
图片描述
这个地方能看出来跟okhttp还是有区别的,决定hook下打印出所有的拦截器类。
图片描述

 

在okhttp3中,tls连接的部分在倒数第二个拦截器中,但是在本app上并没有这样做,所以重要分析了最后一个拦截器callServerInterceptor,具体如下:
看这个excutecall函数很关键,继续往下跟,其实hook这个地方就已经能拿到请求体和响应内容了,但是以学习为目的的话还是要搞明白它是怎么做的。

 

这个executel最终会调到com.ttnet.org.chromium.net.impl.CronetUrlRequest$1 中,然后就进入了native层。
图片描述
至此在java层也没发现在哪里有对证书的操作,所以有充分的理由相信他在native层做了校验。

 

尝试hook了下libssl.so中的SSL_write函数,居然也没发现有调用,惊出了一生冷汗,难不成是用了自己的ssl库?尝试搜了以下app已加载的so库,果不其然:
图片描述
查了下这个boringssl是google开源的openssl分支,于是尝试hook了下 boringssl中的SSL_write函数,果然有调用,所以可以基本确定它使用了自己的ssl库。

 

根据SSL_write的调用栈,判断该函数的调用来自libsscronet.so,于是在该库中搜索判断是否有调用boringssl中涉及证书验证的函数。

 

图片描述

 

上面的不管,只看导入函数,有两个函数比较可疑 SSL_CTX_set_custom_verify和SSL_CTX_set_reverify_on_resume,于是下载了一份boringssl的源码,分别看了下这两个函数,果然是用来做证书校验的,并且都有调用。
图片描述
该函数的原型为:
图片描述
第二个参数为校验模式:
图片描述
第三个参数为回调函数。
回调函数的返回值用来确认证书验证是否成功,具体如下:
图片描述
Hook之:
图片描述
图片描述
图片描述
这里有个问题,不能直接替换他原本的回调函数,必须要调用一次,不然会出问题,具体是什么原因懒得去研究。
验证:
图片描述
既然这个函数可以unpinning,另一个函数现在就懒得去看了,有空在研究下。

 

后来大概查了下,这个app是今日头条旗下的,难怪如此。接下来去干签名算法了。。。。


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞17
打赏
分享
最新回复 (24)
雪    币: 6569
活跃值: (3823)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
LowRebSwrd 4 2021-6-9 10:10
2
0
分析思路不错
雪    币: 159
活跃值: (695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaozhu头 2021-6-10 00:50
3
0
等签名算法
雪    币: 97
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_dqwgdsem 2021-6-10 11:22
4
0
等签名算法
雪    币: 62
活跃值: (518)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2021-6-18 17:46
5
0
竟复杂如斯
雪    币: 568
活跃值: (304)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
feng504x 2021-6-22 11:01
6
0
大佬提供一下apk学习一下
雪    币: 5014
活跃值: (2496)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
FaEry 6 2021-6-22 12:52
7
0
有意思!
雪    币: 197
活跃值: (689)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
loser_joker 2021-6-22 16:10
8
0
学到了
雪    币: 4
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LuciferArmy 2021-7-2 09:43
9
0
感谢分享,看截图貌似是Retrofit框架
雪    币: 1438
活跃值: (1521)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
奋斗der小鸟 2021-7-2 17:33
10
0
feng504x 大佬提供一下apk学习一下
去看新版本的某音就行了,一样一样的
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Sn0w0day 2021-7-13 12:29
11
1
 adb shell settings put global http_proxy ip:port 一行命令就ok...
雪    币: 49
活跃值: (1557)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
flashgg 2021-7-25 10:22
12
0
貌似就只能多对一些底层或者基础的涉及网络的函数进行hook,终于在java.net.url函数打开了突破口,这个是怎么HOOK的?
雪    币: 187
活跃值: (2406)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
杰克王 2021-8-8 00:38
13
0
牛逼
雪    币: 205
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
咸鱼王 2021-8-9 13:33
14
0
这是魔改chromium开源的网络框架 叫Cronet 开源地址在https://chromium.googlesource.com/chromium/src/+/refs/heads/main/components/cronet
他们用这个库好像是为了用quic什么的来着
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 2021-8-25 18:29
15
0
mark
雪    币: 2346
活跃值: (376)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
geekbyte 2021-8-30 23:21
16
0
强啊
雪    币: 568
活跃值: (304)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
feng504x 2021-10-13 11:35
17
0
按照大佬的思路搞掂了新版本tt的捉包...谢谢大佬
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_foaqyzpj 2021-11-4 19:33
18
0
证书的问题
雪    币: 710
活跃值: (1400)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
司徒废人 2022-1-29 12:30
19
0
验证可用 大佬威武
雪    币: 161
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
陈世已忘 2022-3-10 15:55
20
0
Sn0w0day adb shell settings put global http_proxy ip:port 一行命令就ok...
具体怎么操作呢 我试了一下 貌似不行呢
雪    币: 10
活跃值: (437)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_mzwrvupz 2022-3-11 00:36
21
0
Sn0w0day adb shell settings put global http_proxy ip:port 一行命令就ok...
具体操作讲一下
雪    币: 7
活跃值: (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr吕先生 2022-4-20 10:57
22
0
亲测可用,感谢楼主大佬的分享,爱你 么么么哒
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Spectre1998 2022-10-3 19:15
23
0
大哥你好,小弟有问题请教,看您长时间没在线了,如果看到消息加我qq/wx:1021185473一下,谢谢!
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_ycgazzji 2022-11-29 02:48
24
0
小弟有偿求教大佬一个问题,qq 3790973
雪    币: 2649
活跃值: (1541)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hhhaiai 2023-6-6 17:02
25
0
aosp 中如何拦截呀
游客
登录 | 注册 方可回帖
返回