目前实现的方法有几种:
1.CreateProcessWithLogonW() //需要密码
2.LogonUser(),CreateProcessAsUser() //也需要密码
3.NtCreateToken(),CreateProcessAsUser() //不需要密码
1,2外面都有很多工具. 3的话bingle的wsu -f可以实现.
不过bingle的wsu只是做了SID的处理, 他切换到guest后,该环境下依然对system32目录有写权限.切换到SYSTEM后,对sam键还是打不开.
根据bingle的wsu原形,重写了一下SU, 可以真正做到权限切换,即使帐号被禁止
缺点是在终端下只能su到admin组和SYSTEM帐号.不能切换到普通用户,这个问题我是放弃了, 如果谁可以做到欢迎帮我完善.
[root@DUMPLOGIN C:\WINNT\system32]#reg query HKEY_LOCAL_MACHINE\SECURITY
Error:
[root@DUMPLOGIN C:\WINNT\system32]#
[[root@DUMPLOGIN E:\mytestc\su]#su4 -u system
su.exe like unix su tool,version 4.1
by bkbll (bkbll#cnhonker.net) http://www.cnhonker.com
[+] Enable SeDebugPrivilege..
[+] Get Lsass.exe Pid....292
[+] GrantPrivilege From Lsass ....
[+] Calling NtCreateTokenAsuser ...
[+] CreateProcess By that Token...
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
[root@DUMPLOGIN E:\mytestc\su]#reg query HKEY_LOCAL_MACHINE\SECURITY
! REG.EXE VERSION 2.0
HKEY_LOCAL_MACHINE\SECURITY
HKEY_LOCAL_MACHINE\SECURITY\Policy
HKEY_LOCAL_MACHINE\SECURITY\RXACT
HKEY_LOCAL_MACHINE\SECURITY\SAM
[root@DUMPLOGIN E:\mytestc\su]#
搞这个东西搞的我疲惫不堪. 苦啊. 将我的代码贴出来,希望以后对大家有所帮助, 少走弯路.
在这个期间骚扰bingle和tk n次,谢谢他们。
这个东东目前只在win2k sp4 cn上测试过, xp/2003缺少环境, 希望有人能帮我测试. :)