NetBIOS

来自站长百科
跳转至: 导航、​ 搜索

NETBIOS协议是由IBM公司开发,主要用于数十台计算机的小型局域网。该协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。因为它占用系统资源少、传输效率高,所以几乎所有的局域网都是在NetBIOS协议的基础上工作的。

NetBIOS的应用[ ]

  英文原义:NetBIOS Services Protocols

  中文释义:(RFC-1001,1002)网络基本输入/输出系统协议

  应 用:在Windows操作系统中,默认情况下在安装TCP/IP协议后会自动安装NetBIOS。比如在Windows 2000/XP中,当选择“自动获得IP”后会启用DHCP服务器,从该服务器使用NetBIOS设置;如果使用静态IP地址或DHCP服务器不提供NetBIOS设置,则启用TCP/IP上的NetBIOS。具体的设置方法如下:首先打开“控制面板”,双击“网络连接”图标,打开本地连接属性。接着,在属性窗口的“常规”选项卡中选择“Internet协议(TCP/IP)”,单击“属性”按钮。然后在打开的窗口中,单击“高级”按钮;在“高级TCP/IP设置”窗口中选择“WINS”选项卡,在“NetBIOS设置”区域中就可以相应的NetBIOS设置。

NetBIOS:网络基本输入输出系统[ ]

  NetBIOS 定义了一种软件接口以及在应用程序和连接介质之间提供通信接口的标准方法。NetBIOS 是一种会话层协议,应用于各种 LAN (Ethernet、Token Ring 等)和 WAN 环境,诸如 TCP/IP、PPP 和 X.25 网络。

  NetBIOS 使得应用程序无需了解包括差错恢复(会话模式)在内的网络细节。NetBIOS 请求以网络控制块(NCB:Network Control Block)的形式提供,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 环境下的后台程序(nmbd daemon)执行。

NETBIOS协议结构[ ]

  NetBIOS 数据包有很多不同格式,主要取决于服务和信息类型,以及用以传送 NetBIOS 数据包的传输协议。 NetBIOS 包含三种基本服务: NAME、SESSION 和 DATAGRAM。作为例子,我们提供 TCP/IP 环境中的 NetBIOS 名称数据包格式:

 Header (12 bytes) 
 Question Entry (variable) 
 Answer Resource Records (variable) 
 Authority Resource Records (variable) 
 Additional Resource Records (variable)

  NBTSTAT命令可以用来查询涉及到NetBIOS信息的网络机器。另外,它还可以用来消除NetBIOS高速缓存器和预加载LMHOSTS文件。这个命令在进行安全检查时非常有用。

 用法:nbtstat [-a RemoteName] [-A IP_address] [-c] [-n] [-R] [-r] [-S] [-s] 
 参数 :
 -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: 如果第一次连接失败,就会显示这个状态,表示试着重新连接

NETBIOS给用户带来的潜在危害[ ]

  当安装TCP/IP协 议时,NetBIOS 也被Windows作为默认设置载入,我们的计算机也具有了NetBIOS本身的开放性。某些别有用心的人就利用这个功能来攻击服务器,使管理员不能放心使用文件和打印机共享。

  利用NETBIOS漏洞进行攻击的端口分别为:

  135端口开放实际上是一个WINNT漏洞,开放的135的端口情况容易引起自外部的“Snort”攻击!

  对于135端口开放的问题,可以在你的防火墙上,增加一条规则:拒绝所有的这类进入的UDP包,目的端口是135,源端口是7,19,或者135,这样可以保护内部的系统,防止来自外部的攻击。大多数防火墙或者包过滤器已经设置了很多严格的规则,已覆盖了这条过滤规则,但仍需注意:有一些NT的应用程序,它们依靠UDP135端口进行合法的通讯,而打开你135的端口与NT的RPC服务进行通讯。如果真是这样,你一定要在那些原始地址的系统上(需要135口通讯),实施上述的规则,指定来自这些系统的通讯可以通过防火墙,或者,可以被攻击检测系统所忽略,以便维持那些应用程序的正常连接。为了保护你的信息安全,强烈建议你安装微软的最新补丁包。

  上面我们说到Netbios(NETwork Basic Input/Output System)网络基本输入输出系统。是1983年IBM开发的一套网络标准,微软在这基础上继续开发。微软的客户机/服务器网络系统都是基于NetBIOS的。在利用Windows NT4.0 构建的网络系统中,对每一台主机的唯一标识信息是它的NetBIOS名。系统可以利用WINS服务、广播及Lmhost文件等多种模式通过139端口将NetBIOS名解析为相应IP地址,从而实现信息通讯。在这样的网络系统内部,利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Internet上,它就和一个后门程序差不多了。因此,我们很有必要堵上这个可怕的漏洞。

非局域网用户如何防范NETBIOS漏洞攻击[ ]

  在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.

相关条目[ ]

参考来源[ ]