La criptografía canalla detrás del ransomware

14 de marzo de 2023
claves para conocer qué es GitHub
Marta López
Marta López

Head of Marketing and Communication

Dr. Gonzalo Álvarez Marañón, Director del Máster de Ciberseguridad Online y Director I+D de Funditec.

Quién iba a decirnos que la criptografía se explotaría maliciosamente para crear una de las categorías más devastadoras de malware. Y así es: el ransomware bloquea el acceso a los archivos de la víctima y pide un rescate a cambio de la clave de cifrado.

La criptografía detrás de las primeras muestras de ransomware fue simplista e ingenua. Típicamente, el ransomware cifraba cada archivo con una clave diferente de AES (o algoritmos débiles, de todo había), pero todas las claves AES se almacenaban en un archivo en el sistema secuestrado. El módulo descifrador del ransomware podía encontrar fácilmente las claves y descifrar cada archivo, pero también lo podían hacer los investigadores de seguridad mediante reversing. Si no quieres que alguien descifre un archivo, es una mala idea dejar las claves tiradas por ahí… bajo el felpudo, por así decirlo.

Los autores de ransomware se volvieron lógicamente hacia el cifrado asimétrico en busca de solución. La ventaja más evidente de la criptografía asimétrica es que una clave pública puede estar en el sistema de la víctima y su correspondiente clave privada puede estar en otro lugar. Ahora bien, por razones de eficiencia, los archivos no pueden cifrarse con RSA directamente. Es necesario recurrir a algoritmos más rápidos para cifrar el contenido de los archivos, mientras que las correspondientes claves de cifrado simétrico pueden cifrarse individualmente con RSA. Después de todo, una clave AES es sólo 16 bytes para el AES-128 y 32 bytes para el AES-256. Cada clave puede cifrarse fácilmente con RSA antes de ser almacenada en el sistema de la víctima. RSA las cifra con la clave pública, así que mientras la clave privada no esté disponible para la víctima, no podrá descifrar las claves AES.

Existen dos variantes ingenius de este enfoque, ambas problemáticas:

  • El primer enfoque consiste en generar el par de claves con antelación y codificar la clave pública en el propio malware. Una vez que el malware ha cifrado todas las claves AES con la clave pública, la víctima tiene que pagar el rescate para que se le envíe la clave privada para su descifrado. El fallo obvio de este diseño es que la misma clave privada desbloquearía todos los sistemas atacados por el ransomware, ya que cada copia del malware incorpora la misma clave pública.
  • El segundo enfoque consiste en que el ransomware genere el par de claves RSA en el sistema de la víctima y transmita la clave privada al servidor de comando y control (C&C). Ahora una clave pública única por cada muestra de malware cifra las claves AES. Cuando el atacante libera la clave privada para descifrar, sólo desbloquea los archivos de la víctima específica. El problema aquí es que el sistema tiene que estar en línea para deshacerse de la clave privada y muchos sistemas de monitorización de red detectarán transmisiones a IPs de riesgo, desde las cuales operan los servidores de C&C. La mera transmisión de la clave privada podría revelar la presencia del ransomware antes incluso de que haya empezado a cifrar los archivos del sistema. Es más sigiloso hacerlo todo en local, hasta que el sistema esté completamente bloqueado.

El ransomware moderno resuelve todos estos problemas con un enfoque bastante inteligente:

  • El atacante genera en su propio sistema una pareja de claves asimétricas para uso a largo plazo, a las que llamaremos claves asimétricas permanentes.
  • El atacante crea un malware y codifica la clave pública permanente en el malware. Cuando el malware se activa en la máquina de la víctima, lo primero que hace es generar en local un nuevo par de claves asimétricas, a las que llamaremos el par de claves local. Cifra inmediatamente la nueva clave privada local generada usando la clave pública permanente del atacante, incrustada en el malware. Antes de seguir, elimina concienzudamente la clave privada local no cifrada.
  • El malware comienza a cifrar los archivos del disco utilizando AES-CTR o AES-CBC. Cada archivo se cifra con una clave simétrica diferente, generada aleatoriamente, y luego cada clave se cifra con la clave pública local. La versión sin cifrar de cada clave simétrica se destruye a conciencia tan pronto como el archivo termina de ser cifrado.
  • Una vez concluido todo el proceso, los archivos de la víctima han acabado cifrados con claves AES aleatorias que a su vez están cifradas con la clave pública local. Estas claves AES se pueden descifrar con la clave privada RSA local, pero esa clave se guarda cifrada con la clave pública permanente del atacante y la correspondiente clave privada no está en la máquina de la víctima, sino en la del atacante.
  • El atacante muestra a la víctima un mensaje exigiendo el rescate. Si la víctima acepta y paga el rescate (normalmente a través de Bitcoin), el atacante proporciona algún tipo de código de autenticación al malware. El malware transmite la clave privada local cifrada al atacante. Utilizando su clave privada permanente, descifra la clave privada local y la envía de vuelta a la víctima. Ahora se pueden descifrar todas las claves AES y, con ellas, todos los archivos cifrados de esa máquina, pero de ninguna otra.

Lo sutil de este protocolo es que el atacante nunca revela su clave privada permanente. Sigue siendo privada. El atacante se limita a descifrar una clave privada secundaria para que la víctima la use para desbloquear el resto del sistema. Como esta clave privada local es distinta para cada sistema comprometido, su revelación solo afecta al sistema en cuestión.

Bien implementada, la criptografía de un ransomware es inatacable. Con el tiempo, los ingenieros de reversing de las grandes firmas de antivirus no encontrarán manera de crear “descifradores”. Sólo nos quedarán la prevención y la disciplina férrea con las copias de seguridad.

Compartir:
Volver al Blog
Suscríbete a nuestra newsletter
menuchevron-down