qq MsgExdb分析 及QQ的安全问题_第1页
qq MsgExdb分析 及QQ的安全问题_第2页
qq MsgExdb分析 及QQ的安全问题_第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 将其降为了 16 轮。时间上省了一半, 但安全性却严重下降。算法常识以后再讲,我们只要知道该算法是公开的就可以 了。 (废话,不公开哪来的那么多开源 qq,比如 lumaqq) 。 qq 本地历史数据,包括聊天记录和一些日志,用一个 key 加密后存在本地 msg.db 或者 msgex.db 中,但是这个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论