ランサムウェアに暗号化されたデータは救い出せないのか?

この記事をシェア

ランサムウェアの被害は増加傾向にあり、暗号化されたデータを復元するには高額な金銭を支払う必要がある。ただし支払っても正しく応じてくれる保証はない。ほかの方法でデータを取り戻すことはできないかを解説する。

ランサムウェアに暗号化されたデータは救い出せないのか?

警察庁が公開している「令和4年におけるサイバー空間をめぐる脅威の情勢等について」によれば、国内のランサムウェアによる被害はここ数年で右肩上がりに増加しており、深刻な社会問題となっている。ランサムウェアは感染した端末内のデータを暗号化して利用できないようにするマルウェアだ。攻撃者の目的は、被害者の貴重な資産であるデータを暗号化で不当に拘束し、復号するための鍵を渡す対価として身代金を要求することにある。近年では病院や政府など特定の標的を狙った攻撃も増えており、身代金の額も高額化している。

暗号化されたデータを復元するには、攻撃者から要求された高額な金銭を支払わなければならないが、実際に支払ったとしても正しい復号鍵を受け取れる保障はなく、犯罪グループと交渉し犯罪を助長するのは倫理的な問題もある。では、ほかの手段でデータを救い出すことはできないのだろうか?と思うはずだ。前半でランサムウェアの「ファイル暗号化」の仕組みを解説し、最後に暗号化されたデータを取り戻す方法を解説する。

ランサムウェアの暗号化の特徴

現在、世界中で被害をもたらしているランサムウェアの多くは技術的に「洗練」されており、短時間にできるだけ多くのファイルを暗号化するように設計されている。暗号化の性能が意識されているのは、暗号化の最中に被害者が気付いて阻止されれば、意図したダメージとならず、身代金を得られない可能性も考えられるためだ。2022年のランサムウェア攻撃で多くの被害があった「Conti」や「LockBit」といった攻撃者グループの手口は、暗号化の観点でその「効率性」が極限まで意識されていることがうかがえる*1,2

例えば、攻撃者グループの最近のランサムウェアは、ファイルのサイズや種類に応じて、データのすべてを暗号化せず一部だけ暗号化する方式を採用している。これにより、1ファイルあたりの暗号化処理時間を短縮し、より多くのファイルを暗号化し効果的にダメージを与えることができる。

ランサムウェアの暗号化のパターン

ランサムウェアの暗号化のパターン

また、これらのランサムウェアは暗号化するファイルごとに異なる鍵を使っている。すべて同じ鍵でも良いように思えるが、もし同じ鍵で大量のファイルを暗号化している最中に、被害者が気づきメモリーを解析して共通の鍵が取り出された場合、すべてのファイルが復号できるため、脅迫ができなくなるためと推測できる。

また、被害者は自分の端末内のデータをある程度、把握している可能性があるが、もし暗号化されたファイルが世間一般にありふれたファイルであれば、元のデータがどのような内容だったかを正確に知ることができる。このときすべてのファイルが同じ鍵で暗号化されているなら、被害者は共通の鍵における平文と暗号文のペアを大量に入手できる可能性がある。

これは暗号に対する選択平文攻撃(CPA/Chosen Plaintext Attack)に近い効果をもたらす。選択平文攻撃とは、暗号化の処理系を乗っ取り意図的に複数の平文を暗号化させて、その結果を観測することで暗号鍵の特定や暗号の解読を試みる攻撃だ。最新の共通鍵暗号は選択平文攻撃への耐性があるので攻撃は容易ではないが、古い方式や実装の欠陥によっては脆弱なケースもある。
これらの可能性を極力排除するには都度鍵を変えるのが最も効果的だ。

*1 Contiランサムウェアの内部構造を紐解く | 調査研究/ブログ | 三井物産セキュアディレクション株式会社

*2 ランサムウェア「LockBit 2.0」の内部構造を紐解く | 調査研究/ブログ | 三井物産セキュアディレクション株式会社

ハイブリッド暗号方式による暗号化

攻撃者は身代金と引き換えに復号鍵を被害者に渡す必要があるため、ファイルを暗号化した後は、復号鍵を攻撃者自身のサーバーに送信するなどして保持しておき、感染端末からは削除しなければならない。共通鍵暗号だけで行うには、ファイルごとの大量の復号鍵を攻撃者のサーバーに送信しなければならず、効率的・現実的ではない。そこで、暗号化と復号に異なる鍵を使用する公開鍵暗号を使った方法が考えられる。

まず感染端末で公開鍵暗号の鍵ペア(秘密鍵と公開鍵)を生成する。この秘密鍵を攻撃者サーバーに送信し、ファイルを暗号化した共通鍵暗号の鍵を公開鍵で暗号化して感染端末内に保存する。こうすれば攻撃者サーバーへの鍵の送信は1回で済むし、感染端末では暗号化の際に公開鍵を繰り返し自由に使うことができる。

「それなら公開鍵暗号だけで暗号化してはどうか」と疑問に思うかもしれない。しかし、公開鍵暗号は共通鍵暗号に比べて圧倒的に処理速度が遅いのでファイルのような大きなデータの暗号化には向いていない。このように共通鍵暗号の性能と公開鍵暗号の利便性を組み合わせて「いいとこどり」をするのが「ハイブリッド暗号」だ。

ただ、実際のところ感染端末で生成した鍵ペアの秘密鍵を攻撃者サーバーに送信する方法は、秘密鍵の漏えいや送信に失敗するリスクもあるので確実な方法とは言えないだろう。そこで、あらかじめ攻撃者側で鍵ペアを作っておき、公開鍵だけをランサムウェアに仕込んでばらまく方法も考えられる。しかし、この方法も攻撃者にとって不都合な問題がある。なぜなら、この場合、すべての感染端末で同じ鍵ペアを使うことになるが、身代金を支払った特定の被害者に復号鍵を渡した瞬間に、鍵は共有され、そのランサムウェアは力を失うことになるからだ。

最新のランサムウェアは、攻撃者側の鍵ペア(マスター鍵)と、感染端末で生成する鍵ペア(セッション鍵)を分けて用意することでこの問題を解決している。ファイルを暗号化した鍵はセッション公開鍵で暗号化し、セッション秘密鍵はランサムウェアに予め組み込まれたマスター公開鍵で暗号化する。このときマスター秘密鍵は攻撃者だけが保持している。この方式では、暗号化されたセッション秘密鍵を攻撃者サーバーに送信するため、被害者が身代金を支払った後はこれを攻撃者の保持するマスター秘密鍵で復号して被害者に渡すだけで、マスター秘密鍵の秘密も守られる。仮にセッション秘密鍵を攻撃者サーバーへ送信することに失敗したとしても、そのデータは感染端末に保存されているので再送が可能になる。

最近のランサムウェアの暗号化の仕組み

最近のランサムウェアの暗号化の仕組み

暗号アルゴリズムの最適化

ランサムウェアの暗号化には、標準的なアルゴリズムが使用されている。標準的な暗号アルゴリズムは通信やストレージなどで日常的に使用されるので、多くのプロセッサはそれらを高速に実行できるように最適化されている。

LockBitを参考に説明をすると、2019年に登場した初代から2.0、3.0と世代を重ねており、その度に暗号アルゴリズムを変更している。例えば、LockBit 2.0は標準的な共通鍵暗号アルゴリズムであるAESを使用しているが、インテルとAMDのプロセッサが提供するAES-NI(AES New Instructions)という命令セットを利用し、その実行を最大限に高速化している。

公開鍵暗号のアルゴリズムもRSAからECC(楕円曲線暗号)に変更されている。ECCは鍵長が小さく同じ強度のRSAと比較して高速に実行できる利点がある。ECCでは計算に使用する曲線を選ぶ必要があるが、LockBit 2.0では「Curve25519」という楕円曲線の中でも比較的新しく効率が良いとされている曲線を選択している。実際、LockBit 2.0の攻撃者グループは2021年にランサムウェアの比較表を公開し「2021年6月時点でアクティブなランサムウェア株では最速の暗号化ソフトウェアを搭載している」と主張している*3

2022年のLockBit 3.0では、ファイル暗号化にSalsa20を使用しているという解析結果が報告されている*4。Salsa20はAESのような「ブロック暗号」とは異なる「ストリーム暗号」と呼ばれるアルゴリズムだ。Salsa20も高速だが、AES-NIを使ったAESに比べると少し劣る。敢えてこのような選択をした理由は不明だが、AES-NIが使えないようなハード(ARMプロセッサなど)であっても偏りなく高速処理が可能なので、結果的により裾野を拡げた可能性も考えられる。

*3 LockBit 2.0: ランサムウェア・アズ・ア・サービス(RaaS)のオペレーションとその対策

*4 LockBit 3.0 Ransomware Unlocked - VMware Security Blog - VMware

暗号化されたデータは救い出せるか

ここまで暗号化の仕組みを解説してきたが、高度な技術で暗号化されたデータを、身代金を支払うことなく救い出すことはできるのだろうか?

まず、ランサムウェア被害からデータを復旧できる可能性が最も高い方法は、バックアップからの復元だ。日頃からこまめにデータのバックアップを取っており、被害にあった際にバックアップデータが暗号化を免れていれば復元できる可能性は大きく上がるだろう。バックアップデータは、端末から物理的に隔離し複数世代を管理することでより安全性が高まる。ランサムウェア被害以外にも事故や災害、人為的なミスなどでデータが失われるケースは発生するので、日常の運用でしっかり備えておくことが重要だ。
とはいえ、必ずしもすべてのデータがバックアップできるとは限らないし、バックアップデータも同時に暗号化されてしまうケースもあるだろう。このような場合には、専門家や警察の力を借りることでデータを復旧できるケースがあるので、いくつかの例を紹介する。

1. 攻撃者から復号鍵を奪う

攻撃者はセッション鍵を暗号化するマスター鍵を保有しているので、専門機関の力を借りて攻撃者グループのサーバーをハッキングすることができれば、マスター鍵を入手できるかもしれない。また、一部では攻撃者グループ内の仲間割れやグループの解散などにより復号鍵が公開されるケースもあるようだ。もし許容できるなら長期間(年単位)データを保持しておき、いずれ復号鍵が公開される可能性に賭けることもできる。ただし鍵の入手を請け負う「専門家」の中には高度な技術をうたい高額な報酬を受け取りつつ、裏で攻撃者グループと取引をして鍵を入手するような業者も稀に存在するため注意が必要だ。

2. ランサムウェアの脆弱性を利用する

2022年12月、警察庁がLockBitの被害に遭った会社の暗号化データの復旧に成功した、と報道され界隈でさまざまな憶測を呼んだ*5。その方法については明かされていないが、LockBit 2.0の暗号化にはバグがあることが知られており*6、その脆弱性を突くことで復号に成功したのではないかとも囁かれている。ランサムウェアも人間の作るソフトウェアなので、脆弱性を持つ場合が少なくない。ただ、このケースでは攻撃者グループがバグに気付き修正をされてしまう可能性もあるため、いたちごっこになる。LockBitは脆弱性に対抗するためバグ発見者に報奨金を支払うバグバウンティプログラムまで開始している*7

*5 警察庁によるランサムウェア(Lockbit)暗号化済データの復元成功についてまとめてみた - piyolog

*6 Part 1: LockBit 2.0 ransomware bugs and database recovery attempts - Microsoft Community Hub

*7 LockBit ランサムウェアグループがバグバウンティなどを導入 ? UTM/NGFWでマルウェア・標的型攻撃対策|ウォッチガード・テクノロジー

3. メモリーフォレンジック

もし、暗号化の最中に気付きランサムウェアのプロセスが動作している場合、ランサムウェアのプロセス内から暗号化鍵を取得できる可能性がある。メモリーフォレンジックのテクニックは以前から研究されているが、一般的に難易度の高い手法だ。即時性が求められるため、まず感染と暗号化にすぐに気付かなければならないし、最新のランサムウェアの場合セッション秘密鍵は生成後すぐに暗号化されてしまう可能性が高く、ファイルごとの暗号鍵を取得するという骨の折れる作業が必要になるからだ。

4. 暗号化されていない部分のデータだけ復旧する

前述したとおり、最近のランサムウェアはファイルの一部を暗号化する方式を採用しているケースが多いため、暗号化されていない部分には、そのままのデータが残されている。データのすべてを復旧できなくとも、残されたデータから使える部分を復旧することはできるかもしれない。暗号化されたファイルを解析してデータの一部を復旧するツールも開発されている。

ここに挙げた以外にも古いランサムウェアなら、ディスクのフォレンジックや鍵の特定といった方法もある。例えば、「No More Ransom」のようにいくつかの種類のランサムウェアに対応した復号ツールを提供しているプロジェクトやセキュリティベンダーもあるので、利用してみる価値はあるだろう。万が一ランサムウェア被害に遭いバックアップデータもない状態であっても、専門家の力を借りることでデータを復旧できる可能性は残されているので、諦めずに冷静に対処することで光明が見えてくるかもしれない。いずれにせよ難易度が高いことは間違いないので、このような状態に陥らないように予め対策することが王道だ。

ランサムウェアの被害に遭わないために

本記事ではランサムウェアの暗号化に着目し、身代金を払わずに暗号化されたデータを復旧するいくつかの方法を紹介した。昨今では、窃取したデータの公開をほのめかし公開を止める代償として金銭を要求し、要求に応じるまで被害者サイトにDDoS攻撃をするなど、二重、三重の脅迫も増えており、被害は暗号化以外にも広がっているのが実態だ。日頃のマルウェア対策、バックアップ対策、セキュリティ強化を講じることが最大の防御となることは言うまでもない。被害に遭わないための対策を第一として、万が一被害にあったときに冷静に対処できるように、暗号化を復旧できる可能性があることも頭に入れておくと良いだろう。

この記事をシェア

ランサムウェアの対策に

サイバーセキュリティ
情報局の最新情報を
チェック!