刚刚抓包发现了一个NBNS协议的数据包,出于兴趣查了一下资料,原来是这么一回事情。
NBNS = NetBIOS Name Service,应该是在做命名查询。微软WINS的实现就是一个例子。例如开启了WINS的主机就会发出目的地址地址.*.*.255进行广播,使用UDP协议,连137端口。
可是很多人,尤其是一些网管经常发现大量的这样报文,最终影响网络,甚至导致交换机的瘫痪,这是为什么呢? 一下就有一个例子:
最近也发现很多接入交换机出现类似的情况,因为接入交换机端口所属VLAN在核心交换机上也有,最终竟然导致接入交换机和汇聚交换机、核心交换机间的链路阻塞,使得网络变得基本不通
初步分析了一下捕获到的数据,基本认定原因在于好多个人计算机内包含恶意/流氓软件,会不停地访问btamail.net、bar.baidu.com、sobar.baidu.com等域名,同时,windows的名字解析机制的顺序是:
1. hosts
2. net bios, wins, lmhosts
3. dns
所以,就会在网络中产生大量nbns的数据包
解决办法(准备测试):
设置交换机的ACL禁用源端口137、目的端口137,如果要用到wins服务,另当别论。
NetBIOS:
是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API
历史
NetBIOS是一个网络协议,在上世纪80年代早期由IBM和Sytec联合开发,用于所谓的PC-Network。虽然公开发表的文档很少,协议的API却成为了事实上的标准。
随着PC-Network被令牌环和以太网取代,NetBIOS也应该退出历史舞台。但是,由于很多软件使用了NetBIOS的API,所以NetBIOS被适配到了各种其他的协议上,比如IPX/SPX和TCP/IP。
使用令牌环和以太网传输的NetBIOS现在被称为NetBEUI。在Micrsoft Windows 98发布之前,一直广泛使用。在TCP/IP上运行的NetBIOS称为NBT,由RFC 1001和RFC 1002定义。NBT的基本思想是在基于IP的络上模拟基于NetBIOS的PC-Network。NBT在Windows 2000中引入,是现在首选的NetBIOS传输。
概述
不管使用哪一种传输方式,NetBIOS提供三种不同的服务:
名字服务:名字登记和解析
会话服务:可靠的基于连接的通信
数据包服务:不可靠的无连接通信
当NetBIOS是数据链路层协议时,可以通过5Ch中断访问其功能。传递给这些函数的消息使用NCB格式。
NetBIOS和NetBEUI被设计为仅仅用于局域网,因此不支持路由,并且最多只能处理72个节点或者设备。NetBIOS和NetBEUI经常使用广播实现,尤其是名字服务的相关操作。
NBT使用一个或多个NBNS(NetBIOS Name Server(s))将名字服务扩展到多个子网。NBNS是动态DNS的一种,Microsoft的NBNS实现称为WINS。另外,为了将虚拟的NetBIOS网络扩展到多个IP子网,WINS标准还引入了一个或者多个NBDD(NetBIOS Datagram Distribution) 服务器。不幸的是,微软的NBDD实现从来没有工作过。
NBNS(NetBIOS Name Service)
名字服务。名字服务器。
类似于TCP/IP协议中的DNS,它负责查找目标机器相应的节点地址(TCP/IP协议中为IP地址),并赋予一个NetBIOS名称。
NetBIOS的缺陷危及到NBNS(NetBIOS Name Service)。特定情况下,对于NBNS(NetBIOS Name Service)请求,目标系统内存的随机数据会做出响应。这些数据可以是目标系统用户正在浏览的html页面数据的一部分,也可以是存在于目标系统内存的数据。攻击者可以发送一个特定的NBNS请求到目标系统,然后可以获得可能包含目标系统内存的数据。如果用户涉及的安全级别很高,关闭了 UDP 137端口,那么基于Internet的攻击就不可能实现。
NetBIOS Name Server
最近也发现很多接入交换机出现类似的情况,因为接入交换机端口所属VLAN在核心交换机上也有,最终竟然导致接入交换机和汇聚交换机、核心交换机间的链路阻塞,使得网络变得基本不通
初步分析了一下捕获到的数据,基本认定原因在于好多个人计算机内包含恶意/流氓软件,会不停地访问btamail.net、bar.baidu.com、sobar.baidu.com等域名,同时,windows的名字解析机制的顺序是:
1. hosts
2. net bios, wins, lmhosts
3. dns
所以,就会在网络中产生大量nbns的数据包
解决办法(准备测试):
设置交换机的ACL禁用源端口137、目的端口137,如果要用到wins服务,另当别论
NetBIOS是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API
历史
NetBIOS是一个网络协议,在上世纪80年代早期由IBM和Sytec联合开发,用于所谓的PC-Network。虽然公开发表的文档很少,协议的API却成为了事实上的标准。
随着PC-Network被令牌环和以太网取代,NetBIOS也应该退出历史舞台。但是,由于很多软件使用了NetBIOS的API,所以NetBIOS被适配到了各种其他的协议上,比如IPX/SPX和TCP/IP。
使用令牌环和以太网传输的NetBIOS现在被称为NetBEUI。在Micrsoft Windows 98发布之前,一直广泛使用。在TCP/IP上运行的NetBIOS称为NBT,由RFC 1001和RFC 1002定义。NBT的基本思想是在基于IP的络上模拟基于NetBIOS的PC-Network。NBT在Windows 2000中引入,是现在首选的NetBIOS传输。
概述
不管使用哪一种传输方式,NetBIOS提供三种不同的服务:
名字服务:名字登记和解析
会话服务:可靠的基于连接的通信
数据包服务:不可靠的无连接通信
当NetBIOS是数据链路层协议时,可以通过5Ch中断访问其功能。传递给这些函数的消息使用NCB格式。
NetBIOS和NetBEUI被设计为仅仅用于局域网,因此不支持路由,并且最多只能处理72个节点或者设备。NetBIOS和NetBEUI经常使用广播实现,尤其是名字服务的相关操作。
NBT使用一个或多个NBNS(NetBIOS Name Server(s))将名字服务扩展到多个子网。NBNS是动态DNS的一种,Microsoft的NBNS实现称为WINS。另外,为了将虚拟的NetBIOS网络扩展到多个IP子网,WINS标准还引入了一个或者多个NBDD(NetBIOS Datagram Distribution) 服务器。不幸的是,微软的NBDD实现从来没有工作过。
=================================================================================
NetBIOS Services Protocols
中文释义:(RFC-1001,1002)网络基本输入/输出系统协议
注解:该协议是由IBM公司开发,主要用于数十台计算机的小型局域网。NetBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,几乎所有的局域网都是在NetBIOS协议的基础上工作的。
应 用:在Windows操作系统中,默认情况下在安装TCP/IP协议后会自动安装NetBIOS。比如在Windows 2000/XP中,当选择“自动获得IP”后会启用DHCP服务器,从该服务器使用NetBIOS设置;如果使用静态IP地址或DHCP服务器不提供NetBIOS设置,则启用TCP/IP上的NetBIOS。具体的设置方法如下:首先打开“控制面板”,双击“网络连接”图标,打开本地连接属性。接着,在属性窗口的“常规”选项卡中选择“Internet协议(TCP/IP)”,单击“属性”按钮。然后在打开的窗口中,单击“高级”按钮;在“高级TCP/IP设置”窗口中选择“WINS”选项卡,在“NetBIOS设置”区域中就可以相应的NetBIOS设置。
———————————————以下由Perfectshi补充———————————————
——什么是NetBIOS,NetBIOS的作用
NetBIOS(Network Basic Input Output System,网络基本输入输出系统),是一种应用程序接口(API),系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。因为它占用系统资源少、传输效率高,尤为适于由 20 到 200 台计算机组成的小型局域网。 所以微软的客户机/服务器网络系统都是基于NetBIOS的。
当安装TCP/IP协 议时,NetBIOS 也被Windows作为默认设置载入,我们的计算机也具有了NetBIOS本身的开放性,139端口被打开。某些别有用心的人就利用这个功能来攻击服务器,使管理员不能放心使用文件和打印机共享。
——利用NetBIOS漏洞攻击
1.利用软件查找共享资源
利用NetBrute Scanner 软件扫描一段IP地址(如10.0.13.1~10.0.13.254)内的共享资源,就会扫描出默认共享
2. 用PQwak破解共享密码
双击扫描到的共享文件夹,如果没有密码,便可直接打开。当然也可以在IE的地址栏直接输入扫描到的带上共享文件夹的IP地址,如“\10.0.13.191”(或带C$,D$等查看默认共享)。如果设有共享密码,会要求输入共享用户名和密码,这时可利用破解网络邻居密码的工具软件,如PQwak,破解后即可进入相应文件夹。
——关闭NetBIOS漏洞
1. 解开文件和打印机共享绑定
鼠标右击桌面上[网络邻居]→[属性] →[本地连接] →[属性],去掉“Microsoft网络的文件和打印机共享”前面的勾,解开文件和打印机共享绑定。这样就会禁止所有从139和445端口来的请求,别人也就看不到本机的共享了。
2. 利用TCP/IP筛选
鼠标右击桌面上[网络邻居] →[属性]→[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[选项], 在列表中单击选中“TCP/IP筛选”选项。单击[属性]按钮,选择“只允许”,再单击[添加]按钮(如图2),填入除了139和445之外要用到的端口。这样别人使用扫描器对139和445两个端口进行扫描时,将不会有任何回应。
3. 使用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端口攻击了。
————————————————————————————————————————
Supplemented by ihui
NetBIOS:网络基本输入输出系统
(NetBIOS:Network Basic Input Output System)
网络基本输入输出系统(NetBIOS)由 IBM 公司开发。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 包含三种基本服务: NAME、SESSION 和 DATAGRAM。作为例子,我们提供 TCP/IP 环境中的 NetBIOS 名称数据包格式:
Header (12 bytes)
Question Entry (variable)
Answer Resource Records (variable)
Authority Resource Records (variable)
Additional Resource Records (variable)