Hijack Windows MareBackup 计划任务实现本地提权分析
一、前言
一个很有意思的提权以及权限维持的点:MareBackup。虽然这个任务表面看起来无害,但在某些特定条件下,低权限用户可以劫持它的执行流程,从而实现 SYSTEM 权限的本地提权。
这篇文章将基于 Clément Labro(@itm4n)发布的研究《Hijacking the Windows MareBackup Scheduled Task for Privilege Escalation》,结合实测进行整理和说明。
二、背景
Windows 系统中存在一个默认计划任务:
MicrosoftWindowsApplication ExperienceMareBackup
这个任务以 SYSTEM 权限运行,并会在执行时调用 CompatTelRunner.exe
。
有意思的是,CompatTelRunner.exe
在其内部某个路径中调用了 powershell.exe
,但没有确定使用绝对路径,这就引出了本文的核心问题:
如果系统的 PATH 环境变量被低权限用户“注入”了某个目录,而且该目录中有恶意的
powershell.exe
,会不会被误调用?
答案是:会,而且是以 SYSTEM 权限运行。
三、触发原理
我们一步步梳理它的运行链:
-
1. MareBackup 任务由 SYSTEM 用户运行,默认允许普通用户触发启动。 -
2. 它会执行 CompatTelRunner.exe
,同样运行在 SYSTEM 下。 -
3. CompatTelRunner 内部会执行 powershell.exe
,但使用的是相对路径。 -
4. Windows 会按 PATH 顺序查找可执行文件,默认包括 C:WindowsSystem32
等路径。 -
5. 如果攻击者可以把某个“前置路径”插入 PATH,并放一个恶意版本的 powershell.exe
,那么 CompatTelRunner 会优先执行这个恶意程序。 -
-
这就完成了一个标准的“Search Order Hijack”。
四、如何利用(实验验证)
⚠️ 本段内容仅供学习用途,请勿用于非法行为。
1. 添加可控路径到 PATH
攻击者可以在注册表添加一个 PATH 项(如果权限允许):
[HKCUEnvironment]Path = C:UsersPublicTools
2. 查找现有的PATH环境变量中文件路径
*** 注意这里的路径在PATH环境变量中的顺序,必须位于真正的powershell.exe路径之前。
3. 准备恶意 powershell.exe
将自定义的 payload 命名为 powershell.exe
,放入自己的PATH:
C:UsersPublicTools
或者符合条件的已有的PATH中,实际发现很多PATH都需要权限放入文件。
4. 启动计划任务
普通用户运行:
Start-ScheduledTask-TaskName"MareBackup"-TaskPath"MicrosoftWindowsApplication Experience"
此时 CompatTelRunner 启动,调用 PATH 中优先的 powershell.exe
,恶意代码执行,权限提升到 SYSTEM。
五、结语
这类“劫持调用链中某一环节”的提权方式并不罕见,但它利用的是系统默认存在的行为,往往更隐蔽、通用性更强。
尤其是像 MareBackup 这样没有太多关注度的任务,更容易被忽视。希望这篇文章能让大家多一分警觉,也欢迎同行补充和讨论。
参考链接:https://itm4n.github.io/hijacking-the-windows-marebackup-scheduled-task-for-privilege-escalation/
这是一个纯粹,开放,前沿的技术交流社区,成员主要有互联网大厂安全部门任职的成员,乙方红队专家,以及正在学习入门的小白等,目前主题主要以红队研发为主(有经验的都知道是什么意思),以及其他涉及到红队进攻侵入性技术,如果你想学习技术,认识不同的人或者寻求一个机会之类的,可以来看看👇👇👇
欢迎加入交流圈
扫码获取更多精彩
原文始发于微信公众号(黑晶):Hijack Windows MareBackup 计划任务实现本地提权分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论