找回密码
 立即注册
搜索
查看: 404|回复: 23

网上邻居的内幕(转载)

[复制链接]

154

主题

2645

回帖

2802

积分

荣誉版主

积分
2802
发表于 2004-5-26 11:51:55 | 显示全部楼层 |阅读模式
发信人: inannan (爱难难*当爱在靠近), 信区: Networking

标  题: 网上邻居的内幕

发信站: BBS 水木清华站 (Thu Nov 13 19:35:29 2003), 转信



转自chinaitlab精华区  原作者:男儿当自强



有关网上邻居的问题,问的人一直比较多,在理解上存在的误区也

普遍较为严重。鉴于Microsoft的NETBIOS文档不是很细致,我四处收集了一些相关资料加上自己的实践经验写了这个系列,希望能对大家有所帮助.



 本来想为了增加可读性,把这个系列写成问答的形式,不过一时

之间脑袋里也编不出这么多的问题,还是按部就班先感性的对微软的浏览服务作一大致介绍,然后再深入剖析NETBIOS的具体工作机理,大家要是有什么问题,可以提出来我们一起讨论.



***微软网络浏览过程简介***



在“Windows NT系统管理技术内幕”一书中,讲到了一个非常具有

代表性的问题,我把它摘抄了下来:


问:什么情况下会导致在网络邻居中计算机能看见却无法访问或可

以访问却看不见?请选择最佳答案: A.你的网络存在物理问题,比如网线 B.作为域主浏览器的WindowsNTserver的浏览服务坏了 C.Windows NTserver网卡有问题 D.你的网络没有问题,用户描述的是正常的微软浏览现象


正确答案:D



书上的解释:微软的网络浏览可能在使用中出现"中断",而实际上它

们并没有中断, 这种误解是由于用户对微软网络浏览的处理过程不熟悉造成的。

就象同学们经常在抱怨的“为什么别人的网上邻居可以用,我的却

不行?”“为什么有时候可以浏览,有时候却无法浏览网络?”解铃还须系铃人,让我们一起去看看微软的网络浏览到底是如何实现的。鉴于大家可能对NT的“域”概念还不甚了解,出现浏览故障的也多为98的机子,我将以98的“工作组模式”为大家讲解。



1.什么是浏览列表(Browsing List) 在微软网络中,用户可以在

浏览列表里看到整个网络(何指?子网还是广播域?大家可以考虑考虑)上所有的计算机。当你通过网上邻居窗口打开整个网络时,你将看到一个工作组列表,再打开某个工作组,你将看到里面的计算机列表(也可在 DOS方式下用net

view /domain:workgroupname命令得到),这就是我们所说的 Browsing List。工作组从本质上说就是共享一个浏览列表的一组计算
机,所有的工作组之间都是对等的,没有规定不可以让所有的计算机同处于一个工作组中。



2.浏览列表在哪里 曾在木棉上看到过一场争论,有人说:网上邻居

里的计算机列表是广播查询得来的。可有人举反例说:我的同学都关机了,可我还是能在网上邻居里看到它,应该是从HUB或交换机之类较为固定的设备的缓存中取得的。
其实他们都只说对了一个方面,把他们二人的说法结合起来就是正确答案了--- 浏览列表是通过广播查询浏览主控服务器,由浏览主控服务器提供的。



3.浏览主控服务器又是什么 浏览主控服务器是工作组中的一台最为

重要的计算机,它负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表,为本工作组的其他计算机和其他来访本工作组的计算机提供浏览服务,每个工作组都为会每个传输协议选择一个浏览主控服务器,而我们经常遇到的无法浏览网络的错误大多是因为你所处的工作组没有浏览主控服务器而造成的。你可以在一个工作组中用NBTSTAT -a
computername 命令找出使用NBT协议的浏览主控服务器,它的标识是含有\\_MSBROWSE_名字段。



4.浏览主控服务器是如何指定的 缺省情况下,win98工作组中的浏

览主控服务器是该工作组中第一台启用文件及打印机共享功能的计算机,也允许手工将一台win计算机配置为浏览主控服务器(方法会在后面讲述网络配置时具体介绍,但由于浏览主控服务器需要维护动态浏览列表,性能会受影响),如果一个工作组中有多台计算机配置了这个选项,或是当前的浏览主控服务器关闭了系统,又没有其他计算机启用主控设置时,就要进行主控浏览器的选举。



5.如何通过浏览器选举产生浏览主控服务器 关于浏览器的选举报

文,不太好抓包,我就只好按书上的东西来讲述了.其实过程很简单,首先由一台计算机发送一个选举临界报文,该报文包含了来自发送计算机的信息(操作系统,版本及NET名等),选举报文向网络中广播,工作组中的每一台计算机都会用自身信息与选举报文进行优先级比较,主要是操作系统起主要作用,记得好像是NT Server>NT Workstation>Win98>WFWG,反正到最后是那个自身条件最好的成为新的浏览主控服务器.



6.整个网络浏览的过程是怎样的 当一台win98进入网络时,如果它

带有服务器服务(启用了文件及打印机共享)会向网络广播宣告自己的存在,而浏览主控服务器会取得这个宣告并将它放入自己维护的浏览列表中;而没有在相应协议上绑定文件及打印机共享的计算机则不会宣告,因而也就不会出现在网络邻居里了。当客户计算机想获得需要的网络资源列表时,首先会广播发出浏览请求,浏览主控服务器收到请求后,如果请求的是本组的浏览列表,则直接将客户所需的资源列表发回;如果请求的是其它工作组的浏览列表,浏览主控服务器会根据本身Browsing List中的记录找到相应工作组的主控浏览器返回给用户,用户可从那里得到它想要的浏览列表。至于如何去和另一台计算机共享交换资源,就不是我们这里要讨论的问题了。

明白了网络浏览的原理,下面我给大家讲一个有用的应用,现在很

多同学出于安全的考虑都不太欢迎陌生人通过网上邻居访问自己的机子,可有时下部电影又需要给认识的同学共享出来,因而还不能删除文件及打印机共享服务。怎么办?有些人给共享名加个$,以达到隐藏的效果,可这用DOS下的net share是可被看到的;有些人给共享加上密码,可听说这也是有办法破解的,而且很容易激起“黑客同志”的好奇心。有没有办法将自己的机器在网络邻居里隐藏起来呢?而对于认识的同学可以让他用\\IP 来访问。

想对了,关键就是要阻止自己的机器向网络中去宣告自己,而且我知道我们其中的一些人已经将此变成了现实,至于方法嘛,就不要来问我了。



注:因为有关win98浏览服务的资料很少,涉及的书籍也多为以NT的

“域”模型进 行介绍,因而我只能根据自己的理解结合netxray的实践来测试,细节部分难 免有错,欢迎大家指正。



7.在我的网上邻居里为什么有些机子访问不了 如果微软的网上邻居

真能做到所见即所得,相信抱怨它的人不会象现在这么多,可通过前面对浏览服务的介绍,大家已经知道这是不可能的,因为浏览列表的获得不是通过访问其中每一台机子得到的,很多时候网络中的计算机并不能正确更新浏览列表。当一台计算机正常关机时,它会向网络发出广播宣告,使浏览主控服务器及时将它从浏览列表中删除;而非正常关机后,浏览列表里仍会把该条目保持很长一段时间(NT下是45分钟),这就是我们仍能在网络邻居里看到它的原因.而98的稳定性是众所周知的 ----在还没来得及关机前就已经崩溃了^-^



SMB(Server Message Block)协议在NT/2000中用来作文件共享,

在NT中,SMB运行于NBT(NetBIOS over TCP/IP)上,使用137,139(UDP),139(TCP)端口。在2000中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP 445端口。因此在2000上应该比NT稍微变化多一些。



可以在“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或

者禁用NBT(NetBIOS over TCP/IP)。



当2000使用网络共享的时候,就面临着选择139或者445端口了。下面的情况确定会话使用的端口:



1、如果客户端启用了NBT,那么连接的时候将同时访问139和445端

口,如果从445端口

得到回应,那么客户端将发送RST到139端口,终止这个端口的连

接,接着就从445端口

进行SMB的会话了;如果没有从445端口而是从139得到回应,那么

就从139端口进行会话;如果没有得到任何回应,那么SMB会话失

败。

2、如果客户端禁用了NBT,他就将只从445端口进行连接。当然如果

服务器(开共享

端)没有445端口进行SMB会话的话,那么就会访问失败了,所以禁

用445端口后,对访

问NT机器的共享会失败。

3、如果服务器端启用NBT,那么就同时监听UDP 137、138端口和

TCP139,445。如果禁

用NBT,那么就只监听445端口了。



所以对于2000来说,共享问题就不仅仅是139端口,445端口同样能

够完成。





III、The NULL session,关于空会话



NULL会话(空会话)使用端口也同样遵循上面的规则。NULL会话是

同服务器建立的

无信任支持的会话。一个会话包含用户的认证信息,而NULL会话是

没有用户的认证信

息,也就好比是一个匿名的一样。



没有认证就不可能为系统建立安全通道,而建立安全通道也是双重

的,第一,就是

建立身份标志,第二就是建立一个临时会话密匙,双方才能用这个

会话进行加密数据交

换(比如RPC和COM的认证等级是PKT_PRIVACY)。不管是经过NTLM还

是经过Kerberos认

证的票据,终究是为会话创建一个包含用户信息的令牌。(这段来

自Joe Finamore)



根据WIN2000的访问控制模型,对于空会话同样需要提供一个令牌。

但是空会话由于

是没有经过认证的会话,所以令牌中不包含用户信息,因此,建立

会话双方没有密匙的

交换,这也不能让系统间发送加密信息。这并不表示空会话的令牌

中不包含SID,对于

一个空会话,LSA提供的令牌的SID是S-1-5-7,这就是空会话建立的

SID,用户名是

ANONYMOUS LOGON。这个用户名是可以在用户列表中看到的。但是是

不能在SAM数据库中

找到,属于系统内置的帐号。

(关于这部分对NULL SESSION的分析,可以参照:《NULL

Sessions In

NT/2000》http://rr.sans.org/win/null.php)



NULL会话几乎成为了微软自己安置的后门,但是微软为什么要来设

置这样一个“后

门”呢?我也一直在想这个问题,如果NULL会话没有什么重要的用

途,那么微软也应该

不会来设置这样一个东西。好不容易才在微软上找到这个:



当在多域环境中,要在多域中建立信任关系,首先需要找到域中的

PDC来通过安全通

道的密码验证,使用空会话能够非常容易地找到PDC,还有就是关于

一些系统服务的问

题。而且LMHOSTS的Include就需要空会话的支持,可以参考文章:

http://support.microsoft.com/default.aspx?scid=kb;EN-

US;q121281

还有http://support.microsoft.com/default.aspx?scid=kb;EN-

US;q124184



其实建立一个空会话的条件也非常严格。首先要能够满足上面的,

也就是打开TCP

139和TCP 445端口。我们可以从一次关闭这两个端口的情况中看得

出来。服务器关闭

445和139端口,然后我们来进行空会话的连接。首先,客户端打算

连接的是445端口,然后再试图连接139端口。当然最后还是失败

了。

仅仅开放这两个端口还不行,服务器还必须得打开IPC$共享。如果

没有IPC共享,即

使共享一个文件,有权限为Anonymous Logon,也不能建立会话,即

使权限设置为完全

控制,出现的连接错误依然是权限不够。这和其他帐号是不一样

的。如果要允许一个文

件夹共享能够类似IPC$(命名管道而非共享)能够使用空会话,那

么需要修改注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanman

server\parameters

\中的:NullSessionShares,

添加新的共享名,这样才能建立一个共享的空会话。这时,将不依

赖IPC的存在了。

(即使这样的空会话对于后面的突破也是一点没可取之处的,因为

没有了IPC$命名管

道,RPC不可取了,这下知道IPC这个命名管道的具体实现了。呵

呵)



虽然空会话建立的要求很严格,但是那都是默认建立的。既然是默

认的,对于使用

WIN2K系统的服务器来说,就还是有利用的价值。最明显的就是空会

话可以很方便地连

接到其他的域,枚举用户、机器等。这也就是扫描软件进行探测的原

理。

















1. > 有些人给共享名加个$,以达到隐藏的效果,可这用DOS下的

net share是可被看到的;



这种隐藏只是微软Windows标准客户端net view的限制,不是服务端

的限制,网络传输

过程中是一视同仁的,所以直接修改客户端解除这种限制或者使用

第三方客户端软件

均可看到所谓的隐藏共享,比如smbclient就是典型代表。而直接修

改windows客户端

的办法,99年袁哥贴过,我在华中Security版上转载过,精华区中

还在。



2. > 有些人给共享加上密码,可听说这也是有办法破解的



这个破解要看是什么层面上的,纯暴力破解的就不必说了,那当然

总是可以的。而95

98另有漏洞,袁哥发现的,就是他那个著名的vredir.vxd,服务端

验证密码时所用长

度居然是客户端提供的,这就意味着至多猜测256次(事实上没这么

多,考虑可打印字

符范围)即可进入。当初N多人用这种办法非法浏览别人的机器。

2000年报告微软,

现在已修补。



http://security.nsfocus.net/index.php?

act=advisory&do=view&adv_id=6



顺便说一句,利用该漏洞可以快速穷举出原始口令,虽然在攻击中

这是不必要的。



3. > 因而我只能根据自己的理解结合netxray的实践来测试,细节

部分难 免有错,



推荐www.ethereal.com提供的Etherea ... �过的对SMB解码

最强的免费软件,

有Unix/Windows版,提供源码。



3. > 在2000中,SMB可以直接运行在tcp/ip上,而没有额外的NBT

层,使用TCP 445端口。

   > 因此在2000上应该比NT稍微变化多一些。



事实上正相反,在ssaxh_capabilities字段中指明不使用"扩展安全

验证",此时使用

原有身份验证机制,只需去掉NBT层的Session Request,将139/TCP

改成445/TCP,一

样可以成功建立空会话,并且成功打开"\\<target ip>\IPC$"。



至于更高层的RPC Over SMB,更是不必作任何变动。换句话说,从

139/TCP换到445/TCP,

整个通信过程中减少了一对NBT Session Request/Response,后面

的报文对于两者来说

是完全一致的。



而所谓的NBT层,即使在445通信中也未去掉,一直存在着,区别只

是上面这段话。



4. > 如果客户端启用了NBT,那么连接的时候将同时访问139和445

端口,



微软并没有让139/TCP与445/TCP公平竞争。发起连接的SYN包在宏观

上是同时发出的,

具体起来,有时是先向139/TCP发起连接请求,有时是先向445/TCP

发起连接请求,有

点随机性。



在向139/TCP发送三次握手的最后一个ACK报文时,Windows顺手携带

了数据,这里以

一个刻意弄错的NetBIOS名(*SMBSERV<00...(8)>)做了一次NBT

Session Request。而

445/TCP不需要NBT层的会话。



由于刻意弄错的NetBIOS名,139/TCP很难竞争过445/TCP。服务端返

回Negative NBT

Session Response,并且执行了close()操作。这使得必须重新建立

到139/TCP的连接

(传输层的TCP连接)。



可以看出,那个刻意弄错的NetBIOS名仅仅是为了给445/TCP制造抢

先的机会。遗憾的

是,445/TCP不争气,这个端口上的任务繁重、负载较高,即使在这

种不公平竞争的

情况下,139/TCP仍有可能重新抢在445/TCP之前建立NBT会话(注

意,不是TCP连接)。

于是445口会回送RST,后续SMB会话建立在139/TCP连接之上。



微软自己的操作系统不认"*SMBSERV<00...(8)>",但是Samba

Server 2.2.5认,居然

返回Positive Session Response。这成为精确识别Samba Server的

方法之一。



微软在<<Direct Hosting of SMB Over TCP/IP>>中不会提这些的,

只是说139/TCP、

445/TCP公平竞争,优先使用最早返回的响应报文。不要相信它的鬼

话。



话说回来,如非需求所致,完全不必关心这种差别。有需求的时

候,这种差别是致命

的。



5. > 最明显的就是空会话可以很方便地连接到其他的域,枚举用

户、机器等。这也就是

   > 扫描软件进行探测的原理。



XP、2003缺省禁止在空会话上进行

PolicyAccountDomainInformation查询,可以看到

LsarOpenPolicy2(44)失败,权限否定。如果事先指定有效帐号、口

令建立SMB会话,

而非空会话,LsarOpenPolicy2(44)将成功返回。

178

主题

1103

回帖

1622

积分

金牌会员

积分
1622
发表于 2004-5-26 19:55:35 | 显示全部楼层
后面的就全是HACK方面的东西了
回复

使用道具 举报

37

主题

682

回帖

959

积分

金牌会员

积分
959
发表于 2004-5-27 16:26:20 | 显示全部楼层
精彩之极,受教了,谢谢
回复

使用道具 举报

70

主题

739

回帖

1112

积分

金牌会员

系统爱好者

积分
1112
发表于 2004-5-29 23:41:07 | 显示全部楼层
最初由 xux88 发布
[B]精彩之极,受教了,谢谢 [/B]
回复

使用道具 举报

270

主题

1799

回帖

1721

积分

金牌会员

积分
1721
发表于 2004-6-2 12:34:18 | 显示全部楼层
长知识了,支持一下
回复

使用道具 举报

发表于 2004-6-2 12:43:24 | 显示全部楼层
好文,收藏
回复

使用道具 举报

18

主题

459

回帖

654

积分

高级会员

积分
654
发表于 2004-6-2 16:44:39 | 显示全部楼层
精华区没有的话就加进去吧
回复

使用道具 举报

431

主题

4154

回帖

3621

积分

论坛元老

积分
3621
发表于 2004-6-2 17:28:44 | 显示全部楼层
好文章!
回复

使用道具 举报

148

主题

1792

回帖

2307

积分

论坛元老

积分
2307
发表于 2004-6-3 11:00:29 | 显示全部楼层

非常有用的.

我最近就是遇到了一个这样的问题.
回复

使用道具 举报

98

主题

734

回帖

1126

积分

金牌会员

积分
1126
发表于 2004-6-3 16:53:03 | 显示全部楼层
经典的问题,收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-18 19:57 , Processed in 0.085768 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表