二、进程祥解
svchost.exe:
svchost.exe是nt核心系统的非常重要的进程,对于2000、xp来说,不可或缺。很多病毒、木马也会调用它。windows中存在多个 “svchost”进程,为什么会这样呢?下面就来揭开它神秘的面纱。
在基于nt内核的windows操作系统家族中,不同版本的windows系统,存在不同数量的“svchost”进程,用户使用“任务管理器”可查看其进程数目。一般来说,win2000有两个svchost进程,winxp中则有四个或四个以上的svchost进程,而win2003 server中则更多。这些svchost进程提供很多系统服务,如:rpcss服务(remote procedure call)、dmserver服务(logical disk manager)、dhcp服务(dhcp client)等。如果要了解每个svchost进程到底提供了多少系统服务,可以在win2000的命令提示符窗口中输入“tlist -s”命令来查看,该命令是win2000 support tools提供的。在winxp则使用“tasklist /svc”命令。
windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在于“%systemroot% \system32”目录下,它属于共享进程。随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由 svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。那这些服务是如何实现的呢?
(%systemroot%是系统中的一个变量,表示的是windows系统启动文件夹位置。一般如果你在安装系统的时候没有手动设置安装位置的话,Windos 95,Windows98,Windows Me和Windows Xp的位置是C:\windows,也就是变量%systemroot%=C:\Windows,Windows Nt和Windows2000的位置是C:\Winnt也就是变量%systemroot%=C:\Winnt。如果你的系统是安装在D盘那就是D:\windows或D:\winnt,如果系统安装的别的盘依此类推。)
原来这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向 svchost,由svchost调用相应服务的动态链接库来启动服务。那svchost又怎么知道某个系统服务该调用哪个动态链接库呢?这是通过系统服务在注册表中设置的参数来实现。下面就以rpcss(remote procedure call)服务为例,进行讲解。
从启动参数中可见服务是靠svchost来启动的:
以windows xp为例,点击“开始”/“运行”,输入“services.msc”命令,弹出服务对话框,然后打开“remote procedure call”属性对话框,可以看到rpcss服务的可执行文件的路径为“c:\windows\system32\svchost -k rpcss”,这说明rpcss服务是依靠svchost调用“rpcss”参数来实现的,而参数的内容则是存放在系统注册表中的。
在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到[hkey_local_machine\ system\currentcontrolset\services\rpcss]项,找到类型为“reg_expand_sz”的键“magepath”,其键值为“%systemroot%\system32\svchost -k rpcss”(这就是在服务窗口中看到的服务启动命令),另外在“parameters”子项中有个名为“servicedll”的键,其值为“% systemroot%\system32\rpcss.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优化大师”进程管理器,通过这些工具就可很容易地查看到所有的svchost进程的执行文件路径,一旦发现其执行路径为不平常的位置就应该马上进行检测和处理。
Svchost.exe文件存在于“%system root%\system32”(例如C:\Windows\system32)目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各种服务的。例如Svchost.exe调用rpcss.dll文件,就会启动rpcss服务(remote procedure call)。
由于系统服务都是以动态链接库(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” ,说明helpsvc服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系统注册表中的。 在运行对话框中输入“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”服务注册表信息,就能启动该服务了。
如果你在Windows XP中,想得到所有进程的详细信息,可以打开“命令提示符”,键入 tasklist /svc>abc.txt 命令,于是在当前目录中,将会生成一个abc.txt文件,其内容就是当前正在运行的所有进程情况,例如进程名、PID号、该进程启动了哪些服务
如果有些Svchost进程,你在任务管理器中无法关闭之,可以使用ntsd命令来杀掉它,方法如下:
首先需要了解欲杀的Svchost进程,其PID是多少?在Windows XP下,按Ctrl+Alt+Del打开任务管理器,点击“进程选项卡” “查看” “选择列”,在弹出的窗口中,勾选“PID(进程标识符)”,然后回到任务管理器中,即可看见PID了(例如要杀的Svchost进程,其PID是844)。 接下来关闭该进程。点击“开始” “程序” “附件” “命令提示符”,在命令提示符下,输入命令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命令能够关闭进程。
winlogon.exe:
是windows域登陆管理器。它用于处理你登陆和退出系统过程。该进程在你系统的作用是非常重要的。注意:winlogon.exe也可能是w32.netsky.d@mm蠕虫病毒。该病毒通过email邮件传播,当你打开病毒发送的附件时,即会被感染。该病毒会创建smtp引擎在受害者的计算机上,群发邮件进行传播。该病毒允许攻击者访问你的计算机,窃取密码和个人数据。请注意此进程所在的文件夹,正常的进程应该是在windows的system32下面
csrss.exe:
Client/Server Runtime Server Subsystem,客户端服务子系统,用以控制Windows图形相关子系统。正常情况下系统中只有一个csrss.exe进程,正常路径在System32文件夹中
进程文件 services.exe :
进程名称 Windows Service Controller
进程描述 services.exe是微软Windows操作系统的一部分。用于管理启动和停止服务。该进程也会处理在计算机启动和关机时运行的服务。这个程序对你系统的正常运行是非常重要的。注意:services也可能是W32.Randex.R(储存在%systemroot%\system32\目录)和Sober.P (储存在%systemroot%\Connection Wizard\Status\目录)木马。该木马允许攻击者访问你的计算机,窃取密码和个人数据。
smss.exe:
正常的话,这个进程也应该是小写的。
Session Manager Subsystem,该进程为会话管理子系统,用以初始化系统变量,MS-DOS驱动名称类似LPT1以及COM,调用Win32壳子系统和运行在Windows登陆过程。它是一个会话管理子系统,负责启动用户会话。这个进程是通过系统进程初始化的并且对许多活动的,包括已经正在运行的Winlogon,Win32(Csrss.exe)线程和设定的系统变量作出反映。在它启动这些进程后,它等待Winlogon或者Csrss结束。如果这些过程时正常的,系统就关掉了。如果发生了什么不可预料的事情,smss.exe就会让系统停止响应(挂起)。要注意:如果系统中出现了不只一个smss.exe进程,而且有的smss.exe路径是"%WINDIR%\SMSS.EXE",那就是中了TrojanClicker.Nogard.a病毒,这是一种Windows下的PE病毒,它采用VB6编写 ,是一个自动访问某站点的木马病毒。该病毒会在注册表中多处添加自己的启动项,还会修改系统文件WIN.INI,并在[WINDOWS]项中加入"RUN" = "%WINDIR%\SMSS.EXE"。手工清除时请先结束病毒进程smss.exe,再删除%WINDIR%下的smss.exe文件,然后清除它在注册表和WIN.INI文件中的相关项即可。
进程文件: lsass or lsass.exe :
进程名称: 本地安全权限服务
描 述: 这个本地安全权限服务控制Windows安全机制。管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序等。
介 绍:这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是通过使用授权的包,例如默认的msgina.dll来执行的。如果授权是成功的,lsass就会产生用户的进入令牌,令牌别使用启动初始的shell。其他的由用户初始化的进程会继承这个令牌的。而windows活动目录远程堆栈溢出漏洞,正是利用LDAP 3搜索请求功能对用户提交请求缺少正确缓冲区边界检查,构建超过1000个"AND"的请求,并发送给服务器,导致触发堆栈溢出,使Lsass.exe服务崩溃,系统在30秒内重新启动。
alg.exe - alg - 进程管理信息
进程文件: alg or alg.exe
进程名称: Application Layer Gateway Service
进程类别:其他进程
描述: alg.exe是微软Windows操作系统自带的程序。它用于处理微软Windows网络连接共享和网络连接防火墙。这个程序对你系统的正常运行是非常重要的。
进程文件: spoolsv or spoolsv.exe
进程名称: Microsoft Printer Spooler Service
进程类别:其他进程
描述: spoolsv.exe用于将Windows打印机任务发送给本地打印机。注意spoolsv.exe也有可能是Backdoor.Ciadoor.B木马。该木马允许攻击者访问你的计算机,窃取密码和个人数据。该进程的安全级别是建议立即删除。
凡是Windows系列的操作系统,运行时都会启动一个名为Explorer.exe的进程。这个进程主要负责显示系统桌面上的图标以及任务栏,它在不同的系统中有不同的妙用,我们一起来看一看。
Explorer.exe:
浏览器的驱动程序文件,显示系统桌面上的图标以及任务栏 。