好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

从管理员身份获得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-权限的四种方法

从管理员身份获得SYSTEM-权限的四种方法LOCALstProcess:PROCESSENTRY32LOCALhSnapshotLOCALdwProcessIDmovdwProcessID,0invokeRtlZeroMemory,a
推荐度:
点击下载文档文档为doc格式
2o2ot57dam38gut0xsx29kcek7hm3l0140h
领取福利

微信扫码领取福利

微信扫码分享