如何使用SilentCleanup绕过UAC?

本文讲的是如何使用SilentCleanup绕过UAC?


0x00 前言

最近我在James Forshaw‏的博客学到了一个Win10下绕过UAC的技巧,该方法通过脚本实现,并且目前微软还未对该绕过方法进行修复(预计在Win10 RS3修复)。经过我的学习测试,该方法同样适用于Win8,并且文中介绍的绕过思路很值得学习,因此整理成文,分享给大家。

0x01 简介

本文将要介绍以下内容:

绕过思路

利用方法

0x02 绕过思路

个人认为寻找绕过UAC的方法可分为以下两个步骤:

1、寻找权限控制不严格的程序

通常具有以下特点:

以普通用户权限启动程序

程序默认以高权限启动,通常标记为Highest

2、该程序启动过程是否可被劫持

启动路径是否可被劫持

启动过程加载的问题(如dll)是否可被劫持

0x03 利用方法

对应到James Forshaw‏的方法,也是优先寻找权限控制不严格的程序——计划任务中的SilentCleanup

注:

Matt Nelson之前也介绍过一个利用SilentCleanup绕过UAC的方法,目前已被修复,文章地址如下:

https://enigma0x3.net/2016/07/22/bypassing-uac-on-windows-10-using-disk-cleanup/

计划任务中的SilentCleanup:

普通用户权限即可启动

启动后自动提升为高权限

通过Powershell可以获取更多细节,代码如下:

$task = Get-ScheduledTask SilentCleanup$task.Principal

注:

Win7默认powershell版本2.0,不支持Get-ScheduledTask操作

如下图

Authenticated Users表示普通用户权限即可启动

RunLevel为Highest表示以高权限启动

查看启动参数,powershell代码如下:

$task.Actions[0]

如下图

启动参数为%windir%system32cleanmgr.exe

这里存在一个可供利用的地方——环境变量%windir%

注:

可通过set windir查看环境变量%windir%

%windir%默认指向c:Windows

如果修改当前系统环境变量,指向其他路径,那么这里就实现了一个劫持

例如:

将%windir%设置为c:test

在c:testsystem32下将payload.exe保存为cleanmgr.exe

那么在启动计划任务SilentCleanup时,就会以高权限启动payload.exe,实现了UAC绕过

更直接的利用方法:

将%windir%设置为cmd /K,那么在启动计划任务SilentCleanup时会弹出cmd.exe

注:

cmd后面需要加参数,否则由于参数问题导致无法正常启动

/k表示弹出的cmd.exe在执行代码后不退出

为了增加隐蔽性(很多程序在启动时需要调用环境变量%windir%),在执行cmd的需要同时删除新添加的注册表键值windir,可以使用如下代码:

reg add hkcuEnvironment /v windir /d "cmd /K reg delete hkcuEnvironment /v windir /f && REM "schtasks /Run /TN MicrosoftWindowsDiskCleanupSilentCleanup /I

注:

以上代码来自于https://gist.github.com/tyranid/729b334bf9dc0f38184dbd47ae3f52d0#file-disk_cleanup_uac_bypass-bat

将环境变量设置为cmd /K reg delete hkcuEnvironment /v windir /f && REM,那么在启动计划任务SilentCleanup时会弹出cmd.exe,接着执行删除注册表键值的命令:reg delete hkcuEnvironment /v windir /f

完整操作如下图

注:

参数如果换成/a,那么cmd.exe在执行后面的命令后会立即退出

0x04 防御检测

1、防御

修改计划任务SilentCleanup的启动参数,将环境变量去掉,换成c:Windows,锁定路径

管理员权限:

$action = New-ScheduledTaskAction -Execute $env:windirSystem32cleanmgr.exe -Argument "/autoclean /d $env:systemdrive"Set-ScheduledTask SilentCleanup -TaskPath MicrosoftWindowsDiskCleanup -Action $action

注:

以上代码来自于https://gist.github.com/tyranid/9ef39228ba0acc6aa4039d2218006546#file-fix_diskclean_uac_bypass-ps1

如下图

计划任务SilentCleanup的启动参数被修改为c:windowssystem32cleanmgr.exe,无法通过修改环境变量%windir%对其劫持

2、检测

通过powershell寻找计划任务中是否还存在可供利用的服务,代码如下:

$tasks = Get-ScheduledTask | 
   Where-Object { $_.Principal.RunLevel -ne "Limited" -and 
                  $_.Principal.LogonType -ne "ServiceAccount" -and 
                  $_.State -ne "Disabled" -and 
                  $_.Actions[0].CimClass.CimClassName -eq "MSFT_TaskExecAction" }

注:

以上代码来自于https://gist.github.com/tyranid/92e1c7074a9a7b0d5d021e9218e34fe7#file-get_scheduled_tasks-ps1

如下图,可供利用的服务一共有四个,经测试,其他三个无法实际利用,只有SilentCleanup有效

0x05 补充

该方法同样适用于Win8环境,完整操作如下图

Win7系统不包含计划任务SilentCleanup,因此无法利用

0x06 小结

本文介绍了通过计划任务SilentCleanup绕过UAC的方法,该方法仅需要通过脚本向当前用户注册表写入键值即可,简单有效。

原文发布时间为:2017年5月24日

本文作者:3gstudent 

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-08-03 01:14:37

如何使用SilentCleanup绕过UAC?的相关文章

windows7系统任务计划程序绕过UAC管理实现程序的开机自启动

在之前的APU使用K10stat超频教程中笔者讲述了通过win7任务计划程序,成功的在不关闭UAC用户帐户控制情况下实现K10stat超频程序开机自启动,实际上win7任务计划程序能够的达到的工作不仅仅只能是实现apu的超频自启动. 大家知道自从vista开始,一直延续到最新操作系统均存在的UAC用户帐户控制可以大大的增加操作系统安全性,但也常常在使用中为我们带来不便.特别是一些需要开机自启动的小软件,因为这样那样的原因往往无法通过UAC用户帐户控制,因而无法使用拖拽快捷方式放到开始菜单---所

如何使用任务计划程序绕过UAC?

本文讲的是如何使用任务计划程序绕过UAC?,如果用户可以访问图形界面,Windows任务计划程序可能被绕过用户帐户控制(UAC).这是由于当用户创建新任务时,具有最高权限的安全性选项不需要用户使用管理员帐户进行身份验证. 适用于RDP登录或可访问物理机的情况下. 可以从命令行或任务计划程序界面创建新的任务计划. SchTasks /Create /SC DAILY /TN "NoUAC" /TR "C:WindowsSystem32mmc.exe" /ST 23:3

如何利用sdclt.exe绕过UAC?

本文讲的是如何利用sdclt.exe绕过UAC?, 0x00 前言 Matt Nelson‏ @enigma0x3在最近的文章中公开了一个绕过Win10 UAC的技巧,通过修改HKCU下的注册表键值实现对UAC的绕过 0x01 简介 本文将对其进行测试,分享测试心得,整理该方法的攻防技巧 0x02 原理 Sigcheck 可用来查看exe文件的清单(manifest) 下载地址: https://technet.microsoft.com/en-us/sysinternals/bb897441.

绕过UAC系列之 SDCLT的利用

本文讲的是绕过UAC系列之 SDCLT的利用,SDCLT是Windows系统(Windows 7及更高版本)中使用的Microsoft二进制文件,允许用户执行备份和恢复操作. 但是它只是 Windows 将autoElevate设置为"true"的所有Microsoft二进制文件中的一个. 这一点可以通过使用sysinternals中的Sigcheck工具并浏览其清单文件进行验证: sdclt 的 autoelevate被设置为true Matt Nelson发现了两种可以允许用户在W

如何利用sdclt磁盘备份工具绕过UAC

简介 sdclt 是微软提供的命令行磁盘备份工具,从 Vista 时代引入 在 Windows 10 开始,sdclt 加入了自动提升权限的能力,requestedExecutionLevel 由 asInvoker 变为 requireAdministrator (命令 sigcheck -m %systemroot%\system32\sdclt.exe 的结果) 当不带任何参数启动 sdclt 时,sdclt 会打开控制面板 控制面板的主程序为 control.exe,那么 sdclt 是

uac有什么用,uac是什么?

UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在Windows Vista中引入的新技术,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员‌密码.通过在这些操 作启动前对其进行验证,UAC 可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进行更改. 但是并不是说不关闭UAC就肯定会导致软件无法使用了,因为一般在安装的过程中会提示需啊要通过验证了,因此程序已经安装了,只是如果不关闭

详解Bypass UAC过程中踩过的坑(第一部分)

本文讲的是详解Bypass UAC过程中踩过的坑(第一部分),我目前正在尝试对Chrome沙盒进行一些改进.而作为其中的一部分,我现在正在对我的沙盒攻击Surface 分析工具进行更新,因为我想衡量我对Chrome做的事情是否具有实际的安全性.但事实上当我在进行这一切时,我一直躲不开绕过UAC的麻烦,这就导致进程出现了问题.所以为了顺便演示下我以前在UAC绕过的博文中所讲的,我决定将这一切再来一次.当我完成这一切的时候,我将使用最新版本的NtObjectManager  Powershell模块

Dridex木马使用前所未有的手段规避UAC

本文讲的是Dridex木马使用前所未有的手段规避UAC,Flashpoint安全研究人员警告:最近观测到的Dridex投放行动利用了新的UAC(用户账户控制)规避方法. Dridex最先于2014年被发现,因其使用了 GameOver ZeuS (GoZ) 恶意软件点对点架构改进版来保护其命令与控制(C&C)服务器,而被认为是GoZ的继任者.Dridex作为最流行的银行木马家族冒头,但其最近的活动相比2014和2015年时的还是有所平缓. 最近观察到的Dridex活动比较小型,针对英国金融机构,

Erebus以Linux勒索软件的方式重出江湖,勒索韩国公司100万美元

本文讲的是Erebus以Linux勒索软件的方式重出江湖,勒索韩国公司100万美元, 6月10日,韩国网络托管公司NAYANA被Erebus 勒索软件(由趋势科技公司检测为RANSOM_ELFEREBUS.A)攻击,导致旗下 153 台 Linux 服务器与 3400 个商业网站感染 Erebus 勒索软件. 安全专家表示,勒索软件 Erebus 滥用 Event Viewer 提权,允许实现用户账户控制( UAC )绕过,即用户不会收到以较高权限运行程序运行的通知.此外, Erebus 还可将