首页
社区
课程
招聘
[原创] 更高更妙的抓包——从Chrome源码学习使用Cronet 通讯组件的app的通用抓包方法
发表于: 2023-7-13 00:34 33088

[原创] 更高更妙的抓包——从Chrome源码学习使用Cronet 通讯组件的app的通用抓包方法

2023-7-13 00:34
33088

最近看论坛里关于抓包的问题聊的火热,小弟我也借此机会献丑来分享一下我的抓包的研究成果。

毫无疑问,app逆向的第一步是抓包。通过抓包可以获取很多有用的线索,比如url,参数名等。再根据url,参数名等,可以逐步抽丝剥茧找到app收发数据的地方,然后就能找到最关键的签名所在的位置。研究清楚签名,接下来就可以做一些不可告人之事了~

安卓app常用的网络框架是okhttp,对于okhttp的抓包研究已经非常成熟了,无非是certificate pin或者hostname verify那一套。但是最近几年,出现了一些基于Google Cronet通讯框架的app,比如某音,某小破站等等。Cronet是从Chrome中抽出的给移动端使用的网络组件,目前针对Cronet抓包,证书校验的研究比较少,大多是奇技淫巧,没能从根本上挖掘。本文从Chrome源码出发,结合实例某音,研究一下使用Cronet安卓程序的正确抓包姿势。

打开手机代理,将https证书塞入手机的根目录,启动目标应用,结果:

请求全部失败,app界面也显示无网络,无所谓,我们打开日志先看看:

看到了:ERR_CERT_AUTHORITY_INVALID

很明显是检测到了证书 无效。

经常使用Chrome浏览器的朋友应该对这种ERR_开头的错误有印象:

没错,这正是Chrome的报错通用的格式。

那么我们就可以从报错入手,去Chrome源码里看看这个错误的来源,以此为根据寻求bypass的方式。

打开Chrome Code Search(在线的Chrome源码浏览网页,提供了强大的交叉引用和全文搜索功能)

全局搜索ERR_CERT_AUTHORITY_INVALID

出现了很多结果,观察后发现 net/cert/cert_status_flags.cc这个文件比较可疑,点进去看看:

发现 一个叫做MapCertStatusToNetError 的函数里,返回了这个ERR_CERT_AUTHORITY_INVALID。

(MapCertStatusToNetError )映射证书状态至网络错误类型,查看这个函数的被谁引用:

在一个cert_verify_proc_android.cc的文件里被引用。这个文件名已经暗示了在检查/校验证书,我们点进去看看:

在VerifyInternal这个函数里,先用TrustManager校验了一番,如果发现校验结果verify_result的cert_status出现了error,则直接将错误映射后返回。如果没有错误则检查了证书的发布者是否为known_root,然后返回OK。

我们再往上回溯VerifyInternal这个函数:

看到一个更抽象的名字:cert_verify_proc.cc(证书校验程序),点进去看看:

在这个函数中,rv保存了VerifyInternal的结果,如果结果是OK,则再继续进行了更多的检查:

比如证书是否使用了较弱的hash算法,是否过期,是否有效期过长(ssl证书有效期通常为1年)等等。

最后将rv返回。

我们看到无论是哪一步返回,rv的值都是MapCertStatusToNetError 这个函数赋予的。所以如果我们直接将这个的返回值改为OK,那么无论怎么校验,最终Verify的结果都是通过。换句话说,就是证书校验的过程被bypass了。所以我们考虑在app的so中找到这个函数的位置,然后修改即可。

我们观察MapCertStatusToNetError这个函数的特征:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2023-8-3 18:25 被乐子人编辑 ,原因: 补充特殊情况
收藏
免费 44
支持
分享
最新回复 (39)
雪    币: 2053
活跃值: (1791)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了。感谢分享
2023-7-13 07:45
0
雪    币: 83
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
2023-7-13 09:59
0
雪    币: 3573
活跃值: (31026)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哇哦
2023-7-13 10:48
0
雪    币: 1373
活跃值: (6271)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
.KK
5
很强~
2023-7-13 11:00
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
高人~阔以
2023-7-13 11:05
0
雪    币: 38
活跃值: (1931)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
大佬666
2023-7-13 11:44
0
雪    币: 10085
活跃值: (4486)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢分享,思路值得借鉴
2023-7-13 12:53
0
雪    币: 1738
活跃值: (2337)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9

大佬厉害!

最后于 2023-7-13 12:57 被huluxia编辑 ,原因:
2023-7-13 12:57
0
雪    币: 2731
活跃值: (1651)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
牛p
2023-7-13 14:25
0
雪    币: 37
活跃值: (441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11

不知道有没有侵权,路过的时候看到的。

支持正版,打击盗版。从我做起,从小事做起。从看雪做起。

最后于 2023-7-13 15:20 被执法长老R0编辑 ,原因:
2023-7-13 15:17
0
雪    币: 3221
活跃值: (4992)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
12
执法长老R0 不知道有没有侵权,路过的时候看到的。支持正版,打击盗版。从我做起,从小事做起。从看雪做起。
咦?
2023-7-13 16:08
0
雪    币: 191
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
执法长老R0 不知道有没有侵权,路过的时候看到的。支持正版,打击盗版。从我做起,从小事做起。从看雪做起。
人家又不是没贴原链接,加上自己的总结了而已。。。现在对侵权的定义已经这样了嘛???
2023-7-13 17:29
0
雪    币: 626
活跃值: (3926)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
执法长老R0 不知道有没有侵权,路过的时候看到的。支持正版,打击盗版。从我做起,从小事做起。从看雪做起。
转载 贴个转载原链接 宣传一波 这也不行了?
2023-7-13 19:45
0
雪    币: 98
活跃值: (1199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
看过一本《更高更妙的物理》物理竞赛的书
2023-7-14 11:09
1
雪    币: 571
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
分析的挺好的,我试验机android11,push到data/data/packname/lib下面替换发现没用,应该是系统有so缓存机制,不知道缓存在哪了,将apk解包替换重新打包安装即可。
2023-7-14 11:30
1
雪    币: 531
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
执法长老R0 不知道有没有侵权,路过的时候看到的。支持正版,打击盗版。从我做起,从小事做起。从看雪做起。
卧槽 otto
2023-7-14 11:52
0
雪    币: 3221
活跃值: (4992)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
18
SharsDela 看过一本《更高更妙的物理》物理竞赛的书[em_51]
名称来源于此
2023-7-14 12:51
1
雪    币: 3221
活跃值: (4992)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
19
一颗小草 分析的挺好的,我试验机android11,push到data/data/packname/lib下面替换发现没用,应该是系统有so缓存机制,不知道缓存在哪了,将apk解包替换重新打包安装即可。
应该push到data/app/package/lib/arm64下吧
2023-7-14 12:53
0
雪    币: 37
活跃值: (441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mb_gtnrqjce 人家又不是没贴原链接,加上自己的总结了而已。。。现在对侵权的定义已经这样了嘛???

转贴之前还是希望征求原作者同意,而不是直接转载。楼主发文章出来供大家学习参考学习,这是希望我们可以相互学习共同进步。


没有被原作者知晓、同意的情况下,做出的"转载",而且还是收费的,我个人更愿意视其为"窃"。


个人这里觉得不太合适,君子爱财取之有道。而不是取之有"盗"。


以上均是本人的一些看法,如果与看官的看法冲突,请多多海涵,本人无意冒犯。


推荐几个别人想要转载之前的操作。



看雪的高级回复不能设置回复具体的人物对象。咱这里回复的是 13楼临时成员mb_gtnrqjce、14楼 codeoooo。

2023-7-14 14:40
1
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
执法长老R0 不知道有没有侵权,路过的时候看到的。支持正版,打击盗版。从我做起,从小事做起。从看雪做起。

6

最后于 2023-7-14 15:19 被大魔法狮子编辑 ,原因: 1
2023-7-14 15:18
0
雪    币: 571
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
乐子人 应该push到data/app/package/lib/arm64下吧
我下载的最新版dy,只有v7库,push位置应该没错不知道为啥没反应,重打包没问题,还是感谢楼主分析
2023-7-14 15:20
0
雪    币: 2320
活跃值: (3726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vay
23
太强了
2023-7-15 11:44
0
雪    币: 3253
活跃值: (1911)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
执法长老R0 不知道有没有侵权,路过的时候看到的。支持正版,打击盗版。从我做起,从小事做起。从看雪做起。
啊,这拿来主义用的妙啊
一方面,“小弟都会”,另一方面,“菜菜们,买的不亏八”
2023-7-15 11:47
0
雪    币: 18
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
好大哥,这个是啥版本,我看最新的版本好像有点不一样
2023-7-15 13:07
0
游客
登录 | 注册 方可回帖
返回
//