当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?

作者:精品下载站 日期:2024-12-14 23:00:14 浏览:15 分类:玩电脑

如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?


大多数现代网络中使用的广播协议 NetBIOS over TCP/IPLLMNR 只是为了与旧版 Windows 版本兼容。这两种协议都容易受到欺骗和 MITM 攻击。 Metasploit 中有现成的模块,可让您轻松利用广播 NetBIOS 和 LLMNR 协议中的漏洞来拦截本地网络中的用户凭据(包括 NTLMv2 哈希值)。为了提高网络安全性,您需要在域网络上禁用这些协议。让我们了解如何手动或通过组策略禁用 Windows 10/Windows Server 2019 中的 LLMNR 和 NetBIOS 协议。

链路本地多播名称解析 (LLMNR) 协议

LLMNR(UDP/5355,链路本地多播名称解析)用于从 Vista 开始的所有 Windows 版本,允许 IPv6 和 IPv4 客户端由于本地 L2 网段中的广播请求而无需使用 DNS 服务器来解析相邻计算机的名称。如果 DNS 不可用,则自动使用此协议(在 Windows 工作组中,此协议用于网络发现)。因此,如果域中有 DNS 服务器,则不需要此协议。

TCP/IP 协议上的 NetBIOS

NetBIOS over TCP/IP 或 NBT-NS (UDP/137,138;TCP/139) 是一种广播协议,是 LLMNR 的前身,用于在本地网络中发布和搜索资源。默认情况下,所有 Windows 版本中的所有网络接口都启用 NetBIOS over TCP/IP 支持。

在 Windows 上,您可以使用 nbtstat 命令显示 NetBIOS 统计信息和通过 NBT 的当前 TCP/IP 连接。为了通过 IP 地址获取计算机名称:

nbtstat -A 192.168.131.190

[玩转系统] 如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?

正如您所看到的,nbtstat 在本地网络上使用 NetBIOS 协议找到了一台计算机并返回了其名称。

您可以在 NetBIOS 缓存中显示同一本地网络上相邻计算机的所有记录:

nbtstat -c

NetBIOSLLMNR 协议允许本地网络上的计算机在 DNS 服务器不可用时相互查找。也许在工作组环境中需要它们,但在域网络中这两个协议都可以禁用。

提示。在域中大规模实施这些策略之前,我们强烈建议测试禁用 NetBIOS 和 LLMNR 的计算机和服务器。如果禁用 LLMNR 通常不会出现问题,那么禁用 NetBIOS 可能会导致旧设备的运行瘫痪。

使用 GPO 在 Windows 上禁用 LLMNR

您可以使用以下 PowerShell 命令通过注册表在本地 Windows 计算机上禁用 LLMNR 协议:

New-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT" -Name DNSClient  -Force
New-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name EnableMultiCast -Value 0 -PropertyType DWORD  -Force

在域环境中,可以使用组策略在计算机和服务器上禁用 LLMNR 广播。去做吧:

  1. 打开

    gpmc.msc

    、创建一个新的 GPO 或编辑一个应用于所有工作站和服务器的现有 GPO;

  2. 转到计算机配置 -> 管理模板 -> 网络 -> DNS 客户端;

  3. 通过将值更改为已启用来启用关闭多播名称解析策略;

  4. 等待客户端上的 GPO 设置更新,或使用以下命令手动更新它们:

    gpupdate /force

或者,您可以使用 GPP 在域计算机上部署 EnableMulticast=0 注册表参数(在注册表项 HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient 上)。

在 Windows 10/Windows Server 2019 上禁用 TCP/IP 上的 NetBIOS

注意。 NetBIOS 可能由旧版 Windows 版本(2000、XP 等)和某些非 Windows 设备使用,因此在禁用之前应在每个特定环境中进行测试。

您可以在 Windows 上手动禁用 NetBIOS,如下所示:

  1. 打开网络连接属性

  2. 选择TCP/IPv4并打开其属性

  3. 单击高级,然后转到WINS 选项卡并选择禁用 TCP 上的 NetBIOS

  4. 保存更改。

[玩转系统] 如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?

如果您的计算机上有多个网络适配器(或 VLAN),则需要在每个适配器的属性中禁用 NetBIOS。

您可以从 Windows 命令提示符检查网络适配器的 NetBIOS over TCP/IP 状态:

ipconfig /all |find "NetBIOS"
NetBIOS over Tcpip . . . . . : Disabled

您也可以通过注册表禁用特定网络适配器的 NetBIOS。每个网络适配器在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces 下都有一个单独的注册表项,其中包含其 TCPIP_GUID。

要禁用特定适配器的 NetBIOS,请转到其注册表项并将 NetbiosOptions 参数的值更改为 2(默认情况下为 0)。

[玩转系统] 如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?

您可以使用特殊的 DHCP 选项在从 Windows DHCP 服务器接收 IP 地址的域客户端上禁用 NetBIOS。

  1. 跑过

    dhcpmgmt.msc

    控制台,连接到 DHCP 服务器并选择 Scope Option 区域设置(或服务器 - 服务器选项);

  2. 转到高级选项卡,然后在供应商类别下拉列表中选择Microsoft Windows 2000 选项

  3. 启用001 Microsoft禁用Netbios选项并将其值更改为0x2

[玩转系统] 如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?

如何通过组策略禁用 TCP/IP 上的 NetBIOS?

没有单独的 GPO 选项允许在组策略编辑器或 Windows 10/Windows Server 2019 的最新版本管理模板中禁用所有网络适配器的 NetBIOS over TCP/IP。 使用以下 PowerShell 登录脚本完全禁用所有网络适配器的 NetBIOS:

$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose}

将此代码保存到 disableNetbios.ps1 文件,将其复制到 GPO 目录并通过计算机配置 -> 策略 -> Windows 设置 -> 脚本 -> 启动 -> PowerShell 脚本在客户端上运行。

如果当前的 PowerShell 执行策略阻止此脚本在 Windows 计算机上运行,则必须对 PS1 脚本进行签名或以旁路模式运行它。

[玩转系统] 如何使用 GPO 在 Windows 中禁用 NetBIOS 和 LLMNR 协议?

注意。要使此更改生效,您必须启用/禁用网络适配器或重新启动计算机。

然后打开命令提示符并运行以下命令以检查网络适配器(隧道接口除外)的 NetBIOS 是否已禁用:

wmic nicconfig get caption,index,TcpipNetbiosOptions

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯