解决方案

Svchost.exe是病毒的两种情况

seo靠我 2023-09-26 03:10:49

1.利用假冒Svchost.exe名称的病毒程序

这种方式运行的病毒并没有直接利用真正的Svchost.exe进程,而是启动了另外一个名称同样是Svchost.exe的病毒进程,由于这个假冒的病毒进程并SEO靠我没有加载系统服务,它和真正的Svchost.exe进程是不同的,只需在命令行窗口中运行一下“Tasklist /svc”,如果看到哪个Svchost.exe进程后面提示的服务信息是“暂缺”,而不是一个SEO靠我具体的服务名,那么它就是病毒进程了,记下这个病毒进程对应的PID数值(进程标识符),即可在任务管理器的进程列表中找到它,结束进程后,在C盘搜索Svchost.exe文件,也可以用第三方进程工具直接查看SEO靠我该进程的路径,正常的Svchost.exe文件是位于%systemroot%/System32目录中的,而假冒的Svchost.exe病毒或木马文件则会在其他目录,例如“w32.welchina.woSEO靠我rm”病毒假冒的Svchost.exe就隐藏在Windows/System32/Wins目录中,将其删除,并彻底清除病毒的其他数据即可。

2:一些高级病毒则采用类似系统服务启动的方式,通过真正的SvchSEO靠我ost.exe进程加载病毒程序,而Svchost.exe是通过注册表数据来决定要装载的服务列表的,所以病毒通常会在注册表中采用以下方法进行加载:

添加一个新的服务组,在组里添加病毒服务名

在现有的服务组里SEO靠我直接添加病毒服务名

修改现有服务组里的现有服务属性,修改其“ServiceDll”键值指向病毒程序

判断方法:病毒程序要通过真正的Svchost.exe进程加载,就必须要修改相关的注册表数据,可以打开[HSEO靠我KEY_LOCAL_MACHINE/Software/Microsoft/WindowsNT/CurrentVersion/Svchost],观察有没有增加新的服务组,同时要留意服务组中的服务列表,观SEO靠我察有没有可疑的服务名称,通常来说,病毒不会在只有一个服务名称的组中添加,往往会选择LocalService和netsvcs这两个加载服务较多的组,以干扰分析,还有通过修改服务属性指向病毒程序的,通过注SEO靠我册表判断起来都比较困难,这时可以利用前面介绍的服务管理专家,分别打开LocalService和netsvcs分支,逐个检查右边服务列表中的服务属性,尤其要注意服务描述信息全部为英文的,很可能是第三方安SEO靠我装的服务,同时要结合它的文件描述、版本、公司等相关信息,进行综合判断。例如这个名为PortLess BackDoor的木马程序,在服务列表中可以看到它的服务描述为“Intranet Services”SEO靠我,而它的文件版本、公司、描述信息更全部为空,如果是微软的系统服务程序是绝对不可能出现这种现象的。从启动信息“C:/WINDOWS/System32/svchost.exe -k netsvcs”中可以SEO靠我看出这是一款典型的利用Svchost.exe进程加载运行的木马,知道了其原理,清除方法也很简单了:先用服务管理专家停止该服务的运行,然后运行regedit.exe打开“注册表编辑器”,删除[HKEY_SEO靠我LOCAL_MACHINE/System/CurrentControlSet/Services/IPRIP]主键,重新启动计算机,再删除%systemroot%/System32目录中的木马源程序“sSEO靠我vchostdll.dll”,通过按时间排序,又发现了时间完全相同的木马安装程序“PortlessInst.exe”,一并删除即可。

svchost.exe是nt核心系统的非常重要的进程,对于2000、SEO靠我xp来说,不可或缺。很多病毒、木马也会调用它。所以,深入了解这个程序,是玩电脑的必修课之一。

大家对windows操作系统一定不陌生,但你是否注意到系统中“svchost.exe”这个文件呢?细心的朋友SEO靠我会发现windows中存在多个 “svchost”进程(通过“ctrl+alt+del”键打开任务管理器,这里的“进程”标签中就可看到了),为什么会这样呢?下面就来揭开它神秘的面纱。

发现

在基于nt内核SEO靠我的windows操作系统家族中,不同版本的windows系统,存在不同数量的“svchost”进程,用户使用“任务管理器”可查看其进程数目。一般来说,win2000有两个svchost进程,winxpSEO靠我中则有四个或四个以上的svchost进程(以后看到系统中有多个这种进程,千万别立即判定系统有病毒了哟),而win2003 server中则更多。这些svchost进程提供很多系统服务,如:rpcss服SEO靠我务(remote procedure call)、dmserver服务(logical disk manager)、dhcp服务(dhcp client)等。

如果要了解每个svchost进程到底提供了SEO靠我多少系统服务,可以在win2000的命令提示符窗口中输入“tlist -s”命令来查看,该命令是win2000 support tools提供的。在winxp则使用“tasklist /svc”命令。SEO靠我

svchost中可以包含多个服务

深入

windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在于“%systemroot% system32”目录下,它属于共享进程。随着wiSEO靠我ndows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由 svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务SEO靠我在这里被启动,而它自己却不能给用户提供任何服务。那这些服务是如何实现的呢?

原来这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向 svchost,由svchost调用相应服务的动态链SEO靠我接库来启动服务。那svchost又怎么知道某个系统服务该调用哪个动态链接库呢?这是通过系统服务在注册表中设置的参数来实现。下面就以rpcss(remote procedure call)服务为例,进行SEO靠我讲解。

  从启动参数中可见服务是靠svchost来启动的。

实例

以windows xp为例,点击“开始”/“运行”,输入“services.msc”命令,弹出服务对话框,然后打开“remote procedSEO靠我ure call”属性对话框,可以看到rpcss服务的可执行文件的路径为“c:/windows/system32/svchost -k rpcss”,这说明rpcss服务是依靠svchost调用“rpSEO靠我css”参数来实现的,而参数的内容则是存放在系统注册表中的。

在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到[hkey_local_machine systemcurrentSEO靠我controlsetservicesrpcss]项,找到类型为“reg_expand_sz”的键“magepath”,其键值为“%systemroot%system32svchost -k rpcssSEO靠我”(这就是在服务窗口中看到的服务启动命令),另外在“parameters”子项中有个名为“servicedll”的键,其值为“% systemroot%system32rpcss.dll”,其中“rpSEO靠我css.dll”就是rpcss服务要使用的动态链接库文件。这样 svchost进程通过读取“rpcss”服务注册表信息,就能启动该服务了。

解惑

因为svchost进程启动各种服务,所以病毒、木马也想尽办SEO靠我法来利用它,企图利用它的特性来迷惑用户,达到感染、入侵、破坏的目的(如冲击波变种病毒“w32.welchia.worm”)。但windows系统存在多个svchost进程是很正常的,在受感染的机器中到SEO靠我底哪个是病毒进程呢?这里仅举一例来说明。

假设windows xp系统被“w32.welchia.worm”感染了。正常的svchost文件存在于“c:/windows/system32”目录下,如果发SEO靠我现该文件出现在其他目录下就要小心了。“w32.welchia.worm”病毒存在于“c:/windows/system32wins”目录中,因此使用进程管理器查看svchost进程的执行文件路径就很容SEO靠我易发现系统是否感染了病毒。windows系统自带的任务管理器不能够查看进程的路径,可以使用第三方进程管理软件,如“windows优化大师”进程管理器,通过这些工具就可很容易地查看到所有的svchostSEO靠我进程的执行文件路径,一旦发现其执行路径为不平常的位置就应该马上进行检测和处理。

由于篇幅的关系,不能对svchost全部功能进行详细介绍,这是一个windows中的一个特殊进程,有兴趣的可参考有关技术资SEO靠我料进一步去了解它。

大家都要知道Svchost.exe,是系统必不可少的一个进程,很多服务都会多多少少用到它,

但是我想大家也知道,由于它本身特殊性,高明的"黑客们"肯定是不会放过的,前段时间的SvchoSEO靠我st.exe木马风波,大家应该是记忆犹新吧,而且现在还是有很多机器里都藏有此木马,因为它伪装和系统进程Svchost.exe一样,所以很多人分不清,那个是进程,那个是木马....

好的,还是让我们详尽了SEO靠我解一下Svchost.exe进程吧

  1.多个服务共享一个 Svchost.exe进程利与弊

windows 系统服务分为独立进程和共享进程两种,在windows NT时只有服务器管理器SCM(ServicSEO靠我es.exe)有多个共享服务,随着系统内置服务的增加,在windows 2000中ms又把很多服务做成共享方式,由svchost.exe启动。windows 2000一般有2个svchost进程,一个SEO靠我是RPCSS(Remote Procedure Call)服务进程,另外一个则是由很多服务共享的一个svchost.exe。而在windows XP中,则一般有4个以上的svchost.exe服务进程SEO靠我,windows 2003 server中则更多,可以看出把更多的系统内置服务以共享进程方式由svchost启动是ms的一个趋势。这样做在一定程度上减少了系统资源的消耗,不过也带来一定的不稳定因素,因SEO靠我为任何一个共享进程的服务因为错误退出进程就会导致整个进程中的所有服务都退出。另外就是有一点安全隐患,首先要介绍一下svchost.exe的实现机制。

  2. Svchost原理

Svchost本身只是作为服SEO靠我务宿主,并不实现任何服务功能,需要Svchost启动的服务以动态链接库形式实现,在安装这些服务时,把服务的可执行程序指向svchost,启动这些服务时由svchost调用相应服务的动态链接库来启动服务SEO靠我

那么svchost如何知道某一服务是由哪个动态链接库负责呢?这不是由服务的可执行程序路径中的参数部分提供的,而是服务在注册表中的参数设置的,注册表中服务下边有一个Parameters子键其中的SerSEO靠我viceDll表明该服务由哪个动态链接库负责。并且所有这些服务动态链接库都必须要导出一个ServiceMain()函数,用来处理服务任务。

例如rpcss(Remote Procedure Call)在SEO靠我注册表中的位置是 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRpcSs,它的参数子键Parameters里有这样一项:

"ServiceDll"=SEO靠我REG_EXPAND_SZ:"%SystemRoot%system32 pcss.dll"

当启动rpcss服务时,svchost就会调用rpcss.dll,并且执行其ServiceMain()函数执行SEO靠我具体服务。

既然这些服务是使用共享进程方式由svchost启动的,为什么系统中会有多个svchost进程呢?ms把这些服务分为几组,同组服务共享一个svchost进程,不同组服务使用多个svchost进SEO靠我程,组的区别是由服务的可执行程序后边的参数决定的。

  例如rpcss在注册表中 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRpcSs 有这样一项:

"SEO靠我ImagePath"=REG_EXPAND_SZ:"%SystemRoot%system32svchost -k rpcss"

  因此rpcss就属于rpcss组,这在服务管理控制台也可以看到。

svchoSEO靠我st的所有组和组内的所有服务都在注册表的如下位置: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost,例如windoSEO靠我ws 2000共有4组rpcss、netsvcs、wugroup、BITSgroup,其中最多的就是netsvcs=REG_MULTI_SZ:EventSystem.Ias.Iprip.Irmon.NSEO靠我etman.

  Nwsapagent.Rasauto.Rasman.Remoteaccess.SENS.Sharedaccess.Tapisrv.Ntmssvc.wzcsvc..

在启动一个svchost.SEO靠我exe负责的服务时,服务管理器如果遇到可执行程序内容ImagePath已经存在于服务管理器的映象库中,就不在启动第2个进程svchost,而是直接启动服务。这样就实现了多个服务共享一个svchost进SEO靠我程。

  3. Svchost代码

现在我们基本清楚svchost的原理了,但是要自己写一个DLL形式的服务,由svchost来启动,仅有上边的信息还有些问题不是很清楚。比如我们在导出的ServiceMainSEO靠我()函数中接收的参数是ANSI还是Unicode?我们是否需要调用RegisterServiceCtrlHandler和StartServiceCtrlDispatcher来注册服务控制及调度函数?

SEO靠我些问题要通过查看svchost代码获得。下边的代码是windows 2000+ service pack 4 的svchost反汇编片段,可以看出svchost程序还是很简单的。

主函数首先调用ProcSEO靠我CommandLine()对命令行进行分析,获得要启动的服务组,然后调用SvcHostOptions()查询该服务组的选项和服务组的所有服务,并使用一个数据结构 svcTable 来保存这些服务及其服SEO靠我务的DLL,然后调用PrepareSvcTable() 函数创建 SERVICE_TABLE_ENTRY 结构,把所有处理函数SERVICE_MAIN_FUNCTION 指向自己的一个函数FuncSeSEO靠我rviceMain(),最后调用API StartServiceCtrlDispatcher() 注册这些服务的调度函数。

; =============================== Main SEO靠我Funcion =======================================

  .text:010010B8 public start

.text:010010B8 start proc SEO靠我near

  .text:010010B8 push esi

  .text:010010B9 push edi

.text:010010BA push offset sub_1001EBA ; lpTopLeveSEO靠我lExceptionFilter

  .text:010010BF xor edi, edi

  .text:010010C1 call ds:SetUnhandledExceptionFilter

.text:0SEO靠我10010C7 push 1 ; uMode

  .text:010010C9 call ds:SetErrorMode

  .text:010010CF call ds:GetProcessHeap

.text:SEO靠我010010D5 push eax

  .text:010010D6 call sub_1001142

  .text:010010DB mov eax, offset dword_1003018

.text:01SEO靠我0010E0 push offset unk_1003000 ; lpCriticalSection

  .text:010010E5 mov dword_100301C, eax

.text:010010ESEO靠我A mov dword_1003018, eax

  .text:010010EF call ds:InitializeCriticalSection

.text:010010F5 call ds:GetCoSEO靠我mmandLineW

  .text:010010FB push eax ; lpString

  .text:010010FC call ProcCommandLine

.text:01001101 mov esSEO靠我i, eax

  .text:01001103 test esi, esi

  .text:01001105 jz short lab_doservice

  .text:01001107 push esi

.text:SEO靠我01001108 call SvcHostOptions

  .text:0100110D call PrepareSvcTable

.text:01001112 mov edi, eax ; SERVICESEO靠我_TABLE_ENTRY returned

  .text:01001114 test edi, edi

  .text:01001116 jz short loc_1001128

.text:01001118 mSEO靠我ov eax, [esi+10h]

  .text:0100111B test eax, eax

  .text:0100111D jz short loc_1001128

.text:0100111F push SEO靠我dword ptr [esi+14h] ; dwCapabilities

  .text:01001122 push eax ; int

.text:01001123 call InitializeSecurSEO靠我ity

  .text:01001128

  .text:01001128 loc_1001128: ; CODE XREF: start+5Ej

  .text:01001128 ; start+65j

.text:0SEO靠我1001128 push esi ; lpMem

  .text:01001129 call HeapFreeMem

  .text:0100112E

.text:0100112E lab_doservice: ;SEO靠我 CODE XREF: start+4Dj

  .text:0100112E test edi, edi

  .text:01001130 jz ExitProgram

.text:01001136 push edSEO靠我i ; lpServiceStartTable

  .text:01001137 call ds:StartServiceCtrlDispatcherW

.text:0100113D jmp ExitProgSEO靠我ram

  .text:0100113D start endp

; =============================== Main Funcion end =====================SEO靠我======================

由于svchost为该组的所有服务都注册了svchost中的一个处理函数,因此每次启动任何一个服务时,服务管理器SCM都会调用FuncServiceMainSEO靠我() 这个函数。这个函数使用 svcTable 查询要启动的服务使用的DLL,调用DLL导出的ServiceMain()函数来启动服务,然后返回。

; =========================SEO靠我===== FuncServiceMain() ===========================================

.text:01001504 FuncServiceMain prSEO靠我oc near ; DATA XREF: PrepareSvcTable+44o

  .text:01001504

  .text:01001504 arg_0 = dword ptr 8

.text:010015SEO靠我04 arg_4 = dword ptr 0Ch

  .text:01001504

  .text:01001504 push ecx

  .text:01001505 mov eax, [esp+arg_4]

.texSEO靠我t:01001509 push ebx

  .text:0100150A push ebp

  .text:0100150B push esi

.text:0100150C mov ebx, offset unk_SEO靠我1003000

  .text:01001511 push edi

  .text:01001512 mov edi, [eax]

  .text:01001514 push ebx

.text:01001515 xorSEO靠我 ebp, ebp

  .text:01001517 call ds:EnterCriticalSection

  .text:0100151D xor esi, esi

.text:0100151F cmp dwSEO靠我GroupSize, esi

  .text:01001525 jbe short loc_1001566

  .text:01001527 and [esp+10h], esi

  .text:0100152B

.teSEO靠我xt:0100152B loc_100152B: ; CODE XREF: FuncServiceMain+4Aj

  .text:0100152B mov eax, svcTable

.text:01001SEO靠我530 mov ecx, [esp+10h]

  .text:01001534 push dword ptr [eax+ecx]

  .text:01001537 push edi

.text:01001538 cSEO靠我all ds:lstrcmpiW

  .text:0100153E test eax, eax

  .text:01001540 jz short StartThis

.text:01001542 add dworSEO靠我d ptr [esp+10h], 0Ch

  .text:01001547 inc esi

  .text:01001548 cmp esi, dwGroupSize

.text:0100154E jb shortSEO靠我 loc_100152B

  .text:01001550 jmp short loc_1001566

.text:01001552 ; ===================================SEO靠我==============

  .text:01001552

  .text:01001552 StartThis: ; CODE XREF: FuncServiceMain+3Cj

.text:01001552SEO靠我 mov ecx, svcTable

  .text:01001558 lea eax, [esi+esi*2]

  .text:0100155B lea eax, [ecx+eax*4]

.text:010015SEO靠我5E push eax

  .text:0100155F call GetDLLServiceMain

.text:01001564 mov ebp, eax ; dll ServiceMain FunctiSEO靠我on address

  .text:01001566

  .text:01001566 loc_1001566: ; CODE XREF: FuncServiceMain+21j

.text:01001566 ;SEO靠我 FuncServiceMain+4Cj

  .text:01001566 push ebx

  .text:01001567 call ds:LeaveCriticalSection

.text:0100156DSEO靠我 test ebp, ebp

  .text:0100156F jz short loc_100157B

  .text:01001571 push [esp+10h+arg_4]

.text:01001575 pSEO靠我ush [esp+14h+arg_0]

  .text:01001579 call ebp

  .text:0100157B

.text:0100157B loc_100157B: ; CODE XREF: FunSEO靠我cServiceMain+6Bj

  .text:0100157B pop edi

  .text:0100157C pop esi

  .text:0100157D pop ebp

.text:0100157E popSEO靠我 ebx

  .text:0100157F pop ecx

  .text:01001580 retn 8

  .text:01001580 FuncServiceMain endp ; sp = -8

; ======SEO靠我======================== FuncServiceMain() end ========================================

由于svchost已经调用SEO靠我了StartServiceCtrlDispatcher来服务调度函数,因此我们在实现DLL实现时就不用了,这主要是因为一个进程只能调用一次StartServiceCtrlDispatcher API。SEO靠我但是需要用 RegisterServiceCtrlHandler 来注册响应控制请求的函数。最后我们的DLL接收的都是unicode字符串。

由于这种服务启动后由svchost加载,不增加新的进程,只是SEO靠我svchost的一个DLL,而且一般进行审计时都不会去HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost 检查服务组是SEO靠我否变化,就算去检查,也不一定能发现异常,因此如果添加一个这样的DLL后门,伪装的好,是比较隐蔽的。

  4. 安装服务与设置

要通过svchost调用来启动的服务,就一定要在HKEY_LOCAL_MACHINSEO靠我ESOFTWAREMicrosoftWindows NTCurrentVersionSvchost下有该服务名,这可以通过如下方式来实现:

  1) 添加一个新的服务组,在组里添加服务名

2) 在现有组里添加SEO靠我服务名

  3) 直接使用现有服务组里的一个服务名,但本机没有安装的服务

  4) 修改现有服务组里的现有服务,把它的ServiceDll指向自己

其中前两种可以被正常服务使用,如使用第1种方式,启动其服务要创建新SEO靠我的svchost进程;第2种方式如果该组服务已经运行,安装后不能立刻启动服务,因为svchost启动后已经把该组信息保存在内存里,并调用API StartServiceCtrlDispatcher()SEO靠我 为该组所有服务注册了调度处理函数,新增加的服务不能再注册调度处理函数,需要重起计算机或者该组的svchost进程。而后两种可能被后门使用,尤其是最后一种,没有添加服务,只是改了注册表里一项设置,从服SEO靠我务管理控制台又看不出来,如果作为后门还是很隐蔽的。比如EventSystem服务,缺省是指向es.dll,如果把ServiceDll改为EventSystem.dll就很难发现。

因此服务的安装除了调用SEO靠我CreateService()创建服务之外,还需要设置服务的ServiceDll,如果使用前2种还要设置svchost的注册表选项,在卸载时也最好删除增加的部分。

注: ImagePath 和ServiSEO靠我ceDll 是ExpandString不是普通字符串。因此如果使用.reg文件安装时要注意。

  5. DLL服务实现

DLL程序的编写比较简单,只要实现一个ServiceMain()函数和一个服务控制程序,SEO靠我在ServiceMain()函数里用RegisterServiceCtrlHandler()注册服务控制程序,并设置服务的运行状态就可以了。

另外,因为此种服务的安装除了正常的CreateServiceSEO靠我()之外,还要进行其他设置,因此最好实现安装和卸载函数。

为了方便安装,实现的代码提供了InstallService()函数进行安装,这个函数可以接收服务名作为参数(如果不提供参数,就使用缺省的ipriSEO靠我p),如果要安装的服务不在svchost的netsvcs组里安装就会失败;如果要安装的服务已经存在,安装也会失败;安装成功后程序会配置服务的ServiceDll为当前Dll。提供的UninstallSSEO靠我ervice()函数,可以删除任何函数而没有进行任何检查。

为了方便使用rundll32.exe进行安装,还提供了RundllInstallA()和RundllUninstallA()分别调用InstaSEO靠我llService()及UninstallService()。因为rundll32.exe使用的函数原型是:

  void CALLBACK FunctionName(

HWND hwnd, // handlSEO靠我e to owner window

  HINSTANCE hinst, // instance handle for the DLL

LPTSTR lpCmdLine, // string the DLL SEO靠我will parse

  int nCmdShow // show state

  );

  对应的命令行是rundll32 DllName,FunctionName [Arguments]

DLL服务本身只是创建一个进SEO靠我程,该程序命令行就是启动服务时提供的第一个参数,如果未指定就使用缺省的svchostdll.exe。启动服务时如果提供第二个参数,创建的进程就是和桌面交互的。

干掉Svchost.exe进程!

1.错误的SEO靠我解决方法描述

  当我们按下Alt+Ctrl+Del打开任务管理器,发现进程中出现多个Svchost.exe,则表明系统中毒,我们首先将所有的Svchost结束掉,然后使用相关的杀毒工具查杀病毒。

  注:

200SEO靠我3年的夏天,“冲击波”病毒横行的时候有一种说法就是Svchost.exe都是病毒,一看到就要删除。这种说法让电脑用户人心惶惶,因为每个使用 Windows XP系统的用户在按照文章中介绍的检查有无SvSEO靠我chost.exe的方法都可以找到几个Svchost.exe进程。

  有关Svchost.exe详见:

http://forum.ikaka.com/topic.asp?board=3&artid=6087SEO靠我605

  2.方案由来及后果

在很多人的印象中,每个应用程序一般只对应一个进程,如QQ对应QQ.EXE进程、记事本对应notepad.exe进程等。所以当看到系统有多个同样名字的进程时,总是会将其联想为病毒SEO靠我或者木马程序在作怪。如果不加思索,野蛮的将其中的某些Svchost.exe进程结束掉,会让系统的运行变得不稳定。

  3.正确的解决办法

Windows 进程分为独立进程和共享进程两种,Svchost.exeSEO靠我属于后者。Windows XP为了节约系统资源,将很多个系统服务做为共享方式由Svchost.exe来启动。Svchost本身只是作为服务宿主,并不能实现任何服务功能, svchost通过调用相应服务SEO靠我的动态链接库(DLL)来启动该服务,而Windows将这些服务分为几个组,同组的服务共享一个Svchost进程,不同的组所指向的Svchost不同。通常情况下,Windows XP有4个由SvchosSEO靠我t启动的服务组,也就是说Windows XP系统一般有4个Svchost.exe进程。当然某些应用程序或服务也有可能会调用Svchost,所以当你看到系统中有多余4个的 Svchost.exe进程,也SEO靠我不要盲目判断系统中了病毒。实际上Svchost.exe进程的个数跟是否中毒无直接关系。

  小提示:

★ 笔者做了下面一个非常有趣的测试:打开任务管理器,切换到“进程”选项卡,首先手动结束掉由上到下的第三个SSEO靠我vchost.exe进程,结束完后系统会马上重新建立该进程,接下来我们手动结束掉由上到下的最后一个Svchost.exe进程,系统会出现一个类似中了冲击波病毒的对话窗口,并倒计时关机,这是由于该SvcSEO靠我host.exe进程引导RPC服务,终止该进程则导致RPC服务中断,系统自然会重新启动了。

★Windows 2000中一般有两个Svchost.exe进程,Windows Server 2003则非常SEO靠我多,一般有6个。

  既然系统中Svchost.exe进程数与是否中毒无关,我们究竟如何区别正常的和病毒伪造的Svchost进程呢?

  我们可以使用下面两种方法来鉴别:

  方法一:

在系统所在分区进行搜索,如果发现多SEO靠我个Svchost.exe文件,则系统很有可能中毒。正常的Svchost.exe位于%windir%// system32目录下,如果发现其它目录中有Svchost.exe文件,你就要小心了。例如冲击波SEO靠我的变种Win32.Welchia.Worm会在% windir%//system32//wins目录种下Svchost.exe文件。

  方法二:

  察看Svchost.exe进程对应文件的路径。

WindowsSEO靠我 XP自带的任务管理器中无法察看,我们需要借助第三方工具,例如Windows优化大师自带的进程管理工具,运行它后定位到Svchost.exe进程,可以看到它对应的运行文件的真实路径。

  小提示:

★不少木马SEO靠我程序会采用将自己伪装成跟常见进程相似的文件名或者相同的文件名但扩展名不相同,如果你在任务管理器中看到Scvhost.exe、Svch0st.exe等进程,肯定有木马已经植入你的系统。

★ 很多朋友在查看SEO靠我CPU占用率时,一个叫做“System Idle Process”的进程常常会显示为90-99%。不必担心,实际上恰恰相反的是这里的90-99%是CPU资源空闲了出来的资源。这里的数字越大表示 CPUSEO靠我可用资源越多,数字越小则表示CPU资源越紧张。

  其它错误的说法和方案

1.在安装Windows XP后,删除C://Windows//System32//Dllcache下的所有文件,可以节约大概200MSEO靠我B的磁盘空间。

  点评:该文件夹里保存的是系统备份的dll文件,Windows在安装驱动、软件、升级的时候可能会用到里面的文件,如果将其删除会给我们带来更大的不便。

2. 由于系统空间比较宝贵,很多朋友将软SEO靠我件安装在其它分区,但每次安装软件时提示的默认安装路径都是C://Program Files,我们可以打开注册表,定位到“[HKEY_LOCAL_MACHINE//SOFTWARE//MicrosoftSEO靠我//Windows// CurrentVersion]”,将右边窗口中的ProgramFilesDir字符串值修改为我们想要的路径。

点评:这样设置确实让我们方便不少。但它带来很多弊端,比如打开OutlSEO靠我ook Express时,会报告C盘磁盘已满或者内存不足的错误,并提示“MSOE.dll无法初始化”,另外还可以引起Media Player等系统程序的运行故障。

3.修改//%Systemroot%/SEO靠我/System32//Drivers//Etc文件夹下的host.sam文件……

点评:很多朋友使用修改host文件的办法来屏蔽恶意网站,这点没错。不过很多人却没搞清楚到底哪个文件是“host文件”。在SEO靠我Windows 98下存在一个host.sam文件,该文件只是微软为我们修改host文件做的一个范例文件,如果我们修改host.sam文件根本达不到任何效果,真正的host文件是一个名为“host”没SEO靠我有扩展名的文件。而在Windows XP下,所谓“host.sam”文件根本不存在,我们修改host文件应该是用记事本打开//%Systemroot%//System32// Drivers//EtcSEO靠我目录下的host文件(同样没有扩展名)。

  4.要将jpg文件与版本的ACDSEE(4.0以下的版本)建立文件关联,只需要运行“regsvr32 /u shimgvw.dll”命令。

点评:这种办法的确可以SEO靠我让ACDSEE和jpg格式文件建立文件关联,但该命令卸载了Windows XP的图片预览功能,有点矫枉过正。正确的方法是:删除注册表中的“[HKEY_CLASSES_ROOT// SystemFileSEO靠我Associations//image]”项。

  透析Svchost进程清除后门

网上有很多关于Svchost.exe的讨论,我们今天首先来看一下Svchost.exe的原理,工作方法,然后结合著名DLL木SEO靠我马,实战了解一下使用Svchost.exe进行启动的木马的清除,希望大家能够有所收获。

  Svchost.exe是NT核心系统非常重要的文件,对于Windows

2000/XP来说,不可或缺。SvchostSEO靠我进程提供很多系统服务,如:logical disk manager、remote

procedure call(RPC)、dhcp client、Automatic Updates、BackgroundSEO靠我

  Intelligent Transfer Service、COM+ Event System、Internet Connection

Sharing、Network Connections、PortabSEO靠我le Media Serial Number

  Service、Remote Access Auto Connection Manager、Remote Access

Connection Manager、SEO靠我Removable Storage、Routing and Remote

Access、System Event Notification、Telephony、Wireless ConfiguratioSEO靠我n等等。

  对于服务中使用Svchost.exe加载了哪些动态链接库,我们可以在服务中点击上面列出的某个服务来看看。比如我们要看Automatic

Updates服务,就可以在在它上面点击鼠标右键,看它的属SEO靠我性。

  同样情况下,如果读者还想进一步了解其它的那些服务是怎样使用Svchost.exe的,可以使用与上面相同的方法来观察一下。

聪明的读者一眼就可以看出,Svchost.exe对于系统来说是多么的重要了。SEO靠我也正是因为Svchost.exe的重要性,所以病毒、木马也想尽办法来利用它,企图利用它的特性来迷惑用户,达到感染、入侵、破坏的目的。那么应该如何判断到底哪个是病毒进程呢?正常的Svchost.exe文SEO靠我件应该存在于“C:/Windows/system32”目录下,如果发现该文件出现在其他目录下就要小心了。另外,黑客们为了使用Svchost.exe达到进程欺骗的目的,有可能使用一些迷惑性的名字,如将字SEO靠我母o变成数字0(零),这样程序的名称就变成了svch0st.exe了,如果不注意观察,很容易逃过普通用户的眼睛。

通常情况下,为了确定我们的计算机中正在运行的Svchost.exe是不是真正的系统的SvSEO靠我chost.exe,我们可以使用如下方法来查看。Svchost.exe文件的调用路径可以通过“计算机管理→系统工具→系统信息→软件环境→正在运行任务”来查看。

  这里仅举一例来说明。假设Windows

XPSEO靠我系统被“w32.welchia.worm”感染了。正常的Svchost文件存在于“c:/Windows/system32”目录下,如果发现该文件出现在其他目录下就要小心了。“w32.welchia.wSEO靠我orm”病毒存在于“c:/Windows/system32wins”目录中,通过使用上面说的方法就可很容易地查看到所有的Svchost进程的执行文件路径,一旦发现其执行路径为不平常的位置就应该马上进行SEO靠我检测和处理。

现在我们已经搞清楚了一部分疑问,但是,我们还不知道哪个服务调用了哪个动态链接库文件,是不是没有办法呢?如果没有地方可以找到,那么Windows自己又是如何知道调用哪一个呢?大家知道,WinSEO靠我dows将所有的系统信息和应用程序信息都保存在了系统注册表中,所以,我们可以在注册表中找找看。

  下面以Remote Procedure

Call(RPC)服务为例,来看看Svchost进程是如何调用DLLSEO靠我文件的。在Windiws中,打开服务,然后打开“Remote

  Procedure Call(RPC)”属性对话框,可以看到Remote Procedure

Call(RPC)服务的可执行文件的路径为“C:SEO靠我/WINNT/system32/Svchost -k rpcss”,这说明Remote

Procedure Call(RPC)服务是依靠Svchost调用“rpcss”参数来实现的,而参数的内容则是存放SEO靠我在系统注册表中的。

在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到“HKEY_LOCAL_MACHINE/System/currentcontrolset/services/SEO靠我

  rpcss”项。然后,再在里面找到类型为“reg_expand_sz”的“Imagepath”项,其键值为“%SystemRoot%/system32/Svchost

  -k

rpcss”(这就是在服务窗口SEO靠我中看到的服务启动命令),另外在“parameters”子项中有个名为“ServiceDll”的键,其值为“%SystemRoot%/system32/rpcss.dll”,其中“rpcss.dll”就SEO靠我是Remote

  Procedure

  Call(RPC)服务要使用的动态链接库文件。这样Svchost进程通过读取“rpcss”服务注册表信息,就能启动该服务了。

同样情况下,如果有程序试图蛮天过海,假借SvSEO靠我chost.exe来启动自己的动态链接库文件(如将木马作成动态链接库文件),那么我们就可以从这里找到DLL木马的路径,将它大白于天下。

如果要了解每个Svchost进程到底提供了多少系统服务,可以在WiSEO靠我ndows 2000的命令提示符窗口中输入“tlist

  -s”命令来查看,该命令是Windows 2000 support

tools提供的。不过,在这里看到的效果跟服务里面看到的是一样的,只不过是DOSSEO靠我界面而已。

  小知识:在Windows xp下则使用“tasklist /svc”命令会收到同样的效果。

由于篇幅的关系,不能对Svchost全部功能进行详细介绍,这是一个Windows中的一个特殊进程,有SEO靠我兴趣的可参考有关技术资料进一步去了解它。

  下面,我们通过一个实例来看一下木马程序是如何利用Svchost.exe进行启动的。这里,我选择了PortLess BackDoor

V1.2来做演示,这是一个使用SEO靠我Svchost.exe去启动,平时不开端口,可以进行反连接的后门程序(和小榕的BITS是同一类型的后门)。

为了看一下这个后门是如何利用Svchost.exe进行启动的,我们在运行软件之前,先给注册表做SEO靠我一个快照,这里我选择了Regshot

  1.61e5

final版本,并将初始快照命名为1.hiv。然后我们将Portlessinst.exe和Svchostdll.dll(不要改名)上传到系统目录(%wiSEO靠我nnt%/system32目录中)。

  接下来,进入命令行,使用“Portlessinst.exe -install ActiveString

Password”进行安装,这里的ActiveString就是SEO靠我连接那系统打开的端口后输入的验证字符串,这里的密码是使用正向连接你连接上后门打开的端口时需要输入的密码。比如,我输入如下:

portlessinst.exe –install smiler wind_0SEO靠我03

  这样就安装上去了,我们来看一下注册表里的变化。将1.hiv装载进Regshot中的1st shot,然后对当前的注册表做2st

  shot的快照,然后使用compare进行比较,其比较的结果如下:

HKSEO靠我EY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet

  Explorer/PortLess/FdsnqbTsuni`: "tjnkbu"

HKEY_LOCAL_MACHISEO靠我NE/SOFTWARE/Microsoft/Internet

  Explorer/PortLess/Wfttphuc: "tofiXdo"

HKEY_LOCAL_MACHINE/SYSTEM/ControlSEO靠我Set001/Services/IPRIP/Security/Security:

01 00 14 80 A0 00 00 00 AC 00 00 00 14 00 00 00 30 00 00 00 SEO靠我02 00 1C

  00 01 00 00 00 02 80 14 00 FF 01 0F 00 01 01 00 00 00 00 00 01 00 00

00 00 02 00 70 00 04 00 SEO靠我00 00 00 00 18 00 FD 01 02 00 01 01 00 00 00

00 00 05 12 00 00 00 63 00 6F 00 00 00 1C 00 FF 01 0F 00SEO靠我 01 02 00 00

  00 00 00 05 20 00 00 00 20 02 00 00 6D 00 00 00 00 00 18 00 8D 01 02

00 01 01 00 00 00 00SEO靠我 00 05 0B 00 00 00 20 02 00 00 00 00 1C 00 FD 01

02 00 01 02 00 00 00 00 00 05 20 00 00 00 23 02 00 0SEO靠我0 6D 00 00 00 01

  01 00 00 00 00 00 05 12 00 00 00 01 01 00 00 00 00 00 05 12 00 00 00

HKEY_LOCAL_MACHISEO靠我NE/SYSTEM/ControlSet001/Services/IPRIP/Parameters/ServiceDll:

  "C:/WINNT/system32/Svchostdll.dll"

HKEY_SEO靠我LOCAL_MACHINE/SYSTEM/ControlSet001/Services/IPRIP/Parameters/program:

  "SvchostDLL.exe"

HKEY_LOCAL_MACHSEO靠我INE/SYSTEM/ControlSet001/Services/IPRIP/Parameters/Interactive:

  0x00000000

HKEY_LOCAL_MACHINE/SYSTEM/CSEO靠我ontrolSet001/Services/IPRIP/Type:

  0x00000020

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/IPRIP/StSEO靠我art:

  0x00000002

  HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/IPRIP/ErrorControl:

  0x00000001

HKEY_LOCSEO靠我AL_MACHINE/SYSTEM/ControlSet001/Services/IPRIP/ImagePath:

"%SystemRoot%/System32/Svchost.exe -k netsvSEO靠我cs"

  HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/IPRIP/DisplayName:

  "Intranet Services"

HKEY_LOCAL_SEO靠我MACHINE/SYSTEM/ControlSet001/Services/IPRIP/ObjectName:

  "LocalSystem"

HKEY_LOCAL_MACHINE/SYSTEM/CurrenSEO靠我tControlSet/Services/IPRIP/Security/Security:

01 00 14 80 A0 00 00 00 AC 00 00 00 14 00 00 00 30 00 0SEO靠我0 00 02 00 1C

  00 01 00 00 00 02 80 14 00 FF 01 0F 00 01 01 00 00 00 00 00 01 00 00

00 00 02 00 70 00 0SEO靠我4 00 00 00 00 00 18 00 FD 01 02 00 01 01 00 00 00

00 00 05 12 00 00 00 63 00 6F 00 00 00 1C 00 FF 01 SEO靠我0F 00 01 02 00 00

  00 00 00 05 20 00 00 00 20 02 00 00 6D 00 00 00 00 00 18 00 8D 01 02

00 01 01 00 00 SEO靠我00 00 00 05 0B 00 00 00 20 02 00 00 00 00 1C 00 FD 01

02 00 01 02 00 00 00 00 00 05 20 00 00 00 23 02SEO靠我 00 00 6D 00 00 00 01

  01 00 00 00 00 00 05 12 00 00 00 01 01 00 00 00 00 00 05 12 00 00 00

HKEY_LOCAL_SEO靠我MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/Parameters/ServiceDll:

"C:/WINNT/system32/Svchostdll.SEO靠我dll"

  HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/Parameters/program:

  "SvchostDLL.exe"

HKSEO靠我EY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/Parameters/Interactive:

  0x00000000

HKEY_LOCALSEO靠我_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/Type:

  0x00000020

HKEY_LOCAL_MACHINE/SYSTEM/CurrentConSEO靠我trolSet/Services/IPRIP/Start:

  0x00000002

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/ErSEO靠我rorControl:

  0x00000001

  HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/ImagePath:

"%SystemRoSEO靠我ot%/System32/Svchost.exe -k netsvcs"

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/DisplSEO靠我ayName:

  "Intranet Services"

  HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/IPRIP/ObjectName:

"LocSEO靠我alSystem"

  可以看出,PortLess BackDoor

  V1.2将自己注册为了服务IPRIP,它使用的启动参数是"%SystemRoot%/System32/Svchost.exe -k

netsSEO靠我vcs",它使用的DLL文件是"C:/WINNT/system32/Svchostdll.dll"。通过这里,我们就可以找到PortLess,将它使用的服务禁止掉,然后将对应的DLL文件删除,并将注册SEO靠我表中这些多出来的键值干掉,三下五除二就将Portless弄得一干二净!现在大家知道怎么清理掉用Svchost加载的后门了吧?!  
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2