svchost.exe网络服务1572K

这意味着你的系统不起作用。

正常过程

但是你去搜索,如果你的系统里有一个大写的SVCHOST.EXE,那就是病毒。

可以参考以下流程。

这些都是系统流程,看看吧。

smss.exe会议经理

Csrss.exe子系统服务器进程

Winlogon.exe管理员用户登录。

Services.exe包含许多系统服务。

Lsass.exe管理IP安全策略并启动ISAKMP/奥克利(IKE)和IP安全驱动程序。

svchost.exe Windows 2000/XP文件保护系统

SPOOLSV.EXE将文件加载到内存中,以便以后打印。

Explorer.exe资源经理

internat.exe托盘区的拼音图标

Mstask.exe允许程序在指定的时间运行。

Regsvc.exe允许远程注册操作。(系统服务)→远程注册

Tftpd.exe实施TFTP互联网标准。该标准不需要用户名和密码。

Llssrv.exe证书记录服务

Ntfrs.exe维护多个服务器之间的文件目录内容的文件同步。

RsSub.exe控制着用于远程存储数据的介质。

Locator.exe管理RPC名称服务数据库。

Clipsrv.exe支持剪贴簿查看器,这样就可以从远程剪贴簿查看剪报。

Msdtc.exe并行事务分布在两个以上的数据库、消息队列、文件系统或其他事务保护资源管理器中。

Grovel.exe扫描零备份存储(SIS)卷上的重复文件,并将重复文件指向数据存储点以节省磁盘空间(仅适用于NTFS文件系统)。

Snmp.exe包含可以监控网络设备活动并向网络控制台工作站报告的代理。

这些进程对电脑的运行非常重要,不要随意“杀死”它们,否则可能会直接影响系统的正常运行。

探索耗尽CPU资源的病毒清除方法

来源:网易[2005-11-03 10:26:15]作者:佚名编辑:林继雄

昨天公司几台机器爆发病毒。因为他们不是专家,所以花了很长时间来清理。我觉得我可以把它们写下来和你交流。

首先是病毒的发现。昨天出现了两个症状。

第一,局域网出现广播包(ARP)爆炸,甚至出口被堵塞。

第二,机器的CPU资源耗尽。

使用任务管理器,可以看到可疑进程explored.exe和services.exe一起占用了近100%的CPU(事后我才知道这是因为病毒是通过服务启动的),而且进程无法停止。注册表键值:

HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows \当前版本\Run

此项目存在于此。即使删除了,重启后还是一样。这个文件存在于WINDOWS的SYSTEM32目录下,而无病毒机没有这个文件。所以基本可以确认进程是病毒。

然后就是病毒查杀。这个过程有两个问题。第一,瑞星一开始无法升级,因为病毒本身阻塞了出口,TCP流无法正常传输。

我们试了一下,发现可以用防火墙(比如天网)隔离病毒程序,然后连接网络升级。第二个问题是瑞星的病毒检测过程比较慢(在病毒检测之前网卡已经被禁用)。这是因为探究的病毒程序占用了太多的CPU。如果不能删除进程,可以使用任务管理器提高瑞星的进程优先级(比如实时),让瑞星从病毒那里抢CPU资源正常运行。

然而,这一次瑞星只杀死了伪装成svchost.exe的蠕虫,而探索依然存在。

我们别无选择,只能用一个笨办法来删除explored,就是进入安全模式,直接删除Windows的System32目录下的文件。对了,我还删除了注册表里开始运行的项。

重启后,我被提示有一个服务错误。我终于在查看管理工具下的“服务”时发现了病毒的真面目:“服务”中有一栏“Windows登录”,服务名为“MpR”,可执行文件路径为“C:\ win nt \ system32 \ explored . exe-services”。

这就解释了为什么进程停不下来,删除注册表里的系统启动项也没用。换句话说,您应该在服务中停止该服务,而不是尝试在任务管理器中删除它。

最后就查杀病毒的经验做个总结:以上病毒攻击都有一定的征兆,比如CPU满了,网络带宽满了(从网络连接状态可以看出,如果后台没有进程运行,网络接口收发包数量剧增,很可能是中毒或者连接的网络上有机器中毒),因为平时要提高警惕,发现异常就查病毒。

最好用病毒检测软件,有时候用任务管理器也会被骗。现在病毒的名字往往和系统程序的名字相似甚至相同,比如explored、smsss(smss是系统程序)、svchost等等。最好知道真正的系统程序所在的目录。比如系统svchost.exe应该在system32下,病毒可能隐藏在system32\drivers下。

该病毒可以通过多种方式启动自己:注册表、INI文件,甚至-像探索-通过服务。

与其中毒后查杀,不如做好防护措施——补丁、病毒防护、防火墙。

工具箱

发布时间:fxj1588

揭开SVCHOST.exe进程的神秘面纱

作者:时间:2004年7月2日文档类型:转载自:天极。com

浏览统计总数:240819 |年份:184705 |季度:49433 |月份:15355 |周:2124 |今日:708。

Svchost.exe是nt核心系统非常重要的一个进程,对于2000和xp都是不可或缺的。很多病毒和木马也会这么叫。所以对这个程序的深刻理解是玩电脑的必修课之一。

大家对windows操作系统都很熟悉,但是大家有没有注意到系统中的文件“svchost.exe”?细心的朋友会发现,windows中有多个“svchost”进程(用“ctrl+alt+del”键打开任务管理器,在这里的“进程”选项卡中可以看到)。为什么?让我们揭开它的神秘面纱。

发现

在基于nt内核的windows操作系统家族中,不同版本的windows系统中有不同数量的“svchost”进程。用户可以使用任务管理器检查他们的进程数。一般来说,win2000有两个svchost进程,winxp有四个以上的svchost进程(不要看到系统中有多个这样的进程就马上判断系统有病毒),win2003 server更多。这些svchost进程提供了很多系统服务,比如:rpcss服务(远程过程调用)、dmserver服务(逻辑磁盘管理器)、dhcp服务(dhcp客户端)等等。

如果想知道每个svchost进程提供多少系统服务,可以在win2000的命令提示窗口中输入“tlist -s”命令,该命令由win2000支持工具提供。在winxp中,使用“tasklist /svc”命令。

svchost中可以包含多种服务。

深入到

Windows系统进程可以分为独立进程和共享进程。“svchost.exe”文件存在于“%systemroot% system32”目录中,属于共享进程。随着windows系统服务的不断增加,为了节省系统资源,微软已经将许多服务共享并交给svchost.exe进程来启动。但是作为服务主机,svchost进程不能实现任何服务功能,也就是只能为其他服务在这里启动提供条件,而不能为用户提供任何服务。那么这些服务是如何实现的呢?

原来这些系统服务都是以动态链接库(dll)的形式实现的。它们将可执行程序指向svchost,svchost调用相应服务的dll来启动服务。那svchost怎么知道一个系统服务应该调用哪个动态链接库呢?这是通过系统服务在注册表中设置的参数来实现的。我们以rpcss(远程过程调用)服务为例来说明一下。

从启动参数可以看出,该服务是由svchost启动的。

例子

以windows xp为例,点击开始/运行,输入命令“services.msc”弹出服务对话框,然后打开“远程过程调用”属性对话框。可以看到rpcss服务的可执行文件的路径是“C:\ Windows \ System32 \ svchost-krpcss”。这说明rpcss服务是通过svchost调用“rpcss”参数实现的,参数的内容存储在系统注册表中。

在运行对话框中输入“regedit.exe”,回车,打开注册表编辑器,找到项目【HKEY _ local _ Machine system currentcontrolsetservicesrpcss】,找到类型为“reg_expand_sz”的注册表项“magepath”。其键值为“% systemroot % system32 SVC host-krpcss”(这是您在服务窗口中看到的服务启动命令),在“parameters”子项中有一个名为“servicedll”的键,值为“%systemroot%system32rpcss.dll”,其中“rpcss.dll”是rpcss服务要使用的动态链接库文件。这样,svchost进程可以通过读取“rpcss”服务注册表信息来启动服务。

消除疑虑

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

假设windows xp系统被“w32.welchia.worm”感染。普通的svchost文件存在于“c:\windows\system32”目录中,所以如果您在其他目录中找到该文件,请小心。“w32.welchia.worm”病毒存在于“c:\windows\system32wins”目录下,使用进程管理器查看svchost进程的可执行文件路径,很容易发现系统是否感染了病毒。windows系统自带的任务管理器无法查看进程路径。您可以使用第三方进程管理软件,如“windows Optimizer”进程管理器。通过这些工具,您可以很容易地查看所有svchost进程的执行文件路径。一旦发现执行路径位于异常位置,应该立即检测并处理它们。

由于篇幅所限,无法详细介绍svchost的所有功能。这是windows中的一个特殊过程。感兴趣的可以参考相关技术资料详细了解。

来源:天极。com

工具箱

发布时间:FXJ 1588

详细解释SvcHost

作者:丘比特之箭来源:嬴政天下更新时间:2004-11-02

[收藏本页至:天天|贺勋|蔡波|薇薇|狐狸挑|我挑]

大家应该知道,Svchost.exe是系统不可或缺的一个过程,很多服务或多或少都会用到它。

但我想我们都知道,因为它的特殊性,高明的“黑客”肯定不会放过。前段时间Svchost.exe的特洛伊马风波大家应该记忆犹新,现在还有很多机器都拥有这种特洛伊马,因为它的伪装和系统进程Svchost.exe的一样,所以很多人分不清哪个是进程,哪个是特洛伊马。....

好了,让我们来详细了解一下Svchost.exe过程。

1.多个服务共享一个Svchost.exe进程的优点和缺点。

Windows系统服务分为独立进程和共享进程。在windows NT中,只有服务器管理器SCM(Services.exe)有多个共享服务。随着系统内置服务的增加,在windows 2000中,ms使许多服务共享,这是由svchost.exe开始的。Windows 2000一般有两个svchost进程,一个是RPCSS(远程过程调用)服务进程,一个是很多服务共享的svchost.exe。在windows XP中,一般有四个以上的svchost.exe服务进程,在windows 2003 server中更多。可以看出,ms通过共享进程来启动更多的系统内置服务是一种趋势。这在一定程度上减少了系统资源的消耗,但也带来了一些不稳定因素,因为任何服务共享进程都会导致整个进程中的所有服务因为出错而退出。此外,还有一些安全隐患。首先,我们应该介绍svchost.exe的实施机制。

2.Svchost原理

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

那么svchost如何知道哪个动态链接库负责一个服务呢?这不是由服务的可执行路径中的参数部分提供的,而是由注册表中的服务参数设置的。注册表中的服务下有一个parameters子项,其中的ServiceDll表示哪个动态链接库负责该服务。而且所有这些服务动态链接库都必须导出一个ServiceMain()函数来处理服务任务。

比如rpcss(远程过程调用)在注册表中的位置是HKEY _本地_机器系统当前控制设置服务srpcss,它的参数子项Parameters有这样一项:

" service dll " = REG _ EXPAND _ SZ:" % SystemRoot % system32 pcss . dll "

当rpcss服务启动时,svchost将调用rpcss并执行其ServiceMain()函数来执行特定的服务。

既然这些服务是由svchost使用共享进程启动的,为什么系统中会有多个svchost进程?Ms将这些服务分为几组。同一组服务共享一个svchost进程,不同组的服务使用多个svchost进程。组之间的差异是由服务的可执行程序背后的参数决定的。

例如,rpcss在注册表中有这样一个条目HKEY _本地_机器系统当前控制设置服务sRPCSS:

" image path " = REG _ EXPAND _ SZ:" % SystemRoot % system32 SVC host-k rpcss "

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

svchost的所有组和组中的所有服务都位于注册表中的以下位置:HKEY _本地_机器软件Microsoft Windows ntCurrentVersionSVchost。例如,windows 2000有四组rpcss、netsvcs、wugroup和BITSgroup。其中,netsvcs = reg _ multi _ SZ:event system . IAS . iprip . irmon . net man .

Nwsapagent。ras auto . ras man . remote access . sens . shared access . tapis RV . ntmssvc . wzcsvc..

在启动svchost.exe负责的服务时,服务管理器不会启动第二个进程svchost,而是在服务管理器的映像库中已经存在可执行程序内容ImagePath的情况下,直接启动服务。这样,多个服务共享一个svchost进程。

3.Svchost代码

现在我们基本了解了svchost的原理,但是要写一个DLL形式的服务,这个服务是由svchost启动的。只是以上信息还不清楚。比如我们在导出的ServiceMain()函数中收到的参数是ANSI还是Unicode?我们需要调用RegisterServiceCtrlHandler和StartServiceCtrlDispatcher来注册服务控制和调度函数吗?

这些问题应该通过查看svchost代码来获得。下面的代码是windows 2000+ service pack 4的svchost反汇编片段,可以看出svchost程序还是很简单的。

main函数首先调用ProcCommandLine()解析命令行得到要启动的服务组,然后调用SvcHostOptions()查询服务组的选项和服务组的所有服务,并使用一个数据结构svcTable保存这些服务及其dll。然后调用PrepareSvcTable()函数创建SERVICE_TABLE_ENTRY结构,将所有的处理函数SERVICE_MAIN_FUNCTION指向自己的一个函数FuncServiceMain(),最后调用API StartServiceCtrlDispatcher()注册这些服务的调度函数。

;============================主要功能=============================

。正文:010010B8公众号开始

。正文:010010B8开始接近

。正文:010010B8推送esi

。正文:010010B9推送edi

。正文:010010BA推送偏移sub _ 1001EBA;lptoplevelexexceptionfilter

。正文:010010BF异或edi,edi

。text:010010c 1调用ds:SetUnhandledExceptionFilter

。正文:010010C7推送1;乌莫德

。正文:010010C9呼叫ds:SetErrorMode

。正文:010010CF调用ds:GetProcessHeap

。正文:010010D5推送eax

。正文:010010D6电话sub_1001142

。text:010010DB mov eax,offset dword _ 1003018

。正文:010010E0推送偏移unk _ 1003000;lpCriticalSection

。正文:010010e 5 mov dword _ 100301C,eax

。正文:010010EA mov dword _ 1003018,eax

。text:010010EF调用ds:InitializeCriticalSection

。正文:010010F5致电ds:GetCommandLineW

。正文:010010FB推送eaxlpString

。正文:010010FC调用00FC命令行

。正文:01001101 mov ESI,eax

。文本:01001103测试esi,esi

。正文:01001105 JZ short lab _ do service

。正文:01001107推送esi

。正文:01001108电话服务

。正文:0100110D电话准备

。正文:01001112 mov EDI,eax返回了SERVICE_TABLE_ENTRY

。正文:01001114测试edi,edi

。正文:01001116 JZ short loc _ 1001128

。正文:01001118 mov eax,[esi+10h]

。正文:0100111B测试eax,eax

。正文:0100111D JZ short loc _ 1001128

。正文:0100111F推送dword ptr[ESI+14h];dwCapabilities

。正文:01001122推送eax(同Internationalorganizations)国际组织

。正文:01001123呼叫初始化安全性

。正文:01001128

。正文:01001128 loc _ 1001128:;代码XREF: start+5Ej

。正文:01001128;开始+65j

。正文:01001128推送esilpMem

。正文:01001129呼叫HeapFreeMem

。正文:0100112E

。正文:0100112E lab _ do service:;代码XREF: start+4Dj

。正文:0100112E测试edi,edi

。文本:01001130 JZ exit program

。正文:01001136推送edilpServiceStartTable

。正文:01001137致电ds:startservicectrldispaccherw

。文本:0100113D jmp exit program

。正文:0100113D start endp

;===========================主要功能结束= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

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

;= = = = = = = = = = = = = = = = = = = = = = = = = = = FuncServiceMain()= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

。text:01001504 FuncServiceMain proc near;数据外部参照:prepares vtable+44o

。正文:01001504

。text:01001504 arg _ 0 = dword ptr 8

。text:01001504 arg _ 4 = dword ptr 0Ch

。正文:01001504

。正文:01001504推送ecx

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

。正文:01001509推送ebx

。正文:0100150A推送ebp

。正文:0100150B推送esi

。text:0100150 c mov ebx,offset unk_1003000

。正文:01001511推送edi

。正文:01001512 mov EDI,[eax]

。正文:01001514推送ebx

。正文:01001515 xor ebp,ebp

。正文:01001517致电ds:EnterCriticalSection

。文本:0100151D xor esi,ESI

。text:0100151F CMP dw groupsize,esi

。正文:01001525 jbe short loc _ 1001566

。文本:01001527和[esp+10h],esi

。正文:0100152B

。正文:0100152 b loc _ 100152 b:;代码XREF: FuncServiceMain+4Aj

。正文:0100152B mov eax,svcTable

。正文:01001530 mov ecx,[esp+10h]

。正文:01001534推送dword ptr [eax+ecx]

。正文:01001537推送edi

。正文:01001538电话ds:lstrcmpiW

。正文:0100153E测试eax,eax

。正文:01001540 jz短StartThis

。正文:01001542添加dword ptr [esp+10h],0Ch

。正文:01001547公司esi

。文本:01001548 cmp esi,dwGroupSize

。正文:0100154 e JB short loc _ 100152 b

。正文:01001550 jmp short loc _ 1001566

。正文:01001552;=================================================

。正文:01001552

。text:01001552 start this:;代码XREF: FuncServiceMain+3Cj

。文本:01001552 mov ecx,svcTable

。正文:01001558 lea eax,[esi+esi*2]

。正文:0100155B lea eax,[ecx+eax*4]

。正文:0100155E推送eax

。正文:0100155F调用GetDLLServiceMain

。正文:01001564 mov ebp,eaxdll ServiceMain函数地址

。正文:01001566

。正文:01001566 loc _ 1001566:;代码XREF: FuncServiceMain+21j

。正文:01001566;FuncServiceMain+4Cj

。正文:01001566推送ebx

。正文:01001567致电ds:LeaveCriticalSection

。正文:0100156D测试ebp,ebp

。正文:0100156 f JZ short loc _ 100157 b

。正文:01001571推送[esp+10h+arg_4]

。正文:01001575推送[esp+14h+arg_0]

。正文:01001579致电ebp

。正文:0100157B

。正文:0100157 b loc _ 100157 b:;代码XREF: FuncServiceMain+6Bj

。正文:0100157B pop edi

。正文:0100157C pop esi

。正文:0100157D pop ebp

。正文:0100157E pop ebx

。正文:0100157F pop ecx

。文本:01001580返回8

。text:01001580 FuncServiceMain endp;sp = -8

;= = = = = = = = = = = = = = = = = = = = = = = = = = = FuncServiceMain()end = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

由于svchost已经调用了startservicectrlddispatcher来服务dispatcher函数,所以我们在实现DLL时并不需要它,主要是因为一个进程只能调用StartServiceCtrlDispatcher API一次。但是,您需要使用RegisterServiceCtrlHandler来注册响应控制请求的函数。最后,我们的DLL接收所有的unicode字符串。

由于这个服务是在启动后由svchost加载的,所以它只是一个svchost的DLL,没有添加新的进程,而且一般不会去HKEY _ Local _ machine software Microsoft Windows ntCurrentVersionSVCHOST检查服务组是否发生了变化,即使检查了也不一定能发现异常。所以像这样加个DLL后门,就是变相隐藏了。

4.安装服务和设置

要通过调用svchost启动服务,需要在HKEY _本地_机器软件微软windows ntcurrentversionsvchost下有服务名,可以通过以下方式实现:

1)添加新的服务组,并在组中添加服务名。

2)在现有组中添加服务名称。

3)直接使用现有服务组中的服务名,但该机器上没有安装服务。

4)修改现有服务组中的现有服务,将其ServiceDll指向自己。

前两个可以被正常的服务使用,比如使用1方法启动它的服务来创建一个新的svchost进程;第二种方式,如果该组服务已经在运行,安装后不能立即启动该服务,因为svchost启动后组信息已经保存在内存中,调用API StartServiceCtrlDispatcher()为组内所有服务注册调度处理程序,新添加的服务无法再注册调度处理程序,需要重新启动计算机或该组的svchost进程。后两种可能会被后门利用,尤其是最后一种,没有添加服务,只是改变了注册表中的一个设置,从服务管理控制台看不到。如果用作后门,还是很隐蔽的。比如EventSystem服务默认引用es.dll,如果ServiceDll改成EventSystem就很难找到了。

因此,除了调用CreateService()创建服务之外,还需要设置服务的ServiceDll进行服务安装。如果使用前两种方法,需要设置svchost的注册表选项,卸载时最好删除添加的部分。

注意:ImagePath和ServiceDll是ExpandString,不是普通的字符串。因此,如果您使用。reg文件来安装,你要注意。

5.DLL服务实现

DLL编程比较简单,只要实现一个ServiceMain()函数和一个服务控制程序,在ServiceMain()函数中用RegisterServiceCtrlHandler()注册服务控制程序,设置服务的运行状态。

另外,由于该服务的安装除了需要正常的CreateService()之外,还需要其他设置,所以最好实现安装和卸载功能。

为了方便安装,实现的代码提供了InstallService()函数进行安装,该函数可以接收服务名作为参数(如果没有提供参数,则使用默认的iprip),如果要安装的服务没有安装在svchost的netsvcs组中,将会失败;如果要安装的服务已经存在,安装也将失败;安装成功后,程序会将服务的ServiceDll配置为当前Dll。提供的UninstallService()函数可以删除任何函数而不进行任何检查。

为了方便用rundll32.exe安装,还提供了RundllInstallA()和rundlluinstalla(),分别调用InstallService()和UninstallService()。因为rundll32.exe使用的函数原型是:

void回调函数名称(

窗口所有者句柄

HINSTANCE hinst,DLL的实例句柄

LPTSTR lpCmdLine,DLL将分析的字符串

int nCmdShow //显示状态

);

对应的命令行是rundll32dllname,函数名[arguments]。

DLL服务本身只是创建一个进程。这个程序的命令行是启动服务时提供的第一个参数。如果未指定,将使用默认的svchostdll.exe。如果在启动服务时提供了第二个参数,那么创建的进程将与桌面交互。大家应该知道,Svchost.exe是系统不可或缺的一个过程,很多服务或多或少都会用到它。

但我想我们都知道,因为它的特殊性,高明的“黑客”肯定不会放过。前段时间Svchost.exe的特洛伊马风波大家应该记忆犹新,现在还有很多机器都拥有这种特洛伊马,因为它的伪装和系统进程Svchost.exe的一样,所以很多人分不清哪个是进程,哪个是特洛伊马。....

好了,让我们来详细了解一下Svchost.exe过程。

1.多个服务共享一个Svchost.exe进程的优点和缺点。

Windows系统服务分为独立进程和共享进程。在windows NT中,只有服务器管理器SCM(Services.exe)有多个共享服务。