首页
社区
课程
招聘
[原创]QQ寻仙木马
发表于: 2008-10-29 17:37 3635

[原创]QQ寻仙木马

2008-10-29 17:37
3635
第一帖写分析文档

运行后删除自身,并且生成3个文件

System32\dirvers\HBKernel32.sys
System32\system.exe
System32\HBQQXX.dll

添加注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HBKernel32
保证自己的驱动会随系统启动,Group是Boot Bus Extender,所以安全模式也启动

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
里面添加HBService32,运行system.exe进程

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
在AppInit_DLLs里面添加一大堆木马的dll,保证有窗口的进程一启动就会被注入dll

System32\HBQQXX.dll 是盗qq寻仙的木马,没有保护功能,不去理会
System32\system.exe
监视注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中HBService32
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows中AppInit_DLLs
保证自己和木马被添加进去

System32\dirvers\HBKernel32.sys
驱动,保护文件
System32\dirvers\HBKernel32.sys
System32\system.exe
System32\HBQQXX.dll
不被删除

保护system.exe进程,让其他进程无法访问system.exe

代码就不帖了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
2
第一种方法: ring3版

直接解析磁盘,找到文件对应位置,写扇区数据,破坏上面3个文件,重启后,驱动无法加载,system.exe无法启动,HBQQXX.dll无法注入,再清除文件,注册表项

先运行delfile,然后重启(我程序懒得做重启了)
重启后运行cleanup.exe,OK
上传的附件:
2008-10-29 17:41
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
3
第二种方法:ring3版本

条件:windows xp以上,windows 2000不支持,需要有管理员权限

用ring3下函数NtSystemDebugControl写内核空间,patch驱动RVA为的0x3F20的位置,使它的保护线程自己退出


.text:00012D6D loc_12D6D:                              ; CODE XREF: systhread+25j
.text:00012D6D                                         ; systhread+428j
.text:00012D6D                 cmp     dword_13F20, 0  ; 这里写入1,则线程退出
.text:00012D6D                                         ;
.text:00012D74                 jz      loc_12958       ; 循环线程


先找到HBKernel32.sys的基址,然后patch RVA位置的数据,用NtSystemDebugControl的9号功能写内核地址

然后再结束system.exe的进程,然后删文件,删注册表项
这样,HBKernel32.sys和system.exe已经被删除了
如果HBQQXX.dll文件删不掉就重启后运行上面的cleanup.exe,这里懒,懒得强行卸载模块了
上传的附件:
2008-10-29 17:52
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
4
忘记说了,HBKernel32.sys还会保护
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HBKernel32
不被删除
2008-10-29 17:53
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
5
学习!!!!!!!!!!!!!!
2008-10-30 09:21
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
6
第三种:ring0版

其实就是上一个方法的ring0版本

patch驱动的3F20处,使线程退出
上传的附件:
2008-10-30 11:36
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
7
第四种:ring0版本

先关掉system.exe进程
关闭驱动占坑的句柄
驱动直接发irp删除文件
重启

清理现场用上面的cleanup.exe
上传的附件:
2008-10-30 14:02
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
8
第5种: ring3版

和驱动通信,去掉它保护的进程pid,和保护文件的标志(驱动的漏洞?)
关闭驱动占坑的文件句柄,去掉hbkernel32.sys的保护
结束system.exe进程,去掉system.exe的保护
枚举所有hbqqxx.dll的模块,发远程线程卸载掉,去掉hbqqxx.dll的保护

删除上述文件,重启后运行cleanup.exe
上传的附件:
2008-10-30 16:46
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
9
再说一个理论上的方法

用驱动去hook HBKernel32.sys的IAT,hook KeDelayExecutionThread这个函数
然后自己的MyKeDelayExecutionThread,里面把Interval改成超大,这样就相当于驱动的那个保护线程直接挂起了,然后再关掉文件占坑句柄,结束system.exe的时候,可以用OpenProcess(..,..,pid+1)的方法打开进程,然后结束它,这样注册表就没有保护了,清掉所有注册表项,再发远程线程,卸载掉全局的hbqqxx.dll模块,然后删文件即可。
2008-10-30 16:52
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
10
上面的方法应该是可以实现的,明天要出去有事,周末才回来,我没空写驱动了
2008-10-30 16:53
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
11
最终得分150分
2008-11-11 22:53
0
游客
登录 | 注册 方可回帖
返回
//