NERV Security Blog

暗号化101:マルウェア分析家の入門書

  • 2018年09月25日

セキュリティ業界の多くが暗号化はどういうものかを知っていますが、マルウェア、特にランサムウェアがどうのように使われるか基本的な理解の乏しい人が多いです。このため、暗号化のメカニズムとどのように悪用されるのか理解を深める有意義な回となるでしょう。

一般的にマルウェアバイト社は暗号化を紹介し、そしてランサムウェアが悪用するファイルを暗号化する主な方法を追記で紹介します。マルウェアバイト社はRansom.ShiOnとしてマルウェアバイト社が検知したランサムウェアの後継亜種を使用して、最近のファイルの復号化を試みようとするときに目にする暗号化の重要な脆弱性を強調します。

暗号化とは何か?

シンプルに言うと、暗号化は情報を符号化して、権限の与えられた関係者のみがアクセスできるようにするプロセスであり、権限の無い者はアクセスできません。コンピューティングでは、暗号化は、データが読み取り可能な形式(平文)から暗号化されたもの(暗号文)に変換され、復号鍵にアクセスできる他のエンティティによってのみ解読される方法です。暗号化は、機密通信を容易にするために軍隊により長きに渡って使用されていましたが、今日では安全性の下にデータを輸送中および保管中に保存し、個人を特定したりするのに使用されます。

残念なことに暗号化はランサムウェアと同じように悪意を持った目的のためにも使用されます。

暗号化の評価

マルウェアのアナリストが悪意を持った暗号化を正確に評価したい場合、暗号化されたデータを作成したりまたは受信している機械上で暗号化を監視する必要があります。暗号化フェーズを実行する前に実行中のプロセスにアクセスできる場合は、復号化されたネイティブデータを復号化するか、単純に復号化できるだけの十分なデータが必要となるでしょう。

管理者的な立場であれば暗号化を解読することなく、ファイルを回復する唯一の機会です。しかし、トランスクリプト攻撃の場合、管理者的な立場でいることは不可能です。マルウェアの実行が終了し、暗号化キーを送信後では遅すぎます。マルウェアの活動が終わると、もはや管理者的な立場になれません。分析に任せて、暗号化に不備な点があることを願うしかありません。

復号化と暗号化の管理者的な立場になるとは一体どういうことでしょうか?かつて私にその真相を尋ねた人がいました。

どうしてマルウェアの製作者は指令サーバーへの通信を暗号化するとは限らないのでしょうか?

彼の質問に対する答えはこうです。世界中の無作為に選ばれた被害者側のシステム上で作動できるという点で、マルウェアは公開されていたということでした。リバースエンジニアとして、私たちはバイナリーにアクセス権を持っており、最も詳細が分かる状態でソフトをチェックすることができます。このレベルでは、機密がしっかりした通信は意味がありません。なぜなら暗号化の前、復号化の後のシステムを確認しているからです。

クライアント側(被害者側のコンピューター)で受信されたSSLもしくはhttp通信はマルウェアが意図するいかなる方法で処理されたデータに対してメモリー内で復号化されてしまいます。この時点で、マルウェアバイト製品は、常にメモリーを検知し、解読された通信を生の形式で引き出すことができるので、サーバーが分析されたマルウェアに暗号化データを送信しても、実際には何も作動しません。この様な理由により、サーバーが一時的に分析されているマルウェアに復号化されたデータを送ります。

この同様の理論はトランスクリプトとファイルの暗号化上で多くのユースケースに当てはまります。ランサムウェアを参照し、ランサムウェアが局所的に暗号化キーを生成している場合は、マルウェアバイト社は作成後すぐにメモリー内のキーを観察し、それらを保存し、そしてランサムウェアが実行した後にメモリーからのキーを使ってファイルを復号化することができます。それはマルウェアバイト社が暗号化用のアルゴリズムを決定することができます。

ランサムウェアがファイルを実行して暗号化する過程で、ユーザーがそのメモリーをダンプした場合、当事者は管理者的な立場になる可能性がありますし、ファイルを回復させる可能性が高いです。これは典型的なシナリオではないのが残念なところです。なぜなら被害者の本来の能力はプロセスの実行を継続しながらメモリーダンプを作成しないからです。しかしながら、理論上では技術的に機能します。

ランサムウェアのアルゴリズム

ここ何年も当社は被害者側のファイルを人質とするアルゴリズムを数多く見かけてきました。これらに最も共通することは非対称暗号化に対しての標準、公開、実績のあるアルゴリズムの使用です。しかし場合によって当社は特別仕様の暗号化は(脆弱性が高い)もしくはファイルを身代とするための単純で難解な方法さえあります。

数年前、ランサムマルウェアを偶然見つけた時に、通常はドライブ上のファイル全てを暗号化するのではなく、身代金として被害者側のコンピューターを人質とする別の方法を使用していました。私はファイルの機密とカスタム暗号からMaster Boot Recordの書き換えまであらゆるものを見てきました。

ファイルの難読化

ファイルの難読化の場合、ランサムウェアは単純にターゲットにされたファイル―被害者側が重要視するであろうと思うドキュメントと他の何かを移動させたり、非表示にしたり、そしてファイルを回復するための身代金を要求します。この場合、ファイルの回復は単純なことです。隠れているコードを元に戻し、元のコードを元に戻すことができます。

具体例として、偽のポップアップはあなたが使用するハードドライブを破損していると主張し、データを回復させるための“サポート”を呼びかけて金銭の支払いを要求します。私が分析した下記にある特定のマルウェアでは、ポップアップウィンドウ(下記参照)が表示され、全てのドキュメントとデスクトップファイルが隠し場の新しいフォルダーに移動されました。この誤作動に対する修正はそれがどのファイルをどのファイルに移したのかその場所確認するコードを調べました。

カスタム暗号化

カスタム暗号化を扱う上で、通常ファイルは標準的な方法によりファイルを変更するアルゴリズムに渡されます。簡単な例としては変動せず周期的な一組のバイトによりXORされたファイル内の全てのバイトが該当します。この様な場合、アルゴリズムそのものを重要なファクターと考えることはほとんどできます。アルゴリズムを元に戻すことができれば、どのようにファイルを修正したり、暗号化したりするのか正確に把握できます。その後、この手順を逆にするだけでオリジナルのファイルが得られます。対照的に、非対称暗号に対応する場合、アルゴリズムそのものはファイルを復号化する余地を与えません。

MBRの書き換え

第三のシナリオでは、MBRはアクセスを可能にするためのパスワードもしくはシリアルナンバーを必要とする小さなプログラムで書き直されます。そのマルウェアはコンピューターの再起動を強制し、システムがWindowsを起動する前に、初めにパスコードを受け取るための身代金の支払い方法に関する方法をユーザーに指示します。このシナリオでは、ブートレコード内にシリアルもしくは、パスワード検証のアルゴリズムを元に戻す(基本的にKeyGenを作成する)と、どのパスワードがアクセス可能であるか分かります。もう一つの方法として、ファクトリーブートレコードでハードドライブのポーションを書き換えることであなたのコンピューター上のロックを無効にします。

アルゴリズムを逆にする以外に、オリジナルコードをドライブのこのセクションに復元するために自分でMBRを書き直す方法知ることだけが難しいでしょう。

以下はMBRロッカーの一例です。あなたに要求するIDが必要はなく、つまりこれは具体的なブロックに固有のものは他に何もないことを意味し、メモリーがスタテック型の解除コードを必要とされる可能性が高いことに注意してください。

 

さて、これら三つの代替方法は標準的な意味での暗号化を使用していません。しかし、私はここでそれら代替方法を取り上げます。なぜならばシステム用に特注されて、クローズソースの難読化は場合により破られやすいからです。ほとんどのサイバー犯罪者が標準化されたオープンソースの公開暗号化アルゴリズムを身代金要求のためにファイルを暗号化するために使用するのは、確実に安全だからです。つまり暗号化アルゴリズムに関するあらゆる詳細を把握できますが、暗号化するキーを所有する以外に他の方法によりその暗号化を復号化する余地はありません。

なぜこれは重要なのでしょうか?標準のオープンソースコードを使用する暗号化は暗号化キーの間の関係から構築されます。使用されるアルゴリズムは関係性のある二つの別個のキーを単に派生します。このコンセプトは非対称暗号作成と呼ばれ、今日のランサムウェア作成者の圧倒的多数者が使用する暗号化の方法です。

非対称の暗号化文の基本

非対称暗号化は完全に異なる二つのキーを生成することです。しかし、それらには関係性があります。一つ目のキー(パブリックキー)はデータを暗号文に暗号化するために使用されます。一方、その対である(プライベートキー)は暗号文をオリジナルの平文に復号化するために使用されます。パブリックキーは、暗号化するために使用されるにもかかわらず、復号化するために使用できないため、非対称であると言われています。復号化にはこのプライベートキー必要です。

非対称暗号を使用する暗号化通信では、パブリックキーとプライベートキーは局地的に生成されます。パブリックキーは単語全体で参照できます。例えば、誰かがを唯一読むことが可能な人物(ボブ)にメッセージを送信したい場合、ボブのパブリックキーを使用してメッセージを復号化するでしょう。ボブのパブリックキーを使用してメッセージを暗号化します。ボブのパブリックキーはメッセージの解読に使用されることがないので完全に安全です。ボブのオフラインのプライベートキーを使用して、ボブはメッセージを復号化して、オリジナルのテキストをみることが可能でしょう。

理解をしやすいように図解を用意しています。

これはファイルの暗号化に対してランサムウェアの作成者により使用されます。基本的な暗号化の過程の流れは次の通りです。

乱数の配列は生成されます。この連続したバイトは一回目のファイルの暗号化の前に使用されます。通常、無作為な初期化を使用して、実際にはイニシャルキーから派生したサブキーを作成するために、数学的な一連の操作がパブリックキー上で実行されます。このサブキーはファイルのデータを実際に暗号化するために使用されています。暗号化プロセスの第一段階では、初期化のベクトル(IV)として使用される第2の無作為の配列が生成されます。次の各ステージはその新しいIVとして以前のステージの出力を使用します。

IVとして最初に乱数が使用されます。そして生成された暗号文が次回の暗号化で使用されます。

キー自体の生成は乱数の生成作用にも依存しています。あなたが想像できるように、しっかりとした、”可能な限り無作為な”生成作用は極めて重要なことです。

ランサムマルウェアのファイル暗号化

通常、トランスクリプトは、次の動作のうち、一つの動作を行います。それは局所的にキーをダイナミックに生成し、それらをクライアントIDに添付された指令サーバーに送信します。もしくはキーは製作者により生成され、トランスクリプト自体にあらかじめ起動されます。

後者はほぼ間違いなくより安全性が高いですが、各被害者側のコンピューターに完全に新しいバイナリーを生成する際に、または少なくとも各キャンペーンバージョンの中で同じキーを使用して同一のまとまったマルウェアを拡散する際に多くのコストを必要とします。ここでの矛盾はキーの生成は直接監視できるものではなく、アナリストにより脆弱性を検知しても、二つの被害者側は実際、同じ暗号化のキーを所有することになります。従って、ある人物が身代金を支払い、その人物のキーを共有すると、キャンペーンヴァージョンの影響を受けた全ての人が無料でファイルを復号化できます。これは流出したキーによる弱点です。

さて、キーがダイナミックに生成されると、ファイルの回復に対してメモリーダンプの潜在的な使用はを可能にし、アナリストが暗号化内のセキュリティーホールを発見できる可能性も低くなります。(メモリーダンプはマルウェアの作成者にはそれほど大きな問題ではありません。マルウェアバイト社が先ほど述べたように、使用者がダンプを作り出す必要があると思うのは稀だからです。)ただし、この局地的なキーの生成方法に対するメリットはマルウェアが完全に活動的であり、同一のキーを所有する人は二人以上は存在しません。双方の方法とも弱点と長所を併せ持ったものです。

最近のランサムウェア作成者はAES、RSA、Blowfishなどの標準化された暗号化の一つyを。なぜならば復号化のキー与える作成者の存在なしに被害者側のファイルを試みて修復不可能にするからです。私が”試して”と言う理由はこれらの質が高いアルゴリズムは(同一のキーが二度、生成される)誤用されているケースが多くです。さらに、キーの転送と生成を傍受される可能性があります。

非対称暗号文そのパスワードを破ることは不可能に近いですが、それが壊れることはありません。

マルウェアのアナリストがどういった方法で暗号化に潜む脆弱性を見つけ出すのかを証明するためにShiOneを使用します。

 

 

         MalwarebytesLABS Encryption 101: a malware analyst’s primer:より引用

Malwarebytes  マルウェアバイト

 

 

 

 

取扱製品

Safend Data Protection Suite
Safend Protector
ポート・デバイスの制御を実施し、記憶媒体の暗号化も実施します。 詳しくはこちら
Safend Encryptor
内蔵HDDを暗号化し、盗難・紛失からの情報漏えいを防止します。 詳しくはこちら
Safend Inspector
社内の機密情報をプリンター、メール、FTPなどの経路から流出しないよう制限をかけ、情報流出を防ぎます。 詳しくはこちら
その他
セキュリティポリシーを検討を補佐するオプションもご用意しています。
Safend Auditor-デバイスの監査
Safend Repoter-ログの可視化
Safend Discover-クライアント内のデータ監査
詳しくはこちら
Malwarebytes
Endpoint Security
高度なマルウェアの発見と修正、悪意のあるウェブサイトへブロック 詳しくはこちら
Endpoint Protection
業界最高レベルの情報収集技術を持った次世代マルウェア対策ソフトウェア 詳しくはこちら