BlackLotus绕过SecureBoot概要流程
-
三个可利用的EFI文件,具有微软合法签名
https://msdl.microsoft.com/download/symbols/bootmgfw.efi/7144BCD31C0000/bootmgfw.efi
https://msdl.microsoft.com/download/symbols/bootmgr.efi/98B063A61BC000/bootmgr.efi
https://msdl.microsoft.com/download/symbols/hvloader.efi/559F396411D000/hvloader.efi
这三个文件已经被微软禁止访问、下载,未找到副本 -
文件部署
- 重命名
\EFI\Microsoft\Boot\bootmgfw.efi
为\EFI\Microsoft\Boot\winload.efi
- 未启用SecureBoot
将Bootkit拷贝为\EFI\Microsoft\Boot\bootmgfw.efi
- 启用SecureBoot
- 在ESP分区根目录中创建
\system32
文件夹 - 将合法的具有微软签名的shim.efi(bootx64.efi)文件拷贝到
\EFI\Microsoft\Boot\bootload.efi
- 将下载的
bootmgfw.efi
文件拷贝到\EFI\Microsoft\Boot\bootmgfw.efi
- 将下载的
hvloader.efi
文件拷贝到\system32\hvloader.efi
- 将下载的
bootmgr.efi
文件拷贝到\system32\bootmgr.efi
- 将可利用的BCD文件拷贝到
\system32\BCD
Windows Boot Manager -------------------- identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795} description Windows Boot Manager locale en-US inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e} bootdebug Yes displayorder {57e1b615-0355-11ec-abb0-005056c00008} timeout 30 Windows Boot Loader ------------------- identifier {57e1b615-0355-11ec-abb0-005056c00008} device boot path \system32\hvloader.efi description Hoy la disco se flota locale en-US inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7} truncatememory 0x10000000 avoidlowmemory 0x1000 nointegritychecks Yes testsigning Yes isolatedcontext Yes osdevice boot systemroot \ ems Yes
- 将mcupdate_AuthenticAMD.dll文件拷贝到
\system32\mcupdate_AuthenticAMD.dll
- 将mcupdate_GenuineIntel.dll文件拷贝到
\system32\mcupdate_GenuineIntel.dll
- 重命名
\EFI\Microsoft\Boot\BCD
为\EFI\Microsoft\Boot\BCDR
,即备份BCD文件为BCDR - 将可利用的BCD文件拷贝到
\EFI\Microsoft\Boot\BCD
,并修改HKEY_LOCAL_MACHINE\BCDLoadName\Description
中KeyName
的值为BCD00000000
Windows Boot Manager -------------------- identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795} description Windows Boot Manager locale en-US inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e} bootdebug No displayorder {527f84fc-036e-11ec-abb0-005056c00008} timeout 30 Windows Boot Loader ------------------- identifier {527f84fc-036e-11ec-abb0-005056c00008} device boot path \system32\bootmgr.efi description RIP the woo locale en-US inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7} avoidlowmemory 0x10000000 bootdebug No isolatedcontext Yes custom:22000023 \system32\bcd ems Yes
- 重启系统,实现将自签名证书加入MOK,绕过SecureBoot检测
- 系统启动时,启动链如下
检测ESP根目录下的\system32等相关文件是否存在,如果存在,则重命名\EFI\Microsoft\Boot\bootload.efi为\EFI\Microsoft\Boot\bootmgfw.efibootmgfw.efi -> BCD -> \system32\bootmgr.efi -> \system32\hvloader.efi -> \system32\mcupdate_GenuineIntel.dll -> MokInstallEfiApp
13. 拷贝Bootkit到\EFI\Microsoft\Boot\grubx64.efi
14. 恢复\EFI\Microsoft\Boot\BCDR
为\EFI\Microsoft\Boot\BCD
15. 设置UEFI中的MokList变量,使得自签名的grubx64.efi绕过SecureBoot
16. 删除\system32下的所有文件
17. 重启系统,实现启动自签名模块grubx64.efi,进而在启动Windows系统时植入木马
18. 系统启动时,启动链如下bootmgfw.efi -> grubx64.efi -> winload.efi -> BCD -> \Windows\System32\winload.efi -> Hook、Patch Kernel -> Install Malware
- 重启后,shim版的bootmgfw.efi启动Bootkit伪装的grubx64.efi,成功绕过SecureBoot
随后,Bootkit伪装的grubx64.efi加载真正的winload.efi(即原始的bootmgfw.efi),进行Hook、Patch
等操作后启动目标系统,实现持久化.
- 在ESP分区根目录中创建
- 重命名
-
参考连接
BlackLotus 分析1–安装器阶段
BlackLotus 分析2–boot-内核阶段
BlackLotus 分析3–http_downloader
BlackLotus UEFI bootkit: Myth confirmed
Myth confirmed