首页
社区
课程
招聘
[原创]某安全浏览器历史记录数据库解密算法逆向
发表于: 2024-6-19 23:01 10257

[原创]某安全浏览器历史记录数据库解密算法逆向

2024-6-19 23:01
10257

我的逆向环境是Win10 x64 逆向的产品是64位的某安全浏览器15.3.2075.64版本,版本我会放到附件里面,逆向的原因是需要做取证

我的方法是通过对CreateFile下断点拿到句柄,然后通过句柄来对ReadFile进行过滤,当ReadFile读取到内容后,对内容进行下内存写入断点

1.对Createfile下断点获取句柄

2.通过句柄来对ReadFile进行过滤

3.当ReadFile读取到内容后对内容下内存写入断点

4.当内存断点命中时就是算法的位置 所在的模块是Chrome.dll偏移0x7876C00

接下来在IDA中对算法进行分析,在分析之前需要对常见的算法特征进行了解,我的分析结果是一个AES算法

其中AES的KEY和IV都是通过MD5进行计算的,IV是固定值,KEY需要进行逆向分析

如果不知道算法的特征,可以将0x0C6A56363这种值进行百度

下面代码在Chrome.dll中偏移0x787740 这是我对数据库解密算法的分析结果

在动态调试器中找到Chrome.dll中偏移0x787740的位置,对我们已经分析出来的函数进行命名

可以看到计算完成第一个MD5得到结果是F2 A6 73 A0 A6 E1 B9 9C F6 BA B3 DB F2 37 2B 0A

第二个MD5得到结果是20 D7 42 0F 9C 37 A3 5D CA 6F E9 2A 1C 69 99 A9 这是IV

F2 A6 73 A0 A6 E1 B9 9C F6 BA B3 DB F2 37 2B 0A 和 20 D7 42 0F 9C 37 A3 5D CA 6F E9 2A 1C 69 99 A9做为参数传递给了AES_Initialization

解密前的数据是我们ReadFile读取出来的内容

解密后的数据是Sqlite3的文件标识,到这里数据库解密完成

1.将ReadFile读取的数据拷贝过来

2.使用OPENSSL库的AES算法对算法进行复现

3.解密结果和原程序一样

计算KEY的参数是AF 58 5C B1 7A 03 3E 79 BF 1E 67 DE 9D 6F 17 82 01 00 00 00 73 41 6C 54

计算的结果是F2 A6 73 A0 A6 E1 B9 9C F6 BA B3 DB F2 37 2B 0A

计算IV的参数是E8 3D 01 00 19 32 64 45 A7 FD BE 7A 31 17 2B 5F


计算的结果是20 D7 42 0F 9C 37 A3 5D CA 6F E9 2A 1C 69 99 A9

接下来先看看E8 3D 01 00 19 32 64 45 A7 FD BE 7A 31 17 2B 5F的算法,因为这个算法比较简单

经过分析发现算法就在计算IV的MD5Fun函数里面

下面就是算法的代码,这个算法是一个完整的函数,被内联优化了

算法函数有2个参数,第一个是要计算的值,第二个是接收计算结果的内存

由于算法比较复杂,这里直接将汇编拷贝到代码里面进行调用

算法函数的参数是一个固定的数字1,所以这个IV是固定值

接下来看看AF 58 5C B1 7A 03 3E 79 BF 1E 67 DE 9D 6F 17 82 01 00 00 00 73 41 6C 54的算法

经过分析AF 58 5C B1 7A 03 3E 79 BF 1E 67 DE 9D 6F 17 82 01 00 00 00 73 41 6C 54是由3个部分组成的

第一个部分是AF 58 5C B1 7A 03 3E 79 BF 1E 67 DE 9D 6F 17 82这是最重要的一个密钥

第二个部分是01 00 00 00 这是通过一个简单的算法算出来的,算法的参数是1

第三个部分是73 41 6C 54 这是一个固定值

下面是对第二个部分01 00 00 00算法的复现

由于过程内容太多,具体细节进行省略,大概就是通过对R9的基址进行追踪,然后内存访问断点进行定位

下面是定位到的算法位置是chrome.dll 中偏移0x7877BEF

在IDA中查看算法的全部样貌,可以看到该算法多次进行计算MD5

首次参与计算MD5的值是{ 28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08 

2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A } 这个值是固定的

在算法函数的中间部分出现了1313f621f81ec8be54a1edbc93408161这个值需要进行逆向分析


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2024-6-22 00:17 被旺仔_小可爱编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (10)
雪    币: 4024
活跃值: (3878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
记得有个开源的 go 写的 HackBrowserData
2024-6-20 05:44
0
雪    币: 950
活跃值: (9946)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
3
谢谢分享. 请问下这块代码, google chromiume code search 有没有. 有的话参考下感觉会好一点. 
2024-6-20 09:56
0
雪    币: 1831
活跃值: (2788)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
TkBinary 谢谢分享. 请问下这块代码, google chromiume code search 有没有. 有的话参考下感觉会好一点.
没看过Chromium 的代码,算法应该是软件厂商自己加的
2024-6-20 10:28
0
雪    币: 1831
活跃值: (2788)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
iamasbcx 记得有个开源的 go 写的 HackBrowserData
好东西
2024-6-20 10:31
0
雪    币: 950
活跃值: (9946)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
6
旺仔_小可爱 没看过Chromium 的代码,算法应该是软件厂商自己加的
不好意思,以为你逆向的是Chrome. 那这个是厂商无疑了.
2024-6-20 15:56
0
雪    币: 1831
活跃值: (2788)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
TkBinary 不好意思,以为你逆向的是Chrome. 那这个是厂商无疑了.[em_19]
给学长问个好,哈哈哈
2024-6-20 16:08
0
雪    币: 1420
活跃值: (2281)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
一眼360,记得应该是2021年 出现的加密。 当时花了3天左右逆向的。当时极速和安全应该是通用的 。不过我的评价,某个阶段算法抄微软的加密写的一坨,除了体力活没有任何有技巧。
2024-6-21 11:47
0
雪    币: 1831
活跃值: (2788)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
青丝梦 一眼360,记得应该是2021年 出现的加密。 当时花了3天左右逆向的。当时极速和安全应该是通用的 。不过我的评价,某个阶段算法抄微软的加密写的一坨,除了体力活没有任何有技巧。

太乱了 套娃 一个接一个,3天逆完了这么多牛

最后于 2024-6-21 15:25 被旺仔_小可爱编辑 ,原因:
2024-6-21 15:17
0
雪    币: 922
活跃值: (2952)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
10

360有个非对称算法有毒,用两个字节的哈希跟上传到服务端的key做映射,导致所有的通信数据都能离线解密

最后于 2024-6-21 21:25 被wuaiwu编辑 ,原因:
2024-6-21 21:23
0
雪    币: 429
活跃值: (473)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
11
国产浏览器这个才权威LiuLanQiCode.com
2024-8-3 17:14
0
游客
登录 | 注册 方可回帖
返回
//