Menu
in

Jellyfish: Un rootkit que infecta tu GPU

De todas las amenazas digitales que pueden afectar a un ordenador, el rootkit merece sin lugar a dudas un capítulo aparte. Su capacidad de sigilo y su resistencia a los métodos tradicionales de limpieza convierten al rootkit promedio en un oponente formidable, y a esto debemos sumar la creatividad de sus desarrolladores. En esta ocasión, nos encontramos con Jellyfish, una «prueba de concepto» en materia de rootkits que puede infectar el sistema gráfico de un ordenador, mejorando así tanto su camuflaje como su rendimiento.

La idea de infectar firmware no es nueva. Los expertos han explorado esta posibilidad durante años, y las novedades en relación a la NSA haciéndose un festín con los discos duros no hace otra cosa más que confirmar todo lo que habíamos sospechado hasta aquí. Obviamente estamos de acuerdo en que no son rutas de ataque «sencillas», pero los recursos técnicos existen, y el interés es cada vez más amplio. Quien no esté convencido de eso sólo debe hacer una visita a GitHub para descubrir dos nuevas pruebas de concepto. La primera, que reclama prioridad en nuestro título, se llama Jellyfish. En términos sencillos, se trata de un rootkit capaz de infectar el GPU de un ordenador, y permanecer allí aún después de ser apagado. ¿Por qué alguien decidiría infectar a un GPU? En realidad, las razones son bastante buenas.

Además de mantenerse intacto en el hardware, Jellyfish puede espiar la memoria del CPU a través de DMA, y aprovechar los recursos del GPU disponibles para operaciones matemáticas. Como si eso fuera poco, no existe ninguna herramienta de análisis que verifique la presencia de código malicioso en un GPU. Hasta ahora, las variantes de malware que buscaban extraer algo del GPU lo hacían pensando en la minería de criptomonedas, pero Jellyfish trabaja a un nivel más profundo. Sus requerimientos técnicos nos hablan de controladores OpenCL, y hardware Nvidia o AMD, con un soporte limitado para chips Intel con ayuda del SDK de AMD. El desarrollo de Jellyfish no está completo, y una de sus misiones a futuro será incorporar un «client listener», que mantendrá los buffers almacenados en el GPU hasta que el servidor de control envíe un paquete para liberarlos.

El segundo malware es un keylogger conocido como Demon, inspirado en un estudio que la Universidad Columbia publicó en el año 2013. La idea aquí es que Demon vigile el buffer del teclado desde el GPU vía DMA, sin depender de clásicos «ganchos» o modificaciones agresivas sobre el código del kernel. Los responsables de Demon y Jellyfish insisten en que no tienen relación con los creadores del estudio de Columbia, y a decir verdad, no es necesario que la tengan para causar ruido. ¿Un GPU espiando y registrando todo lo que escribimos? En mi manual, eso es una pesadilla. Por otro lado, existe la función IOMMU (input/output memory management unit), que entre otras cosas protege a la memoria de acciones extrañas en DMA, aunque no está presente en todo el hardware. Implementar un ataque basado en Jellyfish probablemente sea muy difícil, sin embargo… el código está en GitHub.

Escrito por Lisandro Pardo

Leave a Reply