姜敏·特洛伊马扫光,提示程序“svchost.exe”试图执行“线程注入”的操作。
来源:网易[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(Remote Procedure Call,远程过程调用)服务进程,一个是很多服务都享有的svchost.exe。在windows XP中,一般有四个以上的svchost.exe服务进程,在windows 2003 server中更多。可以看出,ms以* * *进程共享的方式启动更多的svchost内置服务是一种趋势。这在一定程度上减少了系统资源的消耗,但也带来了一些不稳定的因素,因为任何一个享受进程的服务都会导致整个进程中的所有服务因为出错而退出。此外,还有一些安全隐患。首先,我们应该介绍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 _本地_机器软件微软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()注册这些服务的调度函数。