
Deshabilitar PatchGuard y la aplicación de firmas de controladores en el momento de arranque
EfiGuard es un bootkit UEFI x64 portátil que parchea el administrador de arranque, el cargador de arranque y el kernel de Windows durante el arranque para deshabilitar PatchGuard y la aplicación de firma de controladores (DSE).
Si solo buscas probar EfiGuard, salta a Uso.
Actualmente es compatible con todas las versiones de Windows x64 compatibles con EFI jamás lanzadas, desde Vista SP1 hasta Windows 11.
Fácil de usar: se puede iniciar desde una unidad USB o la partición EFI de Windows mediante un cargador que encuentra e inicia Windows automáticamente. El controlador también se puede cargar y configurar manualmente usando el shell UEFI o el cargador.
Hace un uso extensivo de la biblioteca desensambladora Zydis para la decodificación rápida de instrucciones en tiempo de ejecución, lo que permite un análisis más robusto que el posible con la coincidencia de firmas, que a menudo requiere cambios con las nuevas actualizaciones del sistema operativo.
Funciona de forma pasiva: el controlador no carga ni inicia el administrador de arranque de Windows. En su lugar, actúa sobre una carga de bootmgfw.efi por parte del administrador de arranque del firmware a través del menú de selección de arranque o una aplicación EFI como el cargador. Si se inicia un sistema operativo que no sea Windows, el controlador se descargará automáticamente.
Admite parcheo en cuatro etapas para cuando bootmgfw.efi inicia bootmgr.efi en lugar de winload.efi. Este es el caso cuando se carga un archivo WIM para iniciar WinPE, la configuración de Windows o el modo de recuperación de Windows.
Recuperación elegante: en caso de fallo del parche, el controlador mostrará información de error y solicitará continuar con el arranque o reiniciar presionando ESC. Esto es cierto incluso hasta la etapa final de parcheo del kernel, porque la última etapa de parcheo ocurre antes de que se llame a ExitBootServices. Muchos bootkits UEFI de Windows enganchan OslArchTransferToKernel, que, aunque es fácil de encontrar mediante coincidencia de patrones, es una función que se ejecuta en modo protegido después de ExitBootServices. Esto significa que no hay servicios de arranque disponibles para informar al usuario de que algo salió mal.

Fallo de parche simulado con información de error
Depurable: puede enviar mensajes a un depurador del kernel y a la pantalla (aunque almacenados en búfer) durante la etapa de parcheo del kernel, y a un puerto serie o sin búfer a la pantalla durante las etapas de parcheo del administrador de arranque y el cargador de arranque. Si el controlador se compila con información de depuración PDB, es posible cargar los símbolos de depuración en cualquier momento después de la inicialización de HAL especificando la base virtual del controlador DXE y depurándolo como lo haría con un controlador NT normal.
Omisiones de DSE: disponibles como una desactivación directa de DSE al estilo UPGDSED en el momento del arranque o como un gancho en el servicio EFI en tiempo de ejecución SetVariable(). Este último sirve como una puerta trasera arbitraria de lectura/escritura en modo kernel que se puede llamar desde Windows usando NtSetSystemEnvironmentValueEx y permite establecer g_CiEnabled/g_CiOptions al valor deseado. Se proporciona una pequeña aplicación similar a DSEFix llamada EfiDSEFix.exe que se puede utilizar para esto. También es posible dejar DSE habilitado y deshabilitar solo PatchGuard. El cargador usará el método de gancho SetVariable por defecto, debido a que algunos programas antichoque y antivirus no entienden la diferencia entre trampas o malware y los controladores autofirmados en general y apuntan a la corrección de UPGDSED.
Admite kernels y cargadores de arranque modificados en disco mediante el parcheo de ImgpValidateImageHash en cada etapa, así como ImgpFilterValidationFailure, que puede denunciar silenciosamente algunas clases de violaciones a un TPM o al archivo de registro SI.
Permite que el Arranque Seguro funcione con Windows 7 (¡no es broma!). Windows 7 en sí mismo es ajeno al Arranque Seguro ya que no lo admite, ni (oficialmente) siquiera arrancar sin CSM. Esto es útil para personas que quieren usar Windows 7 en un dispositivo bloqueado que requiere Arranque Seguro WHQL. Entrada de wiki sobre cómo hacer que esto funcione aquí.

WinObjEx64 en Windows 7 con Arranque Seguro habilitado
SetVariable causará una comprobación de error SECURE_KERNEL_ERROR si se usa para escribir en g_CiOptions.Hay dos formas de usar EfiGuard: iniciar la aplicación cargadora, que cargará el controlador e iniciará Windows por usted, o instalar el controlador como una entrada de controlador UEFI para que el firmware lo cargue automáticamente.
Instalar el controlador puede ser preferible en algunas configuraciones avanzadas, como cuando se arranca múltiples sistemas, pero el cargador es el más fácil de usar y debería funcionar bien en todas las configuraciones. Consulta la tabla a continuación para ver las diferencias más importantes entre los dos métodos. Si no estás seguro, elige la aplicación cargadora.
| Ubicación | Instalación | ¿Se puede saltar? | ¿Qué SO se inicia? | |
|---|---|---|---|---|
| Entrada de controlador UEFI | Debe estar en la ESP | Mediante Shell UEFI | ❌ | Igual que antes |
| Cargador | En cualquier lugar | No es necesario | ✔️ | Windows |
Comparación entre cargador y entrada de controlador UEFI