“话匣子”端口137和138
请看表3。您一定看得出这些信息的重要性。该表列出的就是能够由137端口得到的主要信息。只需向Windows的137端口发送一个询问连接状态的信息包,就可以得到表中所示的信息。因为返回的信息包中包括这些信息,就这么简单!
具体而言,就是说通过137端口除了该机的计算机名和注册用户名以外,还可以得到该机是否为主域控制器和主浏览器、是否作为文件服务器使用、IIS和Samba是否正在运行以及Lotus Notes是否正在运行等信息。据SecurityFriday.com公司的Michiharu Arimoto介绍:“除了计算机名以外,还可以准确地了解IIS、主域控制器、主域浏览器以及文件服务器等相关信息。虽说不是百分之百,但有时还能够得到其他信息”。
也就是说,只要您想获得这些信息,只需向这台个人电脑的137端口发送一个请求即可。只要知道IP地址,就可以轻松做到这一点。不只是公司内部网络,还可以通过因特网得到这样的信息。
对于攻击者来说,这简直太方便了,可以很容易地了解目标电脑的作用及网络的结构。随意地泄漏这样的信息,就好象是很友好地告诉攻击者应该如何来攻击自己的电脑。比如,如果知道IIS服务正在运行,就可以轻松地了解这台电脑上已经起动的服务。攻击者根本不必特意地通过端口扫描来寻找可以下手入侵的端口。
另外,如果捕捉到正在利用137端口进行通信的信息包,还有可能得到目标主机的起动和关闭时间。这是因为Windows起动或关闭时会由137端口发送特定的信息包。如果掌握了目标主机的起动时间,就可以非常轻松地使用上一次所讲的IE'en等软件通过135端口操作对方的DCOM。
使用137端口,管理计算机名
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端口就要交换很多信息包。在这些信息包中,包括有如表3所示的很多信息。利用广播管理计算机名时,会向所有电脑发送这些信息。如果使用NBT,就会在用户没有查觉的情况下,由电脑本身就会向外部散布自己的详细信息。
138端口用于浏览
而138端口也和137端口一样会向外部发送自己的信息。尽管信息量没有137端口那么多,但其特点是会被别人得到Windows的版本信息。比如,会泄漏Windows版本是Windows 2000 Server。
138端口提供NetBIOS的浏览功能。该功能用于显示连接于网络中的电脑一览表。比如,在Windows2000中由“网络邻居”中选择“整个网络”后,就会完整地显示连接于网络中的电脑。
该功能使用的是与上面所讲的计算机名管理不同的运行机制。在浏览功能中,被称为主浏览器的电脑管理着连接于网络中的电脑一览表的浏览列表。每台电脑在起动时或连接网络时利用138端口广播自己的NetBIOS名。收到NetBIOS名的主浏览器会将这台电脑追加到浏览列表中。需要显示一览表时,就广播一览表显示请求。收到请求的主游览器会发送浏览列表。关闭电脑时,机器会通知主浏览器,以便让主浏览器将自己的NetBIOS名从列表中删除掉。这些信息的交换使用的是138端口。由于这里也会进行广播,因此就会将自己的电脑信息发送给同组中的所有电脑。
公开服务器应关闭NetBIOS
NetBIOS服务使用了137和138端口的向外部发送自己信息的功能。一般情况下,这是一种在连接在因特网上的公开服务器不需要的服务。因为NetBIOS主要用于Windows网络中。因此,公开服务器应该停止这种服务。
而对于在公司内部网络环境中构筑Windows网络的电脑来说,NetBIOS则是必要的服务。如要停止NetBIOS,反过来就必须放弃Windows网络的方便性。
图4●停止NBT服务的方法。选择“将NetBIOS over TCP/IP设置为无效”
不过,如果是Windows 2000以上的版本,不使用NetBIOS也能够管理计算机名(详情后述)。因此如果是全部由Windows 2000以上的个人电脑构筑而成的网络,就可以停止NBT。虽说如此,此时方便性就会降低,比如,无法显示用于寻找文件共享对象的信息。
要想停止NetBIOS服务,首先由控制面板中选择目前正在使用的网络连接,在属性窗口中查看“Internet协议(TCP/IP)”的属性。在“常规”页标中单击“高级”按钮,在“WINS”页标中选择“禁用TCP/IP上的NetBIOS(S)”即可(图4)。这样,就可以关闭137、138以及后面将要讲到的139端口。
在此需要注意一点。NetBEUI协议如果为有效,NetBIOS服务将会继续起作用。在Windows 95中,NetBIOS是在默认条件下安装的。在更高的Windows版本中,如果选择也可以安装。所以不仅要停止NBT,还应该确认NetBEUI是否在起作用。如果使用NetBEUI,即便关闭137端口,也仍有可能向外部泄漏表3所示的信息。(待续)