A un livello molto astratto: il malware sul computer di ogni vittima, oltre alle chiavi AES crittografate utilizzate per crittografare i file, memorizza una copia crittografata della chiave privata richiesta per decrittografarli. Questa copia è crittografata con la chiave pubblica dell'aggressore e può essere decifrata con la chiave privata dell'attaccante (chiamata "chiave principale" nell'articolo).
Proverò a riformulare l'articolo di Kaspersky TeslaCrypt 2.0 mascherato da CryptoWall in un modo più dettagliato.
Per semplicità, salterò il fatto che ogni file può essere codificato con una chiave AES diversa. Anche l'implementazione effettiva potrebbe essere diversa (in particolare più dati possono essere inviati all'attaccante e alcuni passaggi vengono eseguiti dal lato dell'attaccante). In ogni caso la risposta mira a spiegare come funziona lo schema di password principale:
Alla prima vittima ha solo attacker-public-key
(incorporato nel malware).
L'attaccante ha attacker-private-key
.
Il malware - crea un nuovo indirizzo BTC con
victim1-BTC-public-key
(per inviare BTC) e un BTC-private-key
(per ritirare BTC)
- il malware utilizza
attacker-public-key
e e victim1-BTC-private-key
come input per ECDH che genera encryption-key-1
- malware XORs
victim1-BTC-private-key
con encryption-key-1
, memorizza il risultato come encrypted-victim1-BTC-private-key
, dimentica encryption-key-1
Il malware - invia il
victim1-BTC-private-key
all'autore dell'attacco e lo elimina
Vittima proprietaria: attacker-public-key
, victim1-BTC-public-key
, encrypted-victim1-BTC-private-key
.
L'attaccante possiede: attacker-private-key
, victim1-BTC-private-key
.
Il malware successivo inizia a crittografare i file:
Il malware - genera una coppia di chiavi e utilizza la chiave privata come chiave di crittografia AES, quindi la coppia è composta da
victim1-AES-key
( victim1-keypair-private-key
) e victim1-keypair-public-key
- il malware utilizza
victim1-BTC-public-key
e victim1-AES-key
come input per ECDH che genera encryption-key-2
- malware XORs
AES-key
con encryption-key-2
, memorizza il risultato come chiave crittografata AES, dimentica la chiave di crittografia-2
Vittima proprietaria: attacker-public-key
, victim1-BTC-public-key
, encrypted-victim1-BTC-private-key
, victim1-keypair-public-key
, encrypted-victim1-AES-key
.
L'attaccante possiede: attacker-private-key
, BTC-victim1-private-key
.
Ora la vittima ha pagato il riscatto e l'utente malintenzionato rilascia una chiave per decrittografare i file:
- l'attaccante rivela
BTC-victim1-private-key
- malware utilizza
BTC-victim1-private-key
e victim1-keypair-public-key
come input per ECDH che calcola encryption-key-2
(come sopra)
- malware XOR%
encrypted-victim1-AES-key
con encryption-key-2
che dà victim1-AES-key
- il malware decrittografa il file con
victim1-AES-key
Nessun'altra vittima può fare nulla usando BTC-victim1-private-key
.
L'attaccante decide di rilasciare la chiave principale:
- attacker rivela
attacker-private-key
- malware usa
attacker-private-key
e victim1-BTC-public-key
come input per ECDH che genera un encryption-key-1
(come sopra)
- malware XOR%
encrypted-victim1-BTC-private-key
con encryption-key-1
, memorizza il risultato come victim1-BTC-private-key
- malware utilizza
BTC-victim1-private-key
e victim1-keypair-public-key
come input per ECDH che calcola encryption-key-2
- malware XOR%
encrypted-victim1-AES-key
con encryption-key-2
che dà victim1-AES-key
- il malware decrittografa il file con
victim1-AES-key
In quest'ultimo scenario, qualsiasi vittima può utilizzare prima attacker-private-key
per ricavare il victim*-BTC-private-key
e victim*-AES-key
.