简介
NetBIOS(Network Basic Input/Output System)即网络基本输入/输出系统协议,英文原义:NetBIOS Services Protocols。是由IBM公司开发,主要用于数十台计算机的小型局域网。NetBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,几乎所有的局域网都是在NetBIOS协议的基础上工作的。
NetBIOS是一个网络协议,在上世纪80年代早期由IBM和Sytec联合开发,用于所谓的PC-Network。虽然公开发表的文档很少,协议的API却成为了事实上的标准。
使用令牌环和以太网传输的NetBIOS现在被称为NetBEUI。在Micrsoft Windows 98发布之前,一直广泛使用。在TCP/IP上运行的NetBIOS称为NBT,由RFC 1001和RFC 1002定义。NBT的基本思想是在基于IP的网络上模拟基于NetBIOS的PC-Network。NBT在Windows 2000中引入,是现在首选的NetBIOS传输。
构成
NetBIOS名称用来在网络上鉴别资源。程序用这些名称开始和结束会话。你能用多个程序配置一台单独的机器,每个程序都有独特的NetBIOS名称。每台支持应用的pc机也有用户定义或通过内部方法获得NetBIOS站名。
NetBIOS能包含至多16个阿尔法数字字母。在整个资源路由网络里,字母的组合必须独特。在一台使用NetBIOS的pc机在网络上能完全工作起来之前,PC必须先登记NetBIOS名称。当客户端活跃时,客户端广播它的名称。当它成功广播自己,并没有其他人和它重名,客户端就登记成功。登记过程如下:
1.在登陆上,客户端在所有地方广播它自己和它的NetBIOS信息6到10次,确保其他网络成员收到信息。
2.如果有客户端A已用此名,客户端A发布它自己的广播,包括它正在使用的名字。请求登陆的客户端停止所有登记的企图。
3.如无其他客户端反对登记,请求登陆的客户端完成登记过程。
在windows操作系统中,默认情况下在安装TCP/IP协议后会自动安装NetBIOS协议,NetBIOS的报文类型较多、结构复杂,在不同的网络环境和不同用途中会使用不同的报文,可用端口进行区分,WINS协议使用的NetBIOS名字报文UDP 137端口,NetBIOS数据报报文使用UDP 138端口,NetBIOS会话报文使用TCP 139端口。
1.NetBIOS Names System 封包格式及各字段分析 封包格式
字段分析
标识:占16位、也叫事务ID,请求方为每次名字服务请求所设定的ID值,响应方在相应的响应报文中要填入这个事务ID值
代码和标志:占16位:
请求/响应:占1位、声明是请求报文还是响应报文
操作码:占4位、声明报文的类型
授权答复:占1位、是否为授权答复
截断:占1位、是否截断
期望递归:占1位、是否期望递归
可用递归:占2位、是否有可用递归
广播:占2位、是否是广播
响应码:占4位、指示请求的结果
问题数:占16位、在问题记录字段中的问题数量,如果是响应报文,该字段为0。
回答数:占16位、在回答记录字段中的回答数量。
权威记录数:占16位、在权威记录字段中的记录数量。
附加记录数:占16位、在附加记录字段中的记录数量。
数据:问题记录、回答记录、权威记录、附加记录。
数据包分析
命令:nbtstat -a <ipaddress>,请求远程计算机名称表,抓包。
请求报文:
响应报文:
响应报文中名称数组:
2.NetBIOS Datagrams 封包格式及各字段分析 封包格式
其中,当数据包的消息类型字段为0x10(发送给相邻的特定主机),0x11(发送给直连网段内的全部主机),0x12(广播给全部主机),此时的报文格式为:
数据包分析
3.NetBIOS Sessions 封包格式及各字段分析 封包格式
字段分析
类型:占8位、指明会话报文的类型,可用的值有:{0x00:会话消息,0x81:会话请求,0x82:正面会话响应,0x83:负面会话响应,0x84:重定向会话响应,0x85:会话保活}。
标志:占8位、0~6位保留未使用,第七位作为扩展长度位,使NetBIOS会话报文的内容部分最多可以达到128k字节。
长度:占16位、NetBIOS会话报文的内容部分的长度,不包括首部的4字节。
数据包分析
<–可用的参考文档实在太少了,水平有限,只能整理出这些了–>