SMB端口号说明

SMB端口号是 TCP/445,还有一些说法是 SMB端口号还包括 137~139, 这种说法只是部分正确;

早期版本的 SMB(SMB 1.0) 最初设计为在 TCP/IP(NBT)上的 NetBIOS 上运行,它使用:

  • TCP/139 进行会话服务(session services)

  • TCP/UDP/137 进行名称服务(name services)

  • UDP/138 进行数据报服务(datagram services)

默认情况下,为了向后兼容,NBT在windows种被安装和启用; 它因将文件共享和其他信息暴露给网络上的所有人而闻名;虽然它在局域网中这样做问题不大,但如果暴露在互联网上,就会有安全风险。

中间人攻击(MITM,man in the middle) 和 NetBIOS 名称服务(NBNS) 欺骗攻击在启用NTB的网络中很常见,特别是在相关端口没有得到适当保护的情况下。

SMB 和 NTB 有什么关系?

TCP/IP上的NetBIOS(NBT)是一个完全独立于SMB的服务,它不依赖SMB的任何东西。

另一方面,SMB协议反而可能依赖NetBIOS与不支持TCP/IP直接托管的SMB的旧设备进行通信,因此,SMB协议在通过NBT运行时依赖于139端口。

通常情况下,对于通过TCP/IP直接托管的SMB,端口号为TCP/445; 如果 NetBIOS 与 SMB 同时可用(也就是说 139 和 445 端口同时监听),那么哪个先响应,就和哪个协议进行通信。

而 SMB2.0 只可以在 TCP/445 上运行,所以用户可以安全的禁用NBT,以提高安全性并减少NetBIOS广播引起的网络开销。

要查看系统中 139 和 445 端口的状态,可以使用以下powershell 命令。

PS C:\Users\Administrator> Get-NetTCPConnection -LocalPort 139,445 -ea 0 | select Local*,Remote*,State,@{n="ProcessName";e={(Get-Process -Id $_.OwningProcess).ProcessName}}| ft -Auto

LocalAddress LocalPort RemoteAddress RemotePort State ProcessName
------------ --------- ------------- ---------- ----- -----------
::                   445 ::             0 Listen System
192.168.157.1        139 0.0.0.0        0 Listen System
192.168.3.91         139 0.0.0.0        0 Listen System
172.25.254.100       139 0.0.0.0        0 Listen System
172.25.253.1         139 0.0.0.0        0 Listen System
169.254.102.110      139 0.0.0.0        0 Listen System

可以看到当前本地网络正在监听...如果想要禁用 NBT,则需要手动在每个网络接口上单独完成,操作步骤如下图:

如果有多张网卡想要批量一次性关闭,可以执行如下 powershell 的脚本

$adapters = (Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.IPEnabled -eq $true})
Foreach ($adapter in $adapters)
{
    $adapter.SetTcpipNetbios(2) # 2表示禁用;0 表示通过DHCP配置NetBIOS; 1表示启用

将以上代码保存为 disable_NBT.ps1 并右键以 powershell 进行运行即可生效,执行后再次查看端口监听状态可以发现 139 端口全部没了

PS C:\Users\Administrator> Get-NetTCPConnection -LocalPort 139,445 -ea 0 | select Local*,Remote*,State,@{n="ProcessName";e={(Get-Process -Id $_.OwningProcess).ProcessName}}| ft -Auto

LocalAddress LocalPort RemoteAddress RemotePort State ProcessName
------------ --------- ------------- ---------- ----- -----------
::       445 ::      0 Listen Syste

end​​​​​​​

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐