红队攻防
近两年免杀技术年鉴
Python免杀技术实录
AD域攻防系列微课程
免杀技术入门基础知识
深入理解CodeQL代审
开源安全项目二开计划
搞懂攻防内存马研究
深入理解SAST代审测试
C2的发展和技术分析
Fastjson姿势技巧集合
武装你的BurpSuite插件篇
CS4.5二开过HR及内扫
C#安全内网渗透工具集
红队文档书籍PDF资源
邮件钓鱼免杀完全指南
AD内网域技战法总结
小迪安全知识库
-
+
首页
AD内网域技战法总结
AD内网域技战法总结
在大型企业网络攻防演练与真实攻防对抗中,攻击者一旦突破边界进入内网,Active Directory (AD) 域环境便成为核心目标。掌握域渗透的完整路径和多样化手法,既是攻击方扩大战果的关键,也是防守方构建纵深防御的基础。本文系统梳理域渗透全链路的50种核心手法,涵盖信息收集、权限获取、权限提升、横向移动、权限维持及痕迹清理六大阶段,供参考。 ### 一、信息收集:绘制域环境地图 1. 1. **基础主机信息收集** * • `ipconfig /all`:查看IP配置、DNS服务器(通常为域控)。 * • `systeminfo`:获取操作系统、补丁、域信息。 * • `net time /domain`:确认域连接状态并探测域控主机名。 * • `net config workstation`:显示计算机名、用户名、工作站域。 * • `whoami /all`:查看当前用户权限、SID、所属组。 3. 2. **用户与组枚举** * • `net user /domain`:列出域内所有用户。 * • `net user <username> /domain`:查询指定域用户详细信息。 * • `net group /domain`:列出域内所有组。 * • `net group “Domain Admins” /domain`:枚举域管理员组成员。 * • `net group “Enterprise Admins” /domain`:枚举企业管理员组成员(林根域)。 5. 3. **计算机对象枚举** * • `net group “Domain Computers” /domain`:列出域内所有计算机(传统)。 * • `Get-ADComputer -Filter * -Properties * | Select-Object Name, OperatingSystem` (PowerShell):更全面的计算机信息获取。 7. 4. **域信任关系发现** * • `nltest /domain_trusts /all_trusts /v`:枚举当前域的所有信任关系(域/林信任)。 * • `Get-ADTrust -Filter * -Properties * | Select-Object Name, Direction, Source, Target` (PowerShell)。 9. 5. **组策略信息提取** * • `gpresult /H report.html /Scope Computer /Scope User`:生成详细的组策略结果报告(需交互或特定权限)。 * • `Get-GPO -All` (PowerShell):枚举所有GPO对象。 11. 6. **SPN扫描与服务发现** * • `setspn -T <domain> -Q */*`:查询域内所有注册的SPN(服务主体名称),暴露服务(如MSSQL, HTTP, TERMSRV等)及其运行账户。 * • `Get-ADObject -LDAPFilter “(servicePrincipalName=*)” -Properties servicePrincipalName` (PowerShell)。 13. 7. **敏感组与ACL枚举** * • `Get-ADGroupMember -Identity “Account Operators”` (PowerShell):枚举特权组成员。 * • `Get-DomainGPOUserLocalGroupMapping` (PowerView):查找通过GPO被授予本地管理员权限的域用户/组。 * • `Invoke-ACLScanner` (PowerView):扫描域对象上权限配置不当的ACL(访问控制列表)。 15. 8. **密码策略探测** * • `net accounts /domain`:查看域账户策略(密码长度、有效期、锁定阈值等)。 * • `Get-ADDefaultDomainPasswordPolicy` (PowerShell)。 17. 9. **DNS记录枚举** * • `nslookup`交互模式下使用`ls -d <domain>`(通常被限制)。 * • `Get-DNSRecord` (PowerSploit/PowerView):尝试枚举域内DNS记录(主机、MX、SRV等)。 19. 10. **域控定位** * • `nltest /dclist:<domain>`:列出指定域的所有域控制器。 * • `net group “Domain Controllers” /domain`。 * • `Resolve-DnsName -Type SRV _ldap._tcp.dc._msdcs.<domain>` (PowerShell)。 * * * ### 二、权限获取:突破初始立足点 1. 11. **密码喷洒攻击** * • 使用常用密码(如`Password1`, `Company2023!`, `Season+Year`)对枚举出的多个域账户进行低频率批量登录尝试(避免触发锁定)。工具:`DomainPasswordSpray`。 3. 12. **用户名枚举** * • 利用NTLM认证错误响应差异(`STATUS_LOGON_FAILURE` vs `STATUS_ACCOUNT_LOCKED_OUT` / `STATUS_ACCOUNT_DISABLED`)或Kerberos错误(`KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN`)枚举有效域用户名。工具:`kerbrute userenum`。 5. 13. **AS-REP Roasting** * • 针对设置了`Do not require Kerberos pre-authentication` (`UF_DONT_REQUIRE_PREAUTH`) 属性的用户账户,直接请求其AS-REP数据包,离线破解加密的TGT(Ticket Granting Ticket)部分。工具:`Rubeus asreproast`, `Get-ASREPHash` (PowerView)。 7. 14. **Kerberoasting** * • 请求服务票据(TGS),针对使用域用户(而非机器账户)运行的服务账户。离线破解服务票据中的服务账户密码哈希。工具:`Rubeus kerberoast`, `Invoke-Kerberoast` (PowerView)。 9. 15. **NTLM Relay 攻击** * • 诱骗具有高权限(如域管)的主机向攻击者控制的机器发起NTLM认证,将认证请求“中继”到目标系统(如域控的LDAP/SMB服务),利用受害者的权限执行操作(如创建新账户、添加组、DCSync)。 * • 关键条件:目标服务需禁用SMB签名(默认客户端不强制)或启用WebDAV/NTLM over HTTP。工具:`ntlmrelayx.py`。 11. 16. **利用LLMNR/NBT-NS/ mDNS欺骗** * • 在缺乏DNS解析或解析失败时,主机通过LLMNR/NBT-NS/mDNS广播查询主机名。攻击者响应欺骗,引导受害者访问恶意服务器,诱导其发起NTLM认证(常与NTLM Relay结合)。工具:`Responder`。 13. 17. **利用AD CS证书服务漏洞(如ESC1, ESC8)** * • **ESC1**:利用配置不当的证书模板(允许低权限用户注册、启用客户端认证、允许任意SAN、管理器批准禁用),申请可用于身份认证的证书,进而获取权限。 * • **ESC8**:利用AD CS Web Enrollment服务启用NTLM认证且未启用EPPN的弱点,结合NTLM Relay攻击,中继到AD CS HTTP终结点申请证书。工具:`Certify`, `Certipy`。 15. 18. **利用PrintNightmare漏洞** * • 利用Windows打印服务RPC协议中的漏洞(CVE-2021-1675 / CVE-2021-34527),允许远程、低权限用户上传恶意DLL并加载执行,实现权限提升或远程代码执行(尤其在域控)。 17. 19. **利用ZeroLogon漏洞**(域控提权漏洞类) * • 利用Netlogon协议中(CVE-2020-1472)的加密缺陷,允许攻击者将域控的机器账户密码置空,从而完全控制域控。工具:`zerologon_tester.py`, `secretsdump.py -no-pass -just-dc <dc$>@<dc_ip>`。 19. 20. **利用PetitPotam漏洞** * • 利用MS-EFSRPC协议强制其他主机(特别是域控)向攻击者控制的服务发起NTLM认证(常与NTLM Relay结合攻击域控)。工具:`PetitPotam.py`。 * * * ### 三、权限提升:从普通用户到特权账户 1. 21. **本地管理员提权** * • 利用本地漏洞(如内核提权EXP)、服务配置错误(可写路径、未引用路径)、凭证窃取(Mimikatz `sekurlsa::logonpasswords`)、计划任务等,先获取单机管理员权限。 3. 22. **利用GPO修改本地管理员组** * • 若对某个组策略对象(GPO)拥有编辑权限(`WriteProperty`/`GenericAll`/`GenericWrite`),可修改其关联的`Groups.xml`文件,将攻击者账户加入目标计算机的本地管理员组。工具:`SharpGPOAbuse`。 5. 23. **滥用ACL修改特权组成员** * • 若对高权限组(如`Domain Admins`)或其成员属性拥有`WriteProperty`(特别是`Write members`)权限,可直接将攻击者账户添加到该组。工具:`net group “Domain Admins” <username> /add /domain`,或PowerView `Add-DomainGroupMember`。 7. 24. **滥用ACL获取DCSync权限** * • 若对域对象或其子对象拥有`Replicating Directory Changes`/`Replicating Directory Changes All`/`DS-Replication-Get-Changes`/`DS-Replication-Get-Changes-All`权限,可授予攻击者账户该权限,从而执行DCSync导出域内所有账户哈希。工具:`PowerView (Add-DomainObjectAcl)`。 9. 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`。 11. 26. **利用MS14-068漏洞** * • 利用Kerberos PAC验证缺陷(CVE-2014-6324),普通域用户可构造包含虚假PAC的特权TGT,提升至域管理员权限(需未打补丁)。 13. 27. **利用DLL劫持** * • 发现应用程序加载DLL时的搜索路径漏洞(如当前目录优先),放置恶意DLL,当高权限用户或服务运行该程序时触发执行。 15. 28. **利用AlwaysInstallElevated策略** * • 若组策略启用了`AlwaysInstallElevated`(`HKCU/HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer`),用户可通过MSI安装包以SYSTEM权限执行代码。工具:`msfvenom`生成MSI。 17. 29. **利用服务账户漏洞** * • 若服务以域用户身份运行且其密码可破解(如Kerberoasting),或服务配置存在路径劫持、未引用路径等漏洞,可提权至服务账户权限。 19. 30. **利用计划任务** * • 查找权限配置不当的计划任务(用户可修改),替换执行文件为恶意程序,等待任务执行。 * * * ### 四、横向移动:在域内主机间穿行 1. 31. **Pass The Hash (PtH)** * • 利用获取的NTLM哈希(无需明文密码)进行SMB/WinRM/RDP等协议认证,访问其他主机。工具:`crackmapexec smb <targets> -u <user> -H <hash>`, `psexec.py -hashes :<hash> <user>@<target>`。 3. 32. **Pass The Ticket (PtT)** * • 将窃取或伪造的Kerberos票据(TGT或TGS)注入当前会话,用于访问相应服务。工具:`Rubeus ptt /ticket:<ticket.kirbi>`, Mimikatz `kerberos::ptt`。 5. 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`。 7. 34. **WMI远程执行** * • 利用WMI (`Win32_Process`) 在远程主机上创建进程执行命令或载荷。工具:`wmic /node:<target> /user:<user> /password:<pass> process call create “cmd.exe /c …”`, `Invoke-WmiMethod` (PowerShell)。 9. 35. **WinRM远程执行** * • 通过WinRM协议远程执行PowerShell命令或脚本。工具:`Enter-PSSession -ComputerName <target> -Credential <cred>`, `Invoke-Command -ComputerName <target> -ScriptBlock { … } -Credential <cred>`。 11. 36. **SMB共享与远程命令执行** * • 使用`psexec`, `smbexec`等工具通过SMB协议上传服务并在远程主机执行命令。 * • 直接访问远程SMB共享(`\\<target>\C$`)读写文件(需足够权限)。 13. 37. **远程桌面协议(RDP)** * • 使用获取的凭证直接通过RDP登录目标主机。工具:`xfreerdp /u:<user> /p:<pass> /d:<domain> /v:<target>`。 15. 38. **利用SCM(服务控制管理器)** * • 远程创建或修改服务来执行命令。工具:`sc.exe \\<target> create … binPath= “cmd.exe /c …” start= auto`, `sc.exe \\<target> start <service>`。 17. 39. **DCOM远程执行** * • 利用分布式COM对象(如`MMC20.Application`, `ShellWindows`, `ShellBrowserWindow`)在远程主机上执行代码。工具:`Invoke-DCOM` (PowerSploit)。 19. 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::golden`, `Rubeus golden /krbtgt:<hash>`。 3. 42. **白银票据攻击** * • 获取服务账户(如`CIFS`, `HOST`, `RPCSS`)的NTLM哈希/AES密钥后,可伪造访问特定服务的TGS(白银票据),无需与KDC交互,直接访问该服务(如文件共享、WMI)。工具:Mimikatz `kerberos::silver`。 5. 43. **Skeleton Key内存补丁** * • 在域控内存中注入恶意代码(需管理员权限),使所有域用户都能使用一个万能密码(如`mimikatz`)进行认证(重启失效)。工具:Mimikatz `misc::skeleton`。 7. 44. **DSRM密码同步与利用** * • 域控的目录服务恢复模式(DSRM)账户密码可被修改(需`ntdsutil`或Mimikatz),攻击者可在域控重启时使用DSRM密码登录进行恢复操作(需控制台访问)。工具:Mimikatz `lsadump::setntlm` / `lsadump::changentlm`。 9. 45. **创建隐藏/高权限账户** * • 创建名称类似默认账户(如`$`结尾)或利用ACL隐藏的新账户,并将其加入特权组(如`Domain Admins`)。注意:`net user`命令默认不显示`$`结尾账户,但ADSI/LDAP查询可见。 11. 46. **ACL后门** * • 在关键域对象(如域本身、AdminSDHolder容器、高权限用户/组)上为攻击者账户添加高权限ACE(如`GenericAll`, `WriteDacl`, `WriteOwner`, `GenericWrite`, `ExtendedRight`),允许其随时修改权限或成员关系。工具:PowerView `Add-DomainObjectAcl`。 13. 47. **GPO后门** * • 创建或修改GPO,设置登录/启动脚本、计划任务或修改本地管理员组,在域内计算机上植入持久化载荷。工具:`SharpGPOAbuse`。 15. 48. **服务后门** * • 在域控或关键服务器上创建恶意服务(名称伪装、路径隐藏),设置为自启动。 17. 49. **计划任务后门** * • 在域控或关键服务器上创建计划任务,定期执行恶意载荷。 19. 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、重建受信域控等。 * * * 域渗透是一个系统性工程,攻击者如同经验丰富的“探险家”,在复杂的域森林中利用各种路径和工具不断探索、突破、扩张。
xiaodi
2026年5月19日 15:57
17
0 条评论
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档
PDF文档(打印)