本文主要是介绍NBNS分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一,NetBIOS基本概念
NetBIOS: NetBIOSServices Protocols, RFC-1001,1002,网络基本输入/输出系统协议。
Provides threedistinct services:
(1)Name service for name registration and resolution.
(2)Session service for connection-oriented communication.
(3)Datagram distribution service for connectionless communication.
每个计算机在网络中都有一个NetBIOS名称和一个IP地址。
Windows系统对IPV6网络不再支持NetBIOS名称解析。
第二,什么是WINS服务
WINS (WindowsInternet Name Service): WINS is Microsoft's implementation of NetBIOS NameService (NBNS), a name server and service for NetBIOS computer names.
WINS服务器用于登记记录计算机NetBIOS名称和IP地址的对应关系,供局域网计算机查询。
WINS数据库是动态更新的。计算机每当初始化TCP/IP后都会将它的NetBIOS名和IP地址的对应关系映射到WINS服务器的数据库中。
第三,Windows系统的名字(NetBIOS名称、域名)解析机制(如图所示)
Hosts文件(本地文件)
NetBIOS缓存(本地文件)
DNS服务器解析(DNS数据包)
WINS服务器解析(NBNS数据包)
NetBIOS广播查找(NBNS数据包)
第四,为什么在Windows局域网络中存在有大量的NBNS数据包
如果在局域网络中抓取并观察数据包,会发现有大量的NBNS数据包。
根据以上Windows系统的名字的解析机制,不难看出:如果计算机需要知道一个NetBIOS名称或者域名对应的IP地址,首先会查找本地Hosts文件和NetBIOS缓存,其次会去联系DNS服务器进行解析。如果这几种方式都无法完成解析,则计算机会发出NBNS数据包。
在现实网络中,名字解析(不管是NetBIOS名称解析还是域名解析)的需求是非常巨大的,数据包也非常多。由于局域网的安全限制,或者流氓软件对某些域名的大量访问,或者局域网本地计算机之间的大量访问,都会导致非常多的NBNS数据包。
下面分析一个NBNS包:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
1 | ff | ff | ff | ff | ff | ff | b0 | 10 | 41 | b9 | a0 | b7 | 08 | 00 | 45 | 00 |
2 | 00 | 4e | 12 | 45 | 00 | 00 | 40 | 11 | 55 | 1b | ac | 1e | bb | 02 | ac | 1e |
3 | ff | ff | 00 | 89 | 00 | 89 | 00 | 3a | 69 | 97 | dc | 11 | 01 | 10 | 00 | 01 |
4 | 00 | 00 | 00 | 00 | 00 | 00 | 20 | 45 | 4a | 45 | 4f | 45 | 47 | 45 | 50 | 45 |
5 | 44 | 44 | 43 | 43 | 4f | 45 | 45 | 46 | 46 | 45 | 43 | 45 | 42 | 43 | 4f | 45 |
6 | 4f | 45 | 46 | 46 | 45 | 41 | 41 | 00 | 00 | 20 | 00 | 01 |
|
|
|
|
先来分析MAC帧的首部:目的地址:0xff ff ff ff ff ff这个是广播地址(broadcast)
再来分析IP:
目的地址:0x ac 1e ff ff,即:172.30.255.255,因为这是连接的宿舍的wifi查看自己的ip信息,发现此时自己的ip是:172.30.187.2,而子网掩码是:255.255.0.0,说明这个目的地址是本网络内的IP广播地址,现在自己所处的网络号是:172.30.0.0/16
协议字段:这里是0x11,即17,应该表示的下面的是UDP的数据包
再来分析一下UDP:
目的端口号和源端口号都是:0x0089,即:137,这个端口号应该是NBNS协议专用的吧?
长度字段是:0x00 3a,即:58B,正好是3C~6L的数据长度
正式来分析NBNS:
dc | 11 |
TransactionID:0xdc 11,即:56337,不知道什么意思
01 | 10 |
Flags:即,0x00000001 0001 0000,要分开来分析,
其中第一个bit为0表示:Response:message is query
第2到第5的bit为0表示:opcode namequery(0)
第7个bit为0表示:Truncated:message isnot truncated
第8个bit为0表示:recursiondesired:do query recursively
第12个bit为0表示:Broadcast:broadcastpacket
00 | 01 |
Questions:0x00 01,即:1,表示:questions:1,不知道啥意思
00 | 00 |
AnswerRRS:0,不知道啥意思
00 | 00 |
AuthorityRRS:0,不知道啥意思
00 | 00 |
AdditionalRRS:0,不知道啥意思
下面的从4G~6L全部是queries:
其中从4J~6H共34B是:name,不知道啥意思
再往下:
00 | 20 |
表示的是type:NB
00 | 01 |
表示的是:Class:in
这篇关于NBNS分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!