精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 认证工程师>>Microsoft 认证>>精彩文章>>安全专题>>NT安全指南(一)

主题:NT安全指南(一)
发信人: reynolds(闪电雷龙)
整理人: reynolds(2001-02-08 11:25:40), 站内信件
通过NETBIOS实现信息收集与渗透  
============================================================网络入侵者通常采取的第一步是通过端口扫描程序扫描目标机或网络。令人吃惊
的  
是,以目标机的开放端口为基础对网络进行的攻击是多么的有条不紊。您应该清
楚,除了  
Unix机外,这是NT机显示不同开放端口的标准。网络入侵者懂得查看端口扫描程
序,并通  
过相当准确的结果来断定它是一台NT机还是一台Unix机。当然也有一些例外,但
一般情况  
下都能这样做。最近,业界发布了几个用来远程鉴别机器的工具,但该功能目前
还不能用  
于NT。  
当攻击基于NT的网络时,NetBIOS往往是首选的攻击对象。因此,NetBIOS就成为
本文  
中第一个要探讨的重要课题。  
用NetBIOS进行信息收集相当容易,虽然要花费一点时间。NetBIOS一般被看作是
开销  
很大的大容量协议,速度往往很慢,这也就是要耗费时间的原因。  
如果端口扫描程序报告端口139在目标机上是开放的,那么接下来就是一个很自然
的  
过程。第一步是发出NBTSTAT命令。  
NBTSTAT命令可以用来查询涉及到NetBIOS信息的网络机器。另外,它还可以用来
消除  
NetBIOS高速缓存器和预加载LMHOSTS文件。这个命令在进行安全检查时非常有用
。  
用法:nbtstat [-a RemoteName] [-A IP_address] [-c] [-n] [-R] [-r] [-S]
 [-s]  
[interval]  
参数-a列出为其主机名提供的远程计算机名字表。  
-A列出为其IP地址提供的远程计算机名字表。  
-c列出包括了IP地址的远程名字高速缓存器。  
-n列出本地NetBIOS名字。  
-r列出通过广播和WINS解析的名字。  
-R消除和重新加载远程高速缓存器名字表。  
-S列出有目的地IP地址的会话表。  
-s列出会话表对话。  

NBTSTAT生成的列标题具有以下含义:  
Input  
接收到的字节数。  
Output  
发出的字节数。  
In/Out  
无论是从计算机(出站)还是从另一个系统连接到本地计算机(入站)。  
Life  
在计算机消除名字表高速缓存表目前“度过”的时间。  
Local Name  
为连接提供的本地NetBIOS名字。  
Remote Host  
远程主机的名字或IP地址。  
Type  
一个名字可以具备两个类型之一:unique or group  
在16个字符的NetBIOS名中,最后一个字节往往有具体含义,因为同一个名可以在
同  
一台计算机上出现多次。这表明该名字的最后一个字节被转换成了16进制。  
State  
NetBIOS连接将在下列“状态”(任何一个)中显示:  
状态含义:  
Accepting: 进入连接正在进行中。  
Associated: 连接的端点已经建立,计算机已经与IP地址联系起来。  
Connected: 这是一个好的状态!它表明您被连接到远程资源上。  
Connecting: 您的会话试着解析目的地资源的名字-IP地址映射。  
Disconnected: 您的计算机请求断开,并等待远程计算机作出这样的反应。  
Disconnecting: 您的连接正在结束。  
Idle: 远程计算机在当前会话中已经打开,但现在没有接受连接。  
Inbound: 入站会话试着连接。  
Listening: 远程计算机可用。  
Outbound: 您的会话正在建立TCP连接。  
Reconnecting: 如果第一次连接失败,就会显示这个状态,表示试着重新连接。
  
下面是一台机器的NBTSTAT反应样本:  
C:\>nbtstat CA x.x.x.x  
NetBIOS Remote Machine Name Table  
Name Type Status  
---------------------------------------------  
DATARAT <00> UNIQUE Registered  
R9LABS <00> GROUP Registered  
DATARAT <20> UNIQUE Registered  
DATARAT <03> UNIQUE Registered  
GHOST <03> UNIFQUE Registered  
DATARAT <01> UNIQUE Registered  
MAC Address = 00-00-00-00-00-00  
您通过下表能掌握有关该机器的哪些知识呢?  
名称编号类型的使用:  
00 U 工作站服务  
01 U 邮件服务  
\\_MSBROWSE_ 01 G 主浏览器  
03 U 邮件服务  
06 U RAS服务器服务  
1F U NetDDE服务  
20 U 文件服务器服务  
21 U RAS客户机服务  
22 U Exchange Interchange  
23 U Exchange Store  
24 U Exchange Directory  
30 U 调制解调器共享服务器服务  
31 U 调制解调器共享客户机服务  
43 U SMS客户机远程控制  
44 U SMS管理远程控制工具  
45 U SMS客户机远程聊天  
46 U SMS客户机远程传输  
4C U DEC Pathworks TCP/IP服务  
52 U DEC Pathworks TCP/IP服务  
87 U Exchange MTA  
6A U Exchange IMC  
BE U网络监控代理  
BF U网络监控应用  
03 U邮件服务  
00 G域名  
1B U域主浏览器  
1C G域控制器  
1D U主浏览器  
1E G浏览器服务选择  
1C G Internet信息服务器  
00 U Internet信息服务器  
[2B] U Lotus Notes服务器  
IRISMULTICAST [2F] G Lotus Notes  
IRISNAMESERVER [33] G Lotus Notes  
Forte_$ND800ZA [20] U DCA Irmalan网关服务  
Unique (U): 该名字可能只有一个分配给它的IP地址。在网络设备上,一个要注
册的名字  
可以出现多次,但其后缀是唯一的,从而使整个名字是唯一的。  
Group (G): 一个正常的群;一个名字可以有很多个IP地址。  
Multihomed (M): 该名字是唯一的,但由于在同一台计算机上有多个网络接口,
这个配置  
可允许注册。这些地址的最大编号是25。  
Internet Group (I): 这是用来管理WinNT域名的组名字的特殊配置。  
Domain Name (D): NT 4.0提供的新内容。  

网络入侵者可以通过上表和从nbtstat获得的输出信息开始收集有关您的机器的信
息。  
有了这些信息,网络入侵者就能在一定程度上断定有哪些服务正在目标机上运行
,有时也  
能断定已经安装了哪些软件包。  
从传统上讲,每个服务或主要的软件包都具有一定的脆弱性,因此,这一类型的
信息  
对网络入侵者当然有用。  
第二个逻辑步骤是通过远程机收集可能的用户名。网络登录包括两个部分:用户
名和  
口令。一旦网络入侵者掌握了有效的用户列表,他就能获得一半的有效登录信息
。现在,  
采用了nbtstat命令,网络入侵者就能掌握从本地注册到该台机器上的任何人的登
录名。  
在通过nbtstat命令得到的结果中,采用<03>识别符的表目是用户名或机器名。另
外,还  
可以通过空IPC会话和SID工具来收集用户名(详细内容见“SID工具”,附录B)
。  
IPC$(进程间通信)共享是NT主机上一个标准的隐藏共享,主要用于服务器到服
务器  
的通信。NT主机用来互相连接并通过这个共享来获得各种必要的信息。鉴于在各
种操作系  
统中都有很多设计特征,网络入侵者已经懂得利用这种特征来达到他们的目的。
通过连接  
这个共享,网络入侵者从技术上就能够实现与您的服务器的有效连接。通过与这
个共享的  
空连接,网络入侵者就能够在不需要提供任何身份证明的情况下建立这一连接。
  
要与IPC$共享进行空连接,网络入侵者就在命令提示符下发出如下命令:  
c:\>net use \\[目标主机的IP地址]\ipc$ "" /user:""  
如果连接成功,网络入侵者就会有很多事情可做,不只是收集用户列表,不过他
是以  
收集用户列表开始的。如上所述,这个方法需要一个空IPC会话和SID工具。由  

Evgenii Rudnyi编写的SID工具包括两个不同的部分:User2sid和Sid2user。Use
r2sid采  
用一个帐户名字或群组,给您一个对应的SID。而Sid2user采用一个SID,给您对
应的用户  
或群组的名字。作为一个独立的工具,这个进程是手工进行的,要消耗大量的时
间。  
Userlist.pl是Mnemonix编写的一个perl脚本,它将使这个SID进程自动化,从而
大大  
缩短网络入侵者收集这些消息所花费的时间。  
这时,网络入侵者就会了解到哪些服务正在远程机上运行以及已经安装了哪些主
要的  
软件包(有限的),同时还能得到该机器上有效的用户名和群组列表。尽管这似
乎是一个  
外来者所要掌握的有关您的网络的信息,但是,空IPC会话已经为信息收集留下了
其它隐  
患。目前,Rhino9小组已经能够检索远程机的全部固有安全约束规则。帐户封锁
、最小口  
令长度、口令使用周期、口令唯一性设置以及每一个用户、他们所归属的群组以
及该用户  
的个人域限制等所有信息都可以通过一个IPC空会话获得。这个信息收集功能将在
近期发  
布的Leviathan工具(由Rhino9小组编写)中提供。下面将对目前可用的一些工具
进行探  
讨,这些工具可用来通过空IPC会话收集更多的信息。 

有了这个空IPC会话,网络入侵者也能获得网络共享列表,否则就无法得到。为此
,  
网络入侵者希望了解到在您的机器上有哪些可用的网络共享。为了收集到这些信
息,要采  
用下列这个标准的net view命令:  
c:\>net view \\[远程主机的IP地址]  
根据目标机的安全约束规则,可以拒绝或不拒绝这个列表。举例如下(因某种原
因IP  
地址已省略):  
C:\>net view \\0.0.0.0  
System error 5 has occurred.  
Access is denied.  
C:\>net use \\0.0.0.0\ipc$ "" /user:""  
The command completed successfully.  
C:\>net view \\0.0.0.0  
Shared resources at \\0.0.0.0  
Share name Type Used as Comment  
------------------------------------------------------------Accelerator Disk Agent Accelerator share for Seagate backup  
Inetpub Disk  
mirc Disk  
NETLOGON Disk Logon server share  
www_pages Disk  
The command completed successfully. 

正如您所看到的,该服务器上的共享列表在建立了空IPC会话后才可用。这时,您
就  
会意识到这个IPC连接有多么的危险,但我们现在已经掌握的IPC方法实际上是很
基本的方  
法。与IPC共享一起出现的可能性还有待进一步研究。  
WindowsNT 4.0资源工具的发布使得象管理员和网络入侵者这样的人能够用到新的
工  
具。下面对一些资源工具实用程序进行描述。Rhino9小组运用这些实用程序与IP
C$空会话  
一起收集信息。当您阅读这些工具的描述以及它们所提供的信息时,请记住:所
采用的空  
会话不向远程网络提供任何真实的身份证明。  
UsrStat: 这个命令行实用程序显示特定域中各个用户的用户名、全名以及最后一
次登  
录的日期和时间。下面是根据远程网络通过一个空IPC会话采用这个工具进行的实
际剪切和  
粘贴:  
C:\NTRESKIT>usrstat domain4  
Users at \\STUDENT4  
Administrator - - logon: Tue Nov 17 08:15:25 1998  
Guest - - logon: Mon Nov 16 12:54:04 1998  
IUSR_STUDENT4 - Internet Guest Account - logon: Mon Nov 16 15:19:26 19
98  
IWAM_STUDENT4 - Web Application Manager account - logon: Never  
laurel - - logon: Never  
megan - - logon: Never  

我们现在来探讨一下整个俘获过程是怎么样发生的,以便于加深读者的理解。在
真正  
的攻击发生前,把一个映射放到通过#PRE/#DOM标记映射Student4机器及其域活动
状态的  
lmhosts文件中(下面详述)。然后把表目预加载到NetBIOS高速缓存器中,同时
建立一个  
空IPC会话。正如您所看到的,这个命令是根据域名发出的。最后,该工具会向主
域控制  
器查询这个域。  

global: 这个命令行实用程序显示远程服务器或域上全局群组的成员。如上所述
,这个实  
用程序是与Lmhosts/IPC映射一起使用的。下面是global工具的实际俘获。在这个
例子  
中,“域用户”是WindowsNT域中出现的标准默认全局群组。我们在此采用这个工
具向  
Domain1查询“域用户”群组中所有用户的列表。  
C:\>global “Domain Users” domain1  
Bob  
SPUPPY$  
BILLY BOB$  
Bill  
IUSR_BILLY BOB  
IWAM_BILLY BOB  
IUSR_SPUPPY  
IWAM_SPUPPY  
local: local工具象global工具一样操作,不同之处是,它向机器查询本地群组
的成员,  
而不是全局群组的成员。下面是local工具向服务器查询其管理员群组列表的例子
。  
C:\>local “administrators” domain1  
Bob  
Domain Admins  
Bill  
NetDom:NetDom是一个向服务器查询它在域中的角色以及向机器查询其PDC的工具
。另外,  
NetDom工具还与Lmhosts/IPC映射协同工作。下面是该工具的俘获信息及其标准输
出:  
Querying domain information on computer \\SPUPPY…  
The computer \\SPUPPY is a domain controller of DOMAIN4.  
Searching PDC for domain DOMAIN4…  
Found PDC \\SPUPPY  
The computer \\SPUPPY is the PDC of DOMAIN4.  
NetWatch:NetWatch是一个向调用该工具的用户提供远程机上的共享列表的工具
。同样,  
这个工具也能与Lmhosts/IPC映射一起使用。这个工具的缺点是,人们能够利用该
工具来  
检索远程机上的隐藏共享列表(Rhino9小组已经测试过)。 

其它涉及到IPC共享的渗透方法包括打开远程机的注册表以及远程域用户管理器。
空  
IPC连接使网络入侵者能够对您的注册表进行访问。一旦建立了空IPC会话,网络
入侵者就  
能启用其本地注册表编辑器实用程序,并尝试连接网络注册表选项。如果尝试成
功,入侵  
者就会对一定的注册表键具有只读访问权限,甚至是读/写权限。无论如何,就算
对注册  
表只有只读访问权限,从安全角度来讲这也是非常有害的。  
另外,网络入侵者还会利用IPC域用户管理器方法。这个方法鲜为人知。我们在这
里  
涉及到这个问题是因为它是一个非常有效的入侵方法。这个方法涉及到一个空IP
C会话和  
输入LMHOSTS文件的表目。LMHOSTS文件(在一般情况下)是一个保存在基于Wind
ows的机  
器上的本地文件,用于把NetBIOS名字映射到IP地址。LMHOSTS文件主要用在非WI
NS环境中  
或者不能使用WINS的客户机上,而实际上,网络入侵者可以通过很多种不同的方
式来使用  
这个文件。我们将在下文中对LMHOSTS文件的不同使用方法进行探讨。现在我们对
如何在  
这个方法中使用LMHOSTS文件进行论述。  
这是一个绝妙的方法,因为它能说明如何把前面介绍的方法与这个方法结合起来
使用  
从而达到网络入侵者的目的。我们先从端口扫描程序开始,假设端口139是开放的
,攻击  
者就会发出一个nbtstat命令。然后,他会通过nbtstat结果收集远程机的NetBIO
S名字。  
让我们来看看得出的nbtstat结果,与前面的结果相同:  
C:\>nbtstat -A x.x.x.x  
NetBIOS Remote Machine Name Table  
Name Type Status  
---------------------------------------------  
DATARAT <00> UNIQUE Registered  
R9LABS <00> GROUP Registered  
DATARAT <20> UNIQUE Registered  
DATARAT <03> UNIQUE Registered  
GHOST <03> UNIQUE Registered  
DATARAT <01> UNIQUE Registered  
MAC Address = 00-00-00-00-00-00  

通过检查nbtstat命令的结果,我们可以找到<03>识别符。如果有人从本地登录到
该  
机器上,您就会看到两个<03>识别符。在一般情况下,第一个<03>识别符是机器
的  
netbios名字,第二个<03>识别符是本地登录用户的名字。这时,网络入侵者就会
把这台  
机器的netbios名字和IP地址映射放到他本地的LMHOSTS文件中,用#PRE和#DOM标
签终止表  
目。#PRE标签表示应该把表目预加载到netbios高速缓存器中。#DOM标签表示域活
动。这  
时,网络入侵者就会发出一个nbtstat CR命令,把表目预加载到他的高速缓存器
中。从  
技术角度来讲,这个预加载会使表目看起来好象已经由一些网络功能解析过,并
使名字解  
析起来更加快捷。  
下一步,网络入侵者会建立一个空IPC会话。一旦成功地建立了空IPC会话,网络
入侵  
者就能启用域用户管理器的本地拷贝,并在用户管理器中利用选择域功能。接着
,远程机  
的域就会出现(或者能够人工输入),因为它已经被预加载到高速缓存器中。如
果远程机  
的安全性没有保障,用户管理器就会显示远程机上所有用户的列表。如果这是通
过一个很  
缓慢的链接(如28.8K调制解调器)来进行的,那么在一般情况下就不会起作用。
但如果  
采用较快的网络连接,就会有成效。  
既然网络入侵者已经收集到有关您的机器的资料,下一步就是真正渗透您的机器
。我  
们要探讨的第一个渗透方法是公开文件共享攻击。网络入侵者会把前面提到的ne
t view命  
令和net use命令结合起来实现这一攻击。  
我们采用前面的net view命令对网络入侵者的攻击进行论述:  
C:\> net view \\0.0.0.0  
Share name Type Used as Comment  
----------------------------------------------------------------------
---------  
Accelerator Disk Agent Accelerator share for Seagate backup  
Inetpub Disk  
mirc Disk  
NETLOGON Disk Logon server share  
www_pages Disk  
The command completed successfully.  

一旦攻击者掌握了远程共享列表,他就会试着映射到远程共享。这一攻击的命令
结构  
是:  
c:\>net use x: \\0.0.0.0\inetpub  
只有当共享不设密码或分配给everyone群组时这一攻击才有效(注:everyone群
组表  
示每个人。如果有人作为空用户连接,他们现在就是everyone群组的组成部分)
。如果这  
些参数都正确,攻击者就能把网络驱动器映射到您的机器上并开始一系列的渗透
攻击。请  
记住:网络入侵者并不局限于把驱动器映射到通过net view命令显示出来的共享
上。了解  
NT的网络入侵者都知道NT隐藏了管理共享。根据默认值,NT为该机器上的每一个
驱动器都  
创建IPC$共享和一个隐藏共享(即:一台有C、D和E驱动器的机器会有对应的C$、
D$和E$  
的隐藏共享)。另外,还有一个直接映射到NT安装路径的隐藏ADMIN$共享(即:
如果您把  
NT安装在C:\winnt目录下,ADMIN$就映射到该驱动器的确切位置)。Rhino9小组
已经注意  
到,大多数NT安全界人士似乎都不大重视这个从一台内部NT机渗透另一台内部NT
机的概  
念。在我们的专业检查过程中,Rhino9小组已经多次完成了这项任务。问题是,
如果网络  
入侵者是有心的并能得到对您的一台机器的访问权限,他就会悄悄地潜入其余的
网络机  
器。因此,这些共享攻击会造成严重的威胁。  
(旁注:Rhino9小组曾经对位于佛罗里达州的一家大型ISP进行远程渗透检查。我
们  
先得到其技术人员个人机器上的共享访问权限,然后从那里得到整个网络的访问
权限。这  
是完全可以办到的。)  
首先,有些人可能不会意识到有人在访问您的硬盘时对您的机器所造成的危险。
访问  
硬盘为收集信息和安放特洛伊木马/病毒提供了新的途径。一般情况下,攻击者会
寻找包  
含有口令或高度敏感的数据的内容,因为他能利用这些数据来继续深入您的网络
。下面列  
出的是网络入侵者要寻找和利用的一些文件。我们对每一个文件及其使用方法都
进行了简  
要的介绍。  
Eudora.ini: 这个文件用来存储支持eudora电子邮件软件的配置信息。被称为  

eudpass.com的工具会提取个人用户名、口令信息以及网络入侵者需要用来窃取用
户邮件  
的所有信息。这时,入侵者可以通过配置自己的电子邮件软件来阅读目标邮件。
同样,有  
些人要花很长时间才能意识到这一危险的存在。但是,要记住,在一般情况下,
人都会很  
容易地养成习惯的。用户的电子邮件口令与他们用来登录到网络的口令在大多数
情况下都  
是相同的。现在攻击者要做的就是不断地窥探用户的硬驱,寻找能为他指出该用
户业务场  
所的用户简历或一些与工作相关的其它文档,从而使他能够对网络发动强大的攻
势。  
Tree.dat: 这是一个由通用软件CuteFTP用来存储用户ftp站点/用户名/口令的文
件。  
利用一个称为FireFTP的程序,攻击者就能轻易地破解tree.dat文件。这样,如上
所述,  
他能不断地收集有关您的信息并对您的业务场所发起攻击。显而易见,如果您在
  
tree.dat中有一个直接到您业务场所的ftp映射,那么他就能更容易地攻击您的网
络。  
PWL: PWL一般内置在Win95机上。它们用来为Windows95最终用户存储操作特有的
口  
令。一个称为glide.exe的工具会破坏PWL文件。另外还有一些介绍如何用计算器
人工破坏  
这些PWL文件加密的文档。接下来,攻击者会继续收集有关用户的信息并拟订攻击
方案。  
PWD: PWD文件在运行FrontPage或Personal Webserver的机器上。这些文件包括纯
文  
本用户名和一个与用来管理Web站点的身份证明资料相匹配的加密口令。用于这些
口令的  
加密方案是标准的DES方案。众所周知,在internet上提供有很多破坏实用程序的
DES。  
Solar Designer编写的John the Ripper能非常有效的破坏这些口令。 

[关闭][返回]