提到Windows系统的网络登录,一般我们首先想到的是3389登录,也就是通过终端连接服务器登录目标机器。但是,你可能还不是十分清楚,Windows系统之间的网络登录其实大部分是通过139端口进行的。这是由SMB/CIFS协议所规定的,客户端通过139建立连接,发送用户名和密码到服务器端,服务器端在139端口监听,接受到客户端的请求后,检查接收到的用户名和口令,如果错误,则拒绝连接,如果正确,则给予客户端相应的权限,这就是Windows最基本网络登录过程。
上面的说法你可能会觉得很抽象,实质上,这个登录过程我们可以形象的把它看作目标机器建立IPC连接。你执行的net use命令跟机器建立IPC连接,就是通过139发出请求,如果你的net命令里所使用的用户是Administrators组的,则建立成功后目标机器会给你的IPC连接Administrators权限,如果是Guest的权限,当然,如果是用空连接,那得到的权限是微不足道的了。
关于IPC的小知识:IPC是Internet Process Connection的缩写,也就是远程网络连接。它是Windows NT/2000/XP特有的一项功能,就是在两个计算机进程之间建立通信连接。然后,一些网络通信程序的通信可以建立在IPC上面。打个比方,IPC连接就像是挖好的地道,然后我们用程序通过地道访问远程主机。默认情况下,IPC是共享的,也就是说微软已经为我们挖好了这个地道(IPC)。建立IPC连接需要什么条件呢?首先自己的系统应该是WinNT以上的,Windows 98不可以,因为Win98网络管理这方面的功能很少,Windows 98没有IPC,IPC是Windows NT和Windows 2K/XP/2003才有的。
OK,理解了IPC连接,我们再深入一步,其实IPC也是一种共享资源,只不过比较特殊罢了,我们用net use建立IPC连接的时候,说白了,就是用我们所掌握的用户名和口令申请对方的IPC共享资源。同样的,我们用net use命令映射对方磁盘的时候,也是用我们掌握的用户名和口令申请对方磁盘共享资源。所以,net use这个命令不管你申请IPC资源还是磁盘资源,都通过139端口先进行网络登录,然后进行的。
网络登录过程基本上就这样了,我们继续深入,看一下网络登录获得的权限问题。首先要说一下,在这权限问题上,Windows 2000系统和Windows XP系统的处理是不同的。
先来看Windows 2000。Windws 2000系统做得比较实在(呵呵,怎么这么说呢?),Windows 2000系统完全是按照你提供的用户名和口令赋予登录权限的,也就是你用超级用户登录(就是建立连接了),那你就可以得到超级用户的连接权限,你用Guest登录,你得到Guest的连接权限,而你用空连接的话,那得到的权限就象前面说的,微不足道。
再来看Windows XP,这就跟Windows 2k系统不同了。默认的Windows XP系统不是根据你提供的用户名和口令来赋予登录权限的。这点你可以在Windows XP系统的帮助里面找到,如图所示(如图)。Windows XP的网络登录有两种模式可用:“典型”和“仅来宾”,详细的解释如下:
Windows XP系统的帮助
如果将登录模式设置为“典型”则登录过程中使用客户提供的用户进行登录,登录成功后具有这个用户的权限。如果设置为“仅来宾”,则登录过程中不论是用什么用户登录,如果登录成功,则自动映射到“来宾”帐户,也就是只有Guest用户的权限,简单的说,Windows XP网络登录所获得的权限取决于系统的设置,如果为“典型”,那么你可以获得你所拥有用户的相应权限,如果你有超级用户,那么取得的权限就是超级用户权限,而如果为“仅来宾”,那么无论你用什么用户权限,即使是超级用户,建立连接后得到的只能是Guest权限,很不幸的是,Windows XP系统默认设置是“仅来宾”。
网络登录的权限问题搞清楚了,下面我们扩展一下,当我们去请求目标机器的资源的时候都需要什么权限,IPC$很简单,在目标系统默认设置下,无论Guest用户,Administrator用户,甚至NULL,都可以进行登录,而磁盘资源则不同,默认设置下,只能用Administrators组的用户登录,也就是只能超级用户权限映射磁盘。
现在网络登录已经讲的差不多了,下面看一下一个具体的问题,以下是一个朋友在论坛上发的帖子:局域网中,对方使用XP,打开了139端口,我用对方机器上的超级用户IPC连接(密码和用户名都肯定正确),提示成功,想用net use z:ipd$这个命令映射对方的D盘,却老是提示用户名和密码不正确,就算我把正确的用户名和密码输进去,还是不行。这是为什么啊??
有了前面我所介绍的基础,现在我们完全可以来回答这个问题了,对方是Windows XP系统,有了正确的超级用户的口令,用这个口令建立IPC连接成功,可是映射磁盘不成功,原因就出在Windows XP的“仅来宾”的默认设置上,不管你用什么口令登录,都是Guest权限,而映射磁盘必须是Administrator权限,所以,磁盘根本无法映射成功,IPC可以连接成功,是因为建立IPC连接不需要什么特别的权限,任何用户口令甚至为NULL都可以。
下面我们来总结一下,默认设置下,Windows 2000系统只要你有超级用户的权限,就可以获取目标的任何共享资源,Windows XP系统则不同了,因为默认设置是“仅来宾”,所以,无论你用什么用户登录,即使你有超级用户的口令,但登录后得到的权限仅仅是Guest。