El 17 de enero de 2015, el portal Spiegel.de publicó un extenso artículo en base a documentos obtenidos de Edward Snowden. Al mismo tiempo, proporcionaron una copia de un programa malicioso llamado “QWERTY“, que supuestamente usan varios gobiernos en sus operaciones CNE.
Obtuvimos una copia de los ficheros maliciosos que publicó Der Spiegel y cuando los analizamos, de inmediato nos recordaron a Regin. Tras analizar el código, concluimos que el programa malicioso “QWERTY” posee idénticas funciones que la extensión Regin 50251.
Análisis
El paquete del módulo Qwerty consiste de tres binarios y sus correspondientes ficheros de configuración. Un fichero del paquete (20123.sys) nos pareció de particular interés:
“20123.sys” es un modo kernel parte del keylogger. Resulta que se creó a partir del código fuente que también se encuentra en el módulo Regin: la extensión “50251”.
Mediante un diff binario resulta fácil localizar una parte importante del código que ambos ficheros comparten:
Gran parte del código compartido pertenece a la función que accede al controlador del teclado del sistema:
La mayor parte de los componentes de “Qwerty” llaman a extensiones del mismo paquete (con números de extensión 20121 – 20123), pero también existe un código que referencia las extensiones de la plataforma Regin. Una parte en particular de este código se usa en el módulo 20123 de “Qwerty” y en su contraparte 50251 de Regin, y se refiere a la extensión 50225 que se encuentra en el sistema de ficheros virtual de Regin. La extensión 50225 de Regin es responsable de la intercepción en modo kernel.
Esta es una sólida evidencia de que la extensión Qwerty sólo puede funcionar como parte de la plataforma Regin, utilizando las funciones de intercepción de la extensión 50225.
Como prueba adicional de que ambos módulos usan la misma plataforma de software, podemos dar un vistazo a las funciones exportadas por el ordinal 1 de ambos módulos. Contienen el código de arranque que se encuentra en cualquier otra extensión de Regin, e incluye el número verdadero de la extensión registrado en la plataforma a fin de permitir futuras referencias del módulo. Esto sólo tiene sentido si los módulos se usan con el orquestador de la plataforma Regin.
Aún no conocemos la razón por la que ambos módulos dan diferentes identidades a las extensiones. Quizás se deba a que los utilizan diferentes actores, cada uno con sus respectivos rangos de identidad de extensión asignados.
Conclusiones
Nuestro análisis del programa malicioso QWERTY publicado por Der Spiegel, indica que se trata de una extensión diseñada para formar parte de la plataforma Regin. El keylogger QWERTY no funciona como un módulo autónomo, sino que depende de las funciones de intercepción kernel que suministra el módulo 50225 de Regin. Considerando la extrema complejidad de la plataforma Regin y las pocas opciones de que alguien la duplique sin acceder a sus códigos fuente, llegamos a la conclusión de que los desarrolladores del programa malicioso QWERTY y los de Regin son los mismos o trabajan juntos.
Otra observación importante es que las extensiones de Regin se guardan dentro de un VFS cifrado y comprimido, lo que significa que no existen directamente en la máquina de la víctima en su formato “nativo”. El despachador de la plataforma carga y ejecuta ahí las extensiones en el arranque. La única forma de atrapar al keylogger es escaneando la memoria del sistema o descifrando los VFS.
Comparación entre el módulo 50251 de Regin y el keylogger “Qwerty”