Investigadores de la empresa ESET han descubierto un nuevo bootkit llamado «Bootkitty», que se instala después de la intrusión en el sistema en lugar del cargador GRUB y se utiliza para insertar componentes maliciosos en el núcleo de Linux, permitiendo así que el atacante controle de manera encubierta el sistema y realice sus acciones. Se afirma que este es el primer bootkit UEFI dirigido a sistemas Linux.
Bootkitty se ubica en el archivo grubx64.efi en la partición del sistema EFI (EFI system partition, /boot/efi/EFI/ubuntu) en lugar del cargador GRUB original. Tras ser activado por el firmware UEFI, el bootkit carga en memoria el verdadero cargador GRUB2 y realiza modificaciones en el código de GRUB2 que se encuentra en memoria, deshabilitando la verificación de la integridad de los componentes que se cargan posteriormente, así como añadiendo un controlador que se invoca después de descomprimir la imagen del núcleo de Linux en memoria. Este controlador modifica las funciones del núcleo que se encuentran en memoria (deshabilita la verificación de los módulos mediante firma digital) y también cambia la cadena de inicio del proceso de inicialización de «/init» a «LD_PRELOAD=/opt/injector.so /init».
La biblioteca injector.so intercepta algunas operaciones de SELinux y la función init_module, que luego se utiliza para cargar el módulo del núcleo /opt/dropper.ko. El módulo del núcleo dropper.ko crea y ejecuta el archivo ejecutable /opt/observer, luego se oculta en la lista de módulos del núcleo y establece controladores para llamadas del sistema, como getdents y tcp4_seq_show, para ocultar el archivo /opt/observer y ciertos tráficos de red. El archivo ejecutable /opt/observer carga el módulo del núcleo /opt/rootkit_loader.ko, que es el cargador del rootkit /opt/rootkit.

Para instalar el bootkit se requiere acceso privilegiado al sistema, y este tipo de malware es normalmente utilizado por atacantes tras una intrusión exitosa o la violación del sistema para consolidar su presencia y ocultar la actividad maliciosa que llevan a cabo. La biblioteca injector.so y los módulos maliciosos del núcleo son colocados en la imagen del disco RAM inicial o en el sistema de archivos por el atacante. El cargador grubx64.efi se ubica en la partición de archivos para UEFI.
En la variante de Bootkitty que llegó a manos de los investigadores, la modificación de las funciones en la memoria del núcleo se realizaba en desplazamientos predefinidos sin verificar la validez de estos desplazamientos para la versión del núcleo que se había cargado. Los desplazamientos utilizados en Bootkitty solo eran aplicables a versiones del núcleo y GRUB que se entregaban en ciertas ediciones de Ubuntu, y en otros sistemas provocaban fallos al iniciar. Para verificar el cargador de arranque Bootkitty (grubx64.efi), se utilizaba un certificado autofirmado, lo que impedía la aplicación del bootkit en sistemas con el modo UEFI Secure Boot habilitado sin instalar previamente el certificado del atacante en la lista de certificados de confianza en UEFI. Estas características llevaron a los investigadores a pensar que Bootkitty era solo un prototipo de bootkit, todavía no utilizado para ataques reales.
Al estudiar la información publicada por ESET, los investigadores de la empresa Binarly Research notaron entre los artefactos relacionados con Bootkitty imágenes BMP utilizadas para explotar la vulnerabilidad LogoFAIL, que permite ejecutar código a nivel de firmware UEFI y eludir el mecanismo UEFI Secure Boot. En el contexto de Bootkitty, la explotación de la vulnerabilidad LogoFAIL se utilizaba para añadir a la lista de certificados aprobados de UEFI un certificado autofirmado del atacante, que certificaba el cargador de arranque del bootkit grubx64.efi, permitiendo así iniciar el bootkit en sistemas con UEFI Secure Boot activo sin necesidad de añadir manualmente el certificado.
El ataque se lleva a cabo mediante la colocación en la partición ESP (EFI System Partition) de una imagen especialmente diseñada en formato BMP para su visualización por el firmware UEFI como el logotipo del fabricante. Debido a la utilización de bibliotecas vulnerables en los firmwares UEFI para trabajar con imágenes, el procesamiento de la imagen especialmente diseñada puede provocar un desbordamiento de búfer y la ejecución de código con privilegios del firmware UEFI. La vulnerabilidad LogoFAIL fue descubierta hace un año y afectaba a los firmwares UEFI, utilizados en dispositivos como ordenadores portátiles de Acer, HP, Fujitsu y Lenovo. En las nuevas versiones de firmwares UEFI, el problema ha sido solucionado, pero muchos dispositivos en uso continúan operando con versiones vulnerables del firmware.

Fuente: opennet.ru
