网络通信安全管理员教程2010年1月吴辰文等编著第十一章WindowsServer2003的深层安全防护本章学习要求:了解进程的概念;了解注册表的概念;了解注册表的结构;掌握服务的优化方法;掌握黑客经常攻击的端口以及防范方法;掌握关闭端口的方法;熟悉端口查看命令及工具;掌握系统必要进程和非必要进程;熟悉进程查看命令及工具;熟悉注册表备份、还原及修改的方法;熟悉基于进程和注册表的木马查杀方法。第十一章WindowsServer2003的深层安全防护11.1WindowsServer2003服务解析11.2WindowsServer2003端口解析11.3WindowsServer2003进程解析11.4WindowsServer2003注册表解析11.5基于注册表和进程的木马查杀技术11.1WindowsServer2003服务解析11.1.1服务的概念WindowsServer2003中有很多服务,主要由服务应用程序、服务控制程序和服务控制管理器。服务控制管理器用来维护注册表中的数据。服务控制程序则是控制服务应用程序的模块,是控制服务程序同服务管理器之间的纽带。服务应用程序是服务程序的主体程序,是一个或多个的可执行代码。11.1.2服务的优化WindowsServer2003服务的优化主要有两个方面,改变服务的启动顺序和禁用不必要的服务。11.1.2.1改变服务的启动顺序WindowsServer2003服务的启动顺序可以通过注册表来实现下面介绍两个与启动服务顺序相关的键值:(1)Group值:一个REG_SZ类型的值,用来描述服务属于哪一个服务组。(2)Tag值:一个REG_DWORD类型的值。用来描述服务的标识。打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServicesGroupOrder键的List值,这里保存了表示服务组启动顺序的信息,每一个服务组都是一个字符串,要想改变他们的启动顺序,只要改变他们位置就可以了。如图11-1所示。。图11-1改变服务组界面打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOr-derList键下有各服务组中各服务的启动顺序的信息,每个服务组的信息都被保存为一个REG_BINARY类型的值,如FSFilterSystem服务组,要想改变它们的加载顺序,只需编辑这个二进制字符串即可,如图11-2所示。图11-2改变组内加载顺序11.1.2.2禁用不必要的服务在介绍系统不必要的服务之前,首先介绍如何查看服务的依存服务(至于服务的禁用、启动和重新启动,在第10章已作介绍,这里不再重复),具体操作是:首先打开“服务”窗口,选中想要修改的服务,右键单击,选择“属性”命令,在弹出的界面上选择“依存关系”选项卡,这里以COM+EventSystem为例,如图11-3所示。图11-3依存关系界面下面来介绍几个可以关闭的服务。检查不用的硬件。关闭Windows“主题。关闭警报服务。关闭防火墙。禁用远程注册。禁用Windows帮助。11.2WindowsServer2003端口解析11.2.1端口的概念Windows中的端口是指TCP/IP协议中的端口,范围是从0到65535。端口可以认为是一个队列,操作系统为各个进程分配了不同的队列,数据包按照目的端口被列入相应的队列中,等待被进程调用,在特殊的情况下,这个队列有可能溢出,不过操作系统允许每个进程指定和调整自己队列的大小。不是只有接收数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识出源端口,以便接收方能顺利的回传数据包到这个端口。11.2.2端口的分类端口分类有两种分法:(1)按端口号可分为3大类:公认端口(熟知端口):0~1023,它们专门为一些应用程序提供服务。注册端口:1024~49151,它们随机的为应用程序提供服务,许多服务绑定于这些端口,这些端口同样可以用于其它目的。动态和/或私有端口:从49152到65535,实际上,机器通常从1024起分配动态端口。(2)按对应的协议类型端口有两种:TCP端口和UDP端口。由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP有110端口,UDP也可以有110端口,两者并不冲突。11.2.3常被黑客利用的端口以下是计算机端口的介绍的以及防止被黑客攻击的简要办法。(1)端口:8080服务:代理服务说明:8080端口同80端口,可以被各种病毒程序所利用,为了避免病毒的攻击,我们可以关闭该端口。(2)端口:21服务:FTP说明:FTP服务器所开放的端口,用于上传和下载。(3)端口:22服务:SSH说明:PcAnywhere建立的TCP和这一端口的连接是为了寻找SSH。这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在。(4)端口:23服务:Telnet说明:远程登录,入侵者可以搜索远程登录UNIX的服务。(5)端口:25服务:SMTP说明:SMTP服务器所开放的端口,用于发送邮件。(6)端口:80服务:HTTP说明:用于网页浏览。木马Executor开放此端口。(7)端口:102服务:Messagetransferagent(MTA)-X.400overTCP/IP说明:消息传输代理。(8)端口:110服务:PostOfficeProtocol-Version3说明:POP3服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。(9)端口:111服务:SUN公司的RPC服务中所包含的各种服务的端口说明:常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等(10)端口:119服务:NetworkNewsTransferProtocol说明:NEWS新闻组传输协议,承载USENET通信。(11)端口:135服务:LocationService说明:Microsoft在这个端口运行DCERPCend-pointmapper为它的DCOM服务。(12)端口:137、138、139服务:NETBIOSNameService说明:其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。(13)端口:161服务:SNMP说明:SNMP允许远程管理设备。所有配置和运行的信息都储存在数据库中,通过SNMP可获得这些信息(14)端口:177服务:XDisplayManagerControlProtocol说明:许多入侵者通过它访问X-windows操作台,它同时需要打开6000端口。(15)端口:389服务:LDAP、ILS说明:轻型目录访问协议和NetMeetingInternetLocatorServer共用这一端口。11.2.4端口的安全管理一般来说,查看端口的方法有两种:一种是利用系统内置的命令,一种是利用端口相关工具。下面简单介绍几个命令、方法或工具。(1)端口重定向一种常见的技术是把一个端口重定向到另一个端口。实现重定向是为了隐藏公认的默认端口,降低受破坏率。(2)netstat-an使用该命令是查看自己所开放端口的最方便方法,可以在cmd中输入这个命令。(3)VisualSniffer这个可以拦截网络数据包,查看正在开放的各个端口。该工具界面如图11-4所示。(4)FPORTFPort可以把本机开放的TCP/UDP端口同应用程序关联起来,和使用“netstat-an”命令产生的效果类似,但是该软件还可以把端口和运行着的进程关联起来,并可以显示进程PID、名称和路径。图11-4VisualSniffer界面(5)ACTIVEPORT.EXE这个工具是一个用来查看本地主机开放端口的工具,除了具有上面两个程序的全部功能外,还有两个更大的优点:图形界面和关闭端口。(6)SUPERSCAN3.0这个工具是一个端口扫描类软件,扫描速度快而且可以指定扫描的端口。11.3WindowsServer2003进程解析11.3.1进程的概念进程是程序在计算机上的一次执行活动。显然,程序是静态的,进程是动态的。进程可以分为系统进程和用户进程。进程是应用程序的运行实例,是应用程序的一次动态执行。可以简单地理解为操作系统当前运行的执行程序。系统当前运行的执行程序里包括:系统管理计算机程序、各种操作所必需的程序、用户开启和执行的额外程序。危害较大的可执行病毒是以“进程”形式出现在系统内部,那么及时查看并准确杀掉非法进程对于手工杀毒有起着关键性的作用。11.3.2基本进程解析打开“任务管理器”,选择“进程”选项卡,就可以看到本机当前运行的进程,如图11-5所示。下面来介绍一下系统必要进程:(1)Winlogon.exe(2)Explorer.exe(3)Csrss.exe(4)SystemIdle(5)Smss.exe(6)Lsass.exe(7)Services.exe(8)Spoolsv.exe图11-5任务管理器11.3.3Svchost.exe进程的解析Svchost.exe是一个属于微软Windows操作系统的系统程序,用于执行DLL文件。这个程序对系统的正常运行是非常重要的。Svchost.exe是系统必不可少的一个进程,很多服务都会用到它。可以看出把更多的系统内置服务以共享进程方式由Svchost启动是操作系统发展的一个趋势,这样做在一定程度上减少了系统资源的消耗,不过也带来一定的不稳定因素,因为任何一个共享进程的服务因为错误退出进程就会导致整个进程中的所有服务都退出。11.3.3.1Svchost的原理Svchost本身只是作为服务宿主,并不实现任何服务功能,需要Svchost启动的服务以动态链接库形式实现,在安装这些服务时,把服务的可执行程序指向Svchost,启动这些服务时由Svchost调用相应服务的动态链接库来启动服务。Svchost能够知道某一服务是由哪个动态链接库负责的,这不是由服务的可执行程序路径中的参数提供的,而是服务在注册表中的参数设置的,注册表中服务下边有一个Parameters子键,其中的ServiceDll表明该服务由哪个动态链接库负责。这些服务是使用共享进程方式由Svchost启动的。11.3.3.2Svchost启动服务的设置要通过svchost调用启动的服务,就一定要在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Svchost下有该服务名,可以通过如下方式来实现:添加一个新的服务组,在组里添加服务名。在现有组里添加服务名。直接使用现有服务组里的一个服务名,但本机没有安装的服务。修改现有服务组里的现有服务,把它的ServiceDll指向自己。11.3.4进程工具介绍这里介绍下Windows自带的命令和ProcessExplorer工具。(1)Tasklist命令Tasklist命令能检查当前进程的情况。使用命令tasklist/v后执行结果如图11-6所示。(2)ProcessExplorerProcessExplorer是比较好的进程监视工具,且是免费的。它不仅可以监视、暂停、终止进程,还可以查看进程调用的DLL文件,遇到不熟悉的进程还可以直接通过google或MSN搜索。该工具的界面如图11-7所示。图11-6进程使用资源界面图11-7进程查看器界面11.4WindowsServer2003注册表解析11.4.1注册表概述Windows的注册表(Registry)实质上是一个庞大的分层数据库,它记录了用户安装在机器上的软件和每个程序的相互关联关系,包含了软、硬件的有关配置和状态信息