简介
发展历史
网络系统
(NetBIOS:NetworkBasicInputOutputSystem)
NetBIOS是网络的基本输入输出系统。
NetBIOS定义了一种软件接口以及在应用程序和连接介质之间提供通信接口的标准方法。NetBIOS是一种会话层协议,应用于各种LAN(Ethernet、TokenRing等)和WAN环境,诸如TCP/IP、PPP和X.25网络。
NetBIOS使得应用程序无需了解包括差错恢复(会话模式)在内的网络细节。NetBIOS请求以网络控制块(NCB:NetworkControlBlock)的形式提供,NCB中包含了信息存放位置和目标名称等信息。
NetBIOS提供开放系统互联(OSI)模型中的会话层和传输层服务,但不支持标准帧或数据格式的传输。NetBIOS扩展用户接口(NetBEUI)支持标准帧格式,它为NetBIOS提供网络层和传输层服务支持。
NetBIOS支持两种通信模式:会话(session)或数据报(datagram)。会话模式是指两台计算机为“对话”建立一个连接,允许处理大量信息,并支持差错监测和恢复功能。数据报模式面向“无连接”(信息独立发送)操作,发送的信息较小,由应用程序提供差错监测和恢复功能。此外数据报模式也支持将信息广播到局域网中的每台计算机上。
NetBIOS名称为16字节长(必要情况下使用填充位填满),对使用的字节值几乎没有限制。对于不执行路由的小型网络,将NetBIOS名称映射到IP地址上有三种方法:
1.IP广播-当目标地址不在本地cache上时,广播一个包含目标计算机NetBIOS名称的数据包。目标计算机返回其IP地址。
2.lmhosts文件-这是一个负责映射IP地址和NetBIOS计算机名称的文件。
3.NBNS-NetBIOS命名服务器负责将NetBIOS名称映射到IP地址上。该服务由Linux环境下的后台程序(nmbddaemon)执行。
协议结构
NetBIOS数据包有很多不同格式,主要取决于服务和信息类型,以及用以传送NetBIOS数据包的传输协议。NetBIOS包含三种基本服务:NAME、SESSION和DATAGRAM。作为例子,我们提供TCP/IP环境中的NetBIOS名称数据包格式:
Header(12bytes)
QuestionEntry(variable)
AnswerResourceRecords(variable)
AuthorityResourceRecords(variable)
AdditionalResourceRecords(variable)
NBTSTAT命令可以用来查询涉及到NetBIOS信息的网络机器。另外,它还可以用来消除NetBIOS高速缓存器和预加载LMHOSTS文件。这个命令在进行安全检查时非常有用。
用法:nbtstat[-aRemoteName][-AIP_address][-c][-n][-R][-r][-S][-s][-RR]
参数:-a列出为其主机名提供的远程计算机名字表。
-A列出为其IP地址提供的远程计算机名字表。
-c列出包括了IP地址的远程名字高速缓存器。
-n列出本地NetBIOS名字。
-r列出通过广播和WINS解析的名字。
-R消除和重新加载远程高速缓存器名字表。
-S列出有目的地IP地址的会话表。
-s列出会话表对话。
-RR发送数据包名称到WINS,然后开始刷新
NBTSTAT生成的列标题具有以下含义:
Input:接收到的字节数。
Output:发出的字节数。
In/Out:无论是从计算机(出站)还是从另一个系统连接到本地计算机(入站)。
Life:在计算机消除名字表高速缓存表目前“度过”的时间。
LocalName:为连接提供的本地NetBIOS名字。
RemoteHost:远程主机的名字或IP地址。
Type:一个名字可以具备两个类型之一:uniqueorgroup
在16个字符的NetBIOS名中,最后一个字节往往有具体含义,因为同一个名可以在同一台计算机上出现多次。这表明该名字的最后一个字节被转换成了16进制。
State
NetBIOS连接将在下列“状态”(任何一个)中显示:
状态含义:
Accepting:进入连接正在进行中。
Associated:连接的端点已经建立,计算机已经与IP地址联系起来。
Connected:这是一个好的状态!它表明您被连接到远程资源上。
Connecting:您的会话试着解析目的地资源的名字-IP地址映射。
Disconnected:您的计算机请求断开,并等待远程计算机作出这样的反应。
Disconnecting:您的连接正在结束。
Idle:远程计算机在当前会话中已经打开,但没有接受连接。
Inbound:入站会话试着连接。
Listening:远程计算机可用。
Outbound:您的会话正在建立TCP连接。
Reconnecting:如果第一次连接失败,就会显示这个状态,表示试着重新连接
下面是一台机器的NBTSTAT反应样本:
C:>nbtstatCAx.x.x.x
NetBIOSRemoteMachineNameTable
NameTypeStatus
---------------------------------------------
DATARAT<00>UNIQUERegistered
R9LABS<00>GROUPRegistered
DATARAT<20>UNIQUERegistered
DATARAT<03>UNIQUERegistered
GHOST<03>UNIFQUERegistered
DATARAT<01>UNIQUERegistered
MACAddress=00-00-00-00-00-00
您通过下表能掌握有关该机器的哪些知识呢?
名称编号类型的使用:
00U工作站服务
01U邮件服务
_MSBROWSE_01G主浏览器
03U邮件服务
06URAS服务器服务
1FUNetDDE服务
20.U文件服务器服务
21.URAS客户机服务
22.UExchangeInterchange
23.UExchangeStore
24.UExchangeDirectory
30.U调制解调器共享服务器服务
31.U调制解调器共享客户机服务
43.USMS客户机远程控制
44.USMS管理远程控制工具
45.USMS客户机远程聊天
46.USMS客户机远程传输
4CUDECPathworksTCP/IP服务
52.UDECPathworksTCP/IP服务
87.UExchangeMTA
6AUExchangeIMC
BEU网络监控代理
BFU网络监控应用
03U邮件服务
00G域名
1BU域主浏览器
1CG域控制器
1DU主浏览器
1EG浏览器服务选择
1CGInternet信息服务器
00UInternet信息服务器
[2B]ULotusNotes服务器
IRISMULTICAST[2F]GLotusNotes
IRISNAMESERVERGLotusNotes
Forte_$ND800ZAUDCAIrmalan网关服务
Unique(U):该名字可能只有一个分配给它的IP地址。在网络设备上,一个要注册的名字
可以出现多次,但其后缀是唯一的,从而使整个名字是唯一的。
Group(G):一个正常的群;一个名字可以有很多个IP地址。
Multihomed(M):该名字是唯一的,但由于在同一台计算机上有多个网络接口,
这个配置可允许注册。这些地址的最大编号是25。
InternetGroup(I):这是用来管理WinNT域名的组名字的特殊配置。
DomainName(D):NT4.0提供的新内容。
潜在危害
简介
当安装TCP/IP协议时,NetBIOS也被Windows作为默认设置载入,我们的计算机也具有了NetBIOS本身的开放性。某些别有用心的人就利用这个功能来攻击服务器,使管理员不能放心使用文件和打印机共享。
利用NETBIOS漏洞进行攻击的端口分别为:
135端口开放实际上是一个WINNT漏洞,开放的135的端口情况容易引起自外部的“Snort”攻击!!!
对于135端口开放的问题,可以在你的防火墙上,增加一条规则:拒绝所有的这类进入的UDP包,目的端口是135,源端口是7,19,或者135,这样可以保护内部的系统,防止来自外部的攻击。大多数防火墙或者包过滤器已经设置了很多严格的规则,已复盖了这条过滤规则,但仍需注意:有一些NT的应用程序,它们依靠UDP135端口进行合法的通讯,而打开你135的端口与NT的RPC服务进行通讯。如果真是这样,你一定要在那些原始地址的系统上(需要135口通讯),实施上述的规则,指定来自这些系统的通讯可以通过防火墙,或者,可以被攻击检测系统所忽略,以便维持那些应用程序的正常连接。为了保护你的信息安全,强烈建议你安装微软的最新补丁包。
上面我们说到Netbios(NETworkBasicInput/OutputSystem)网络基本输入输出系统。是1983年IBM开发的一套网络标准,微软在这基础上继续开发。微软的客户机/服务器网络系统都是基于NetBIOS的。在利用WindowsNT4.0构建的网络系统中,对每一台主机的唯一标识信息是它的NetBIOS名。系统可以利用WINS服务、广播及Lmhost文件等多种模式通过139端口将NetBIOS名解析为相应IP地址,从而实现信息通讯。在这样的网络系统内部,利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Internet上,它就和一个后门程序差不多了。因此,我们很有必要堵上这个可怕的漏洞。
漏洞攻击
1.利用软件查找共享资源
利用NetBruteScanner软件扫描一段IP地址(如10.0.13.1~10.0.13.254)内的共享资源,就会扫描出默认共享
2.用PQwak破解共享密码
双击扫描到的共享文件夹,如果没有密码,便可直接打开。当然也可以在IE的地址栏直接输入扫描到的带上共享文件夹的IP地址,如“10.0.13.191”(或带C$,D$等查看默认共享)。如果设有共享密码,会要求输入共享用户名和密码,这时可利用破解网络邻居密码的工具软件,如PQwak,破解后即可进入相应文件夹。
关闭漏洞
1.解开文件和打印机共享绑定
鼠标右击桌面上[网络邻居]→[属性]→[本地连接]→[属性],去掉“Microsoft网络的文件和打印机共享”前面的勾,解开文件和打印机共享绑定。这样就会禁止所有从139和445端口来的请求,别人也就看不到本机的共享了。
2.利用TCP/IP筛选
鼠标右击桌面上[网络邻居]→[属性]→[本地连接]→[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[选项],在列表中单击选中“TCP/IP筛选”选项。单击[属性]按钮,选择“只允许”,再单击[添加]按钮(如图2),填入除了139和445之外要用到的端口。这样别人使用扫描器对139和445两个端口进行扫描时,将不会有任何回应。
3.使用IPSec安全策略
3.1使用IPSec安全策略阻止对端口139和445的访问
选择[我的电脑]→[控制面板]→[管理工具]→[本地安全策略]→[IP安全策略,在本地机器],在这里定义一条阻止任何IP地址从TCP139和TCP445端口访问IP地址的IPSec安全策略规则,这样别人使用扫描器扫描时,本机的139和445两个端口也不会给予任何回应。
4.停止Server服务
选择[我的电脑]→[控制面板]→[管理工具]→[服务],进入服务管理器,关闭Server服务。这样虽然不会关闭端口,但可以中止本机对其他机器的服务,当然也就中止了对其他机器的共享。但是关闭了该服务会导致很多相关的服务无法启动,如机器中如果有IIS服务,则不能采用这种方法。
5.使用防火墙防范攻击
在防火墙中也可以设置阻止其他机器使用本机共享。如在“天网个人防火墙”中,选择一条空规则,设置数据包方向为“接收”,对方IP地址选“任何地址”,协议设定为“TCP”,本地端口设置为“139到139”,对方端口设置为“0到0”,设置标志位为“SYN”,动作设置为“拦截”,最后单击[确定]按钮,并在“自定义IP规则”列表中勾选此规则即可启动拦截139端口攻击了。
防范方法
在windows9x下如果你是个拨号用户。完全不需要登陆到nt局域网络环境的话。只需要在控制面板→网络→删除microsoft网络用户,使用microsoft友好登陆就可以了。但是如果你需要登陆到nt网络的话。那这一项就不能去处。因为nt网里需要使用netbios。
在windowsNT下你可以取消netbios与TCP/IP协议的绑定。控制面板→网络→Netbios接口→WINS客户(tcp/ip)→禁用。确定。重启。这样nt的计算机名和工作组名也隐藏了,不过会造成基于netbios的一些命令无法使用。如net等。
在windowsNT下你可以选中网络邻居→右键→本地连接→INTERNET协议(TCP/IP)→属性→高级→选项→TCP/IP筛选→在“只允许”中填入除了137,138,139只外的端口。如果你在局域网中,会影响局域网的使用
在windowsXP下你可以在控制面板上点击管理工具-本地安全策略,右击"IP安全策略,在本地计算机"选择"管理IP筛选器表和筛选器操作",点添加,在对话框里填,随便写.只要你记得住.最好还是写"禁用135/139端口"比较看的懂.点右边的添加->下一步->源地址为"任何地址"->目的地址"我的地址"->协仪为TCP->在到此端口里填135或139就可以.
还有一个办法就是TCP/IP协议里禁用NETBIOS.