「ランサムウェア」、とても恐ろしいセキュリティ攻撃ですね...
当たり前のように開けていたオフィス系のWordやExcelのファイル、画像ファイル、動画ファイルなどが突然暗号化ロックされてしまうのは本当に恐ろしいですね。更に暗号を解くために身代金を払うなんて想像もできません...
今回はこのランサムウェアにおける暗号化の仕組みを解説します!
ランサムウェアのタイプとは?
ランサムウェアの暗号化に二つのタイプがあります。
この暗号化のタイプによって暗号化されてしまったファイルを複合することが可能か不可能か分かれます。
共通鍵暗号だけを使うタイプの場合
先ず、共通鍵暗号だけを使うタイプの場合は、ランサムウェアのプログラム内に共通鍵がハードコード(埋め込み)されております。この場合ランサムウェアの検体(サンプル)を取得し、その中身を解析することで、ハードコードされている共通鍵を取り出し、そこからファイルを複合化することができます。
この方法なら頑張れば自力でファイルを複合できるので、望みがあります。
共通鍵暗号と公開鍵暗号を組み合わせて使うタイプの場合
一方、共通鍵暗号と公開鍵暗号を組み合わせて使うタイプの場合、PCのメモリ上に一時的に作成する共通鍵で先ず対象ファイルを暗号化します。その後、その共通鍵をプログラム内にハードコードされた公開鍵で暗号化し、メモリ上からは共通鍵を消去してしまいます。
この場合、ランサムウェアを仕掛けた攻撃者はハードコードした公開鍵の秘密鍵を持っているので、そこから暗号化された共通鍵を複合し、更にその共通鍵を使って暗号化されたファイルを複合できますが、被害者は秘密鍵を持っていないので、どんなに頑張っても共通鍵を取り出すことができず、諦めるか攻撃者の要求に従わざるを得なくなります...
二つのタイプの比較
上記二つ(①と②)を比較した場合、①の方が複合できる可能性が高く、②はかなり厳しいように思えますが、②のタイプでも諦めてはいけません!
②の場合でもメモリ上に暗号化後の共通鍵が残っている場合があります!そうなんです、その時はメモリを上書きしたり、リフレッシュしないようにして、共通鍵を残しておく必要があります。
このため、速やかにPCのサスペンド機能やハイバネーション機能を使って休止状態で保管する(寝かせておく)ことで、セキュリティベンダから複合ツールが提供されたときに、暗号化されている共通鍵を複合できる場合あるようです。
このサスペンド機能やハイバネーション機能は普段利用しているPC上で当たり前のように動作している機能ですが、どのようなものか詳しく説明します。先ず両者の違いを見てみると、次の通りとなります。
■サスペンド(スタンバイ):メモリに状態を保存する。電力の消費あり。
■ハイバネーション(休止状態):HDDに状態を保存する。電力の消費なし。
ハイバネーション状態ではメモリの内容がハードディスクに保存され、再開時にはその情報がメモリへと復元されます。ハードディスク上では、システムドライブ(通常はCドライブですね)のルートフォルダ直下にある「hiberfil.sys」というファイルがその保存場所になります。
このハイバネーションファイルには、ハイバネーションが行われた時点でのメモリ内容と同じ情報が記憶されていることになりますので、これで②のタイプでランサムウェア攻撃された際のファイルの暗号化に用いられた共通鍵の複合化を試みることができます。
ハイバネーション機能のセキュリティ問題
ランサムウェアの話からちょっとそれますが、このハイバネーション機能がセキュリティ上においてなぜ危険であるかを説明します。
大事なファイルは暗号化しておくとPCが盗まれたりした時も安心ですが、この暗号化されたファイルを自分のPC上で扱うとメモリ上では一度複合された状態になってます。この状態でハイバネーションされると、この複合されたファイルがハイバネーションファイルに書き込まれます。
つまり、暗号化してあるファイルの内容がハイバネーションファイル内を見ると中身を見れてしまうことになります。この状態でPCが盗まれてしまうとファイルの暗号化の意味が無かったことになってしまいますね。
では、この対策は?というと、システムボリューム全体を暗号化しておくことで、ハイバネーションファイルも暗号化されるので、PCが盗まれてハイバネーションファイルを覗かれても大事なファイルの中身を見ることはできなくなります。
まとめ
今回はランサムウェア攻撃における暗号化のタイプといざ攻撃されてしまった時の対処法に関して解説しました。
暗号化されてしまったファイルを自力で複合できれば良いのですが、複合すること自体が大変です。
大事なファイルは別の場所にバックアップしておき、いざランサムウェアにやられてしまった時はそのバックアップから戻す方法が一番シンプルなやり方かもしれません。
以上です!
参考URL)