qq MsgExdb分析 及QQ的安全问题.doc

上传人:laozhun 文档编号:3037684 上传时间:2023-03-09 格式:DOC 页数:3 大小:15.50KB
返回 下载 相关 举报
qq MsgExdb分析 及QQ的安全问题.doc_第1页
第1页 / 共3页
qq MsgExdb分析 及QQ的安全问题.doc_第2页
第2页 / 共3页
qq MsgExdb分析 及QQ的安全问题.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《qq MsgExdb分析 及QQ的安全问题.doc》由会员分享,可在线阅读,更多相关《qq MsgExdb分析 及QQ的安全问题.doc(3页珍藏版)》请在三一办公上搜索。

1、qqMsgEx.db 分析最近花了几天时间跟踪了一下“QQ 聊天记录查看器 5.3 华军版” ,总算把 聊天记录的存储方法弄清了。大家不要笑我,只是好奇而已,呵呵。 1.聊天记 录存储方式 QQ 聊天记录保存在 MsgEx.db 文件中。以前很早的版本是保存在 Msg.db 中,文件结构也与现在不同,我们就不分析了。 MsgEx.db 采用 Storage 结构化存储。关于 Storage 复合文档的知识请查阅 Microsoft 相关文档,我们不做赘述。 大家可以用 VC 自带的 DocFile View 工具查看该文件的内容, 可以看到文件结 构大致如下: |-MsgEx.db | |-I

2、ndex.msj | |-Matrix.db | |-Index.msj | |-C2CMsg | |-IMInfo | |-SysMsg | |-DiscMsg | |-QQ 号码 | |-info.dat | |-10000 | |-GroupMsg | |-Data.msj | |-Matrix | |-Data.msj | |-MobileMsg|-TempSessionMsg 消息内容都存储在每个号码下面的 Data.msj 中,通过 Index.msj 索引。 消息内容是经过加密处理的,必须经过解密才能看到。 2.解密方法消息内容采用 BlowFish 分组加密。每 8 个字节为一

3、个分组。密钥 Key 通过 QQ 号码生成,具体算法稍后讨论。 解密方法: a.取前 8 个字节,通过 BlowFish 解密,得到 decryptKey; b.decryptKey 与后面 8 个字节 XOR,对结果再进行一次 BlowFish 解密; c.将 decryptKey 与前 8 个字节 XOR,得到第一组结果; d.decryptKey 与后面 8 个字节 XOR,重复 b,c 两步; e.最终全部数据解密完毕。最后会剩下一组 8 字节无法解密,这个实际上是 冗余数据,似乎是用来作为校验。 3.具体步骤以上解密时,BlowFish 的密钥是一个全局公用密钥 Key。Key 要通

4、 过 QQ 号码生成,具体步骤是: a.将 QQ 号码进行 MD5 变换,得到 Md5Key b.取 Matrix.db 的数据,对其进行解码。简单说一下 Matrix.db 文件的结构:Matrix.db 采用分块存储,每个 Record 包含类型、名字长度、名字、内容长度、 内容几个字段组成。用数据结构表示就是:struct Record char rType; short nLen; char NamenLen; intrLen; char ContentrLen; ; 初始内容也是通过加密存储的。 解 密方法很简单:将长度的低位字节和高位字节 XOR,得到 key;将内容逐个与 key

5、 进行 XOR, 就得到结果。 对名字和内容分别进行解密即可。 解密后会看到 STL, TIP, CRK, CPH, CAH 等字段,不清楚具体的啥含义,感兴趣的同学可以自己去研究研 究。我们要用到的是 CRK 字段,长度为 32 字节(如果本地聊天记录加密,可能 会有变化,没试过) 。将得到的 CRK 字段作为 pData。 c.用 Md5Key 对 pData 进行 BlowFish 解密, 得到全局密钥 Key 4.结论以上讨论 的都是本地聊天记录没有加密的情况。如果选择了加密,没有密码是肯定解不出 来滴,大伙就不用费心了。QQ 的安全问题QQ,就是 OICQ,TENCENT 公司研发的

6、即时信息软件,是中国市场上国产 IM 软件绝对的老大。中国网民几乎人手至少一个 QQ 号码。大家都比我清楚,不多 介绍。 本文谈谈 QQ 的安全问题。 QQ 具有如此惊人的人气,却有着与之不相称的安全问题。基本上可以说, 使用 QQ,基本没有任何隐私可言!另外它也为你的电脑带来了诸多附送的安全 隐患。有识之士如我都早已不用 QQ 啦。 一,本地密码保存方式 QQ 的客户端会不经用户同意,把用户的密码经过数万次的 MD5 运算后存在本地。每次登陆在发送网络数据包之前进行本地验 证,相信熟悉 QQ 的朋友对这一点都不陌生。这样事实上给了攻击者暴力破解 QQ 密码的机会,只要攻击者得到本地保存的这个

7、数据即可。这个文件曾经叫 ewh.db 或者 user.db, 不知道现在是否又变了。 说明一点, 由于 MD5 作了数万次, 这样的破解效率不高,但再低的效率也有弱智密码中招,当年在线尝试登陆都可 以,还有什么不可能呢?如果选择了自动登陆,那么密码的一次 MD5 保存在 oicq2000.cfg 中,破解速度大大提高。二,本地聊天记录查看漏洞典型的攻击场景是:已经拿到全部本地记录,就 是一个以 QQ 号为名的文件夹,不知道密码(或者俗称忘记了密码,求助者多数 号称是 mm)如何查看其聊天记录? QQ 登陆的流程是这样的:1.输入用户名密码->2.本地验证通过->3.得到用户界面(

8、企鹅开始闪动)->4.发送登陆包->5.收 到登陆包成功响应->6.登陆成功。其中在步骤 3 的时候,我们就可以查看聊天记 录了。如果 2 失败,则要求重新输入密码;如果 5 失败,则退出步骤 3 中得到的 用户界面。对于没有正确密码的攻击者来说,要保持 3 的状态以查看本地聊天记 录,需要首先骗过 2,并防止 4 发生。由于 QQ 没有软件加密(加壳) ,所以 2 十分容易,修改一个跳转就 OK。4 就更容易了,拔了网线或设置防火墙就可以 了。现在网上有很多这样的修改教程和修改好的客户端。所以不再赘述。 三,本地聊天记录的加密方法事实上以上第二条所说是一个利用已有客户端 简

9、单规避本地检查的办法。如果你愿意,可以自己写一个查看聊天记录的工具, 因为它的加密方式是如此的脆弱。首先普及一点常识:TEA 算法(Tiny Encryption Algorithm,即微型加密算法)是一个正规的密码学意义上的加密算法,你可以在 http:/www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html 找到原作者对 其的介绍。 QQ 的加密,包括本地文件加密和远程数据包加密,主要使用的就是这个算 法。值得注意的是原作者使用的是 32 轮运算(即使是 32 轮,这个算法也被证明 是可以已知明文攻击的) ,然而 TENCENT 将

10、其降为了 16 轮。时间上省了一半, 但安全性却严重下降。算法常识以后再讲,我们只要知道该算法是公开的就可以 了。 (废话,不公开哪来的那么多开源 QQ,比如 lumaQQ) 。 QQ 本地历史数据,包括聊天记录和一些日志,用一个 key 加密后存在本地 Msg.db 或者 MsgEx.db 中,但是这个 key 呢,用 QQ 号码的 MD5 加密存在本地同 一个文件中, 换句话说, 知道 QQ 号码就可以解密这些文件, 号码是什么呢? QQ 就是所在目录名! 当然,如果你启用了本地消息加密,情况会稍微好那么一点点,要看你的本 地加密密码强度了。但是有多少人会去设置呢?四,木马泛滥,Windows 的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号