BitLocker是一种现代数据保护功能,已与Windows内核深度集成。它的加密功能可用于保护公司机密。Microsoft建议使用受信任的平台模块来完成一些繁重的加密任务。
绕过BitLocker的6个步骤
在Windows 10系统没有加密、硬盘驱动器受BitLocker保护的情况下,可以执行以下操作来添加管理员帐户:
在登录页面上,选择“忘记密码”。
绕过锁定,启用可移动驱动器的自动播放。
插入带有.exe和连接文件夹的U盘。
运行可执行文件。
移除U盘,然后再重新插进电脑,进入主页面。
启动Narrator,执行之前植入的DLL有效载荷。
添加了一个名为hax的用户帐户,其密码为“ hax”,拥有管理员身份。用需要登录的帐户更新列表,单击“忘记密码”,然后返回主页面。
绕过
锁屏
首先,选择“忘记密码”。这个选项会启动一个附加会话,并根据需要创建/删除帐户。用户个人资料服务把它当作默认帐户。它的第一个名称为defaultuser1,defaultuser100000,defaultuser100001,以此类推。
要绕过锁定就必须用“Narrator”,因为如果我们设法启动某些内容,我们是看不到这些内容的,但用“Narrator”,我们将能够对其进行操控。但是,如何启动我们想要的内容?
如果我们连续快速地按5次shift键,就会弹出一个打开“设置”应用程序的链接,该链接实际上是有效的。我们看不到已启动的“设置”应用程序。点击链接,程序启动后,点击其可以看得到的地方。最简单的方法就是,每秒点击两次该链接。粘滞键窗口会消失。继续点击!然后,“设置”应用程序就会出现的屏幕中央,现在,你可以停止点击了。
现在,用CapsLock +左箭头操作“设置”应用程序,按着直到回到“主页”。回到“主页”后,按住CapsLock,再按Enter。用CapsLock +右箭头操作“设置”,页面锁定后,按CapsLock + Enter进入“设备”。
进入“自动播放”页面,点击CapsLock + Enter,然后选择“打开文件夹查看文件(文件资源管理器)”。现在插入准备好的U盘,等待几秒钟,Narrator告知驱动器已打开,窗口已锁定。选择Exploit.exe文件,用CapsLock + Enter执行。这是任意代码执行,且无需任何密码。但是,我们只能运行默认配置文件。
由于无法截屏,所以我用手机录了个视频。
特权提升
挂载U盘后,BitLocker会在“System Volume Information”文件夹中创建一个名为ClientRecoveryPasswordRotation的目录,并将权限设置为:
NT AUTHORITY\Authenticated Users:(F)
重定向创建操作,需要在NT名称空间中使用符号链接,因为它能让我们控制文件名,且该链接的存在并不会终止操作。
所以,用USB驱动器,把\System Volume Information作为挂载点,挂载\RPC Control。然后编写一个符号链接\RPC Control\ClientRecoveryPasswordRotation指向\??\C:\windows\system32\Narrator.exe.local。如果重新插入U盘,会创建一个C:\windows\system32\Narrator.exe.local文件夹,我们有权限在文件夹里创建子目录:
amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.657_none_e6c5b579130e3898
删除子目录里一个叫comctl32.dll的有效载荷DLL 。下次触发Narrator时,它会加载DLL。顺便说一句,我选了Narrator,因为在登录页面,它可以作为系统服务触发,且不会自动加载,所以就算出现任何问题我们仍然可以启动。
结合
ClientRecoveryPasswordRotation开发工作需要用到\RPC Control的符号链接。USB驱动器上的可执行文件用对DefineDosDevice进行两次调用,创建链接,让该链接成为永久链接,可以随时注销/登录。
然后启动一个循环,其可执行文件会执行以下操作:
尝试创建子目录。
将有效载荷comctl32.dll植入其中。
我们可以清楚地看到循环何时运行,因为Narrator会移动焦点框,且每秒显示一次“访问被拒绝”。现在,我们可以使用RPC Control创建的链接。拔掉U盘,然后重新插入。在System32创建可写入目录;在下一个循环迭代会植入有效载荷,退出exploit.exe。若要测试漏洞利用程序是否成功,请重启“Narrator”。
如果Narrator不起作用,那是因为已植入DLL,且Narrator执行了该DLL,但是由于它以defaultuser1的身份启动,所以无法添加帐户。植入有效载荷后,要点击返回登录页面,启动“Narrator”。接着会发出3声哔哔声,一个消息框弹出来,显示SYSTEM,说明已加载DLL。帐户已创建,但不在列表中。点击“忘记密码”,然后单击返回,更新列表。
最后会出现一个名为hax的新帐户,密码为hax。
制作
恶意的U盘
按照以下步骤保护USB设备:
C:\Users\jonas>format D: /fs:ntfs /q
把新的磁盘插入D驱动:
准备好后按ENTER键
-----
文件系统: NTFS.
快速格式化 30.0 GB
卷标 (32 字符, 直接按ENTER键)?
创建文件系统结构
格式化完成
30.0 GB磁盘空间
30.0 GB全部可用
现在,我们需要升级为管理员,删除System Volume Information。
C:\Users\jonas>d:
然后会变成
SUCCESS: The file (or folder): "D:\System Volume Information" now owned by user "DESKTOP-LTJEFST\jonas".
接着我们可以
D:\>icacls "System Volume Information" /grant Everyone:(F)
用James Forshaw的工具创建挂载点。
D:\>createmountpoint "System Volume Information" "\RPC Control"
然后把附件的exploit.exe复制进去。
D:\>copy c:\Users\jonas\source\repos\exploitKit\x64\Release\exploit.exe .
复制一个文件。
补丁
我上报了这个漏洞,分配到的序列号是CVE-2020-1398。它的补丁是https://msrc.microsoft.com/update-guide/en-us/vulnerability/CVE-2020-1398。
木星安全实验室(MxLab),由中国网安·广州三零卫士成立,汇聚国内多名安全专家和反间谍专家组建而成,深耕工控安全、IoT安全、红队评估、反间谍、数据保护、APT分析等高级安全领域,木星安全实验室坚持在反间谍和业务安全的领域进行探索和研究。