已绑定手机 已实名认证
揰掵佲
等级头衔
等級: 乐易运营组
积分成就
易币
贡献
主题
篇
精华
篇
金钱
积分
33878
注册时间
2014-8-2
最后登录
1970-1-1
勋章墙
2017-3-19 13:52:05
|
显示全部楼层
| 阅读模式
据统计90%查看本帖的人,都已经注册本站了哦
您需要 登录 才可以下载或查看,没有账号?立即注册
×
VX系列研究之--------保安那些事
标 题: 【原创】VX系列研究之--------保安那些事
作 者: ggggwwww
时 间: 2015-05-17,11:11:26
链 接: http://bbs.pediy.com/showthread.php?t=200668
0X01 前言
首先对大家的支持表示感谢,这几天兄弟的HP笔记本坏了,看样子只能买个新的了,后面没法愉快地分析VX的机制。只能用MAC 看IDA PROC DEMO的静态分析了,这每天蠢蠢欲动的,只能看不能上手摸,太让人着急了。
哪位好心人有IDA PRO for mac 6. X (非DEMO)版本的给兄第发个呗 。
0x02 小插曲
先来段程序员骂娘的故事,在调试的时候发现一段文字,顿时让我眼睛亮了。这是从VX的调试信息里找到的(版本6.1)
dkwt acc NOT Ready , the fucking MMReqRespBase need the fucking uin ??? if u find this log , fuck dk.
DK是VX开发比较主力的人员,许多JAVA和NATIVE C之间的加密调用由DK完成的。
分析程序就是和设计师时空对话的过程啊。
0x03 保安那些事
上一篇,我们介绍了小保姆,通过小保姆提供的地图,我们已经溜进大院里了。这下我们可以好好地研究下大院里的保安们。
下面我们来了解VX的几个安全人员,分别是看门大爷,机要员和内勤,看看他们是如何提供保护的。
看门大爷-----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中覆盖程序目录下的组件。
总的说,VX的APK保护还是比较优雅的,没整什么变态加密的壳。
机要员-----VX的加密算法
VX加密算法主要用在登录和通信,下面我们对其进行介绍。
由于手上没可用的IDA PRO,如果有上点加解密例子,上点图可能会生动些。
登录加密算法
加密算法采用
RSA
公钥
BE726F29DDB37D07ECD12E58D51713456329E3A7357A45D1B87D3B67D8A7F68A4A23CA4E9A8098CD0BDA047BE032D0A9611EE326DB0AAE63D8239906017895E45FAA702F23926D6A44B3D0D1AF*F73F5673958D0FA4BBC1AC6DDA5F7D0C42545DB967B37D83A291811A982E0C03E19B4A305E58AB65315E612106E4CCE5B5C20E73E3DA7533E42F6EF4E3*F081E085C2773FBBAB9F96C049BEB17873C0953D6CEA39171D6F78307FE4E25A8B8BDED0*F26304A642F63095BEB9FF44F91952C13F12A51EDE9ADB2DEF8A2EDA96AAFB5EE01BFE7E119D624F8EF88E4FFD4437DBDDFA95AF397511792686D6997C2D1A38A083D89E0181885CD940E382591B3EA4D
密钥版本号/密钥索引
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下来,保持在异常日志文件中,将日志发给VX服务器后台,然后退出到登录界面。
3.为了防止用户或客户端出现非法操作,VX将每项操作以任务的形式来执行。
每项特定的任务都有尝试的安全次数,超过安全次数,则拒绝操作。
0x04 总结
通过以上分析,我们了解
1.VX的APK保护机制。
2.VX的密钥生成和加密算法。其中随机密钥是从/dev/urandom中获取。
3.VX的异常保护机制。
评分
查看全部评分