|
发表于 2006-9-4 23:00:39
|
显示全部楼层
svchost是一个很复杂的进程,一般不是单独启用的,这个是pconline的文章,对了解svchost很有帮助,这里提示就是svchost很多情况不一定是病毒,尽管行为很想。
/ r( i& A% x& i+ B! Y6 _ 关于“系统蓝色档案”栏目
S# x8 D) ?& p2 N Svchost.exe、lsass.exe、wdfmgr.exe,打开进程列表后你会发现一大堆不知用途的进程,究竟是系统进程还是木马病毒?如果打开系统文件夹,一大堆奇奇怪怪名称的文件,更是会把你弄得晕头转向。很多朋友因此而始终抱有一种未知的恐惧,认为木马、黑客无处不在,即使是高手,也不能把这些陌生的系统文件说个明明白白。为消除大家的疑惑,从这期开始为大家带来一档新的连载栏目——系统蓝色档案为大家曝光这些隐秘文件的秘密。两位主人公,现在就来认识一下。, p. ]1 Q- M, n
主人公介绍
) N H" h* I$ ?* L 小菜:刚接触电脑不久的菜鸟,但对电脑知识有着非常浓厚的学习兴趣,常说的一句话是“菜鸟先飞”。+ V, u% E9 s2 }0 {- ~8 l, `2 v
大嘴:乐于助人的老鸟,经常被别人冠以“大嘴高手”称号,不过这并不是指他嘴特别大,而是一谈到电脑知识就滔滔不绝。
& A- }3 c P* U3 K0 H 一、紧急状况:系统发现严重病毒9 {. U7 Y, g j1 V( Q
小菜刚刚学习了进程的概念和知识,于是就打开“任务管理器”观察系统中的进程,这一看不要紧,还真发现了一个“病毒”——Svchost.exe,这家伙在系统进程列表中竟然有5个之多(见图1),于是小菜就逐个结束这些进程,没想到第二个进程结束后还会再生,而结束第四个进程时更离谱,系统提示“系统即将关机,离关机还有60秒”,进程再生、错误提示,这些典型的病毒“症状”更让小菜相信“Svchost.exe”是病毒无疑,但无法结束进程,又该怎么清除病毒呢?小菜只好请来了大嘴。
" g% N4 D; _4 b" E$ o: E% j
) ^. y, ^/ K. ~ a) d! K3 p w0 n& H图1 数量众多的SVCHOST进程
) n9 F& f/ j0 ^# p$ \, @3 X; g 大嘴过来后还没看电脑,就先告诉小菜,系统中的Svchost.exe进程是正常系统进程,不是病毒,不仅仅是你,其他朋友一看到系统中这么多的Svchost.exe进程,第一反应也感觉它是病毒,虽然系统中有多个Svchost.exe进程是正常的,但也不保证都是正常的。听起来似乎有些矛盾?这让小菜更有些迷糊,大嘴坐下后给小菜详细讲了起来。
/ U& [( n- W: e* j$ n& L, P7 k 二、松了口气:Svchost.exe是台“CD机”
! ?7 V6 A: y4 l 1.服务装在“CD机”里
0 x; D' u7 C) @; g2 t1 v$ D Svchost.exe是NT内核操作系统(Windows 2000/XP/2003都属于NT内核操作系统)独有的进程,“Svchost”其实就是“Service Host”(服务宿主)的缩写。微软官方对它的定义是:Svchost.exe是从动态链接库(DLL)中运行的服务的通用主机进程名称,通俗讲,它就是一个服务装载器。大家可以把每个服务想象成一张音乐CD,而Svchost.exe就是用来播放这种CD的CD机。/ O- s4 y9 F6 Z3 g. ?+ m" _1 g
2.为什么用“CD机”装服务3 {7 c( B( F' E& @- O& \. O% m8 F
由于Windows 2000/XP系统服务越来越多,以EXE单独进程的形式启动所有服务会大大增加系统负担,为节省系统资源,微软将一些系统服务以动态链接库(DLL)形式实现,而Svchost.exe就是用来装载这些DLL文件以启动系统服务的程序。没有人会为了发行一张CD而制作一台专用播放此CD的CD机,微软也一样。
+ x4 n( x2 {9 K% C% j5 {! D3 T5 E 3.系统里有几台这样的“CD机”
( E2 U- a4 I5 x9 F: u! O 那为什么系统进程列表中的Svchost.exe会有多个呢?微软为了让系统能更好地进行服务控制,就允许多个Svchost.exe进程同时运行,每个Svchost.exe进程可以包含一组服务,想像一下可以同时容纳3张甚至更多CD的多碟CD机。打开注册表[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost]主键,在窗口右侧可以看到许多键值,这里的每个键值都代表一组服务,键值数据则包含了该组服务下面运行的服务名称列表,每组服务启动时都会通过单独的Svchost.exe进程来装载。Windows XP中默认共有六组服务(见图2),其中imgsvc、NetworkService、rpcss、termsvcs四个组,它们都只有一个服务运行,这些服务启动后的Svchost.exe进程用户名为“SYSTEM”。而LocalService和netsvcs组都启动了多个服务,它们的Svchost.exe进程用户名分别为“LOCAL SERVICE”和“NETWORD SERVICE”,从图1中可以看到这种区别。
* K& M5 r4 D0 w. a/ A
- c+ N4 E7 D: a! T图2 众多svchost进程的区别
7 X6 [3 P/ I4 a 当然了,这六组服务通常并不都是启动状态的,根据系统启动的服务不同,反映在系统进程列表中的Svchost.exe进程数量也是不同的,Windows XP会有四个到六个Svchost.exe进程,而Windows 2000通常则会有两个Svchost.exe进程。9 k- Q- m |/ o' }
小提示:点击“开始→运行”,在运行框中输入“CMD”回车,然后在打开的命令行窗口中输入“Tasklist /svc”(不含引号)命令,可以更直观地看到每个Svchost.exe进程装载的服务名称列表(见图3)。
& u/ D' b2 }" [
( p3 v5 ^# S0 h' w+ W0 n, C图3 查看svchost进程装载的服务名称
3 E4 Y, b/ h- O 4.获取每张“CD”的详细信息3 N, t6 x- j, [3 _
如果想更进一步了解Svchost.exe装载的这些服务都是什么功能,可以记下键值数据中的服务名称,例如“RpcSs”,接着打开注册表的[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services],再打开下面的“RpcSs”子键,在右边的“Description”键值中就可以看到该服务的描述,而在“ImagePath”键值数据中则可以看到这个服务的运行命令正是“%SystemRoot%\system32\svchost -k rpcss”(见图4)。而在“RpcSs”子键下还有一个“Parameters”(参数)子键,其右边的“ServiceDll”键值数据“%SystemRoot%\system32\rpcss.dll”则表明了RpcSs服务启动时调用的是系统目录下的“Rpcss.dll”文件,这就好像你原来只知道CD中歌曲的歌名,现在又让你能够查到这首歌的演唱者。
6 [: N: S w8 V) r9 q 7 b3 M+ T* V7 \$ ^+ u6 [
图4 查看svchost的具体功能
7 g% `' V' }- e- Z+ s0 ]5 U2 b! z 如果觉得通过注册表查询服务名称了解其属性不太方便,也可以使用“全能助手用Windows服务管理专家”(以下简称“服务管理专家”)来查询,运行软件后单击“All Win32 Services”分支,在右侧服务列表中根据服务名称索引即可快速找到要查询的服务,单击服务名称,即可看到该服务的启动命令以及调用的DLL文件等相关信息(见图5)。同时软件还专门设计了Svchost Group分支,可以快速查询LocalService和netsvcs组中的服务详细信息。
5 N7 _ ?0 f# b& k; E- u% T ' s. T( q& B5 e7 Z" z( Y+ Y
图5 用工具查看svchost的情况( H7 V* ^8 C8 H3 ^3 d k
全能助手用Windows服务管理专家 小档案
! w2 ?( s) v9 I' ~) ~+ ]& O 软件名称: 全能助手用Windows服务管理专家- o% j! P8 P& E+ n h7 o" ~; V& l' a
软件版本: 1.02$ m7 H# J3 V5 s$ V8 j8 L! f/ }$ K
软件大小: 164KB( }9 z: I/ i( z: H3 _/ k! ~) A, k
软件授权: 免费
5 b3 @! i7 h9 }9 z2 q 适用平台: Windows 2000/XP# _: |* H7 w! g, O
下载地址: 点击这里下载
9 m3 ~2 q4 V2 y+ G" V) L4 _6 D) x6 Z! @6 c5 v+ d
三、危机仍在:小心病毒的骗局
8 w: {# M; i3 ]1 f# G 由于Svchost.exe进程的特殊性,它隐藏了真正运行的程序的名称,在表面看到的只是Svchost.exe进程,这个特性同时也让许多病毒、木马有空可钻,企图以此迷惑用户。那么如何判断系统中的多个Svchost.exe进程是否正常呢?下面针对这类病毒常用的几种欺骗手法来进行分析。
* _* o6 c0 H( _& O" m, ` 骗局1:利用假冒Svchost.exe名称的病毒程序
( J/ r e1 N/ S1 @ 火眼金睛:这种方式运行的病毒并没有直接利用真正的Svchost.exe进程,而是启动了另外一个名称同样是Svchost.exe的病毒进程,由于这个假冒的病毒进程并没有加载系统服务,它和真正的Svchost.exe进程是不同的,只需在命令行窗口中运行一下“Tasklist /svc”,如果看到哪个Svchost.exe进程后面提示的服务信息是“暂缺”(见图6),而不是一个具体的服务名,那么它就是病毒进程了,记下这个病毒进程对应的PID数值(进程标识符),即可在任务管理器的进程列表中找到它,结束进程后,在C盘搜索Svchost.exe文件,也可以用第三方进程工具直接查看该进程的路径,正常的Svchost.exe文件是位于%systemroot%\System32目录中的,而假冒的Svchost.exe病毒或木马文件则会在其他目录,例如“w32.welchina.worm”病毒假冒的Svchost.exe就隐藏在Windows\System32\Wins目录中,将其删除,并彻底清除病毒的其他数据即可。* p/ v2 C1 j. g) \+ ^8 L
L% _+ K5 n, s9 Q8 Q" }$ j图6 查看可疑svchost进程
8 g7 b3 I' X9 Z, d' A 骗局2:一些高级病毒则采用类似系统服务启动的方式,通过真正的Svchost.exe进程加载病毒程序,而Svchost.exe是通过注册表数据来决定要装载的服务列表的,所以病毒通常会在注册表中采用以下方法进行加载: N0 T6 H* c& Q( o* H: F9 H& J
• 添加一个新的服务组,在组里添加病毒服务名
) w3 r" n- T; j• 在现有的服务组里直接添加病毒服务名
$ D# C: p: ` U, R9 ?• 修改现有服务组里的现有服务属性,修改其“ServiceDll”键值指向病毒程序& S# T( b2 X0 s- r
判断方法:病毒程序要通过真正的Svchost.exe进程加载,就必须要修改相关的注册表数据,可以打开[HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost],观察有没有增加新的服务组,同时要留意服务组中的服务列表,观察有没有可疑的服务名称,通常来说,病毒不会在只有一个服务名称的组中添加,往往会选择LocalService和netsvcs这两个加载服务较多的组,以干扰分析,还有通过修改服务属性指向病毒程序的,通过注册表判断起来都比较困难,这时可以利用前面介绍的服务管理专家,分别打开LocalService和netsvcs分支,逐个检查右边服务列表中的服务属性,尤其要注意服务描述信息全部为英文的,很可能是第三方安装的服务,同时要结合它的文件描述、版本、公司等相关信息,进行综合判断。例如这个名为PortLess BackDoor的木马程序,在服务列表中可以看到它的服务描述为“Intranet Services”,而它的文件版本、公司、描述信息更全部为空(见图7),如果是微软的系统服务程序是绝对不可能出现这种现象的。从启动信息“C:\WINDOWS\System32\svchost.exe -k netsvcs”中可以看出这是一款典型的利用Svchost.exe进程加载运行的木马,知道了其原理,清除方法也很简单了:先用服务管理专家停止该服务的运行,然后运行regedit.exe打开“注册表编辑器”,删除[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IPRIP]主键,重新启动计算机,再删除%systemroot%\System32目录中的木马源程序“svchostdll.dll”,通过按时间排序,又发现了时间完全相同的木马安装程序“PortlessInst.exe”,一并删除即可。6 ]; a0 x, B0 H( G5 i
q t3 ^) I3 U5 Q3 i4 D$ L2 F
图7 利用多项信息进行综合判断 |
|