吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1833|回复: 27
上一主题 下一主题
收起左侧

[原创] 数据库加解密保姆级定位思路和技巧(以PC钉钉为例)

  [复制链接]
跳转到指定楼层
楼主
ReverseJourney 发表于 2024-12-19 13:51 回帖奖励
本帖最后由 ReverseJourney 于 2024-12-19 14:09 编辑

本文章中所有内容仅供学习交流,不用于其他目的。若有侵权,请联系作者删除。
一、准备
钉钉版本:7.6.25-Release 110510808
x64dbg
IDA
010 Editor
二、分析
在分析数据库加密之前,先大致判断数据库采用了哪种加密算法。通常加密数据库有以下几种类型:
1.魔改标准sqlcipher加密算法[AESECB XXTEA等](钉钉 QQ)
2.wxsqlite(企业微信)
3.标准sqlcipher(微信、QQNT、蝙蝠、signal等)
其中标准sqlcipher出现得最多。

聊天数据库路径:
C:\Users\xxx\AppData\Roaming\DingTalk\xxxxxxx_v2\DBFiles
打开一个较小的钉钉数据库,比如calendar_v2.db,可以看到16字节对齐的重复数据,这种特征不是AES ECB就是XOR解密,这一片区域原始数据都为0。   


确定目标模块
钉钉有3个进程,附加有标题的那个进程。


x64dbg下断点 bp CreateFileW,登录钉钉,断下后查看堆栈,调用来自mainframe.dll。
1.定位sqlite3_open/sqlite3_open_v2/openDatabase
从源码得知sqlite3_open和sqlite3_open_v2都会调用openDatabase,
openDatabase里面有些常量字符串可以用于定位。如图所示:


openDatabase函数内部的字符串




可以通过搜索"BINARY" 、"NOCASE" 、"RTRIM" 、"main"、"temp"等字符串定位openDatabase。
在mainframe.dll中搜索"NOCASE",下断点然后登录钉钉,登录成功会在打开数据库时断下,如图所示:   


断下来的地方位于openDatabase内部,跳出此函数,就定位到了打开数据库函数,如图所示:
  
2.定位sqlite3_key
定位sqlite3_key有2种常用方案
(1)定位到打开数据库函数之后,一般情况下在往下不远处会出现设置密钥call,找不到就跳出这层call往上层跟踪可疑函数。
(2)通过"main"字符串定位,openDatabase内部也出现了"main"字符串,也会断下来。但有时候一些程序直接调用sqlite3_key_v2打开数据库,并不会出现"main",从而定位不到设置密钥函数。源码如图所示:

往下运行,找到了非常可疑的设置密钥call,x64dbg 按F7进入sub_181E00E30。
sub_181E00E30如图所示:


查看sub_181ED0660         


可以看出IDA伪代码和源码sqlite3CodecAttach十分类似,
sqlite3Codec(sub_181E30BF0)是最关键的函数之一,里面存在具体的加密算法页大小,如图所示:


对181FA2A90下断点可以看到解密后的明文数据
        

现在流程已经很清楚了,数据库密钥为
e0b8449af5de06ecb36b182970bfbadf22197016915918185882701231384169
加密算法是AES_ECB算法,但现在又有一个问题,如何确定密钥长度到底是16、24、32呢?  
3.如何确定密钥长度
(1)可以写代码依次截取前16、24、32位作为AESKEY解密数据库。
(2)分析setaeskey(sub_181E298F0)


在sub_181FA1E30处下断点,rcx=密钥,rdx=AES类指针,F8步过,看到AES类指针如图所示:              


该函数进行了 字节代换、行移位、列混合、轮密钥加,共计10轮,所以密钥长度为16。     
4.解密流程
MD5(uid).substring(0,0x10)得到AESKEY,AES_ECB_NoPadding解密数据库得到明文。写代码还原数据库,如图所示:

免费评分

参与人数 9吾爱币 +9 热心值 +6 收起 理由
coderLzh + 1 用心讨论,共获提升!
xuezhang18 + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
Carinx + 1 + 1 用心讨论,共获提升!
tomoon + 1 + 1 用心讨论,共获提升!
4nfu + 1 我很赞同!
smnra + 1 + 1 鼓励转贴优秀软件安全工具和文档!
影视专业 + 1 + 1 用心讨论,共获提升!
HongHu106 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
SN1t2lO 发表于 2024-12-20 10:40
黄色土豆 发表于 2024-12-20 09:19
取证软件,指的是?

取证啊,就是固定各种数字证据的,可以解各种聊天软件,电子邮件,上网记录啥的,qq,wx都是只要扫一下码所有数据都能解锁,有的能从内存中直接提取密钥
沙发
hackgsl 发表于 2024-12-19 16:42
3#
SN1t2lO 发表于 2024-12-19 16:56
4#
亲亲宝贝A静 发表于 2024-12-19 18:01
感谢分享但是学不会咋闹
5#
zhiazhi 发表于 2024-12-19 23:23
大佬太厉害了
6#
tomoon 发表于 2024-12-20 08:31

向大佬学习。
7#
wasm2023 发表于 2024-12-20 08:47
感谢分享
8#
yuler108 发表于 2024-12-20 08:52
收藏了,好好跟着大佬学习一下,拓宽思路
9#
随风呀 发表于 2024-12-20 09:02

谢谢分享
10#
黄色土豆 发表于 2024-12-20 09:19
SN1t2lO 发表于 2024-12-19 16:56
做取证软件的最熟悉这些玩意了

取证软件,指的是?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 01:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表