当前位置:首页 > 技术与方案 > Windows应用

Windows 2000服务器的空会话与系统安全

(2012-09-09 21:35:27)

随着我国宽带互联技术的迅速发展和宽带网络的逐渐普及,网络安全问题已不再只是网络管理员所重视的问题,它越来越被普通用户所关注了。作为普通用户,当你在使用网络时,是不是碰到过机器突然蓝屏死机,或机器无缘无故重启呢?当这种情况发生时,除了那可恶的病毒之外,你是否想到过这是黑客行为呢?发生这种情况后我们又该如何应对呢?

黑客入侵手段很多,随着Windows NT/2000系统漏洞的逐渐被发现,以及网上各种攻击软件的轻易传播,一个普通用户也会下载黑客软件过回黑客瘾。要想维护好自己的系统,首先要做到知己知彼,知道了黑客的入侵手法,再去作防范也就是轻而易举的事了。下面我们来讨论一个系统安全问题——空会话。

1.空会话及其存在的安全隐患
什么是空会话呢?空会话是一台主机与另一台主机之间在不需要身份验证的条件下建立的连接。建立的会话是一种无信任支持的会话,双方不存在用户验证信息,像是一个匿名登录的连接。不通过认证的主机连接,不可能在主机双方建立信任的安全通道,这就是Windows NT/2000使用IPC$空会话存在安全问题的原因。

Windows 2000的空会话,是在成功安装Windows 2000系统后存在的一个系统默认会话。空会话不能算是系统的漏洞,主要是由于使用系统默认设置引起的,但也一直被认为是Windows 2000自带的一个后门。当建立一个空会话后,对于一台使用系统默认设置的Windows 2000服务器来说,黑客完全可以通过远程扫描工具导出服务器的用户账号,同时那些弱口令的账号很难逃脱黑客字典的猜解。
那么Microsoft为何还保留这个空会话呢?当然也有Microsoft的理由,在此我们还是先了解一下“文件共享”的过程。

2.文件共享
要想实现“文件共享”可以右击桌面上的“网上邻居”,然后在右键快捷菜单中选择“属性”选项,接着选择“本地连接”→“属性”→“Internet协议(TCP/IP)”→“属性”→“高级”,然后在“WINS”标签页中,选择“启用TCP/IP上的NetBIOS(N)”或者“禁用TCP/IP上的NetBIOS(S)”单选项,用于启用或禁用NetBIOS协议。当Windows 2000使用文件共享时,就要启用TCP/IP上的NetBIOS协议,通过使用139或445端口来实现远程主机文件共享的过程。

网络上实现远程共享会话所使用的端口包括如下几种情况:
◆ 当客户端“启用了TCP/IP上的NetBIOS协议”时,则在共享连接的时候将同时访问139和445端口,如果从445端口得到回应,那么客户端将发送RST到139端口,将终止这个端口的连接;接着就从445端口进行Server Message Block(SMB)的会话;要是没有从445端口而是从139端口得到回应,则共享连接就从139端口进行会话;如果没有得到任何回应,SMB会话就会失败。
◆ 当客户端“禁用了TCP/IP上的NetBIOS协议”时,则共享连接将从445端口进行。当然,当服务器没有从445端口进行SMB会话时,则共享连接就会失败。所以,当禁用了445端口后,对访问Windows 2000机器的共享就会失败。
◆ 当服务器端“启用TCP/IP上的NetBIOS协议”时,则系统就会同时监听UDP 137、138端口和TCP 139、445端口。当“禁用TCP/IP上的NetBIOS协议”时,则只监听445端口。由此可见Windows 2000的共享不仅是通过139端口,通过445端口同样也能够实现。

3.空会话存在的原因
我们再来看看IPC(Inter-Process Communication——过程间通信)共享, IPC$共享不是一个目录、磁盘或打印机意义上的共享,它是在系统启动时的默认标准隐含共享。我们可以通过下面的过程来了解主机的IPC$默认共享,首先关掉IPC$共享,然后关机并再次重新启动系统,这时再去查看共享,我们会发现该默认共享依然存在。那系统为何要设置此默认共享呢?当然也有它的道理,IPC$共享提供了登录到系统的能力,用于服务器之间的通信,Windows NT/2000系统通过使用这个共享和其他主机建立连接而得到各种必要的信息。

关于空会话所使用的端口也同样是通过使用139或445端口来实现的。空会话是同服务器建立的无信任支持的会话,不通过身份认证。然而,没有认证就不可能为系统建立安全通道,而建立安全通道也是通过双方实现的。
要在不同主机之间建立安全连接,必须满足下列条件:
◆ 建立身份认证标志。
◆ 建立一个临时会话密钥,双方才能用这个会话进行加密数据的交换。

不管是经过NTLM还是经过Kerberos的认证,最终是为会话创建一个包含用户信息的令牌。根据Windows 2000的访问控制模型,对于空会话同样需要提供一个令牌。但是空会话由于是没有经过认证的会话,所以令牌中不包含用户信息。建立会话双方没有密钥的交换,因此,这也不能让系统间发送加密信息。这并不表示空会话的令牌中不包含SID(安全标志符, SID的格式是:S-R-X-Y(1)-Y(2)-……-Y(N)。其中S表示该字符串是SID,R是SID的版本号,对于2000来说,这个就是1,然后X是标志符的颁发机构(Identifier Authority)),对于一个空会话,LSA提供令牌的SID是S-1-5-7,这就是空会话建立的SID,用户名是AnonymousLogon。这个用户名是可以在用户列表中看到的,但是不能在SAM(Security Accounts Manager,是系统用于存放用户账号、口令数据的文件,通常不能对此文件进行存取)数据库中找到,属于系统内置的账号。

空会话似乎成了微软自己设置的后门,但是微软为什么要来设置这样一个“后门”呢?如果空会话没有什么重要的用途,微软也绝对不会设置这样一个服务。微软使用空会话的理由是:空会话建立的连接最初目的是允许没有验证的机器从服务器获得浏览列表。当在多域环境中,要在多域中建立信任关系,首先需要找到域中的PDC来通过安全通道的密码验证,使用空会话能够非常容易地找到PDC。另外,还包括一些系统服务的问题,而且LMHOSTS的#Include就需要空会话的支持。有很多人不清楚LMHOSTS的用途,它主要用于把NetBIOS名字映射到IP地址。

4.空会话的利用过程
因为存在网络共享,NetBIOS是攻击的首选对象,NetBIOS会话是用来进行文件和打印共享的,使用的是139端口。在系统没有作任何安全设置的情况下,NetBIOS会话就成了Windows NT/2000潜在的危险。
Nbtstat是Windows 2000下的一个工具,该命令是Windows 2000系统用于询问NetBIOS信息的,也能清除NetBIOS缓冲区中的内容,并将LMHOSTS文件预先装入其中,该命令基于TCP/IP上的NetBIOS(NBT)协议。下面我们先看看Nbtstat的帮助信息,首先了解Nbtstat的命令格式及各参数的用途。

Nbtstat命令格式:
NBTSTAT [ [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [interval] ] 
-a  列出给定主机名的远程计算机的名字表;
-A  列出给定IP地址的远程计算机的名字表;
-c  列出远程名字缓冲(name cache),包括IP地址;
-n  列出本地NetBIOS名字;
-r   列出通过广播(Broadcast)和WINS解析的名字;
-R  清除和重新加载远程缓冲的名字表;
-S  列出和目标IP地址会话的列表;
-s  列出NetBIOS名字转换到IP地址的会话列表;
-RR  释放并刷新WINS客户的本地NetBIOS名称注册信息。

 Nbtstat命令的每一栏输出都有不同的含义,输出时一般包括下列标题:
◆ Input:接收到的字节数。
◆ Output:发送的字节数。
◆ In/Out :这个连接是来自本地计算机还是来自远程系统。
◆ Life :在本地计算机清除名字表之前存在的时间。
◆ Local Name:连接时本地的名字。
◆ Remote Host:远程主机名或IP地址。
◆ Type :有Unique 和Group两种类型。
◆ State :NetBIOS的连接过程将显示下面的状态信息。
◆ Accepting:正在处理一个进入的连接。
◆ Associated:一个连接的端点已经建立,本地计算机与远程主机用一个IP地址相关联。
◆ Connected:本地主机已连接到了远程资源。
◆ Connecting:本地主机与远程连接会话正试图对目标资源进行名字到IP地址的解析。
◆ Disconnected:本地主机向远程主机发出一个断开请求,正在等待远程主机的响应。
◆ Disconnecting:正在结束与远程主机的连接。
◆ Idle :远程主机与当前会话已经打开,但目前不接受连接。
◆ Inbound:一个inbound会话正试图连接。
◆ Listening :远程计算机可以使用了,处于监听状态。
◆ Outbound :远程会话正在建立一个TCP 连接。
◆ Reconnecting:当第一次连接失败时,如果重新连接则显示这一信息。

下面我们开始用Nbtstat导出远程主机的账号信息。首先,假设远程主机为Windows 2000系统,使用的是系统默认设置。
C:>Nbtstat  -A  218.22.X.X 
本地连接:
Node IpAddress: [192.168.0.218] Scope Id: []
NetBIOS Remote Machine Name Table(NetBIOS远程主机名列表)
用Nbtstat命令能导出远程主机的信息。
信息分析:
◆ Unique (U): 表示可能只分配了一个IP地址。在一个网络设备上,多次出现一个名字已经被注册,但后缀是惟一的,相应整个条目就是惟一的。
◆ Group (G): 普通组(group),同一个名字可能存在多个IP地址。
◆ Multihomed (M): 此名(name)是惟一的,但由于在同一计算机上有多个网络接口,在允许注册时这一配置是必须的,地址数最多为25个。
◆ Internet Group (I):组名的一个特殊配置,使用于Windows NT/2000的域名管理。
◆ Domain Name (D): Windows NT 4.0中新增的信息。

用Nbtstat命令导出远程主机的信息,不仅包括用户账号、组、域名和计算机名,还包括远程主机运行的服务和会话信息,各类型的数据可参考Usage(用法)栏的说明。
对于建立了空会话的主机,当导出服务器主机账号信息后,入侵者一般会使用下面的命令对IPC$实施攻击:
C:>net use  [目标主机的IP地址]IPC$  “password”/user:“username”
当此连接建立后,要将Username和Password送去加以确认,如果是以Administrator权限登录,则需要进行口令猜测,往往黑客会配合黑客字典进行账号口令的猜解,对于那些弱口令的账号来说,是经不起黑客字典枚举口令的猜解的。
账号猜解成功后,黑客就可以实施攻击了。

5.解除空会话的方法
由上面的过程我们可看出IPC$空会话的存在是多么可怕呀!不过怕归怕,防范起来也相当容易。例如,安装防火墙(此文不作介绍),在此我们利用手工修改注册表的方法来实现:
(1)禁止建立空会话
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA
RestrictAnonymous = DWORD:00000001
(2)禁止管理共享
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesLanmanServerParameters
AutoShareServer = DWORD:00000000

6.系统密码的设置
笔者在网上发现,很多网管由于本身懒惰的原因,将Windows 2000的Administrator用户设置一个空密码,再不就设一个自认为好记的简单密码。例如,他们会选择123456、654321、123963、!@#$%、666666等密码;还有的就在账号后面加个123、111、1234和666等后缀作为密码,更让人不可思议的是账号与密码相同。这些密码好记是好记,但对于黑客来说攻破这样的密码是不费吹灰之力的呀。
在此我再次强调密码的强健性,作为一个强健的密码,应该是数字、字母和字符的组合,所用密码应该无任何规律性,密码长度应该大于8位。

作者:徐建军

 

更多
关闭窗口 打印 
网站首页    -    联系我们    -   收藏本站    -    网站地图                                                               客户服务热线:0571-85023000
本网站所有网页信息已申请知识产权和著作权保护,版权归四海光纤公司所有,未经授权禁止任何人复制或镜像,违者必究。
公司主营:杭州光纤光缆视频会议系统,是专业的通信网络工程、视频会议系统建设专家

中华人民共和国备案号:浙ICP备10018243号