clave maestra de CryptoLocker

6

Estoy luchando para entender cómo es posible descifrar archivos cifrados por el ransomware TeslaCrypt utilizando el clave maestra que proporcionaron sus creadores .

Hasta donde yo sé, el ransomware encripta los archivos usando un sistema de cifrado simétrico, y luego encripta la clave usando un esquema de encriptado asimétrico. ¿Cómo se descifran los archivos afectados al tener la clave maestra?

    
pregunta Vlad Calin 29.07.2016 - 12:35
fuente

1 respuesta

6

En un nivel muy abstracto: el malware en el equipo de cada víctima, además de las claves AES cifradas utilizadas para cifrar los archivos, almacena una copia cifrada de la clave privada necesaria para descifrarlos. Esta copia en sí misma está cifrada con la clave pública del atacante y se puede descifrar con la clave privada del atacante (llamada "clave maestra" en el artículo).

Intentaré reformular el artículo de Kaspersky TeslaCrypt 2.0 disfrazado de CryptoWall de una manera más detallada.

En aras de la simplicidad, omitiré el hecho de que cada archivo se puede codificar con una clave AES diferente. También la implementación real puede diferir (en particular, se pueden enviar más datos al atacante y algunos pasos se realizan en el lado del atacante). De todos modos, la respuesta apunta a explicar cómo funciona el esquema de contraseña maestra:

Al principio, la víctima solo tiene attacker-public-key (incrustado en el malware).
El atacante tiene attacker-private-key .

  1. el malware crea una nueva dirección BTC con un victim1-BTC-public-key (para enviar BTC) y un BTC-private-key (para retirar BTC)
  2. el malware utiliza attacker-public-key y y victim1-BTC-private-key como entrada para ECDH que genera un encryption-key-1
  3. el malware XORs victim1-BTC-private-key con el encryption-key-1 , almacena el resultado como encrypted-victim1-BTC-private-key , olvida encryption-key-1
  4. el malware envía el victim1-BTC-private-key al atacante y lo elimina

La víctima posee: attacker-public-key , victim1-BTC-public-key , encrypted-victim1-BTC-private-key .
El atacante posee: attacker-private-key , victim1-BTC-private-key .

El siguiente malware comienza a cifrar archivos:

  1. el malware genera un par de claves y utiliza la clave privada como clave de cifrado AES, por lo que el par consiste en victim1-AES-key ( victim1-keypair-private-key ) y victim1-keypair-public-key
  2. el malware utiliza victim1-BTC-public-key y victim1-AES-key como entrada para ECDH que genera un encryption-key-2
  3. el malware XORs AES-key con el encryption-key-2 , almacena el resultado como clave AES cifrada, olvida la clave 2 encriptada

La víctima posee: attacker-public-key , victim1-BTC-public-key , encrypted-victim1-BTC-private-key , victim1-keypair-public-key , encrypted-victim1-AES-key .
El atacante posee: attacker-private-key , BTC-victim1-private-key .

Ahora la víctima pagó el rescate y el atacante libera una clave para descifrar los archivos:

  1. el atacante revela BTC-victim1-private-key
  2. el malware usa BTC-victim1-private-key y victim1-keypair-public-key como entrada para ECDH que calcula encryption-key-2 (igual que arriba)
  3. malware XORs encrypted-victim1-AES-key con el encryption-key-2 que da victim1-AES-key
  4. el malware descifra el (los) archivo (s) con victim1-AES-key

Ninguna otra víctima puede hacer nada usando BTC-victim1-private-key .

El atacante decide liberar la clave maestra:

  1. el atacante revela el attacker-private-key
  2. el malware usa attacker-private-key y victim1-BTC-public-key como entrada para ECDH que genera un encryption-key-1 (igual que arriba)
  3. el malware XORs encrypted-victim1-BTC-private-key con el encryption-key-1 , almacena el resultado como victim1-BTC-private-key
  4. el malware utiliza BTC-victim1-private-key y victim1-keypair-public-key como entrada para ECDH que calcula encryption-key-2
  5. malware XORs encrypted-victim1-AES-key con el encryption-key-2 que da victim1-AES-key
  6. el malware descifra el (los) archivo (s) con victim1-AES-key

En el último escenario, cualquier víctima puede usar el attacker-private-key primero para obtener el victim*-BTC-private-key y luego el victim*-AES-key .

    
respondido por el techraf 30.07.2016 - 17:53
fuente

Lea otras preguntas en las etiquetas