首页
社区
课程
招聘
[原创]微信聊天备份加密原理
2015-4-29 15:53 40684

[原创]微信聊天备份加密原理

2015-4-29 15:53
40684
微信聊天备份加密原理:   

 从14年某月起,电脑管家提供了微信聊天记录备份的功能,这为我们研究微信聊天记录及微信的加密算法提供了一个研究方向。
    
本文的主要目的   
   1.和大家分享
   2.感谢版主把我转成正式会员    
    
    
准备工具:   
  idaq pro(静态编译工具)
    ultraedit(十六进制编辑器)
    filemoniter(文件操作监控工具)
  regmonitor(注册表操作监控工具)
    
相关算法   
 RC4,CRC32
    
    
分析及定位过程(为小白提供解决问题的思路):    

    1.功能由哪个模块提供    
     首先我们得知道微信聊天记录是腾讯电脑管家的哪个模块提供服务的。这样我们就能够对证下药,减少分析环节的弯路。
     大公司的产品都基本模块化,像腾讯电脑管家这种需要不断增加功能的软件,基本为一个大排档,提供入口而已。
     而功能是由不同的plugin来提供(也就是说是由一些小EXE或DLL来提供服务)。
     通过使用该软件,查找关健字backup,我们发现是 plugins\WechatBackup\WechatBackup.exe提供了服务。
    
    2.软件运行时有哪些输入和输出,调用了哪些库,记录了哪些文件,有哪些东西可供我们快速分析算法和加密原理的,
      在我们静态分析代码前提前做这些工作,就相当于外围扫描,精确定位了。
        
     这一步是关键,是高手和小白的主要区别,学习下可以减少小白的摸索过程。
      1.我们的主要工具是idaq,ultraedit,filemoniter,regmonitor,vc的depends
      
      通过filemoniter,我们发现 wechatBackup.exe,在运行过程中创建了WechatBackup.log文件,然后又删除了。这里面一定有我们想要的东东。
      在 C:\Documents and Settings\All Users\Application Data\Tencent\WechatBackup\Data\wxid_XXXXX\2015年04月26日16点58分49秒下有三个怪文件。
      这里面可能存在有我们的备份的聊天记录内容。 有些文件的长度不为8的整数而且是奇数。(在我们的知识结构里,比较可能是采用RC4加密算法)
      
                
      通过regmonitor,我们发现 wechatBackup.exe, 打开了 [HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\WechatBackup]的"EnableLog"键
      字段,通过注册表我们发现,该键值不存在,那我们直接创建了该健值,并置为1.
          
      通过idaq的import视图 我们发现,WechatBackup.exe没有静态引用 什么库的Decrypt,encrypt,md5,RC4,AES,DES之类的函数,但引用了KERNEL.DLL 的LoadLibraryW。
      那可能是通过动态加载动态库,LoadLibrary。我们通过查找关健字 LoadLibrary可以发现 使用了 QMCommon.dll动态库了RC4和CRC32函数。
      直接用idaq在相关函数上下断点即可了。    
          
          
     
    3.软件可能的保护措施
     做为腾讯电脑管家,本身提供了杀毒和安全保护功能。为此一定为本身的程序提供了保护措施。
     一般的保护措施是     
     1.加壳加密.        
       我们通过ULTRAEDIT查看WechatBackup.exe,没有发现UPX之类的关健字,相关的资源情况正常,没有加密。
       如果大公司用这种方式,则有可能会被一些杀毒软件认为是病毒,则会出现误报。       
     
     2.将进程提到较高权限或到其他内核空间,反编译及调试工具导致无法attach到进程,这种方法比较适合腾讯电脑管家这种软件适用。
       在实际调试中,我发现腾讯电脑管家采用了这种方式,阻止了idaq进行动态分析.
       我们有个小办法绕开它。就是把WechatBackup目录单独挎贝到硬盘的其他目录,在新目录下运行WechatBackup.exe,
       然后用idaq attach到该进程,顺利解决。
              
     3.软件加签名,防止被病毒感染。
     

算法分析:    
    1.  备份在电脑中的加密文件有 WeChatMagicCode文件(聊天记录索引),data(聊天记录内容)文件,WechatGenInfoCode(记录用户的ID手机类型等信息)文件。
     这些保存在文件 C:\Documents and Settings\All Users\Application Data\Tencent\WechatBackup\Data\wxid_XXXXX\XX年XX月XX日XX分XX秒下.
     2.  我们感兴趣的是data文件文件,该文件采用块加密方式。结构是长度XX+CRC32(四字节)+聊天记录内容。
     3.  加密密钥是0123456789abcdef(重大安全缺陷喔).
     
总结:    
    1. 反编译分析是比较苦B的工作,而通过一些外围的分析,可以帮助我们快速地定位到我们感兴趣的模块。
    2. 程序的模块化及完善的日志记录,在正式分析程序前,将这些开关打开,可以为我们分析代码提供许多便利的通道。     
    3. 直接打开程序的HEX,可以了解程序的信息。
    4. RC4是一种快速的加密算法,特点是,加密速度快,字节不需要整8补位,减少冗余,这一点可以做为我们区别AES/DES/RSA算法的一个突破点。

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞1
打赏
分享
最新回复 (50)
雪    币: 961
活跃值: (219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Maccha 2015-4-29 16:30
2
0
加密密钥是0123456789abcdef   

ps:为什么是这么简单的
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
ggggwwww 4 2015-4-29 16:35
3
0
应该是安全设计的缺陷。
雪    币: 218
活跃值: (291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wssbwpp 2015-4-29 16:40
4
0
牛,腾讯的产品都能分析的这么清楚,你有没有能实现备份的代码,发一份出来。
雪    币: 961
活跃值: (219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Maccha 2015-4-29 17:24
5
0
是不是可以随便查询聊天记录了?
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
死神镰刀 2015-4-29 17:51
6
0
腾讯搞微信的技术人员这么烂?密钥这么简单?用的加密算法RC4本身就是有安全缺陷的算法。
雪    币: 6
活跃值: (980)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookzo 2015-4-29 18:22
7
0
lz酷爆了
雪    币: 218
活跃值: (291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wssbwpp 2015-4-29 18:32
8
0
lz有没有实现备份还原功能?
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
ggggwwww 4 2015-4-29 18:43
9
0
我个人理解
多考虑下研发人员的心理。
如果天天加班,您会想着算法安全,系统安全吗。
产品赶时间上,功能第一,安全都排在后面。

另外为了公安破案的需要,多少都要留点后门的。
雪    币: 194
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
baron 2015-4-30 08:20
10
0
上了个开胃菜,想吃正餐了,发现没了?楼主继续啊。
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
ggggwwww 4 2015-5-1 17:08
11
0
我后面争取写成一个序列。
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骨灰菜虫 2015-5-2 03:37
12
0
坐等楼主系列犀利发出。。。。
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yzbkof 2015-5-2 08:35
13
0
真心不错,那个加密密钥就不搞复杂一点.........
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yuiuu 2015-5-3 10:50
14
0
太经典了,楼主继续,好好研究一下微信,等看例子
雪    币: 133
活跃值: (233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
不追浮云的人 2015-5-3 11:02
15
0
@腾讯,安全何在呢,
雪    币: 74
活跃值: (166)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
LOVEZ 2015-5-3 19:59
16
0
LZ 棒棒哒
雪    币: 9
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wapmyw 2015-5-3 21:53
17
0
厉害啊啊啊啊啊
雪    币: 649
活跃值: (1668)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
pushmop 2015-5-4 10:20
18
0
他们又不是第一次偷懒了。
雪    币: 294
活跃值: (987)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hackbs 2015-5-4 11:47
19
0
也是醉了,工程师肯定要被扣工资了。这种加密方式!
雪    币: 218
活跃值: (291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wssbwpp 2015-5-4 17:41
20
0
LZ,关于安卓微信备份,我有几个问题想跟你交流一下,能否加我QQ:407953188?谢谢!
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tahelin 2015-5-4 22:51
21
0
小白学习大牛的思路
雪    币: 213
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
appben 2015-5-5 01:15
22
0
感谢楼主分享!
雪    币: 4836
活跃值: (2928)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vigiles 2015-5-6 09:11
23
0
我能回复不?崇拜,期待系列教程
雪    币: 293
活跃值: (232)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
瀚海云烟 1 2015-5-6 09:36
24
0
律师函 正在赶来
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
大白痴 2015-5-6 21:56
25
0
很厉害啊我来看看哦
游客
登录 | 注册 方可回帖
返回