GrabAccess是用于绕过Windows登录密码和Bitlocker的工具。
在物理接触的条件下,可以植入Shift键后门或指定的木马程序。
GrabAccess最基础的功能是安装Shift键后门,将Windows粘滞键替换为任务管理器。在未登录的情况下,攻击者可以借此执行系统命令或读写文件。
-
准备一个U盘。如果是FAT16或FAT32格式,则可以不删除已有的文件。否则需要格式化为上述格式。
-
下载GrabAccess_Release.zip,解压,将其中的EFI文件夹拷贝到U盘根目录。
-
将U盘插入电脑,重启。在启动时进入BIOS菜单。
-
选择从U盘启动,或设置U盘为第一启动项(如果BIOS开启了Security Boot,还需将其设置为DISABLE).
-
如果在Windows引导阶段,出现了伪造的CHKDSK界面,说明后门已经植入成功。
-
在登录界面,连续按下五次Shift键,即可唤出任务管理器。
GrabAccess提供了自动化植入木马程序的功能,并且会自动将其添加到启动项。
要使用该功能,需要预先将GrabAccess与要植入的程序打包:
- 下载GrabAccess_Release.zip,解压。
- 将需要植入的程序,命名为payload.exe,替换目录下的同名文件。
- 运行build.bat。
- 将EFI文件夹复制到U盘根目录。 (U盘如果是FAT16或FAT32格式,则可以不删除已有的文件。否则需要格式化为上述格式。)
- 将U盘插入电脑,重启电脑。在启动时进入BIOS菜单。
- 选择从U盘启动,或设置U盘为第一启动项(如果BIOS开启了Security Boot,还需将其设置为DISABLE).
- 如果在Windows引导阶段,出现了伪造的CHKDSK界面,说明后门已经植入成功。
- 在登陆系统后,payload.exe将会自动启动。
GrabAccess的自动化植入功能,可以绕过Bitlocker的系统盘加密。
当从含有GrabAccess的U盘启动后,GrabAccess的应用程序就会写入到内存中。此时可以拔出U盘,但需要停留在Bitlocker输入密码的界面,等待受害者返回输入密码。不可直接关机或重启。
因为只有Bitlocker解锁之后,GrabAccess的应用程序才会被写入磁盘并执行。在这之前,GrabAccess仅仅临时存在于内存之中。如果在受害者登录之前重启或关机,GrabAccess将会失效。
和Kon-boot篡改Windows内核不同,GrabAccess的工作原理,源自于Windows的一项合法后门:WPBT(Windows Platform Binary Table)。
WPBT常用于计算机制造商植入驱动管理软件、防丢软件。类似Bootkit病毒,一旦主板中存在WPBT条目,无论是重装系统还是更换硬盘,只要使用Windows系统,开机后都会被安装指定程序。
WPBT的原始设计,应当是由生产商在主板的UEFI固件中插入一个特定的模块实现。但是,通过劫持UEFI的引导过程,攻击者可以插入WPBT条目,而无需修改主板固件。
GrabAccess包含两个部分。
其一是用于写入WPBT条目的UEFI应用程序,即源码中的Grab2。是一个修改过的Grab2,包含用于加载WPBT的模块。
其二是一个Windows Native Application,即源码中的NativeAPP。负责写出文件、添加启动项、劫持Windows粘滞键。
在GrabAccess启动之后,Grab2会向内存中写入WPBT条目。接下来Windows正常引导。并加载和执行Native APP。
WPBT所加载的应用程序,并非常规的Win32程序。而是一个Windows Native Application。它在Windows引导过程中执行,早于用户登录。但是Windows提供给Native APP的API,也少于Win32程序。
GrabAccess_Release_v1/bin/nativex64.exe是一个Windows Native App,在Windows引导过程中运行。首先将其末尾的程序写入到:
C:\Windows\System32\NTUpdateService.exe
后添加注册表项目:
\Registry\Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
\\Registry\Machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe
实现自启动,以及劫持Shift键。
Windows在加载Native APP时,会对其进行签名校验。但该过程不会验证签名的有效期,以及签名是否已经被吊销(CVE-2022-21836)。
GrabAccess使用了Hacking Team泄漏,并已经被吊销的数字签名,对Native APP进行签名。
Windows对该漏洞的修复方法,是在driver.stl中添加了一个黑名单,禁止一系列泄漏的数字签名。未来Hacking Team的签名可能会失效,需要更新为其它泄漏的签名。
GrabAccess是对WPBT武器化利用的一个开源实现。开源协议为GPL。读者可以按照需求二次开发,尤其是通过修改其中的Native APP。
目前写入启动项和劫持Shift键的实现,只使用了最基础的手段。如有需要,可以自行编写更高级和隐蔽的后渗透技巧。
源码中的Grab2,需要在Linux环境下编译。理论上BuildGrabAccess.sh脚本可以完成环境的配置和编译。
源码中的Windows Native APP。对其编译需要配置Windows Driver Kits环境。环境配置完成后,在x64 Free Build Environment中运行Build64.bat,即可完成编译。