首页
社区
课程
招聘
[原创]微信系列研究之--------保安那些事
发表于: 2015-5-17 11:11 46953

[原创]微信系列研究之--------保安那些事

2015-5-17 11:11
46953
0X01 前言

     首先对大家的支持表示感谢,这几天兄弟的HP笔记本坏了,看样子只能买个新的了,后面没法愉快地分析微信的机制。只能用MAC 看IDA PROC DEMO的静态分析了,这每天蠢蠢欲动的,只能看不能上手摸,太让人着急了。 哪位好心人有IDA PRO for mac 6. X (非DEMO)版本的给兄第发个呗

0x02 小插曲
     先来段程序员骂娘的故事,在调试的时候发现一段文字,顿时让我眼睛亮了。这是从微信的调试信息里找到的(版本6.1)

dkwt acc NOT Ready , the fucking MMReqRespBase need the fucking uin ???  if u find this log , fuck dk. 

DK是微信开发比较主力的人员,许多JAVA和NATIVE C之间的加密调用由DK完成的。
分析程序就是和设计师时空对话的过程啊。


0x03 保安那些事
上一篇,我们介绍了小保姆,通过小保姆提供的地图,我们已经溜进大院里了。这下我们可以好好地研究下大院里的保安们。
下面我们来了解微信的几个安全人员,分别是看门大爷,机要员和内勤,看看他们是如何提供保护的。


看门大爷-----APK的保护


1.将重要的资源放在XML中和JAR包中。

2.APK启动时将读取XML中数据,创建资源。

3.APK启动时将JAR(com.tencent.mm.plugin.mutidex.jar,com.tencent.mm.plugin.weardex.jar)释放,并将DEX加载到内存里。
4.APK合法性判断,获取APK的版本号,日期,签名,大小等,上发到服务器侧验证。
  SO合法性判断,判断大小,修改日期。
5.异常时,用APK中覆盖程序目录下的组件。

总的说,微信的APK保护还是比较优雅的,没整什么变态加密的壳。


机要员-----微信的加密算法

微信加密算法主要用在登录和通信,下面我们对其进行介绍。
由于手上没可用的IDA PRO,如果有上点加解密例子,上点图可能会生动些。

登录加密算法

加密算法采用
RSA

公钥
BE726F29DDB37D07ECD12E58D51713456329E3A7357A45D1B87D3B67D8A7F68A4A23CA4E9A8098CD0BDA047BE032D0A9611EE326DB0AAE63D8239906017895E45FAA702F23926D6A44B3D0D1AFCF73F5673958D0FA4BBC1AC6DDA5F7D0C42545DB967B37D83A291811A982E0C03E19B4A305E58AB65315E612106E4CCE5B5C20E73E3DA7533E42F6EF4E3CF081E085C2773FBBAB9F96C049BEB17873C0953D6CEA39171D6F78307FE4E25A8B8BDED0CF26304A642F63095BEB9FF44F91952C13F12A51EDE9ADB2DEF8A2EDA96AAFB5EE01BFE7E119D624F8EF88E4FFD4437DBDDFA95AF397511792686D6997C2D1A38A083D89E0181885CD940E382591B3EA4D   

密钥版本号/密钥索引
010001

通信密钥:
   随机生成。算法采用/dev/urandom中读取16字节的随机数。如果读取随机数有问题则采用 MD5(随机UUID+当前时间)做随机数
/dev/urandom的随机数是/dev/random中副本,如果随机数不足则通过CPRNG(SHA-1),生成伪随机数。
/dev/random中随机数由多个随机源产生(键盘,噪声,磁盘访问),熵池一般大小为4096,由系统在启动时,初始化时采集。



输入明文:
     设备信息,软件信息,用户信息,登录密码的MD5,随机数(通信密钥)

服务器侧用私钥解密,将明文用通信密钥进行AES加密返回给客户端
     
通信加密算法

通信加密流程:
      1.压缩-》2.加密
压缩算法采用linux compress函数(自适应的Lempel-Ziv编码).
加密算法
    支持根据场景的不同采用 AES,RSA,DES算法,以AES为主。

通信解密流程:
      1.解密-》2.解压缩
压缩算法采用linux compress函数(自适应的Lempel-Ziv编码).
加密算法
    支持根据场景的不同采用 AES,RSA,DES算法,以AES为主。


内保----异常保护

1.堆栈保护
每个C函数的入口和出口都加了堆栈保护措施。
2.沙箱保护
堆栈异常,将内存DUMP下来,保持在异常日志文件中,将日志发给微信服务器后台,然后退出到登录界面。
3.为了防止用户或客户端出现非法操作,微信将每项操作以任务的形式来执行。
每项特定的任务都有尝试的安全次数,超过安全次数,则拒绝操作。

0x04 总结

通过以上分析,我们了解
1.微信的APK保护机制。
2.微信的密钥生成和加密算法。其中随机密钥是从/dev/urandom中获取。
3.微信的异常保护机制。
后面我们将介绍微信数据库加密算法和密钥生成和微信安全权限控制,还是老规矩回帖超三十

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (61)
雪    币: 473
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
能讲讲分析这些的大概思路么?
为30路由奋斗。
2015-5-17 11:52
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
3
你是想知道怎么分析的,是吗?
2015-5-17 16:57
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错,不错!
2015-5-17 19:30
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
好厉害。。
2015-5-17 20:29
0
雪    币: 268
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
给力!!!
2015-5-17 21:15
0
雪    币: 123
活跃值: (95)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
好文一定要顶,期待后续
2015-5-17 21:36
0
雪    币: 473
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是啊,大神能指点指点么
2015-5-18 14:57
0
雪    币: 573
活跃值: (979)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
期待后续
2015-5-18 16:15
0
雪    币: 74
活跃值: (703)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
支持,期待后续
2015-5-19 09:13
0
雪    币: 20
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
大神怎么分析出来的啊,给力
2015-5-19 10:36
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
12
其实分析别人的程序是件挺无聊的事情。我也就是想让自己心静,潜心养性,才花一个多礼拜的业余时间去做这个事情。如果你想做到这些,我建议你:
  1.先了解自己的动机。
     如果你很有兴趣,那你可以兴趣做为你的学习的动力,但不要沉溺技术。
     做安全分析获得的精神快感不如读本佛经,肉体快感不如去健身房练腹肌和妹子搭讪。
     如果你有钱可以花点钱雇个人做你想做的事情。就像王思聪一样买一个游戏团队。
  2.全局观点
     作分析前,要有全局的观点,跟中医学习。
  3.以程序员的思维去推测对方的代码思路。
     如果你是微信的程序员你会怎么做。
  4.多交流和分享。
     做分析前先在网络上调研下,查找相关的文档资料,
     老外的分享精神还是比较好的,中国的分享还很多停留在工具的使用上。看雪和FREEBUF都是很好的网站。
  5.需要一些基础
     一个好的CRACKER或HACKER一定在操作系统、数据结构,编码算法,网络技术上有扎实的基本功。
2015-5-19 11:49
0
雪    币: 761
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
很赞同,不执着与技术细节,目的为导向。很赞,同在百度,继续加油!
2015-5-19 12:23
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
继续支持
2015-5-19 16:23
0
雪    币: 473
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
能聊聊关于沉溺技术么。
2015-5-19 19:30
0
雪    币: 1626
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
支持楼主...膜拜大神
2015-5-19 19:36
0
雪    币: 7752
活跃值: (2144)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
期待下篇。。。
2015-5-19 19:36
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
18
现在论坛活跃的人越来越少,可能真的是不景气吧,发个帖还要指定人气才能撑下去,不过为了论坛顶你下
2015-5-20 08:30
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
支持,期待后续
2015-5-20 09:09
0
雪    币: 117
活跃值: (1114)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
不错耶  6666又出新的文章了
2015-5-20 09:35
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
好厉害!支持一下,期待。。。
2015-5-20 09:51
0
雪    币: 144
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
继续努力,期待更多更好的文字
2015-5-20 09:55
0
雪    币: 76
活跃值: (206)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
23
继续努力 30
2015-5-20 10:07
0
雪    币: 107
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
支持继续挖掘..嘿嘿........
2015-5-20 10:12
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
支持一下,期待。。。
2015-5-20 10:17
0
游客
登录 | 注册 方可回帖
返回
//