彻彻底底认识winxp服务
讲课时间:2008-5-12晚8点
地点:UC聊天室"电脑沙龙"房间
==================================网蝉分割线=====================================
Windows XP有很多服务。
在不同的windows版本里面。 服务的默认开启和关闭的状态也是不一样的。
在winxp home版和winxp Professional(专业版)里的很多服务的开启/关闭状态就是不同的。
包括目前我们所能看到的各种优化版的windows里面的服务,就更加杂乱无章了。
所以认清每一个服务都是做什么的,是十分关键的事情。
对每一个服务认清之后,我们就可以随心所欲的优化自己的系统。
再学点启动项目的优化。可很快脱离菜鸟的生涯。
什么是winxp服务?
服务就是为系统中一些软件提供支持的程序。
提供服务的文件一般是以DLL文件扩展名的方式存在的。然后通过svchost.exe这个程序来承载这些dll .
(这里所说的dll实质是指PE程序,服务程序的扩展名是任意的,如果你高兴,也可以把dll文件改成txt文件都可以。
所以很多服务型木马,甚至把自己的服务的文件改为txt扩展名。)
所以我们要像彻底了解winxp的服务。就必须要记住svchost进程。
在任务管理器中,你会看到有几个svchost的存在,他就是用来加载我们windows里面服务用的。
这里我们不对svchost程序作深入的介绍。 随着后续我们对服务的了解,我会给大家慢慢的介绍。
这里只要知道有svchost这样一个程序就可以了。
关于SVCHOST的知识,有兴趣想深入研究的朋友,可以到
http://hi.baidu.com/netcicala/blog/item/0a0222dfe7a8df166327981c.html。
举一个生动一点的例子。
我们想吃蛋糕,那么我们就要去蛋糕店去买。
那么蛋糕店所提供的服务就是提供各种样式的蛋糕供你享用--->所以说蛋糕店就是服务。
我们要吃蛋糕,就要有蛋糕店,否则我们就吃不到蛋糕了(当然也有例外,你可以自己做蛋糕吃).
关于服务的依存关系:
接上个例子,蛋糕店也有他的上游服务提供商,那就是做蛋糕的材料的供应商。如面粉,鸡蛋,白糖。
所以蛋糕店也是需要服务的。 面粉需要农民种麦子->研磨->得到面粉。 鸡蛋需要向养鸡的都买。
从这里就能够看出这些服务提供商之间也是有依附关系的。关系如下:
面粉供应商--
|
白糖供应商----->蛋糕供应商--->个人购买蛋糕。
|
鸡蛋供应商--
从这三个环节中,我们可以看出服务是存在依存关系的。
既个人购买蛋糕需要蛋糕供应商的支持,蛋糕供应商需要面粉/白糖/鸡蛋供应商的支持。
所以在windows服务中存在这种依赖关系。
喜欢抬杠的朋友可能很容易的发现我的例子过于简单。嘿嘿,做蛋糕其实没有这么简单。 还要有很多的设备才能做。
如烤箱/和面机等等。 其实都是蛋糕商的上游材料商。
面粉的供应商上面还有磨面房,还有收谷场,还有农民种地,还有菜子供应商等等等。
人类社会的服务环节是复杂的。
而在我们的winxp中的服务关系要简单得多, 所以不需要害怕他复杂。
入我们想要在cmd下运行
net send 127.0.0.1 你好 这条命令。 那么你就必须开启messenger服务,否则就无法使用net send命令。
下面就让我们来从windows表像来认识一下windows服务吧。
修改服务的开启/关闭的状态的方法。
在控制面板或者services.msc里面直接在图形界面进行服务的启动和关闭。
1,控制面板里面的方法为:我的电脑--〉控制面板--〉管理工具--〉服务。
2,直接开始--〉运行--〉输入services.msc
这两种方法都可以呼出服务的控制列表出来。
关于windows的服务的开启和停止,也可以在cmd命令行下完成。涉及的命令为net 和sc 两个。
随着大家对服务的认识的加深。我会介绍这2个工具对服务控制的使用方法。
* 调整方法:运行services.msc命令。
A字头服务
==================================服务分割线=====================================
* 显示名称:Alerter
* 进程名称:svchost.exe -k LocalService
* 微软描述:通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会受到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。
* 补充说明:Alerter(警示器)。
服务的进程名是Svchost.exe(即启动这个服务后在后台运行的进程的名称,可以通过任务管理器看到)。Alerter 服务的功能是,WinXP将系统上发生的与管理有关的事件以警示(Alert)信息传送至网络上指定的电脑或用户,例如当发生打印错误或硬盘即将写满等事件,这类警示信息由XP的警示器服务(Alerter Service)收集、送出。
尽管Alerter依存的服务并没有 Messenger(信使)服务,但Alerter服务必须依赖后者才能送出信息,故在启动Alerter服务后还必须确定Messenger服务也是在工作中,而接收的电脑也必须启动Messenger服务。由于Alerter服务运行后,服务使用户可以发送弹出(Pop-up)信息给其他用户,这些信息有可能被攻击者用来实施攻击,如诱骗用户修改口令等,从而造成安全隐患。同时该服务使得用户帐号名泄漏,也有可能被攻击者利用来进行口令猜测攻击。所以对于家庭单机用户,甚至对于绝大多数小型的局域网来说,这个功能是完全可禁用的,不仅节省了系统资源和加快启动速度,也提高了机器的安全性。
在Windows XP SP2中, 对于这两个服务的唯一也是重要的修正是: 这两个服务默认的启动类型均改为了禁止. 而在SP2之前的版本中,Alerter 服务启动类型为手动, Messenger服务启动类型为自动.
Microsoft 这次修改这两个服务的默认启动状态的原因是这些服务在一定程度上允许了外来的网络连接,侵入和攻击. 另外, 一个次要的原因, 这两个服务目前已经很少使用. 禁用这两个服务, 将一定程度上提高了系统的安全级别. 因此, 对于那些经常使用这些服务和用户通讯的网络管理员, 还有在程序开发中使用这些服务进行网络通讯和广播的开发人员应该注意到这个重要的更正. 使用其他的更安全的通讯方式是我们推荐的方法. (当然, 你可以强制在管理工具中打开这两个服务, 虽然这不明智) 也许, Microsoft将要抛弃这两个服务了.. 确实, 它们带来的麻烦远远多于好处.
* 依赖本项的服务:Workstation
* 默认:禁用
* 设置建议:禁用
根据上述的描述, 一般情况下,这个服务我们不需要启动,选择禁用即可。
我们就拿这个例子开刀。 首先来认识一下控制面板里的服务管理器的操作。
首先打开我的电脑->控制面板->管理工具->服务->选中Alerter服务。
这时,你会看到下图。
图中左边红色区域为服务的描述。
上面红色区域,我们可以点这个按钮,可以按服务名称对服务进行排序。
因为微软的描述很简单,并且所用术语很多,所以很难对其服务的内容进行了解。
但我们可以参考上面补充内容部分,对这个服务更清楚地知道,他是用来接受系统发出的警告消息的。
接下来我们双击Alerter服务。 会弹出属性窗口。 样式如下图:
我们可以通过"启动类型"来设置服务的启动状态。
服务的状态有三种,既自动,手动,已禁用。
分别代表的含义如下:
自动:每次开机后此服务都会运行。
手动:每次开机计算机的时候,此服务不被运行,但你可以手动的去开启或停止这个服务。
已禁用:开机此服务不会被运行,也不能对此服务进行启动/停止/暂停/恢复的操作。
上图就是已禁用状态,大家可以清楚地看到服务状态下面的4个按钮都是灰色不可修改的。
这里有一个"可执行文件的路径" ,就是此服务的程序运行程序。
这里我们可以看到的是如下内容:
C:\WINDOWS\system32\svchost.exe -k LocalService
他代表的就是开启Alerter服务,开机的时候运行的是svchost.exe -k LocalService这个命令。
其中svchost.exe是可执行程序,他是windows的宿主进程也可称为共享进程(windows中的进程分为独享和共享2种进程)。作用就是用来装服务的。我们可以通过tasklist /svc命令来查看当前你的svchost.exe程序都加载着哪些系统服务。在cmd下我的svchost的加载的服务信息如下:
图像名 PID 服务
========================= ====== ==========================================
svchost.exe 1748 DcomLaunch, TermService
svchost.exe 1864 RpcSs
svchost.exe 1096 AudioSrv, BITS, CryptSvc, Dhcp, dmserver,
ERSvc, EventSystem,
FastUserSwitchingCompatibility, helpsvc,
lanmanserver, lanmanworkstation, Netman,
Nla, RasMan, SENS, SharedAccess,
ShellHWDetection, TapiSrv, Themes, TrkWks,
winmgmt, wscsvc, wuauserv, WZCSVC
svchost.exe 856 Dnscache
svchost.exe 1360 SSDPSRV, WebClient
这里因为我们的Alerter服务是关闭的,所以没有在里面。如果我们把Alerter服务打开,那么他会出现在哪里呢?看完下面的,你就会清楚。
-K LocalService 是制定此svchost运行Alerter服务的时候,所采用的服务组名。
windows里面的服务组,我们可以到注册表下面地址查询:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost
右面窗口中就是windows里面的服务组名和对应的服务。
一般winxp里面会有6个组分别为imgsvc、NetworkService、rpcss、termsvcs和LocalService,netsvcs。
这里,我们的Alerter服务启动的就是LocalService组。而LocalService组里面所支持的成员为如下:
Alerter
WebClient
LmHosts
RemoteRegistry
upnphost
SSDPSRV
在看看刚刚tasklist /svc 命令的结果。我们就可以推断出Alerter服务启动后,他应该存放在PID1360里面。
不信可以验证一下。
在SvcHost下面会有相关键值,代表每个组所能包含的服务的数量和初始化参数等信息。
根据服务所在的组的不同,服务运行后的的svchost所属用户也不同。
关于这6个服务组的介绍,后面有机会还会详细介绍。
windows中的每一个服务,最后都会对应一个实质的执行程序。
那么我们怎么来查找Alerter服务所对应的程序呢?
我们可以通过查找注册表的方式来进行查找,注册表位置如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Alerter\Parameters
中的ServiceDll里面的内容就是我们Alerter服务所对应的DLL文件,
我这里对应的是%SystemRoot%\system32\alrsvc.dll。
到这里你是不是觉得枯燥乏味?
基础知识是技术坚实的后盾,明白了基础,再看具体实现就显得很简单了。
下面回头来对Alerter这个服务所起的具体作用来进行试验,猜测他的实际作用。
首先我们开启这个服务。 开启步骤如下:
1,把启动类型改为手动。
2,点一下启动按钮。
这样Alerter服务就被启动了。如果还不清楚,可以参考微软的KB。
http://support.microsoft.com/kb/843021/zh-cn这个KB里有详细的开去/关闭ALERTER服务的步骤。
从网络上的参考文献可以看出,Alerter服务的启动,从表面看不出什么特征,它需要跟Messenger(信使)服务进行配合,才能发挥作用。
所以我们这里同时找到Messenger服务,把它设置为手动, 然后启动此服务。
Alerter服务的应用环境,在我们一般的网络中无用。他的模型如下:
|-----------------------------------------------------------------------------------------------|
| 主机出现问题后通过Alerter来发信息通知win2003Server. |
| winxp主机---------------------------| |
| |------------------> win2003server |
| |
|-----------------------------------------------------------------------------------------------|
当启动alerter服务的xp 主机遇到系统级的错误的时候,就会自动地通知win2003server主机。他发生了哪些错误。
因为这个服务的使用价值在于局域网内网管对工作站的系统状态的监控。所以像我们个人用户一般都是禁止此项服务。
第一节对windows系统服务的认识,我们就讲这些。
下节课我们会对更多的windows系统服务进行介绍,并且逐步的介绍驱动管理器的使用方法。
欢迎大家收听。