忘记Windows XP,Server2003密码的完美解决方法

本文已发表于《黑客X档案》第三期,转载请注明出处,因上传图片过多,暂不上传图片了

忘记Windows XP,Server2003密码的完美解决方法

-- tavor
1. 受影响系统版本:
Windows Server 2003(中文版)
Windows XP(英文版) With SP1
Windows XP(中文版) With SP1
Windows XP(英文版)
Windows XP(中文版)
Windows 2000 Professional (中文版) With SP4
Windows 2000 Professional (中文版) With SP3
Windows 2000 Professional (中文版)
Windows 2000 Server (中文版)
因笔者手中系统版本有限,且时间有限,不能对所有以NT架构的所有Windows系统进行一一验证,还请各位有能力和有条件高手进行测试!
2. 问题描述
以上系统的Print Spooler Service,(关于此服务的详细描述:Loads files to memory for later printing,中文意思就是:将文件加载到内存以便迟后打印).在系统默认状态是开启下,其所依赖的后台文件为/system32/spoolsv.exe,而本地用户在另一个系统下如DOS可对其随意改动,但在系统启动时并不对其进行完整性检查,也不是系统启动时所必需的系统文件,因而如果本地用户在另一系统下对其进行替换,比如用一个telnet服务程序或系统后门对spoolsv.exe进行替换,这样,这些telnet服务程序或后门程序就会继承原Print Spooler Service的系统权限,从而本地用户可以利用这些telnet服务程序或后门程序执行任意命令。再者如果系统使用的磁盘格式为NTFS,则可通过在DOS下专门访问NTFS分区工具NTFSDOS Professional对spoolsv.exe进行替换,但这还不能完全实现本地的权限提升,但已经可以从网络实现对系统的完全控制,可以执行任何命令。此时可以通过用cmd.exe对本地的logon.scr文件进行替换,这样在出现系统登录画面显示后,不要动鼠标或键盘,大约十分钟,就会一个具有极低权限的命令行shell,此时执行对后门程序或telnet程序的本地连接,就可以获得系统权限,此时可以执行任何命令。但经笔者测试可能有的机器在长时间也不出现屏保,即得不到cmd.exe替换得到的shell,这样就只能通过另一个电脑来远程登录后门服务,获取shell,这样,得到的权限仍然是系统权限,可以执行任何命令!
3. 漏洞分析
NT架构的Windows系统默认启动的服务所依赖的程序有dllhost.exe,lsass.exe,services.exe,svchost.exe,再一个就是我们现在所利用的spoolsv.exe了,
一看就知道dllhost.exe是和dll有关,替换掉的后果可想可知;lsass.exe和系统登录有关系的,在我在《黑客X档案》第七期杂志发表的文章中提到过如果把XP的SAM文件删除掉,lsass.exe文件在登录的时候就会提示出错,因而它也是不可替换的;还有就是services.exe文件,一看给人的想法就是和service有关,我试了一下,替换掉的结果就是,不会出现登录界面,而是黑屏,什么都没有,看样子是行不通的;再者就是svchost.exe了,这个是NT架构服务中最重要的文件了,自启动的80%的服务都是依赖这个程序的,因此替换它是根本不行的(此处分析有误,见后续文章介绍);最后就锁定在这个spoolsv.exe了,它所依赖的服务Print Spooler Service默认是Automatic(自启动),而它并不是系统启动并必须的(我一般安装的2K,XP后都常常会停止掉到这个服务的,不过一般人都是按默认配置的,还是很具有一般性的)。替换掉系统服务后,用于替换的这个程序就具有了系统权限,但是你如果想和这个程序通信就必须要有一个shell,无论是图形界面的还是通过命令行界面的,这里我在第七期的文章中提到过用cmd.exe替换logon.scr就能得到一个超低权限的cmd.exe构成的shell,这样通过这个shell与本地后门服务进行通信,就可以轻松获得系统权限,从而可以执行任意指令。
4. 漏洞测试
所需工具:
winshell(一个telnet服务程序,这里当作后门程序来用,当然你用其它的后门程序也可)
NTFSDOS Professional(如果当前系统所在盘为NTFS格式则利用它,如果不是,就用不到了)。
步骤:
用DOS启动盘启动到DOS状态下,转移到系统目录d:/windows/system32下,把spoolsv.exe更名为spoolsv2.exe,并把logon.scr更名为logon.scr,测试所用的是一个telnet服务程序Winshell,把Winshell生成的服务器程序server.exe更名为spoolsv.exe,用把cmd.exe拷贝为logon.scr,然后取出DOS启动盘,执行RESTART命令重启,以上所有命令如下:
c:/windows/system32 ren spoolsv.exe spoolsv2.exe
c:/windows/system32 ren logon.scr logon2.scr
c:/windows/system32 copy c:/winshell/server.exe spoolsv.exe
c:/windows/system32 copy cmd.exe logon.scr
c:/windows/system32 restart
对Windows 2000 Professional系统在DOS下的好作
重启以后,或者直接通过另一台电脑用telnet 211.×.×.× 5277或者重启到登录界面不动鼠标和键盘,大约十分钟以后出现cmd.exe所替换掉的屏保,此时同样执行telnet 211.×.×.× 5277(211.×.×.×是本次试验的机器IP,5277这里是Winshell程序默认的服务端口号),然后你此时可以对管理员的密码进行重新设置,所用命令如下:
c:/ telnet 211.×.×.× 5277
password:58801353(在winshell中我设的密码为58801353)
c:>shell
c:/> net user administrator 58801353
c:/> exit
这样就把管理员的密码改为了58801353,或者执行
c:/>net user tavor 58801353 /add
c:/>net localgroup administrators tavor /add
这样就成功新建了一个名字为tavor密码为58801353的用户,并成功把他添加到了管理员组中。此时退出telnet 登录,并退出屏保cmd.exe,这样就返回到原先的登录界面,此时就可以用刚才新建的用户或新设的密码进行登录了,对了,还有就是别忘了改回被替换的文件,以免你设的后门程序再被别人利用。
5. 利用实例
我的电脑放假前一直装着两个系统 WIN XP WITH SP1 英文版和WIN SERVER 2003 ENTERPRISE 中文版,因为XP出了点问题,不得不进行系统重装,但是重装相对于SERVER 2003低版本的XP,会造成系统盘根目录一些重要启动文件更改或丢失,SERVER2003就因此再也进不去了。我回来以后,就用SERVER2003的盘修复了一下,不一会,2003就出现了登录界面,我突然想起来,完了,密码给忘了,因为微软太注意服务器的安全性了,默认要求管理员的密码很复杂,好像是要求至少8位,其中还必须包括大写字母,小写字母,数字,特殊符号,只记得当时设了有123,a,A,还有!@#几个特殊字符,但是如何组合的却一点也记不得了,我只好在哪里狂试了几次,都不对,虽然自己是计算机系的学生,知道设置安全密码的重要性,但从来都没设过这么复杂的密码,因为毕竟高手少些,再说自己根本没有太重要的东东,方便还是占了很重要的,现在可真的是FAINT了,想到可以替换掉服务程序,并通过替换到logon.scr来获取shell的方法,就可以轻松拿到系统权限了。这样一想,我真想高兴的叫起来,因为我的2003是装过以后就没用过的,一切都是默认配置,而且没有装过任何一个程序,只能从系统默认的服务入手了,现在只能先回到XP下再说了,看看有什么默认启动的服务再说了,让我更晕的是2003的登录界面根本没有重启的选项(是防止非管理人员对服务器的恶意关闭和重启),只能来个冷重启了(我的爱机啊,我的心在滴血,555….),重启到XP,察看了所有默认启动的服务,找个每个服务所依赖的后台程序,并对每个进行试验和排查后,最后就锁定在spoolsv.exe了,启动到DOS,替换掉相应的文件,其在DOS下的好作过程如下图:

Windows Server 2003在DOS下的好作
重启到登录界面,现在就等着出现屏保了,可是等了N长时间还是没有出现,这里就如我在上面说的,可能长时间也不出现登录屏保,那就先用另一台机子试验吧,如下图:

用telnet远程登录winshell后门的Windows Server 2003主机
这里211.*.*.*IP是装有Windows Server 2003的主机,5277是我用Winshell服务程序的端口。接着如下图:

telnet上Server 2003主机后建用户改密码的全过程
这里可以看到显示的Windows系统版本为5.2.37091,表明为2003 Server版(XP的版本为5.01.****,2000的版本为5.00.****),成功登录,并成功设置了管理员帐号的密码,也新建了一个名叫tavor的用户,并将其成功提升为管理员,我立马高兴的不行了(这种成就感真是没说的,从前都一直以为XP和2003在本地固若金汤,现在却这样被我轻易进去了,55….),然后跑回到自己的机子,还是没有出现登录“屏保”,就等不急地用新设的管理员密码登录进去(因为新建用户虽是管理员却没密码,对没密码的用户只能本地命令行登录),最后成功进入!^_^
这里2003都成功了,那么XP和2000呢,我到DOS下,把2003被改的文件全改回来,并把Windows XP的文件给替换了,最后重启到登录界面,如图:

刚开始的Windows XP的登录界面
过了大约10分钟左右吧,如下图:

在本地“屏保”下telnet上本地Windows XP并设置密码,添加用户,提升权限
成功建立后,退出“屏保”,现在的登录界面如下面:

退出屏保后出现的用户登录界面,出现了新用户tavor
用新建的用户登录进去后,查看一下新建用户的权限,如下图:

成功登录后察看新建用户的tavor的权限
6.解决方法
目前还没有官方发布的解决方法。
临时解决方法,如果你不是经常使用或根本用不着打印,那么就到控制面板里毫不客气地停掉它,并设其启动方式为Manual或Disabled。再者就是使用NTFS磁盘格式,给本地提升设置一些障碍。
7.后记
因为XP和SERVER2003一直没有普遍有效的能在忘记管理员密码的情况下的解决方法,因此写本文的主要目的是用来能帮助广大被黑主机(已丢管理员密码)或因设置过于复杂密码的管理员们忘记密码来恢复管理员密码的。本人是山东大学N-Byte团队的成员,也是山东大学计算机学院的一名本科生,一直挺关注计算机安全方面,这应该和我的专业有关吧。在2003年发表过一篇关于忘记XP密码解决方法方面的文章,并在里面提到过替换掉logon.scr获得shell的问题,并猜想替换其它东东的后果,但此后一直和团队进行我们的防火墙(网络守望者)的开发,一直到九月份底才完成网络守望者1.0版的开发,现在我们团队正在进行网络守望者2.0的内部测试和包装,在不久也会和大家见面,希望大家以后能多多关注我们团队。在此特感谢我的朋友陈诚,王伟还有我们团队成员一直以来对我的鼓励、支持和帮助!
8.声明
请不要用本文用于任何非法活动,由于传播、利用此文章所提供的信息而造成的任何直接或间接后果及损失,均由使用者本人负责,作者不为此承担任何责任,本问题的发现者拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经作者本人允许,不得任意修改或增减此文章的内容。

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值