NetBIOS 为什么该关
NetBIOS over TCP/IP 用广播做名称解析,NBT-NS 查询可被投毒:攻击者冒充主机名把流量引导到自己机器上,进而截获 SMB 认证哈希。域环境里名称解析本应走 DNS,关闭 NetBIOS 既减少广播噪声,也收掉一条经典的凭据窃取路径。
基本信息
| 适用平台 | Windows Server / Windows 10+(成员机与独立机) |
|---|---|
| 配置位置 | 每块网卡的 TcpipNetbiosOptions 注册表项 |
| 目标值 | 2(禁用 NetBIOS over TCP/IP) |
| 基线 | 所有 IPEnabled 网卡均为 2 |
典型使用场景
- 域成员服务器:名称解析统一走 DNS,关闭 NetBIOS 无明显副作用
- 安全加固基线落地:NBT-NS 投毒是内网渗透的标准起手式
- 减少广播噪声:大二层网络里 NBT-NS 广播会明显拖慢终端响应
- 工作组环境评估:确依赖 NetBIOS 名称的遗留应用要单独列例外
核查网卡当前值
核查网卡当前值
# 0=由 DHCP 决定 1=启用 2=禁用
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled=True" | Select-Object Description, TcpipNetbiosOptions逐网卡禁用
逐网卡禁用
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled=True" | ForEach-Object {
Invoke-CimMethod -InputObject $_ -MethodName SetTcpipNetbios -Arguments @{TcpipNetbiosOptions = 2} | Out-Null
}
# 复核:返回的每块网卡都应为 2
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled=True" | Select-Object Description, TcpipNetbiosOptions取值读法
| 取值 | 含义 | 说明 |
|---|---|---|
| 0 | 由 DHCP 服务器决定 | 结果随网络环境变化,不适合作基线 |
| 1 | 启用 NetBIOS | 默认常见值,可被 NBT-NS 投毒利用 |
| 2 | 禁用 NetBIOS | 基线目标值,名称解析走 DNS 与 LLMNR |
依赖 NetBIOS 名称的遗留应用(工作组共享、旧 ERP 与打印设备发现)会受影响;域环境用 DNS 解析基本无感,仍建议先在少量机器上验证。
NetBIOS 是「名称解析三兄弟」之一,LLMNR 与 mDNS 同样可被投毒,三者要一起收:只关其中一个,攻击面只是换了个入口。
批量核查思路
批量核查思路
# 远程批量核查:把目标机清单读进来逐台取网卡状态
$hosts = Get-Content .\hosts.txt
foreach ($h in $hosts) {
# 逐台输出描述与当前值,非 2 的机器单独记录
$r = Get-CimInstance -ComputerName $h -ClassName Win32_NetworkAdapterConfiguration -Filter "IPEnabled=True" -ErrorAction SilentlyContinue
$r | Select-Object @{n='Host';e={$h}}, Description, TcpipNetbiosOptions
}结果要留档:把每台机器每块网卡的取值写进整改台账,复测时直接比对,能省掉大量重复核查的人力。
域控本身同样要改:名称解析服务由域控承担,域控若仍开着 NetBIOS,NBT-NS 投毒照样能诱骗域内主机交出认证尝试。收口顺序建议先成员机后域控,避免解析出现长时间中断。