LLMNR和NetBIOS的防范
端口剖析
这里我总结一下能够利用LLMNR和NetBIOS进行欺骗的前提如下:
必须在受害计算机上启用 NetBIOS 或 LLMNR。此外,受害计算机上的防火墙必须允许此流量进入机器,默认情况下,机器使用端口 UDP 137、UDP 138、TCP 139、TCP 5355 和 UDP 5355。
攻击者系统必须与受害计算机位于同一网段(本地子网)。本质上,攻击者计算机必须能够接收到受害计算机的流量。
NetBIOS
最常用的三个端口就是137、138、139
137端口:137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务),属于UDP端口,使用者只需要向局域网或互联网上的某台计算机的137端口发送一个请求,就可以获取该计算机的名称、注册用户名,以及是否安装主域控制器、IIS是否正在运行等信息。
138端口:主要提供NetBIOS环境下计算机名的浏览功能。
139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"和SAMBA。
为什么会产生漏洞的原因或许存在于137端口呢?因为在Windows网络通信协议--“NetBIOS over TCP/IP(NBT)”的计算机名管理功能中使用的是137端口。
计算机名管理是指Windows网络中的电脑通过用于相互识别的名字--NetBIOS名,获取实际的IP地址的功能。可以用两种方法使用137端口。
一种方法是,位于同一组中的电脑之间利用广播功能进行计算机名管理。电脑在起动时或者连接网络时,会向位于同组中的所有电脑询问有没有正在使用与自己相同的NetBIOS名的电脑。每台收到询问的电脑如果使用了与自己相同的NetBIOS名,就会发送通知信息包。这些通信是利用137端口进行的。
另一种方法是利用WINS(Windows因特网名称服务)管理计算机名。被称为WINS服务器的电脑有一个IP地址和NetBIOS名的对照表。WINS客户端在系统起动时或连接网络时会将自己的NetBIOS名与IP地址发送给WINS服务器。与其他计算机通信时,会向WINS服务器发送NetBIOS名,询问IP地址。这种方法也使用137端口。
如上所述,为了得到通信对象的IP地址,137端口就要交换很多信息包。在这些信息包中,包括有很多信息。利用广播管理计算机名时,会向所有电脑发送这些信息。如果使用NBT,就会在用户没有查觉的情况下,由电脑本身就会向外部散布自己的详细信息。
防范
1.最实用的方法在每台计算机的 NIC 上禁用 NetBIOS 并通过 DHCP 禁用 LLMNR ,但是这对于一些需要使用到NetBIOS和LLMNR服务的组织不太友好,所以更好的方法是每个系统的主机防火墙上通过阻止 NetBIOS 协议和 TCP 端口 139 以及 LLMNR UDP 端口来限制出站 NetBIOS 和 LLMNR 流量5355。这样就可以有效的防止这几个端口流量出站。
2.但是使用禁用端口流量的方法并不保险,可能攻击者会使用端口的方法从另外端口将NetBIOS和LLMNR的流量转发出站。所以另外一种防范办法就是将默认端口改成一些不会引起攻击者注意的高端口,即将端口重定向。这种重定向的方法修改注册表里面的PortNumber
修改即可。
3.跟第一点防范方法比较相似的另外一种方法便是给这几个端口配置IPsec安全策略,这样在攻击者试图这几个端口进行扫描的时候就不会得到任何回应。