Cómo falsifican firmas digitales en controladores maliciosos de kernel para eludir EDR o Anti virus

Se ha demostrado que los actores de amenazas de habla china están utilizando una vulnerabilidad de la política de Microsoft Windows para falsificar firmas en controladores en modo kernel. El sistema operativo (SO) de Windows se divide en dos niveles o “modos”: el modo de usuario, donde se ubican los archivos y programas con los que interactúan los usuarios, y el modo kernel, donde la base de Windows y los controladores del modo kernel realizan funciones críticas del sistema. operaciones. A través de una serie de métodos incluidos en las bibliotecas del sistema, los controladores pueden usar la API de Windows para habilitar la comunicación entre diferentes modos. Se crea una barrera lógica estrictamente regulada entre el usuario común y el kernel de Windows como resultado de la división del sistema operativo en dos modos. Dado que el acceso al kernel otorga acceso completo a un sistema, mantener esta barrera es esencial para preservar la integridad y la seguridad del sistema operativo. Como consecuencia, el uso de un controlador malicioso puede permitir que un atacante supere esta defensa y se apodere por completo de la máquina objetivo.


Para contrarrestar el peligro que representan los controladores maliciosos, Microsoft comenzó a requerir que los controladores en modo kernel estén firmados digitalmente con un certificado de una autoridad de certificación confiable a partir de Windows Vista de 64 bits. Los controladores maliciosos pueden evitar fácilmente la detección de puntos finales y el software antimalware, lo que hace que sea extremadamente difícil luchar contra ellos sin la aplicación de firmas. La parte más importante de la protección contra controladores maliciosos en modo kernel es requerir firmas en los controladores.

Los controladores maliciosos pueden dificultar el análisis de las muestras, lo cual es otro problema. La mayor parte del análisis debe realizarse de forma manual, ya que la mayoría de los sandbox que se utilizan para evaluar el malware no pueden realizar un seguimiento de todas las acciones de un conductor. Los actores de amenazas han comenzado a utilizar la ofuscación de código en los controladores que distribuyen utilizando herramientas como VMProtect, lo que dificulta aún más el análisis de los controladores.

Los beneficios de usar un controlador malicioso desde el punto de vista del atacante incluyen, entre otros, evadir la detección de puntos finales, poder controlar los procesos del modo usuario y del sistema, y ​​mantener la persistencia en un dispositivo infectado. Estos beneficios brindan a los atacantes un fuerte incentivo para descubrir cómo eludir las reglas de firma del controlador de Windows.

Cisco Talos ha visto a los actores de amenazas explotar una brecha en la política de Windows que permite la falsificación de firmas en controladores en modo kernel, eludiendo las reglas de certificación en Windows. Esto es posible gracias al uso de herramientas de código abierto y certificados no revocados que vencieron o se emitieron antes del 29 de julio de 2015.

Microsoft cambió su política de firma de controladores para prohibir nuevos controladores en modo kernel que no hayan sido enviados y aprobados por su Portal para desarrolladores a partir de la versión 1607 de Windows 10. El objetivo de este procedimiento es garantizar que los controladores cumplan con los criterios y las pautas de seguridad de Microsoft. Microsoft hizo excepciones para lo siguiente en un intento por conservar la funcionalidad y la compatibilidad de los controladores más antiguos:

  1. El sistema operativo de la computadora se actualizó de una versión anterior a Windows 10, versión 1607.
  2. En el BIOS, el arranque seguro está deshabilitado.
  3. Los controladores se firmaron con un certificado de entidad final que se emitió antes del 29 de julio de 2015 y se encadena a una CA con firma cruzada que es compatible.

Un controlador recién desarrollado se puede firmar con certificados no revocados que se emitieron antes del 29 de julio de 2015 o vencieron el 29 de julio de 2015, siempre que el certificado se encadene a una autoridad certificadora con firma cruzada reconocida, gracias a la tercera exención, que abre una garantía defecto. Si un controlador está correctamente firmado de esta manera, no se impedirá la instalación y el inicio del servicio. Como consecuencia, se han creado varios programas de código abierto para aprovechar esta debilidad. Este es un enfoque bien conocido que a menudo se ignora a pesar de presentar un grave peligro para los sistemas Windows y ser razonablemente simple de ejecutar gracias en parte a las herramientas de acceso público.

El software utilizado para crear estos controladores falsos, como HookSignTool y FuckCertVerifyTimeValidity, se ha puesto a disposición del público desde 2019 y 2018, respectivamente. HookSignTool ha estado disponible en GitHub desde el 7 de enero de 2020 y FuckCertVerifyTimeValidity se cargó por primera vez el 14 de diciembre de 2018, respectivamente.

Según Cisco Talos, “HookSignTool es una herramienta de falsificación de firmas de controladores que cambia la fecha de firma de un controlador durante el proceso de firma a través de una combinación de modificación manual de la tabla de importación de una herramienta de firma de código legítima y conexión a la API de Windows”.

La marca de tiempo de la firma se cambia durante la ejecución mediante el enlace a la función CertVerifyTimeValidity, que verifica la validez de tiempo de un certificado.

Según el sitio web FuckCertVerifyTimeValidity GitHub, “Este pequeño proyecto evita que signtool verifique [sic] la validez del tiempo del certificado y le permite firmar su contenedor con un certificado obsoleto sin cambiar manualmente el tiempo del sistema”. ¡El gancho está instalado en crypt32! ¡Haga que kernel32 y CertVerifyTimeValidity siempre devuelvan 0! Como puede firmar un certificado del año 2011 agregando “-fuckyear 2011” a la línea de comando de signtool, GetLocalTime devuelve lo que desea.

Un certificado de firma de código válido que se emitió antes del 29 de julio de 2015, junto con la clave privada y la frase de contraseña del certificado, son necesarios para una falsificación exitosa.

Según los informes, Cisco Talos encontró más de una docena de certificados de firma de código, junto con sus claves y contraseñas asociadas, en un archivo PFX almacenado en un repositorio clonado de FuckCertVerifyTimeValidity en GitHub. No está claro de inmediato cómo se adquirieron estas certificaciones. No solo eso. Un controlador previamente no documentado conocido como RedDriver también está utilizando HookSignTool para falsificar su marca de tiempo de firma. Es un secuestrador de navegador basado en controladores que ha estado activo desde al menos 2021 y utiliza la Plataforma de filtrado de Windows (WFP) para desviar el tráfico del navegador a localhost (127.0.0.1).

Se utiliza una lista codificada de los nombres de proceso de varios navegadores chinos conocidos, incluidos Liebao, QQ Browser, Sogou y UC Browser, así como Google Chrome, Microsoft Edge y Mozilla Firefox, para elegir el navegador de destino. al azar. Aunque no hace falta decir que tal característica puede ser mal utilizada para interferir con el tráfico del navegador a nivel de paquete, el objetivo final de esta redirección del tráfico del navegador no es del todo evidente.

HookSignTool y FuckCertVerifyTimeValidity plantean un gran peligro, ya que la instalación de controladores maliciosos podría proporcionar a un atacante acceso al kernel de un sistema. Estas herramientas también se pueden usar para volver a firmar un controlador descifrado para sortear el DRM, lo que podría resultar en que la piratería de software cueste las ventas de una organización. Además de estos peligros, el uso de controladores que no son de confianza, incluso cuando no hay intenciones maliciosas, puede dañar un sistema si el controlador no se desarrolló correctamente.

Dado que los controladores maliciosos son difíciles de identificar heurísticamente y es mejor detenerlos en función de los valores hash de los archivos o los certificados utilizados para firmarlos, Cisco Talos recomienda prohibir los certificados indicados. Una buena manera de detectar instancias de falsificación de marcas de tiempo es comparar ocasionalmente la marca de tiempo de la firma con la fecha de compilación del controlador. Sin embargo, es crucial tener en cuenta que las fechas de compilación se pueden cambiar para que correspondan con las marcas de tiempo de la firma.