首页
社区
课程
招聘
[原创]从ring3层得到QQ2009 sp5登陆帐号和密码
发表于: 2009-12-12 15:59 20647

[原创]从ring3层得到QQ2009 sp5登陆帐号和密码

2009-12-12 15:59
20647

只是技术缺陷分析,并提出解密方案,别无恶意,希望tx不要跟踪,

QQ密码在ring3很不容易得到,这是我曾经得出的结论,因为QQ是从底层拦截了键盘数据,

突然有一天,在网络上看到一贴说QQ密码要被加密成md5值,所以明文在QQ内存中一定要存在

我抱着试试的心态一研究,发现,果然,QQ会在ring3应用层还原QQ密码明文,我原来还以为他会在ring0层直接加密密码成md5,然后在ring3层直接使用md5值,结果却不是这样,
结果是QQ会在ring0层拦截键盘输入,并转换键码,码值对应表是动态的,要解码很麻烦,然后传到ring3,QQ在登陆时,会将密码还原为明文然后md5加密,加密的时候, 为了防止分析,他会清除所有使用过的临时变量(这种手法很无耻,很难分析),还会生成许多假密码来迷惑分析者,但是,有些临时变量没有清除及时,被我发现了,找出了QQ密码明文

结果如下,放出测试bin(只适合QQ2009 sp5),在附件中,

基址信息:帐号密码
版本号  :QQ2009 sp5
时间        :14:46 2009-12-9
文件版本:1, 40, 1390, 0(QQ.exe)

1. 帐号MainFrame.dll = 61c00000 filever 1.40.1390.0
记录[esp+4]
(MainFrame+000241C7) 61C241C7    FFD0            CALL EAX
调用完上面这个函数后,[esp+4]指向帐号UNICODE字串

2. 密码明文 TSSafeEdit.dat = 02ef0000 filever 2009.7.15.14
02EF1311    FF50 0C         CALL DWORD PTR DS:[EAX+C]
[ESP+4]+18密码明文,
输出时[ESP] md5值,这里能得到多次密码md5

3. 密码hash AppUtil.dll base = 61210000 filever 1.40.1390.0
AppUtil 612EFDE4    FFD0            CALL EAX
[esp+4]为正确密码hash

ppp:
tx的加密手法做得很好,
1. 大量的虚化jmp和call
2. 代码动态解密执行
3. 多个密码解密执行

分析起来难度很大

技术缺陷:
1.内存中有明文密码出现,虽然明文密码加密后,会被清除,但还是能让找出来,总之,只要在内存中出现过,就能找出来
2.md5没有变型,虽然md5加密代码是动态解密执行,但还是让我一眼就看出来了,

解密方案:
其实,它只要把md5算法变形一下,使得QQ密码明文在内存中始终不会出现,那么,以我的水平,就找不出明文密码来的,就算md5值能找出来,也没有什么用,估计这也会难道一大片人

欢迎同志者来群交流:QQ群23985532

补充一下:
对于其它版本的 QQ,可以根据我公布出来的信息,作为参照特征码(特征码大家可以到sp5中去找),去搜索其它版本的QQ,
我测试过,QQ2009基本上都差不多,就是基址偏移不一样,用特征码一搜索就出来


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (34)
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发我拿下了。
2009-12-12 16:12
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
干嘛要弄MD5,你弄他的按键不就行了 也在MainFrame里面(软键盘) safeedit(键盘)
2009-12-12 17:54
0
雪    币: 241
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习下。。。谢谢楼主
2009-12-12 19:17
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
弄他的按键?
他的按键码是动态的,如果你真能从这方面搞定,请指教
2009-12-12 19:31
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
半年前也扫过他内存 结果没扫着
2009-12-12 20:04
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
看来还是思路很重要~
2009-12-12 20:51
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
8
直接拦截socket拿md5算了~
2009-12-13 10:59
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
如果直接拦截socket,能搞出md5,那我还那么费事做什么?
2009-12-13 11:38
0
雪    币: 324
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
沙发!键盘实在哦
2009-12-13 15:22
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
11
貌似是可以的,QQ2009的协议不难~
2009-12-13 16:09
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习一下,我也想弄
2009-12-14 17:19
0
雪    币: 292
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
现在对键盘防护的都比较好了。
2009-12-14 17:29
0
雪    币: 159
活跃值: (339)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
楼主已被锁定
2009-12-14 18:12
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主呗发现了~~
2009-12-15 09:25
0
雪    币: 327
活跃值: (1268)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个思路不错,能多给点分析就更好了。
2009-12-15 15:00
0
雪    币: 169
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
不行的.
密码的MD5是由 密码的两次MD5加密发送的.
2009-12-16 15:00
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
楼主很牛X 我是来膜拜楼主 的
2009-12-16 15:55
0
雪    币: 442
活跃值: (107)
能力值: ( LV9,RANK:350 )
在线值:
发帖
回帖
粉丝
19
mark!!!!
2009-12-16 17:33
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
要是有源代码就好了
2009-12-17 16:33
0
雪    币: 287
活跃值: (18)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
谢谢,学习学习
2009-12-17 23:31
0
雪    币: 138
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
OllyDbg试验了一下,很不错,可以成功。。。
02EF1311    FF50 0C         CALL DWORD PTR DS:[EAX+C]
[ESP+4]+18密码明文,

在我电脑上是:03EF29AB    FF50 0C        CALL DWORD PTR DS:[EAX+C]
中断几次后就会有密码的明文信息出现。。。
2009-12-19 00:24
0
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
首先,QQ并没进R0获取键盘数据
其次Get***依然NB
2009-12-19 08:44
0
雪    币: 70
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
等待大牛来回答。
2009-12-19 10:28
0
雪    币: 215
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
顶。不错哈。tx的安全是比较厉害的。
2010-1-14 09:26
0
游客
登录 | 注册 方可回帖
返回
//