Word ファイルの暗号化および自己複製機能を備えた暗号化型ランサムウェア「qkG」を確認

トレンドマイクロは、暗号化型ランサムウェア「qkG」(「RANSOM_CRYPTOQKG.A(クリプトキューケージー)」として検出)の興味深い検体をいくつか確認しました。qkG は「Visual Basic for Applications(VBA)」のみで作成された従来型のマクロマルウェアで、Microsoft Word の全文書対象の標準テンプレート “normal.dot” に感染します。

さらに詳しく解析したところ、qkG は実際に利用されているマルウェアというよりは、実験段階のようで「Proof-of-concept(PoC、概念実証)」であることが分かりました。とはいえ、qkG の脅威としての危険度を低く見積もってはいけません。今回確認された検体の挙動や手法が、qkG の開発者やその他の攻撃者によって微調整されていくことも十分考えられます。例えば、トレンドマイクロがマルウェアや URL の検索サービス「VirusTotal」で qkG の検体を初めて確認した 2016 年 11 月 12 日には、Bitcoin(ビットコイン)アドレスは記載されていませんでしたが、そのたった 2 日後には、日時を条件として文書を暗号化する機能とともに確認されています。さらにその翌日には、特定の形式に従ったファイル名を持つ Word ファイルは暗号化しないという挙動を備えた qkG の検体「viz.」が確認されています。

■注目すべき不正活動

qkG は、1 つの Word ファイルだけを暗号化するランサムウェアとして初めて確認されたという点で際立った存在です。また、VBA マクロのみで作成された数少ないランサムウェアの 1 つでもあります。一般的なマルウェアファミリがランサムウェアのダウンロードおよび実行にマクロを利用するのとは異なり、qkG は、暗号化機能自体がマクロのコードで実装されている数少ないランサムウェアです。

VBA の Auto_Close 機能を利用する不正なマクロは、暗号化の際に拡張子「.lukitus」を使う暗号化型ランサムウェア「LOCKY(ロッキー)」の亜種が採用した手法に似ています。この LOCKY の亜種は、利用する拡張子から「Lukitus」とも呼ばれています。どちらの場合も、ユーザがファイルを閉じた際に不正なマクロが実行されます。しかし、Word ファイルの暗号化だけを実行する qkG とは異なり、Lukitus による攻撃では、マクロコードは Lukitus のダウンロードおよび実行に利用されました。実際に感染 PC の対象ファイルを暗号化するのはマクロコードではなくLukitus です。

トレンドマイクロが確認した注目すべき qkG の不正活動には、Word ファイルのコンテンツを暗号化する際にファイル構造やファイル名は変更しないというものもあります。暗号化したコンテンツの先頭に身代金要求文が追加されるため、別途身代金要求文書が作成されることもありません。qkG は開いている当該 Word ファイル(ActiveDocument)のみを暗号化します。

図1
図 1:マルウェアの名称と作成者が記載されたマクロコード内の文字列

確認された qkG の検体は、マルウェアや URL の検索サービス「VirusTotalにベトナムからアップロードされており、ベトナム語のコメントが添えられていました。マクロコードを解析したところ、図 1 のように、開発者のニックネームと思われる「TNA-MHT-TT2」や、マルウェアの名称と考えられる「qkG」のような文字列が確認できました。

■感染の流れ

ユーザがマクロを有効化すると、Word の標準テンプレート “normal.dot”に不正なマクロ「viz.」が追加され感染します。このテンプレートは全文書を対象とするため、Word ファイルを開く際には常に不正なコードを含む改ざんされた “normal.dot” が読み込まれ、実行されます。

この不正なマクロは、ユーザにマクロの有効化を要求しなくて済むように、まず Word のセキュリティ設定を「低」に変更します。セキュリティ設定の変更手順は Office のバージョンによって異なります。加えられる変更は以下の通りです。

  • レジストリ値(キー:「DisableAttachmentsInPV」、「DisableInternetFilesInPV」、「DisableUnsafeLocationsInPV」)を変更し、保護ビューを無効化
  • 「Blockcontentexecutionfrominternet」設定を無効化し、インターネットからダウンロードした Excel ファイルのマクロ実行を許可
  • レジストリ値「AccessVBOM」を変更し、VBA のオブジェクトモデルに対するプログラムからのアクセスを有効化
  • Word のセキュリティレベルを「高」「中」「低」のうち「低」に設定

上記のような変更の後、qkG は “normal.dot” に感染します。qkG は自動実行マクロ「Document_Close()」を追加し、そこに自身のコピーを作成します。

図2
図 2:”normal.dot” に追加された不正なマクロ

■ qkG の仕組み

テンプレート “normal.dot” が qkG に感染していても、感染していない Word ファイルを開く際には何も起こりません。しかし、ユーザが Word ファイルを閉じると、gkG がファイルのコンテンツを暗号化し、暗号化したコンテンツとともにメールアドレスとビットコインアドレスが記載されたメッセージを表示します。さらに、暗号化された Word ファイルに自動実行マクロ「Document_Open()」を追加し、そこに自身のコピーを作成します。これにより、感染していない PC で問題のファイルを開くと、同様の感染手順が繰り返されることになります。

図3
図 3:コンテンツの暗号化の後に表示される身代金要求文書
要求額は 300 米ドル(2017 年 11 月 27 日のレートで約 33,400 円)相当のビットコイン

暗号化は非常に単純な XOR 方式で実行されます。暗号化の際、身代金要求文書に含まれる共通の文字列が暗号鍵として利用されます。

感染 PC でこのファイルが閉じられると、ハードコードされた暗号鍵「I’m QkG@PTM17! byTNA@MHT-TT2」を利用して奇数番目の文字が XOR 方式で暗号化されます。偶数番目の文字は暗号化されずにそのまま残ります。暗号化後の文字列は文字コードのまま表示され、各文字の間には「00」が挿入されます。図 3 の最下行は文字列「1234567890」を暗号化した結果です。具体的には以下のような手順で暗号化処理が行われます。

「1234567890」の各文字に対応する文字コード

1 2 3 4 5 6 7 8 9 0
31 32 33 34 35 36 37 38 39 30

文字コードに変換し、各文字の間に「00」を挿入
「31 00 32 00 33 00 34 00 35 00 36 00 37 00 38 00 39 00 30 00」

1 文字目の「1」と暗号鍵の 1 文字目「I」の XOR を計算
31 XOR 49 (I) = 78

32 は偶数番目なのでそのまま残す

3 文字目の「3」と暗号鍵の 2 文字目「’」の XOR を計算
33 XOR 27 (‘) = 14

34 は偶数番目なのでそのまま残す

以下同様

検体「SHA256 値:2d20d5751ffbac9290271969860106fdd34309878a1e06f9dbcac23a7f50b571」には復号機能が実装されています。しかし、この機能はマクロコードの中で呼び出されていないため実行されることはありません。このことから、この検体も他の検体と同様に開発中であることが分かります。

図4
図 4:qkG の検体の 1 つで確認された復号機能

検体「SHA256 値:2e1136a2bfddb108cd3b3a60761113797265b281085ae35e185a4233d2e75d8e」には暗号化機能が実装されていません。実装予定の機能はコメントとして記載されているだけです。図5から、この亜種がクリップボードの利用を予定していることが読み取れますが、完成したqkGの亜種の中にはクリップボードを利用するものは確認されていない点にも留意してください。

図5
図 5:実装予定の機能をコメントとして記載しているqkGの検体

検体「SHA256 値:e6b15419059e833424e9c726e9b0b085d9f0fcb2cccbfe1025b0d0f8a1735a66」は、ファイルが閉じられた際の条件によってコンテンツを暗号化しない場合があります。曜日を変換した数値(例:日曜日なら 1、月曜日なら 2、以下同様)が、現在時刻の「分」を 10 で割った余りと等しい場合のみ暗号化処理を実行するという条件が加えられています。例えば、ファイルを閉じたのが日曜日(1)の xx 時 x1 分(x は適切な範囲の任意の数字)である場合、文書が暗号化されます。

図6
図 6:暗号化の条件を設定した qkG のコード

トレンドマイクロは身代金要求文書のビットコインアドレスを調査しましたが、まだトランザクションの記録はありませんでした。

図7
図 7:qkG のビットコインアドレスのトランザクション記録( 2017 年 11 月 17 日)

■被害に遭わないためには

被害という意味では影響は広がっていないものの、不正なマクロを利用する qkG の手法は注目に値します。他のランサムウェアファミリでもそうであったように、今回確認された qkG も、別のサイバー攻撃のために修正および機能拡張されていくことが予想されます。

マクロの無効化によって、qkG のようなマクロで作成されたマルウェアの危険性を大きく低減することが可能です。PC およびアプリケーションの更新、定期的なデータのバックアップ、悪用される可能性のあるツールや機能の制限のように、ランサムウェア対策のベストプラクティスに従ってください。さらに重要なことは、サイバーセキュリティ意識を持つことです。マクロで作成されたマルウェアはしばしばソーシャルエンジニアリングの手法を利用したファイルや文書と合わせて用いられます。そのため、脅威を阻止する技術の効果は、最終的にはそれを使う人間によって決まります。

■トレンドマイクロの対策

クロスジェネレーションで進化を続けるトレンドマイクロの「XGen™セキュリティ」は、AI技術をはじめとする先進技術と実績の高いスレットインテリジェンスを融合した防御アプローチにより、データを保管するサーバ、データを交換するネットワーク、データを利用するユーザの各レイヤーで最適化されたセキュリティを提供します。Web/URL フィルタリング、挙動解析、カスタムサンドボックスのような機能を備えたクロスジェネレーション(XGen)セキュリティアプローチが、既知または未知/未公開の脆弱性を狙い、個人情報を窃取したり暗号化する脅威をブロックします。XGenはHybrid Cloud SecurityUser Protection、そしてNetwork Defenseに組み込まれています。

「侵入の痕跡(Indicators of Compromise、IoC)」
「RANSOM_CRYPTOQKG.A」の SHA256 値は以下の通りです。

  • 2d20d5751ffbac9290271969860106fdd34309878a1e06f9dbcac23a7f50b571
  • 2e1136a2bfddb108cd3b3a60761113797265b281085ae35e185a4233d2e75d8e
  • e6b15419059e833424e9c726e9b0b085d9f0fcb2cccbfe1025b0d0f8a1735a66.doc

参考記事:

翻訳:澤山 高士(Core Technology Marketing, TrendLabs)