TeslaCryptランサムウェアによって暗号化されたファイルを 作成者が提供したマスターキー を使用して復号化する方法を理解するのに苦労しています。
私の知る限り、ランサムウェアは対称暗号システムを使用してファイルを暗号化し、次に非対称暗号化スキームを使用してキーを暗号化します。マスターキーを持つことにより、影響を受けるファイルをどのように復号化しますか?
非常に抽象的なレベル:ファイルの暗号化に使用される暗号化されたAESキーに加えて、各被害者のマシン上のマルウェアは、それらを解読するために必要な秘密キーの暗号化されたコピーを保存します。このコピー自体は攻撃者の公開鍵で暗号化されており、攻撃者の秘密鍵(記事では「マスターキー」と呼ばれます)で復号化できます。
Kasperskyの記事 CryptoWallに偽装されたTeslaCrypt 2. をより冗長な方法で言い換えます。
簡単にするために、各ファイルを異なるAESキーでエンコードできるという事実は省略します。また、実際の実装は異なる場合があります(特に、より多くのデータが攻撃者に送信される可能性があり、一部のステップが攻撃者の側で実行されます)。とにかく、答えはマスターパスワードスキームがどのように機能するかを説明することを目的としています:
最初、被害者はattacker-public-key
(マルウェアに埋め込まれている)のみを持っています。
攻撃者はattacker-private-key
を持っています。
victim1-BTC-public-key
(BTCを送信するため)およびBTC-private-key
(BTCを撤回するため)を使用して新しいBTCアドレスを作成しますattacker-public-key
およびvictim1-BTC-private-key
をECDHへの入力として使用し、encryption-key-1
を生成しますvictim1-BTC-private-key
とencryption-key-1
、結果をencrypted-victim1-BTC-private-key
として保存し、encryption-key-1
を忘れるvictim1-BTC-private-key
を攻撃者に送信して削除します被害者の所有者:attacker-public-key
、victim1-BTC-public-key
、encrypted-victim1-BTC-private-key
。
攻撃者が所有するもの:attacker-private-key
、victim1-BTC-private-key
。
次のマルウェアはファイルの暗号化を開始します:
victim1-AES-key
(victim1-keypair-private-key
)とvictim1-keypair-public-key
で構成されますvictim1-BTC-public-key
を生成するECDHへの入力としてvictim1-AES-key
およびencryption-key-2
を使用しますAES-key
とencryption-key-2
、結果を暗号化AESキーとして保存し、暗号化キー2を忘れる被害者が所有するもの:attacker-public-key
、victim1-BTC-public-key
、encrypted-victim1-BTC-private-key
、victim1-keypair-public-key
、encrypted-victim1-AES-key
。
攻撃者が所有するもの:attacker-private-key
、BTC-victim1-private-key
。
犠牲者は身代金を支払い、攻撃者はファイルを復号化するためのキーを解放します。
BTC-victim1-private-key
を明らかにしますBTC-victim1-private-key
を計算するECDHへの入力としてvictim1-keypair-public-key
およびencryption-key-2
を使用します(上記と同じ)encrypted-victim1-AES-key
とencryption-key-2
を組み合わせたvictim1-AES-key
victim1-AES-key
でファイルを復号化します他の被害者はBTC-victim1-private-key
を使用して何もできません。
攻撃者はマスターキーを解放することを決定します。
attacker-private-key
を明らかにしますattacker-private-key
を生成するECDHへの入力としてvictim1-BTC-public-key
およびencryption-key-1
を使用します(上記と同じ)encrypted-victim1-BTC-private-key
とencryption-key-1
、結果をvictim1-BTC-private-key
として保存BTC-victim1-private-key
とvictim1-keypair-public-key
をECDHへの入力として使用し、encryption-key-2
を計算しますencrypted-victim1-AES-key
とencryption-key-2
を組み合わせたvictim1-AES-key
victim1-AES-key
でファイルを復号化します後者のシナリオでは、被害者は最初にattacker-private-key
を使用してvictim*-BTC-private-key
を導出し、次にvictim*-AES-key
を導出できます。