ntlm认证,绕过NTLM认证方式的另一种方法

绕过NTLM认证方式的另一种方法 - 网络安全 - 电脑教程网

绕过NTLM认证方式的另一种方法

日期:2007-05-15   荐:
众所周知,在默认情况下开启win2k的telnet服务后,如果要登陆上去的话,首先要修改微软Telnet的NTLM认证方式。网上流传了很多种修改方法,常见的有:

1.直接使用OpenTelnet.exe在开启telnet服务的时候就修改NTLM认证方式。(必须要有Admin账户密码和服务器开放IPC共享服务)

2.用流光的种植者远程运行NTLM.exe程序,修改NTLM认证方式。(必须要有Admin账户密码和服务器对IPC共享服务的支持)

3.还可以使用echo命令写个包括交互式控制命令的脚本,利用dos重定向给tlntadmn.exe后,即执行 c:\winnt\system32\tlntadmn.exe < c:\脚本名 便改掉了NTLM认证方式。(必须要有足够权限的shell或后门)

4.然后就是用eva的利用WMI的WSH脚本远程开启telnet并修改NTLM认证方式。(必须要有Admin账户密码和服务器开放WMI服务)

5.最后还有在客户端使用服务器端admin的用户名及密码身份开启cmd再telnet上去。(必须要有Admin账户密码和有足够权限的shell或后门)

当然,以上说的每种方法都有每各自的方便,我也想到一种方法可以修改NTLM认证方式,可以说是第五种方法的孪生兄弟。不敢独享,故分享之。

首先看看win2k的帮助:

来宾帐户由在这台计算机上没有实际帐户的人使用。帐户被禁用(不是删除)的用户也可以使用来宾帐户。来宾帐户不需要密码。来宾帐户默认是禁用的,但也可以启用。

可以象任何用户帐户一样设置来宾帐户的权利和权限。默认情况下,来宾帐户是内置来宾组的成员,该组允许用户登录工作站或成员服务器。其他权利及任何权限都必须由管理员组的成员授予来宾组。

来宾组允许偶尔或临时用户登录工作站的内置来宾帐户,并授予有限的能力。来宾组的成员也可以关闭系统。

从上面的解释中我们不难看到来宾帐户是可以匿名的。这也就是说,如果来宾帐户被开放了的话,就可以使用本系统中并不存在的用户进行匿名IPC连接,当然也包括telnet了。所以我们想要绕过NTLM认证方式,我们完全可以从来宾帐户入手:

首先我们将默认禁用的来宾帐户Guest激活,并清空其账号密码,在CMD下的命令是 net user Guest /active:yes 和net user Guest "" ;然后将其加入Administrators组,在CMD下的命令是 net localgroup administrators Guest /add ;最后我们就可以用除服务器上存在的用户名为名的其他账号开启CMD环境,再在这个环境下telnet,一样可以登陆上。和首先说的第五种方法相比较,就不难发现,首先说的第五种方法是需要知道服务器中存在的Admin账户及密码为前提的,而我说的这种方法则是刚好和他相反,可以使用服务器中不存在的账户。
以下是简单的实践过程:测试环境为2台win2k Professional,其中一台是用VMware虚拟的,IP是192.168.0.112,另外一台是系统本身,IP是192.168.0.111。

1.在虚拟的服务器端上执行
net user Guest "" /*清空Guest账号的密码*/
net user Guest /active:yes /*激活Guest账号*/
net localgroup administrators Guest /add /*将Guest账号加入管理员组*/
net start telnet /*打开telnet服务*/
这里为了方便我是直接在虚拟机192.168.0.112中直接执行的,大家也可以在获得的有权限的shell后门中执行这些命令。如图一:


2.客户端执行
net user mix /add /*在本地建立一服务器中不存在的空密码账户*/
runas /profile /user:mix cmd /*以mix的身份打开一新的CMD窗口*/
在192.168.0.111上执行上述这些命令,如图二。


3.最后在客户端新开的CMD窗口中我们就可以直接登陆服务器192.168.0.112了,如图三。



简单分析一下我这种方法和网上流传的几种方法的差别。除上述的第三种方法外的其他方法,都必须要有服务器端一个Admin账户和密码,如果不知道当然也可以想办法用其他方式在服务器上自己建一个。但关键的是这些方法要么需要IPC连接,要么需要启动WMI服务。我的方法和第三、第五种方法的前提条件有点相似,但只需要一个有添加adminstartors组组员权限的shell就可以办到了。而且用我的方法telnet上去(使用3389终端连接没有条件测试,有兴趣的朋友可以自己试试)之后,都不会像用其他方法登陆上去一样,在Documents and Settings文件夹下建立相应账户的用户的配置文件,省去了擦PP的辛苦~~~呵呵,懒人!


好了,让我们再想想看,还有什么可以利用的。对,我们应该想到克隆!很多人都喜欢将自己肉鸡中的Guest账户克隆成administrator,这样一来,就相当于将Guest激活并加入了administrators工作组,这和我们刚才所做的手续功效基本吻合。由此可见,只要有人将自己肉鸡的Guest账户克隆并且没有给Guest设置密码的话,我们就可以用该肉鸡中不存在的用户名进行IPC连接或者是telnet上去,我们的权限绝对是admin,要谢谢这些仁兄了~~~呵呵。怎样做才可以防止别人这样抢占我们的劳动成果呢?很简单,为我们的Guest账户设上强壮的密码,这样的话在匿名登陆的时候,除非所使用的账号的密码和我们设置的密码相同,否则将不能够通过验证。设置Guest账号密码在CMD环境下的命令是:net user guest “passWord” 其两个引号中的字符便是你想要设置的密码。

[1] [2]  


稍微再扩展一点,如果在服务器端存在一密码为空的账户既属于Guests来宾组又属于administrators管理员组,那么是否已可以匿名telnet呢?实践证明这是错的。原因是只有Guest账号才能代表全局的来宾账户,Guests组的其它用户不能启用匿名登陆功能,这和win98访问win2k共享资源时必须将Guest账户打开并不设密码是差不多的原理。

既然说了攻,当然也要说防了。再看一条微软的帮助:

如果对用户设置了“下次登录时用户必须更改密码”,则当使用 NTLM 身份验证时,登录到 Telnet 服务器的尝试将会失败。用户必须直接登录到服务器并更改密码,然后再通过 Telnet 登录。

以上的帮助写得再清楚不过了,我们只要将Guest账户设置好强壮的密码或是将其账户属性在账户控制台中改为“账户已停用”和“下次登录时用户必须更改密码”就可以防止来宾帐户telnet了。这当然是保险系数不高的,再来招隐蔽点的。并不是所有人都注意到telnet到服务器上去之后,Telnet服务器那边默认会执行C:\WINNT\system32\login.cmd这个全局登录脚本的,我们只要用记事本打开这个文件,在其最后一行加上一句:exit 。这样被可以使那些telnet上来的人自动断开连接的,不会留给他执行任何命令的时间。当然,管理员也不能认为这样便可以一劳永逸了,毕竟人上有人、天外有天,只有定时不定时的做好测查管理员组和启动的服务以及本机所打开的端口等工作,才能守好自己的阵地。

(出处:http://www.sheup.com)


 [1] [2] 

标签: