1997年:nbtscan 最初发布。最初版本是为了简化和自动化 NetBIOS 信息的扫描,支持 Windows 网络的设备检测。nbtscan 工具自 1997 年首次发布以来,经历了多个版本的更新与优化。它逐渐成为网络管理员和安全专家的重要工具,帮助对局域网设备进行扫描,发现潜在的网络安全隐患。

nbtscan - NETBIOS 名称服务器扫描程序

GitHub - charlesroelli/nbtscan: NetBIOS scanning tool. Currently segfaults!

nbtscan 命令行工具在 Windows 系统平台 上的发展时间线:

1. nbtscan 工具简介

  • nbtscan 是一个用于扫描局域网中 NetBIOS 信息的命令行工具,可以发现网络上的设备、共享资源、计算机名等。它常用于网络管理员或者安全专家对局域网的扫描和管理。

2. 工具初期版本与发展

  • 1997年:nbtscan 最初发布。最初版本是为了简化和自动化 NetBIOS 信息的扫描,支持 Windows 网络的设备检测。
  • 2000年:工具得到了广泛使用,特别是在安全领域和网络管理领域,用于扫描局域网中的设备,查找潜在的安全风险。

3. 功能更新

  • 2000年代初期:nbtscan 工具开始支持更复杂的命令行选项,允许用户更精细地控制扫描范围、协议支持和输出格式。
  • 2004年:出现了对 IPv6 支持的初步更新,并且开始与其他网络分析工具(如 Nmap)集成,增强了网络扫描能力。

4. 现代化与开源更新

  • 2010年:nbtscan 开始开源,并且其功能得到了增强。源代码被上传到 GitHub 等平台,允许开发者参与改进。
  • 2015年:随着网络技术的发展,nbtscan 工具进一步优化了支持的操作系统版本,包括 Windows 和 Linux 系统的兼容性得到了增强。

5. 当前版本及其发展

  • 2020年:nbtscan 继续被维护,提供对最新的网络协议的支持,并增强了对 Windows 系统的兼容性,尤其是在最新的 Windows 10 和 Windows Server 系统版本中,功能更加稳定。
  • 目前:nbtscan 被广泛应用于网络安全、渗透测试等领域,尤其在渗透测试中的使用,用于扫描局域网的设备、共享服务等信息,帮助安全专家发现潜在的网络威胁。

6. 总结

  • nbtscan 工具自 1997 年首次发布以来,经历了多个版本的更新与优化。它逐渐成为网络管理员和安全专家的重要工具,帮助对局域网设备进行扫描,发现潜在的网络安全隐患。

日期及时间 版本 更新内容
2008年4月8日 16:24:16 PDT 1.0.35 增加了ZIP文件制作选项(仅限makefile)
2008年4月8日 16:06:13 PDT 1.0.34 对-P模式,现在引用所有'名称' => 值标签(用于Ruby)
2007年3月16日 12:21:41 PST 1.0.33 使用MSVC6重新编译
2005年8月30日 07:28:01 PDT 1.0.32 轻微清理:禁用了不工作的CIFS和其他未使用的命令
2003年10月2日 10:30:49 PDT 1.0.31 在版本字符串中用网址替换了电子邮件地址
2002年5月27日 13:20:18 PDT 1.0.29 正确查找包含连字符的主机名
2002年3月11日 21:18:50 PST 1.0.28 现在报告Dr. Solomon AV管理的NETBIOS名称
2002年3月10日 12:13:58 PST 1.0.27 默认绑定到随机的UDP端口号
2002年3月10日 10:01:25 PST 1.0.26 如果无法识别NETBIOS资源类型,则在摘要行写“?”,提示应进一步调查
2002年3月8日 13:21:35 PST 1.0.25 启用了“-P”选项以生成perl hashref
2002年3月7日 12:42:23 PST 1.0.24 扩展了“-v -v”数据包转储显示
2001年4月21日 09:37:38 PDT 1.0.23 向帮助信息中添加了默认值
2001年2月12日 15:40:16 PST 1.0.22 使用不进行DNS查找的库重新编译(如果/##存在)
2001年1月12日 18:25:21 PST 1.0.21 修复了类型大于0x7F的问题
2001年1月12日 16:47:03 PST 1.0.20 为SCO Open Server 5进行了一些小的端口修复
2000年10月29日 15:05:00 PDT 1.0.18 添加了-H选项用于HTTP头,用户名称中有空格时加上引号
2000年10月24日 13:01:22 PDT 1.0.17 在库修复后重新编译
2000年10月17日 12:41:22 PDT 1.0.16 修复了库中的断言失败
2000年10月6日 12:46:28 PDT 1.0.15 现在在简短列表中显示用户名(U=)
2000年10月6日 09:13:47 PDT 1.0.14 尝试在列表中识别域控制器(首次尝试),修复了一个小的核心转储错误
2000年6月22日 21:32:44 PDT 1.0.13 解决了无名称问题
2000年6月22日 11:31:10 PDT 1.0.12 开始修复parse_nbtscan()处理中的无名称错误
2000年6月20日 08:12:08 PDT 1.0.11 删除了所有代理内容,现在使用库“parse_target()”
2000年6月9日 11:08:33 PDT 1.0.10 检查新的Perforce depot结构
2000年5月17日 12:31:40 PDT 1.0.9 进行了便携性修复
2000年4月20日 20:45:43 PDT 1.0.8 添加了合理的usage()消息(终于!),进行了大量的PC-Lint清理
2000年4月10日 16:49:27 PDT 1.0.7 现在仅要求NT平台上的Winsock 1.1(没有UNIX更改)
2000年4月10日 14:42:01 PDT 1.0.6 添加了多目标支持,开始增加良好的重试支持
2000年4月9日 19:56:51 PDT 1.0.5 尝试实现广播模式(没有成功)
2000年4月9日 08:09:51 PDT 1.0.4 为Unixware进行了小的端口修复,要求sleep_msecs()函数有实际的实现体!
2000年4月9日 07:31:57 PDT 1.0.3 为目标规格添加了DNS查找(终于!),显示反向DNS名称与以太网地址一起,添加了'-V'选项显示版本信息
2000年4月8日 09:27:03 PDT 1.0.2 移植到NT(简单!)

命令行参数

当 nbtscan 在没有命令行参数的情况下运行时,它会报告 简短的“帮助”列表,总结了可用选项,它们是 在这里展开。

--version
-V
这只是显示当前版本信息,我尝试 在每次重建时保持更新。版本历史记录如下。
-f
这显示了每台机器的完整 NBT 资源记录响应 扫描,而不仅仅是一行摘要。这在学习时推荐 一台计算机,但在扫描较大的计算机时,它的用处要小得多 范围。
-O 输出文件
将结果发送到 outfile 而不是标准输出。
-H
生成 HTTP 标头。在渗透测试期间,有时我们会 能够在远程 IIS Web 上安装 nbtscan.exe 程序 server 并使用 “Unicode” 漏洞运行它,但由于输出 是 “常规” 文本,则输出会被 Web 服务器混淆 认为这是一个坏的 CGI 脚本。-H 选项添加了一个简单的 Content-type: text/plain 标题,其中包含一个空行,该空行使 输出显示正确。
-P
生成 Perl hashref 输出,可以加载到 一个更容易处理的现有程序。这要容易得多 比解析文本输出。
-v
这会打开一些更详细的调试,但这确实是 仅供开发人员使用,可能不会对最终用户有所帮助 那么多。代码被认为是从一个版本到另一个版本的“冗长”更改 因为 bug 会被追踪,我们没有努力让它在 一般情况。
-n
在几种报告模式下,远程计算机的 IP 地址为 用作查找 “inverse” 名称的键。这通常是有帮助的, 但是许多名称服务器配置错误,导致这种情况出现 设置为 “hang”,因此 -n 关闭此反向名称查找。
-p 端口
这允许将 UDP 端口号的指定用作 发送查询的源。通常,程序会随机选择一个 ephemeral port number,这在大多数情况下是完全足够的。
但某些 Windows 95 计算机将其响应发送到端口 137 无论查询来自何处(我们认为这是一个 bug),因此 使用 -p 137 将强制 NBTSCAN 绑定到此端口 随机的。此外,如果源 port 为 53 (DNS)。
但请注意,您不能绑定到已在使用的端口, 在 Windows 上,这通常意味着端口 137 对 你。
-米
在响应中包含 MAC(又名“以太网”)地址,即 已经被 -f 选项暗示。
-T 
在扫描大量地址时,并不总是很清楚何时 我们“完蛋了”。如果我们发出(比如)五个查询,我们显然已经完成了 当我们收到 5 个响应,但如果任何机器没有响应,我们就必须 依赖超时。-T 选项控制我们将等待任何 response,默认值为 2 秒。
-w 毫秒
除非正在扫描本地网络,否则我们通常无法 爆破多次查询,以免数据包在途中丢失。我们通常会暂停 在每次网络写入作后短时间,以允许清除 out 之前发送另一个,这允许该时间的 “tuning”。 它以毫秒为单位指定,默认值为 10 毫秒。
-t 次尝试
尝试每个地址,直到尝试次数,这在处理时很有用 使用(以某种方式)丢弃数据包的远程网络。一旦给定的 machine 已响应,则不会再次查询。默认值 = 1。
-n
不要在完整列表(显示 IP 地址)中查找反向 DNS 名称。
-1
强制使用 Winsock 版本 1(仅限 Windows)而不是 默认值通常为 version 2。

防火墙问题

如果您使用的是数据包过滤路由器,则可能会遇到一些问题。 UDP 没有“已建立”连接的概念,您可能也没有 希望允许所有入站 UDP 流量到达您的工作站。所以,我们 为此做出了一些有限的规定。如果您运行的是 “真正的” 防火墙 要么是有状态的,要么使用 NAT(网络地址转译),则此 部分不适用于您。

进行传出 UDP 探测时,源端口号通常为 硬编码为固定值(通常为“1234”),因此返回的数据包将 被定向到此端口,并且可以被过滤器识别。

假设您的工作站是 192.168.1.1,则 Cisco 访问列表规则 将:

access-list n permit udp   any eq 137   host 192.168.1.1 eq 1234

这允许所有返回的数据包,而不允许太多的坏数据包 东西,我们已经使用这条规则很长时间了。请注意,您必须 将 n 替换为与正确入站关联的访问列表 滤波器。

请注意,一些较旧的 Windows 客户端将响应端口 137,即使 源端口是其他端口,它们将在 防火墙。如果您在 Windows 计算机上运行 nbtscan,则 程序永远不会绑定到这个端口,所以 防火墙会阻止它。

更新:从版本 1.0.27 开始,源端口现在是 ephemeral (“random, non-privileged”) 端口,主要是因为我的哑数据包 过滤路由器已经消失了一年多。这 此更改的另一个副作用是我可以运行两个 在同一台计算机上进行独立扫描。

引用

  • 我们找到了一份出色的 WINS 指南,其中包括许多背景知识 WINS 的工作原理以及 nbtstat 如何发挥作用。
  • 不过,这里还有另一个同名的程序 该程序至少是其两倍大,并且需要额外的 900 KB Cygwin DLL。

 

posted @ 2025-06-29 13:21  suv789  阅读(48)  评论(0)    收藏  举报