EFIGUARD es un Bootkit de UEFI Portable X64 que parche el Administrador de arranque de Windows, el cargador de arranque y el núcleo en el momento del arranque para deshabilitar la aplicación de la firma de PatchGuard y del controlador (DSE).
Si solo está buscando probar EFIGUARD, salte al uso.
Actualmente admite todas las versiones compatibles con EFI de Windows X64 jamás lanzadas, desde Vista SP1 hasta Windows 11.
Fácil de usar: se puede arrancar desde un Stick USB o la partición EFI de Windows a través de un cargador que encuentra automáticamente y Boots Windows. El controlador también se puede cargar y configurar manualmente utilizando el shell UEFI o el cargador.
Hace un uso extensivo de la biblioteca de Desensamblea Zydis para una decodificación de instrucciones de tiempo de ejecución rápida para admitir un análisis más sólido que lo que es posible con la coincidencia de firma, lo que a menudo requiere cambios con las nuevas actualizaciones del sistema operativo.
Funciona pasivamente: el controlador no carga ni inicia el Administrador de arranque de Windows. En su lugar, actúa en una carga de bootmgfw.efi por el administrador de arranque de 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 es Windows, el controlador se descargará automáticamente.
Admite un parche de 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 el modo de recuperación de WinPE, Windows o Windows.
Recuperación elegante: en el caso de la falla del parche, el controlador mostrará información de error y solicitará continuar arrancando o reiniciar presionando ESC. Esto es cierto incluso hasta la etapa final del parche del núcleo, porque la última etapa de parche ocurre antes de que se llame ExitBootServices . Muchos UEFI Windows Bootkits Hook OslArchTransferToKernel que, aunque fácil de encontrar por la 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 decirle al usuario que algo salió mal. Si bien Efiguard es un Bootkit de UEFI, no comenzó como uno. Efiguard era originalmente un parche en disco que se ejecuta en NT (similar a UPGDSED), destinado a probar la viabilidad de una apropiación basada en desapego, en lugar de usar símbolos PDB y firmas específicas de la versión. PatchNtoskrnl.c todavía se parece mucho a este diseño original. Solo después de que este enfoque resultó exitoso, sin necesarios modificaciones al código en más de un año de actualizaciones de Windows, la UEFI entró en la imagen como una forma de mejorar aún más las capacidades y la facilidad de uso.
Algunos de los beneficios proporcionados por un enfoque de Bootkit incluyen:
bcdedit .ImgpValidateImageHash (aunque esto todavía se hace opcionalmente).db . La encarnación inicial de Efiguard como Bootkit fue un intento de hacer que el UEFI-Bootkit de Dude719 funcione con versiones recientes de Windows 10, porque se había vuelto anticuado y ya no funciona en las últimas versiones (como UPGDSED, a menudo causadas por escaneos de patrones sensibles a la versión). Si bien finalmente hice que esto funcionara, no estaba satisfecho con el resultado principalmente debido a la elección de enganchar OslArchTransferToKernel , que como se indica anteriormente en modo protegido y después de que se llame ExitBootServices . Aparte de esto, no estaba satisfecho con solo poder parchear algunas versiones de Windows 10; Quería que el Bootkit funcionara en cada versión compatible con EFI de Windows X64 lanzada hasta la fecha. Debido a esto, reescribí el Bootkit desde cero con los siguientes objetivos:
En el diagrama de arriba. Para los ganchos y parches específicos de componentes individuales, consulte EfiGuardDxe/PatchXxx.c en los archivos de origen. Para la inicialización/descarga del controlador y los ganchos de servicios de arranque y tiempo de ejecución de EFI, consulte EFIGUARDDXE.C.
Efiguard tiene licencia bajo el GPLV3. Los archivos en el submódulo EfiGuardDxe/Zydis tienen licencia bajo la licencia MIT.