首页
社区
课程
招聘
[原创][第三阶段◇第一题答案]看雪论坛.腾讯公司2008软件安全竞赛
2008-10-29 19:15 5034

[原创][第三阶段◇第一题答案]看雪论坛.腾讯公司2008软件安全竞赛

2008-10-29 19:15
5034
收藏
点赞0
打赏
分享
最新回复 (18)
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-10-29 19:19
2
0
思路如下:
1. 首先利用木马为了自我更新保留的后门,先恢复SDT并屏蔽掉木马的文件保护
2. 接下来尝试查找并挂起SYSTEM进程内的木马驱动线程
3. 将木马文件移动到临时目录下,并在重启后删除
4. 删除木马驱动服务
5. 设置重启后自动运行修复工具一次
6. 重新启动计算机
7. 重启后删除剩余的两个木马自启动注册表键值
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-10-29 20:52
3
0
略微更新一下,这个版本把LEGACY键也删除掉
上传的附件:
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
Aker 4 2008-10-30 10:37
4
0
gugui大师,膜拜ing
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-10-30 16:58
5
0
system.exe和hbqqxx.dll都可以在用户模式下不启动直接做掉
但暂时没有找到办法在用户模式下不启动直接做掉驱动,所以也懒得改代码了
如果今天晚上找不到用户模式下的办法明天还是写驱动好了
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-1 10:46
6
0
增加一种用户层下的解决方案,现在不用启动也会删除掉所有文件和注册表键值

PT08TRT /s1 - 第一种用户模式方案,需要重启一次
PT08TRT /s2 - 第二种用户模式方案,无须重启

第二种方案的具体实现如下:
首先还是开调试权限
检测木马驱动并恢复SDT,屏蔽木马文件及进程保护
终止System.exe进程并释放木马的鼠标钩子
扫描内存(这里包括挂起木马驱动线程及利用远程线程将其他进程中被加载的HBQQXX.dll卸载)
删除木马注册表键值
删除木马文件
上传的附件:
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-1 10:48
7
0
第二种方案还将关闭SYSTEM进程中的HBKernel32.sys的文件句柄以释放对该文件的保护
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-2 10:17
8
0
再加两种kernel模式下的清除方案

方案一是修改循环判断标志数据,并将其置1以退出无限循环,正常unhook所有被劫持api并终止木马驱动线程

方案二是修改木马驱动所劫持的api,将第一条指令都直接改为EB ??无条件短跳转到所在函数的结尾处并跳转回原始api。此外还将修改无限保护循环中开始的第一条指令为EB FE锁死无限循环。这样所有的API劫持将失去效果,并且驱动中的自保护循环也将失去效果,因此虽然驱动线程还在运行但也没有作用了
上传的附件:
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-2 11:40
9
0
这个木马程序频繁使用了同一种简单的字符串保护方式,因此先写一个IDA script小函数用于解密字符串


static pt08decryption(offset, key)
{
auto value;

do
{
value = Byte(offset);
if (value != 0)
value = value ^ key;
PatchByte(offset, value);

offset++;
}
while((Byte(offset) != 0) || (Byte(offset+1) != 0));
}


木马安装主程序流程非常简单

1。尝试终止以下所有进程

[*]my.exe
[*]Client.exe
[*]woool.dat
[*]woool88.dat
[*]xy2.exe
[*]game.exe
[*]SO2Game.exe
[*]SO2GameFree.exe
[*]FSOnline2.exe
[*]gameclient.exe
[*]elementclient.exe
[*]asktao.mod
[*]Wow.exe
[*]ZeroOnline.exe
[*]Bo.exe
[*]Conquer.exe
[*]soul.exe
[*]TheWarlords.exe
[*]china_login.mpr
[*]blueskyclient_r.exe
[*]xy3.exe
[*]QQLogin.exe
[*]DNF.exe
[*]gc12.exe
[*]hugemanclient.exe
[*]HX2Game.exe
[*]QQhxgame.exe
[*]tw2.exe
[*]QQSG.exe
[*]QQFFO.exe
[*]zhengtu.dat
[*]mir1.dat
[*]mir2.dat
[*]tty3d.exe
[*]metin2.bin
[*]AClient.exe
[*]gamefree.exe
2。向AskTao窗口发65536条从0开始的逐次递增1的消息

3。修改360safe注册表键
HKEY_LOCAL_MACHINE\Software\360Safe\safemon\

以下值为0


[*]ARPAccess
[*]ExecAccess
[*]IEProtAccess
[*]LeakShowed
[*]MonAccess
[*]NoNotiLeak
[*]NoNotiNews
[*]SiteAccess
[*]UDiskAccess
[*]weeken
4. 尝试打开木马驱动"\\.\slHBKernel32",如果成功则直接跳入第5步,否则
4.1 从资源内释放出驱动文件并存入系统目录下drivers\HBKernel32.sys
4.2 尝试打开及创建服务,如果成功则启动木马驱动服务

5。从资源内释放出木马盗号动态库模块并存入系统目录下HBQQXX.dll
5.1 如果失败的话则暂时屏蔽木马文件保护并将该模块放入临时目录,并在重启后覆盖旧的木马动态库,随后恢复木马文件保护

6。查找HBInject32窗口并发送WM_COPYDATA消息

7。创建Mutex对象"HBInjectMutex"确定没有多个木马进程在运行

8。从资源内释放出木马监视主程序System.exe并存入系统目录下,然后启动之

9。创建注册表键值重启后自动运行System.exe

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\"HBService32" = "System.exe"

10。创建临时批处理用来删除自身木马安装程序并退出运行

木马监视主程序System.exe的功能和执行流程和上述安装程序有一些类似,额外部分包括如下几点:

1。删除360safe的两个自启动注册表键值
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\"360Safebox"
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\"360Safetray"

2。使用木马驱动程序保护自己的进程,System.exe对用户可见但不可查询或终止

3。设置一个0.1秒的timer,不断重置木马使用到的注册表键值
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\"HBService32"
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\"AppInit_DLLs"

4。当收到WM_COPYDATA消息时,加载如下动态库并重新创建全局鼠标钩子


[*]HBmhly.dll
[*]HB1000Y.dll
[*]HBWOOOL.dll
[*]HBXY2.dll
[*]HBJXSJ.dll
[*]HBSO2.dll
[*]HBFS2.dll
[*]HBXY3.dll
[*]HBSHQ.dll
[*]HBFY.dll
[*]HBWULIN2.dll
[*]HBW2I.dll
[*]HBKDXY.dll
[*]HBWORLD2.dll
[*]HBASKTAO.dll
[*]HBZHUXIAN.dll
[*]HBWOW.dll
[*]HBZERO.dll
[*]HBBO.dll
[*]HBCONQUER.dll
[*]HBSOUL.dll
[*]HBCHIBI.dll
[*]HBDNF.dll
[*]HBWARLORDS.dll
[*]HBTL.dll
[*]HBPICKCHINA.dll
[*]HBCT.dll
[*]HBGC.dll
[*]HBHM.dll
[*]HBHX2.dll
[*]HBQQHX.dll
[*]HBTW2.dll
[*]HBQQSG.dll
[*]HBQQFFO.dll
[*]HBZT.dll
[*]HBMIR2.dll
[*]HBRXJH.dll
[*]HBYY.dll
[*]HBMXD.dll
[*]HBSQ.dll
[*]HBTJ.dll
[*]HBFHZL.dll
[*]HBWLQX.dll
[*]HBLYFX.dll
[*]HBR2.dll
[*]HBCHD.dll
[*]HBTZ.dll
[*]HBQQXX.dll
[*]HBWD.dll
[*]HBZG.dll
[*]HBPPBL.dll
[*]HBXMJ.dll
[*]HBJTLQ.dll
[*]HBQJSJ.dll木马盗号动态库模块HBQQXX.dll主要功能是从进程QQLogin.exe和tty3d.exe中盗取密码
如果成功盗取密码将保存入系统目录下的Xunxian.dat文件中

木马驱动程序通过截取api达到如下功能:

[*]保护指定进程
[*]保护木马相关的文件
[*]保护"AppInit_DLLs"注册表键值
[*]无限循环重新设置木马驱动服务注册表键,以及另两个木马自启动注册表键值
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-2 11:48
10
0
这个木马本身并没有很特别的地方,但似乎这个驱动HBKernel32.sys被广泛应用于多种在线游戏盗号木马中

对于此类木马最简单的预防就是监视SSDT以及重要API的非法劫持
其次类似空函数的全局钩子也很值得关注

另外解决方案还可以有其他的,例如在驱动中直接调用木马驱动中的代码ImageBase+3566h修复SDT,在驱动中调用ZwTerminateThread终止木马驱动线程,但出于时间原因就不具体实现了
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-2 11:54
11
0
while((Byte(offset) != 0) || (Byte(offset+1) != 0));
这句应该替换成Word(offset)来判断,复制用多了,汗一个
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
kangaroo 6 2008-11-11 22:29
12
0
基础分:90分
ring3加20分
ring0两种加20分
分析文档加10分
无需重启加10分
最终得分150分!!!
雪    币: 371
活跃值: (67)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
suRbYmiR 6 2008-11-23 15:51
13
0
收藏学习...谢谢...
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
简音 2008-11-30 19:13
14
0
先学习下,,,,
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
connect 2008-12-7 23:26
15
0
学习....
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SUNINRAIN 2008-12-9 15:41
16
0
太佩服了 我要加油了!!!!
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寻缘浪子 2008-12-23 19:58
17
0
太强大了。
学习源码
雪    币: 185
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
taomedia 2010-9-10 15:14
18
0
先学习下,,,,
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
soog 2011-3-26 13:49
19
0
难道最近两年没有出这样的竞赛了吗?
游客
登录 | 注册 方可回帖
返回