主页被黑
昨晚,我访问“卡尔维诺中文站”时,首页上突然出现了色情网站的链接。我查看了代码,发现首页被修改过了。这下,我可吓坏了。能够成功修改首页,就意味着入侵者已经完全掌握机器了,可以实行任意操作了。“卡尔维诺中文站”是放在独立服务器上的,上面有对我极为重要的资料。万一出事,后果不堪设想。
服务器中了后门病毒,好在入侵者除了修改首页以外,并没有做其他破坏。已知最大的损失是,Google删除了所有关于“卡尔维诺中文站”的搜索结果,要知道以前它可是搜索“卡尔维诺”时排在第一位的结果。
今天,我给服务器彻底查了一遍毒,加装了杀毒软件,希望能够有些作用。那台机器的操作系统是Windows NT。我以后再不会在Windows平台上发布网站了,安全性能太差了,不知哪天就会被人入侵,一点安全感也没有。
因为要杀毒,我查了一点相关资料。觉得下面这篇文章很有用,转贴在下面备查。
=========================
全面认识Svchost.exe进程
作者:不详
很多朋友对Svchost.exe进程都不太了解,有时在任务管理器中一旦看到有多个该进程(图1中有6个),就以为自己的电脑中了病毒或木马,其实并非如此!正常情况下,Windows中可以有多个Svchost.exe进程同时运行,例如Windows 2000至少有2个Svchost进程,Windows XP中有4个以上,Windows 2003中则有更多,所以当你看到多个Svchost进程时,未必就是病毒!

图1
* Svchost.exe进程是干什么的?*
Svchost.exe文件存在于“%system root%\system32”(例如C:\Windows\system32)目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各种服务的。例如Svchost.exe调用rpcss.dll文件,就会启动rpcss服务(remote procedure call)。
Svchost.exe实际上是一个服务宿主,它本身并不能给用户提供任何服务,但是可以用来运行动态链接库DLL文件,从而启动对应的服务。Svchost.exe进程可以同时启动多个服务。
*Svchost是如何启动系统服务的?*
由于系统服务都是以动态链接库(DLL)形式实现的,它们把可执行程序指向Svchost,因此Svchost只要调用某个动态链接库,即可启动对应的服务。那么Svchost启动某服务时,又是如何知道应该调用哪个动态链接库?这是由于系统服务在注册表中都设置了相关参数,因此Svchost通过读取某服务在注册表中的信息,即可知道应该调用哪个动态链接库,从而启动该服务。
下面我们以Svchost启动helpsvc(Help and Support)服务为例,介绍其启动服务的方法。在Windows XP中点击“开始”|“运行”,输入“services.msc”命令,弹出服务对话框,然后双击打开“Help and Support”服务属性对话框,可以看到helpsvc服务的可执行文件的路径为“C:\WINDOWS\System32\svchost.exe -k netsvcs” (如图2),说明helpsvc服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系统注册表中的。

图2
在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\helpsvc]项,找到类型为“REG_EXPAND_SZ”的键“magePath”,其键值为“%SystemRoot%\System32\svchost.exe -k netsvcs”(这就是在服务窗口中看到的服务启动命令),另外在“Parameters”子项中有个名为“ServiceDll”的键,其值为“%WINDIR%\PCHealth\HelpCtr\Binaries\pchsvc.dll”,其中“pchsvc.dll”就是helpsvc服务要使用的动态链接库文件。这样SVCHOST进程通过读取“helpsvc”服务注册表信息,就能启动该服务了。
*Svchost到底启动了哪些服务?*
如果你想了解每个SVCHOST进程当前到底提供了哪些系统服务,可以在命令提示符下输入命令来查看。例如在Windows XP中,打开“命令提示符”,键入tasklist /svc命令查看;在Windows 2000中,则输入“Tlist -S”命令来查看。
如果你在Windows XP中,想得到所有进程的详细信息,可以打开“命令提示符”,键入 tasklist /svc>abc.txt 命令,于是在当前目录中,将会生成一个abc.txt文件,其内容就是当前正在运行的所有进程情况,例如进程名、PID号、该进程启动了哪些服务。
*如何发现Svchost进程有问题?*
由于Svchost进程可以启动各种服务,因此病毒、木马也经常伪装成系统的DLL文件,使Svchost调用它,从而进入内存中运行、感染和控制电脑。
建议你使用“Windows优化大师”进程管理器,查看所有Svchost进程的执行文件路径(如图3),正常的Svchost文件应该存在于“c:\Windows\system32”目录下,如果你发现其执行路径在其他目录下,就有可能染上了病毒或木马了,应该马上进行检测和处理。

图3
*Svchost进程杀不掉怎么办?*
如果有些Svchost进程,你在任务管理器中无法关闭之,可以使用ntsd命令来杀掉它,方法如下:
首先需要了解欲杀的Svchost进程,其PID是多少?在Windows XP下,按Ctrl+Alt+Del打开任务管理器,点击“进程选项卡”|“查看”|“选择列”,在弹出的窗口中(图4),勾选“PID(进程标识符)”,然后回到任务管理器中,即可看见PID了(例如要杀的Svchost进程,其PID是844)。

图4
接下来关闭该进程。点击“开始”|“程序”|“附件”|“命令提示符”,在命令提示符下,输入命令ntsd -c q -p 844即可杀掉Svchost进程(PID是844)。
小提示:除了System、SMSS.EXE和CSRSS.EXE这三个进程,ntsd命令可以杀掉任何一个系统进程。从Windows 2000开始,微软就提供了ntsd工具,该命令执行后,可让你获得系统的debug权,因此能够用来关闭大部分的系统进程,如果你遇到无法关闭的进程,就可以使用该命令,其杀进程的命令格式为:ntsd -c q –p XXX
以上XXX为欲杀进程的PID;
ntsd –p XXX 表示在调试器中打开某进程(PID为XXX);
而-c q参数则表示退出调试器。由于调试器关闭之后,它打开的进程会随调试器一起退出,因此ntsd命令能够关闭进程.
(完)
评论
wxy 说:
您好,我是一名学金融和英语的本科生,也是查一个经济概念搜到这里,看了觉得您真是厉害啊,一个人怎么会有那么时间和精力做那么多事,觉得您应该很充实才对呀。很喜欢这里,也很有帮助,谢谢您:)以后会常来逛逛。
2006年05月25日 23:39 |
| 引用
Paul 说:
“觉得您应该很充实才对呀”——
这是在夸人吗?汗……
2006年05月26日 16:31 |
| 引用
amy 说:
我也一直在关注您的主页,谢谢您让我从中学到了不少东西。您的“卡尔维诺中文网站”做得很好,我很喜欢,只是每次进到首页电脑总是有“没有响应”的系统提示,只能从其人其书进入。不是到是不是和网站被黑有关。我会继续关注的。:)
2006年05月26日 16:45 |
| 引用
pin 说:
站长,我看越来越多的人都开始称呼你为您了,呵呵
2006年05月26日 18:18 |
| 引用
Ruan YiFeng 说:
To amy:
现在“卡尔维诺中文站”的首页已经恢复正常了,应该不会出现“没有响应”了。但是因为上面用了一个java小程序,所以我不敢保证。你可以换用FireFox试试看。
谢谢你的关注,欢迎多来访问。
To Pin:
是不是因为我最近太严肃了呀……
2006年05月27日 00:39 |
| 引用
Laomeng 说:
还有一种可能就是这些人都是北京的,北京人一般管谁都称“您”。;)
2006年05月27日 04:05 |
| 引用
东方木匠 说:
师兄这个网页不错,同为爱书之人,我要常来逛。
2006年05月27日 14:17 |
| 引用
Ruan YiFeng 说:
To 东方木匠:
这里转载过你整理的几篇演讲记录,顺表表示感谢。
2006年05月27日 15:38 |
| 引用
hai_nabian 说:
呵呵,这帖和回帖都很有意思。
尤其是“万一出事,后果不堪设想。”这一句,完全让我想起中共地下党什么的……
所以我也来说几句:
虽然形势大好,同志们还要多多努力!
2006年06月01日 18:40 |
| 引用