有关网上邻居的问题问的人一直比较多在理解上存在的误区也普遍较为严重鑒于Microsoft的NETBIOS文档不是很细致我四处收集了一些相关资料加上自己的实践经验写了这个系列希望能对大家有所帮助 本来想为了增加可读性把这个系列写成问答的形式不过一时之间脑袋里也编不出这么多的问题还是按部就班先感性的对微软的浏览服务作一大致介绍然后再深入剖析NETBIOS的具体工作机理大家要是有什么问题可以提出来我们一起讨论***微软网络浏览过程简介*** 在Windows NT系统管理技术内幕一书中讲到了一个非常具有代表性的问题我把它摘抄了下来 问什么情况下会导致在网络邻居中计算机能看见却无法访问或可以访问却看不见?请选择最佳答案A你的网络存在物理问题比如网线B作为域主浏览器的Windows NTserver的浏览服务坏了CWindows NTserver网卡有问题D你的网络没有问题用户描述的是正常的微软浏览现象 正确答案书上的解释:D微软的网络浏览可能在使用中出现中断而实际上它们并没有中断 这种误解是由于用户对微软网络浏览的处理过程不熟悉造成的 就象同学们经常在抱怨的为什么别人的网上邻居可以用我的却不行?为什么有时候可以浏览有时候却无法浏览网络?解铃还须系铃人让我们一起去看看微软的网络浏览到底是如何实现的鑒于大家可能对NT的域概念还不甚了解出现浏览故障的也多为的机子我将以的工作组模式为大家讲解 什么是浏览列表(Browsing List) 在微软网络中用户可以在浏览列表里看到整个网络(何指?子网还是广播域?大家可以考虑考虑)上所有的计算机当你通过网上邻居窗口打开整个网络时你将看到一个工作组列表再打开某个工作组你将看到里面的计算机列表(也可在 DOS方式下用net view /domain:workgroupname命令得到)这就是我们所说的 Browsing List工作组从本质上说就是共享一个浏览列表的一组计算机所有的工作组之间都是对等的没有规定不可以让所有的计算机同处于一个工作组中浏览列表在哪里 有人说网上邻居里的计算机列表是广播查询得来的可有人举反例说我的同学都关机了可我还是能在网上邻居里看到它应该是从HUB或交换机之类较为固定的设备的缓存中取得的其实他们都只说对了一个方面把他们二人的说法结合起来就是正确答案了 浏览列表是通过广播查询浏览主控服务器由浏览主控服务器提供的浏览主控服务器又是什么 浏览主控服务器是工作组中的一台最为重要的计算机它负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表为本工作组的其他计算机和其他来访本工作组的计算机提供浏览服务每个工作组都为会每个传输协议选择一个浏览主控服务器而我们经常遇到的无法浏览网络的错误大多是因为你所处的工作组没有浏览主控服务器而造成的你可以在一个工作组中用NBTSTAT a computername 命令找出使用NBT协议的浏览主控服务器它的标识是含有\\_MSBROWSE_ 名字段 浏览主控服务器是如何指定的 缺省情况下win工作组中的浏览主控服务器是该工作组中第一台启用文件及打印机共享功能的计算机也允许手工将一台win计算机配置为浏览主控服务器(方法会在后面讲述网络配置时具体介绍但由于浏览主控服务器需要维护动态浏览列表性能会受影响)如果一个工作组中有多台计算机配置了这个选项或是当前的浏览主控服务器关闭了系统又没有其他计算机启用主控设置时就要进行主控浏览器的选举如何通过浏览器选举产生浏览主控服务器 关于浏览器的选举报文不太好抓包我就只好按书上的东西来讲述了其实过程很简单首先由一台计算机发送一个选举临界报文该报文包含了来自发送计算机的信息(操作系统版本及NET名等)选举报文向网络中广播工作组中的每一台计算机都会用自身信息与选举报文进行优先级比较主要是操作系统起主要作用记得好像是NT Server>NT Workstation>Win>WFWG反正到最后是那个自身条件最好的成为新的浏览主控服务器整个网络浏览的过程是怎样的 当一台win进入网络时如果它带有服务器服务(启用了文件及打印机共享)会向网络广播宣告自己的存在而浏览主控服务器会取得这个宣告并将它放入自己维护的浏览列表中而没有在相应协议上绑定文件及打印机共享的计算机则不会宣告因而也就不会出现在网络邻居里了当客户计算机想获得需要的网络资源列表时首先会广播发出浏览请求浏览主控服务器收到请求后如果请求的是本组的浏览列表则直接将客户所需的资源列表发回如果请求的是其它工作组的浏览列表浏览主控服务器会根据本身Browsing List中的记录找到相应工作组的主控浏览器返回给用户用户可从那里得到它想要的浏览列表至于如何去和另一台计算机共享交换资源就不是我们这里要讨论的问题了明白了网络浏览的原理下面我给大家讲一个有用的应用现在很多同学出于安全的考虑都不太欢迎陌生人通过网上邻居访问自己的机子可有时下部电影又需要给认识的同学共享出来因而还不能删除文件及打印机共享服务怎么办?有些人给共享名加个$以达到隐藏的效果可这用DOS下的net share是可被看到的有些人给共享加上密码可听说这也是有办法破解的而且很容易激起黑客同志的好奇心有没有办法将自己的机器在网络邻居里隐藏起来呢?而对于认识的同学可以让他用\\IP 来访问想对了关键就是要阻止自己的机器向网络中去宣告自己而且我知道我们其中的一些 人已经将此变成了现实至于方法嘛就不要来问我了注因为有关win浏览服务的资料很少涉及的书籍也多为以NT的域模型进行介绍因而我只能根据自己的理解结合netxray的实践来测试细节部分难 免有错欢迎大家指正在我的网上邻居里为什么有些机子访问不了 如果微软的网上邻居真能做到所见即所得相信抱怨它的人不会象现在这么多可通过前面对浏览服务的介绍大家已经知道这是不可能的因为浏览列表的获得不是通过访问其中每一台机子得到的很多时候网络中的计算机并不能正确更新浏览列表当一台计算机正常关机时它会向网络发出广播宣告使浏览主控服务器及时将它从浏览列表中删除而非正常关机后浏览列表里仍会把该条目保持很长一段时间(NT下是分钟)这就是我们仍能在网络邻居里看到它的原因而的稳定性是众所周知的 在还没来得及关机前就已经崩溃了^^ SMB(Server Message Block)协议在NT/中用来作文件共享在NT中SMB运行于NBT(NetBIOS over TCP/IP)上使用(UDP)(TCP)端口在中SMB可以直接运行在tcp/ip上而没有额外的NBT层使用TCP 端口因此在上应该比NT稍微变化多一些可以在网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT(NetBIOS over TCP/IP)当使用网络共享的时候就面临着选择或者端口了下面的情况确定会话使用的端口如果客户端启用了NBT那么连接的时候将同时访问和端口如果从端口得到回应那么客户端将发送RST到端口终止这个端口的连接接着就从端口进行SMB的会话了如果没有从端口而是从得到回应那么就从端口进行会话如果没有得到任何回应那么SMB会话失败如果客户端禁用了NBT他就将只从端口进行连接当然如果服务器(开共享端)没有端口进行SMB会话的话那么就会访问失败了所以禁用端口后对访问NT机器的共享会失败 如果服务器端启用NBT那么就同时监听UDP 端口和TCP如果禁用NBT那么就只监听端口了所以对于来说共享问题就不仅仅是端口端口同样能够完成The NULL session关于空会话 NULL会话(空会话)使用端口也同样遵循上面的规则NULL会话是同服务器建立的无信任支持的会话一个会话包含用户的认证信息而NULL会话是没有用户的认证信息也就好比是一个匿名的一样没有认证就不可能为系统建立安全通道而建立安全通道也是双重的第一就是建立身份标志第二就是建立一个临时会话密匙双方才能用这个会话进行加密数据交换(比如RPC和COM的认证等级是PKT_PRIVACY)不管是经过NTLM还是经过Kerberos认证的票据终究是为会话创建一个包含用户信息的令牌(这段来自Joe Finamore)根据WIN的访问控制模型对于空会话同样需要提供一个令牌但是空会话由于是没有经过认证的会话所以令牌中不包含用户信息因此建立会话双方没有密匙的交换这也不能让系统间发送加密信息这并不表示空会话的令牌中不包含SID对于一个空会话LSA提供的令牌的SID是S这就是空会话建立的SID用户名是ANONYMOUS LOGON这个用户名是可以在用户列表中看到的但是是不能在SAM数据库中找到属于系统内置的帐号(关于这部分对NULL SESSION的分析可以参照《NULL Sessions InNT/》)NULL会话几乎成为了微软自己安置的后门但是微软为什么要来设置这样一个后门呢?我也一直在想这个问题如果NULL会话没有什么重要的用途那么微软也应该不会来设置这样一个东西好不容易才在微软上找到这个当在多域环境中要在多域中建立信任关系首先需要找到域中的PDC
|