50个域渗透手法全覆盖 万字长文 适合收藏!

华盟原创文章投稿奖励计划

在大型企业网络攻防演练与真实攻防对抗中,攻击者一旦突破边界进入内网,Active Directory (AD) 域环境便成为核心目标。掌握域渗透的完整路径和多样化手法,既是攻击方扩大战果的关键,也是防守方构建纵深防御的基础。本文系统梳理域渗透全链路的50种核心手法,涵盖信息收集、权限获取、权限提升、横向移动、权限维持及痕迹清理六大阶段,供参考。


一、信息收集:绘制域环境地图

  1. 1. 基础主机信息收集
    • • ipconfig /all:查看IP配置、DNS服务器(通常为域控)。
    • • systeminfo:获取操作系统、补丁、域信息。
    • • net time /domain:确认域连接状态并探测域控主机名。
    • • net config workstation:显示计算机名、用户名、工作站域。
    • • whoami /all:查看当前用户权限、SID、所属组。
  2. 2. 用户与组枚举
    • • net user /domain:列出域内所有用户。
    • • net user <username> /domain:查询指定域用户详细信息。
    • • net group /domain:列出域内所有组。
    • • net group “Domain Admins” /domain:枚举域管理员组成员。
    • • net group “Enterprise Admins” /domain:枚举企业管理员组成员(林根域)。
  3. 3. 计算机对象枚举
    • • net group “Domain Computers” /domain:列出域内所有计算机(传统)。
    • • Get-ADComputer -Filter * -Properties * | Select-Object Name, OperatingSystem (PowerShell):更全面的计算机信息获取。
  4. 4. 域信任关系发现
    • • nltest /domain_trusts /all_trusts /v:枚举当前域的所有信任关系(域/林信任)。
    • • Get-ADTrust -Filter * -Properties * | Select-Object Name, Direction, Source, Target (PowerShell)。
  5. 5. 组策略信息提取
    • • gpresult /H report.html /Scope Computer /Scope User:生成详细的组策略结果报告(需交互或特定权限)。
    • • Get-GPO -All (PowerShell):枚举所有GPO对象。
  6. 6. SPN扫描与服务发现
    • • setspn -T <domain> -Q */*:查询域内所有注册的SPN(服务主体名称),暴露服务(如MSSQL, HTTP, TERMSRV等)及其运行账户。
    • • Get-ADObject -LDAPFilter “(servicePrincipalName=*)” -Properties servicePrincipalName (PowerShell)。
  7. 7. 敏感组与ACL枚举
    • • Get-ADGroupMember -Identity “Account Operators” (PowerShell):枚举特权组成员。
    • • Get-DomainGPOUserLocalGroupMapping (PowerView):查找通过GPO被授予本地管理员权限的域用户/组。
    • • Invoke-ACLScanner (PowerView):扫描域对象上权限配置不当的ACL(访问控制列表)。
  8. 8. 密码策略探测
    • • net accounts /domain:查看域账户策略(密码长度、有效期、锁定阈值等)。
    • • Get-ADDefaultDomainPasswordPolicy (PowerShell)。
  9. 9. DNS记录枚举
    • • nslookup交互模式下使用ls -d <domain>(通常被限制)。
    • • Get-DNSRecord (PowerSploit/PowerView):尝试枚举域内DNS记录(主机、MX、SRV等)。
  10. 10. 域控定位
    • • nltest /dclist:<domain>:列出指定域的所有域控制器。
    • • net group “Domain Controllers” /domain
    • • Resolve-DnsName -Type SRV _ldap._tcp.dc._msdcs.<domain> (PowerShell)。

二、权限获取:突破初始立足点

  1. 11. 密码喷洒攻击
    • • 使用常用密码(如Password1Company2023!Season+Year)对枚举出的多个域账户进行低频率批量登录尝试(避免触发锁定)。工具:DomainPasswordSpray
  2. 12. 用户名枚举
    • • 利用NTLM认证错误响应差异(STATUS_LOGON_FAILURE vs STATUS_ACCOUNT_LOCKED_OUT / STATUS_ACCOUNT_DISABLED)或Kerberos错误(KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN)枚举有效域用户名。工具:kerbrute userenum
  3. 13. AS-REP Roasting
    • • 针对设置了Do not require Kerberos pre-authentication (UF_DONT_REQUIRE_PREAUTH) 属性的用户账户,直接请求其AS-REP数据包,离线破解加密的TGT(Ticket Granting Ticket)部分。工具:Rubeus asreproastGet-ASREPHash (PowerView)。
  4. 14. Kerberoasting
    • • 请求服务票据(TGS),针对使用域用户(而非机器账户)运行的服务账户。离线破解服务票据中的服务账户密码哈希。工具:Rubeus kerberoastInvoke-Kerberoast (PowerView)。
  5. 15. NTLM Relay 攻击
    • • 诱骗具有高权限(如域管)的主机向攻击者控制的机器发起NTLM认证,将认证请求“中继”到目标系统(如域控的LDAP/SMB服务),利用受害者的权限执行操作(如创建新账户、添加组、DCSync)。
    • • 关键条件:目标服务需禁用SMB签名(默认客户端不强制)或启用WebDAV/NTLM over HTTP。工具:ntlmrelayx.py
  6. 16. 利用LLMNR/NBT-NS/ mDNS欺骗
    • • 在缺乏DNS解析或解析失败时,主机通过LLMNR/NBT-NS/mDNS广播查询主机名。攻击者响应欺骗,引导受害者访问恶意服务器,诱导其发起NTLM认证(常与NTLM Relay结合)。工具:Responder
  7. 17. 利用AD CS证书服务漏洞(如ESC1, ESC8)
    • • ESC1:利用配置不当的证书模板(允许低权限用户注册、启用客户端认证、允许任意SAN、管理器批准禁用),申请可用于身份认证的证书,进而获取权限。
    • • ESC8:利用AD CS Web Enrollment服务启用NTLM认证且未启用EPPN的弱点,结合NTLM Relay攻击,中继到AD CS HTTP终结点申请证书。工具:CertifyCertipy
  8. 18. 利用PrintNightmare漏洞
    • • 利用Windows打印服务RPC协议中的漏洞(CVE-2021-1675 / CVE-2021-34527),允许远程、低权限用户上传恶意DLL并加载执行,实现权限提升或远程代码执行(尤其在域控)。
  9. 19. 利用ZeroLogon漏洞
    • • 利用Netlogon协议中(CVE-2020-1472)的加密缺陷,允许攻击者将域控的机器账户密码置空,从而完全控制域控。工具:zerologon_tester.pysecretsdump.py -no-pass -just-dc <dc$>@<dc_ip>
  10. 20. 利用PetitPotam漏洞
    • • 利用MS-EFSRPC协议强制其他主机(特别是域控)向攻击者控制的服务发起NTLM认证(常与NTLM Relay结合攻击域控)。工具:PetitPotam.py

三、权限提升:从普通用户到特权账户

  1. 21. 本地管理员提权
    • • 利用本地漏洞(如内核提权EXP)、服务配置错误(可写路径、未引用路径)、凭证窃取(Mimikatz sekurlsa::logonpasswords)、计划任务等,先获取单机管理员权限。
  2. 22. 利用GPO修改本地管理员组
    • • 若对某个组策略对象(GPO)拥有编辑权限(WriteProperty/GenericAll/GenericWrite),可修改其关联的Groups.xml文件,将攻击者账户加入目标计算机的本地管理员组。工具:SharpGPOAbuse
  3. 23. 滥用ACL修改特权组成员
    • • 若对高权限组(如Domain Admins)或其成员属性拥有WriteProperty(特别是Write members)权限,可直接将攻击者账户添加到该组。工具:net group “Domain Admins” <username> /add /domain,或PowerView Add-DomainGroupMember
  4. 24. 滥用ACL获取DCSync权限
    • • 若对域对象或其子对象拥有Replicating Directory Changes/Replicating Directory Changes All/DS-Replication-Get-Changes/DS-Replication-Get-Changes-All权限,可授予攻击者账户该权限,从而执行DCSync导出域内所有账户哈希。工具:PowerView (Add-DomainObjectAcl)
  5. 25. 利用Kerberos委派提权
    • • 非约束委派(Unconstrained Delegation):若控制运行非约束委派服务的主机,可诱骗管理员访问该服务,捕获其TGT,模拟其身份访问任意服务。
    • • 约束委派(Constrained Delegation):若拥有服务账户的msDS-AllowedToDelegateTo属性写权限,可配置其代表用户访问特定服务(如CIFS for SMB),或直接利用s4u2self + s4u2proxy获取目标服务的服务票据。工具:Rubeus s4u
    • • 基于资源的约束委派(Resource-Based Constrained Delegation):若对某计算机对象拥有WriteProperty权限(如msDS-AllowedToActOnBehalfOfOtherIdentity),可配置允许攻击者控制的服务账户委派到该计算机,获取其SYSTEM权限。工具:PowerView (Set-DomainObject … -PrincipalsAllowedToDelegateToAccount …)Rubeus rbcd
  6. 26. 利用MS14-068漏洞
    • • 利用Kerberos PAC验证缺陷(CVE-2014-6324),普通域用户可构造包含虚假PAC的特权TGT,提升至域管理员权限(需未打补丁)。
  7. 27. 利用DLL劫持
    • • 发现应用程序加载DLL时的搜索路径漏洞(如当前目录优先),放置恶意DLL,当高权限用户或服务运行该程序时触发执行。
  8. 28. 利用AlwaysInstallElevated策略
    • • 若组策略启用了AlwaysInstallElevatedHKCU/HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer),用户可通过MSI安装包以SYSTEM权限执行代码。工具:msfvenom生成MSI。
  9. 29. 利用服务账户漏洞
    • • 若服务以域用户身份运行且其密码可破解(如Kerberoasting),或服务配置存在路径劫持、未引用路径等漏洞,可提权至服务账户权限。
  10. 30. 利用计划任务
    • • 查找权限配置不当的计划任务(用户可修改),替换执行文件为恶意程序,等待任务执行。

四、横向移动:在域内主机间穿行

  1. 31. Pass The Hash (PtH)
    • • 利用获取的NTLM哈希(无需明文密码)进行SMB/WinRM/RDP等协议认证,访问其他主机。工具:crackmapexec smb <targets> -u <user> -H <hash>psexec.py -hashes :<hash> <user>@<target>
  2. 32. Pass The Ticket (PtT)
    • • 将窃取或伪造的Kerberos票据(TGT或TGS)注入当前会话,用于访问相应服务。工具:Rubeus ptt /ticket:<ticket.kirbi>, Mimikatz kerberos::ptt
  3. 33. Overpass The Hash / Pass The Key
    • • 使用NTLM哈希或AES密钥请求新的Kerberos TGT,将哈希认证升级为票据认证。工具:Rubeus asktgt /user:<user> /domain:<domain> /aes256:<aes_key> /nowrap, Mimikatz kerberos::ekeys + kerberos::asktgt
  4. 34. WMI远程执行
    • • 利用WMI (Win32_Process) 在远程主机上创建进程执行命令或载荷。工具:wmic /node:<target> /user:<user> /password:<pass> process call create “cmd.exe /c …”Invoke-WmiMethod (PowerShell)。
  5. 35. WinRM远程执行
    • • 通过WinRM协议远程执行PowerShell命令或脚本。工具:Enter-PSSession -ComputerName <target> -Credential <cred>Invoke-Command -ComputerName <target> -ScriptBlock { … } -Credential <cred>
  6. 36. SMB共享与远程命令执行
    • • 使用psexecsmbexec等工具通过SMB协议上传服务并在远程主机执行命令。
    • • 直接访问远程SMB共享(\\<target>\C$)读写文件(需足够权限)。
  7. 37. 远程桌面协议(RDP)
    • • 使用获取的凭证直接通过RDP登录目标主机。工具:xfreerdp /u:<user> /p:<pass> /d:<domain> /v:<target>
  8. 38. 利用SCM(服务控制管理器)
    • • 远程创建或修改服务来执行命令。工具:sc.exe \\<target> create … binPath= “cmd.exe /c …” start= autosc.exe \\<target> start <service>
  9. 39. DCOM远程执行
    • • 利用分布式COM对象(如MMC20.ApplicationShellWindowsShellBrowserWindow)在远程主机上执行代码。工具:Invoke-DCOM (PowerSploit)。
  10. 40. 利用计划任务远程执行
    • • 在远程主机上创建计划任务执行命令。工具:schtasks /create /s <target> /ru <user> /rp <pass> /tn <name> /tr “cmd.exe /c …” /sc once /st <time>schtasks /run /s <target> /tn <name>

五、权限维持:埋下持久后门

  1. 41. 黄金票据攻击
    • • 获取krbtgt账户的NTLM哈希/AES密钥后,可伪造任意用户的TGT(黄金票据),赋予其任意权限(如域管理员),绕过密码更改(直到krbtgt密码被重置两次)。工具:Mimikatz kerberos::goldenRubeus golden /krbtgt:<hash>
  2. 42. 白银票据攻击
    • • 获取服务账户(如CIFSHOSTRPCSS)的NTLM哈希/AES密钥后,可伪造访问特定服务的TGS(白银票据),无需与KDC交互,直接访问该服务(如文件共享、WMI)。工具:Mimikatz kerberos::silver
  3. 43. Skeleton Key内存补丁
    • • 在域控内存中注入恶意代码(需管理员权限),使所有域用户都能使用一个万能密码(如mimikatz)进行认证(重启失效)。工具:Mimikatz misc::skeleton
  4. 44. DSRM密码同步与利用
    • • 域控的目录服务恢复模式(DSRM)账户密码可被修改(需ntdsutil或Mimikatz),攻击者可在域控重启时使用DSRM密码登录进行恢复操作(需控制台访问)。工具:Mimikatz lsadump::setntlm / lsadump::changentlm
  5. 45. 创建隐藏/高权限账户
    • • 创建名称类似默认账户(如$结尾)或利用ACL隐藏的新账户,并将其加入特权组(如Domain Admins)。注意:net user命令默认不显示$结尾账户,但ADSI/LDAP查询可见。
  6. 46. ACL后门
    • • 在关键域对象(如域本身、AdminSDHolder容器、高权限用户/组)上为攻击者账户添加高权限ACE(如GenericAllWriteDaclWriteOwnerGenericWriteExtendedRight),允许其随时修改权限或成员关系。工具:PowerView Add-DomainObjectAcl
  7. 47. GPO后门
    • • 创建或修改GPO,设置登录/启动脚本、计划任务或修改本地管理员组,在域内计算机上植入持久化载荷。工具:SharpGPOAbuse
  8. 48. 服务后门
    • • 在域控或关键服务器上创建恶意服务(名称伪装、路径隐藏),设置为自启动。
  9. 49. 计划任务后门
    • • 在域控或关键服务器上创建计划任务,定期执行恶意载荷。
  10. 50. WMI事件订阅后门
    • • 创建永久WMI事件过滤器(Filter)和消费者(Consumer),在特定系统事件(如登录、特定时间间隔)触发时执行恶意代码。工具:Set-WmiInstance (PowerShell), wmic

六、痕迹清理(贯穿始终,谨慎操作)

  • • 日志清除:使用wevtutil cl <logname>清除本地事件日志(Security, System, Application等)。注意:域环境通常配置日志转发,本地删除无效。
  • • 操作审计规避:尽可能使用合法工具(Living-off-the-Land)和协议(如PSRemoting, WMI)减少特殊日志产生;避免在域控上执行高危操作;使用代理或跳板。
  • • 时间擦除:使用timestomp等工具修改文件时间戳(创建、修改、访问时间)以匹配周围环境(难度高,效果有限)。
  • • 文件删除:删除上传的工具、脚本、输出文件。使用cipher /w:<path>覆盖已删除文件空间(仅本地)。
  • • 还原配置:移除添加的账户、ACL、GPO修改、服务、计划任务等后门(在完成目标后或撤离前)。重要:清理操作本身也会产生日志!

威胁检测与防御建议

  • • 强化认证:部署LAPS管理本地管理员密码;强制使用Kerberos;禁用NTLM或启用SMB签名;启用LDAP/S通道绑定与签名;实施多因素认证(MFA),尤其对特权账户。
  • • 最小权限原则:严格限制域管理员等高权限组;限制普通用户本地管理员权限(GPO);审核并收紧ACL(特别是对特权组、域对象、AdminSDHolder);禁用非约束委派;仔细审查约束委派和RBCD配置。
  • • 加固服务与协议:及时更新域控及成员服务器补丁;禁用LLMNR/NBT-NS;保护AD CS服务,审查证书模板权限与配置(禁用易受攻击选项);限制WMI、WinRM、DCOM访问。
  • • 深度监控与审计:集中收集并分析域控、关键服务器、终端的安全日志(重点关注:账户管理、特权使用、登录事件、Kerberos事件、目录服务访问、进程创建、PowerShell脚本块日志);部署SIEM/SOAR;使用Microsoft Defender for Identity(原ATA)或类似高级威胁检测产品。
  • • 定期评估:进行域渗透测试和红蓝对抗演练,验证防御措施有效性;定期审计ACL、SPN、委派配置、特权组成员。
  • • 应急响应:制定完善的AD安全事件应急响应预案,包括:快速隔离受控主机、重置krbtgt账户密码(两次)、撤销可疑证书、审查特权组成员和ACL、重建受信域控等。

域渗透是一个系统性工程,攻击者如同经验丰富的“探险家”,在复杂的域森林中利用各种路径和工具不断探索、突破、扩张。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容