CNET中国·ZOL 080429 【原创】 作者: 中关村在线 张齐 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

  我们知道,管理员为了保证终端电脑的安全,都会批量对终端进行限制,有的甚至只打开了80端口,进行简单的网页浏览,这对于需要一些特殊操作或者有安装软件需求的朋友来说,因为没有管理员的权限而无法完成正常操作。这种原本想部署安全策略的战术,是否能够如愿以偿呢?

    其实通过一些方法,我们完全可以躲过这种常见的安全防护。

    一、系统漏洞

   
利用系统漏洞是最直接的方法!微软在2007年下半年发布了一个“Windows XP 核心驱动 secdrv.sys 本地权限提升漏洞”,利用这个本地溢出漏洞,我们可以获得本地的最高权限。

    所谓Windows XP 核心驱动 secdrv.sys 本地权限提升漏洞,可以让任意用户提升到SYSTEM权限。该漏洞发生在驱动程序“secdrv.sys”的 IRP_MJ_DEVICE_CONTROL例程中,因为缺少必要的对必要的参数进行检查,导致可以写任意字节到任意核心内存,导致D.o.S或者权限提升。

    该漏洞的利用工具为“Windows Local Privilege Escalation Vulnerability Exploit”,我们解压后,在命令提示符窗口下进入该文件夹,执行溢出程序文件名,可看到程序溢出格式为:localPrivilege.exe <command>

    其中“<command>”也就是我们要执行的命令或程序名,通过溢出程序执行指定的命令或程序,就可让命令或程序在溢出后以管理员权限执行。我们可将某个程序放到与“localPrivilege.exe”同一个文件夹中,执行如下命令:localPrivilege.exe  notepad.exe

    命令执行后,可以看到溢出过程:首先访问要溢出的驱动服务,并新建一个执行环境,打开存在漏洞的驱动后进行溢出,溢出成功后,为指定的程序或命令新建一个管理员权限的进程。这里执行的是“notepad.exe”进程,由于获得了管理员进程,因此“notepad.exe”可以成功的执行了。

    要知道,我们刚才的操作利用了命令行窗口,如果某些终端上的权限设置非常严格,连运行cmd命令提示符窗口的权限都没有,此时该如何做呢?我们可以打开记事本程序,在其中书写溢出命令,然后保存为.bat批处理文件。将批处理文件放在溢出工具所在文件夹中,运行批处理程序即可进行溢出提权了。



    二、提权升级

   
虽然每次要运行或安装什么程序时,可以利用上面的溢出工具来执行程序,但是执行起来比较麻烦,如果我们能有一个管理员帐户,就更方便了。但新建一个管理员又谈何容易,毕竟是跨级别操作,新建用户名都会提示错误,更别说加用户到管理员组了。只有继续利用溢出工具来留后门了。


    在命令行窗口中执行命令:localPrivilege.exe cmd.exe,命令执行后,即可自动再打开一个命令提示符窗口,这个命令提示符窗口与刚才的命令提示符窗口是不同的,它具备了最高的SYSTEM权限。在此窗口就可以正常的执行各种命令了,随意的添加新用户,提升为管理员。:

net user administrat0r 123 /add
net localgroup administrators administrat0r /add

命令执行后,即可创建一个名为“administrat0r”的管理员帐户,其密码为“123”。以后想要无限制的运行各种程序和执行操作,可以注销当前的受限用户,重新以“administrat0r”为用户名,“123”为密码,登录系统即可成功获得管理员权限。



    三、隐藏后门

   
为了保障帐号安全,我们可以利用克隆方法,将Guest帐号克隆为管理员权限。在命令行窗口中执行命令:localPrivilege.exe regedt32.exe

   
打开带管理员权限的注册表编辑器,注意,这里命令中的是“regedt32.exe”,而不是“regedit.exe”。展开注册表项目“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Guest”,查看右边窗口中的“默认”对应的值为“1f5”,该项值其对应的是Guest帐户的SID号(如图7)。另外,查看注册表值可知管理员帐户对应的SID号为“1f4”。因此,展开“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4”项,右键点击此项目,在弹出菜单中选择“导出”命令,导入为“clone.reg”文件。

    然后用记事本编辑注册表文件,将其中的“1f4”改为“1f5”,修改完毕后保存文件,再双击注册表文件,将其导入注册表中。操作完成后,再执行如下命令:
localPrivilege.exe cmd.exe
,在新开命令窗口中执行:

net user guest 123
net user guest active:yes

   
命令执行完毕后,即可修改Guest密码为123,并启用该帐户。此时Guest虽然显示处于来宾用户组,但实际上已经具备管理员权限了。

   
应该说,本地安全策略在某种意义上并不安全,主要是终结结构和直观的操作让用户有机可乘,当然,如果我们放弃了本地安全,则会影响到整个网络,希望通过本文,可以帮你更好的把控权限在本地安全中的应用。