当前位置: 首页 > 图文教程 > 操作系统 > Windows > Svchost进程揭秘

Windows
win2000/2003删除默认共享的方法
Windows操作系统禁用危险端口保护系统安全
IIS6.0不能上传大于200K文件解决办法
Windows 2003安装后的相关设置
提高Windows 2003运行速度方法
windows 系统下关闭危险的445端口
Win Server 2003 使用技巧图解
服务器远程超出最大连接数常用解决办法
windows2003 Server搭建域环境图解
Win2003自动登录的方法
Win2003常见故障解决方法
加快Win2003操作系统运行速度
MSSQL2000 安装出现挂起的解决办法
windows2003 IIS6.0 asp配置技巧
windows 系统任务管理器打不开的解决办法
win2003系统重装NTFS分区无法访问解决办法
ARP欺骗攻击原理深入说明分析
强大的Windows磁盘清理功能
WIN2003服务器常用安全策略
快速释放Windows系统资源的方法

Windows 中的 Svchost进程揭秘


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 56 ::
收藏到网摘: n/a

 

  在基于NT内核的Windows操作系统家族中,Svchost.exe是一个非常重要的进程。很多病毒、木马驻留系统与这个进程密切相关,因此深入了解该进程是非常有必要的。本文主要介绍Svchost进程的功能,以及与该进程相关的知识。

  Svchost进程概述

  微软对“Svchost进程”的定义是:Svchost.exe是从动态链接库(DLL)中运行的服务的通用主机进程名称。Svchost.exe文件位于“%SystemRoot%\System32”文件夹中。当系统启动时,Svchost将检查注册表中的服务部分,以构建需要加载的服务列表。Svchost的多个实例可以同时运行。每个Svchost会话可以包含一组服务,以便根据Svchost的启动方式和位置的不同运行不同的服务,这样可以更好地进行控制且更加便于调试。

  Svchost组是由注册表[HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT\CurrentVersion\Svchost]项来识别的。在这个注册表项下的每个值都代表单独的Svchost组,并在我们查看活动进程时作为单独的实例显示。这里的键值均为REG_MULTI_SZ类型的值,并且包含该Svchost组里运行的服务名称(如图1)。

 


  图1 注册表中的Svchost


  实际上,Svchost只是作为服务的宿主,本身并不实现什么功能。如果需要使用Svchost来启动某个DLL形式实现的服务,该DLL的载体Loader指向Svchost,在启动服务的时候由Svchost调用该服务的DLL来实现启动的目的。使用Svchost启动某个服务的DLL文件是由注册表中的参数来决定的,在需要启动服务的注册表项下都有一个“Parameters”子项,其中的“ServiceDll”键值表明该服务由哪个DLL文件负责,并且这个DLL文件必须导出一个ServiceMain()函数,为处理服务任务提供支持。

  提示:不同版本的Windows系统,存在不同数量的Svchost进程。一般来说,Windows 2000有两个Svchost进程,而Windows XP则有四个或四个以上的Svchost进程。

  Svchost进程实例讲解

  要想查看在Svchost中运行服务的列表,可以在Windows XP命令提示符窗口中输入“Tasklist /svc”命令后,回车执行(如果使用的是Windows 2000,可用Support Tools提供的Tlist工具查看,命令为“Tlist -s”)。Tasklist命令显示活动进程的列表,/svc命令开关指定显示每个进程中活动服务的列表。从图中可以看到,Svchost进程启动很多系统服务,如:RpcSs(Remote Procedure Call)、Dhcp(DHCP Client)、Netman(Network Connections)服务等等(如图2)。

 


  图2 Svchost的服务列表


  这里我们以RpcSs服务为例,来具体了解一下Svchost进程与服务的关系。运行Regedit,打开注册表编辑器,依次展开[HKEY_LOCAL_MACHINE\SYSTEM\

  CurrentControlSet\Services\RpcSs ]分支,在“Parameters”子项中有个名为“ServiceDll”的键,其值为“%SystemRoot%\system32\rpcss.dll”。这表示系统启动RpcSs服务时,调用“%SystemRoot%\system32”目录下的Rpcss.dll动态链接库文件。



  接下来,从控制面板中依次双击“管理工具→服务”,打开服务控制台。在右侧窗格中双击“Remote Procedure Call(RPC)”服务项,打开其属性对话框,可以看到RpcSs服务的可执行文件的路径为“C:\Windows\system32\svchost -k rpcss”,这说明RpcSs服务是依靠Svchost启动的,“-k rpcss”表示此服务包含在Svchost的Rpcss服务组中。

 


  图3 Svchost进程中的模块信息



  Svchost进程木马浅析

  从前面的介绍我们已经知道,在注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current- Version\Svchost]分支中,存放着Svchost启动的组和组内的各项服务,很多木马和病毒正是利用这一点来实现自动加载的。它们通常的方法有:

  · 添加一个新的组,在组里添加服务名;

  · 在现有的组里添加服务名或者利用现有组一个未安装的服务;

  · 修改现有组里的服务,将它的ServiceDll指向自己的DLL文件。

  例如PortLess BackDoor就是一款典型的利用Svchost进程加载的后门工具。那么对于像PortLess BackDoor这样的木马、病毒,该如何检测并清除呢?以Windows XP为例,首先我们可以利用“进程间谍”这样的进程工具查看Svchost进程中的模块信息(如图3),并与之前的模块信息比较,可以发现Svchost进程中有一个可疑的DLL文件“SvchostDLL.dll”。同时,在“管理工具→服务”列表中会看到一项新的服务“Intranet Services”(显示名称),此服务名称为:Iprip,由Svchost启动,“-k netsvcs”表示此服务包含在Netsvcs服务组中。

  提示: