threat-research

DeathRansomパート 1:興味深い分析結果

FortiGuard Labsによる脅威分析レポート

はじめに

ランサムウェアは、間違いなく世界的に重大な脅威です。最近のあるレポート(英文)によると、2016年にはわずか10億ドルだったランサムウェアによる企業の損害が、2018年には80億ドルを超えたと推定されており、特に医療業界では2019年だけでその損失がすでに250億ドルに達しました。

この増加の一因となっているのが、RaaS(Ransomware as a Service)の増加であり、たとえばGandCrabなどの亜種は開発者に20億ドルもの利益をもたらし、FortiGuard Labsのフォーティネット脅威レポート2019年第3四半期版で紹介した2つのランサムウェアファミリーであるSodinokibiとNemtyも、現在はRaaSソリューションとして提供されるようになりました。この増加のもう1つの要因として、サイバー犯罪者が常に新しいランサムウェア亜種を開発している点が挙げられます。過去数年間のこのようなランサムウェアの大幅な増加は、FortiGuard Labsがランサムウェアに常に注目し、調査を続けている理由の1つでもあります。

最近我々の脅威レーダーは、今回の脅威分析で紹介するDeathRansomという不吉な名前の新しいランサムウェア亜種を検知しました。この分析では、最初に以下のSHA256サンプルのバージョンに注目します。

7C2DBAD516D18D2C1C21ECC5792BC232F7B34DADC1BC19E967190D79174131D1

そして、後続のサンプルでは、分析の後半で説明するように、その動作に若干の異なる点が確認されました。

図1.サンプルのTimeDateStamp

図1.サンプルのTimeDateStamp

このサンプルのTimeDateStampは、ご覧のようにごく最近のもの(Sat Nov 16 08:37:02 2019)であることから、当然ながら詳しく調査することにしました。


DeathRansomランサムウェアのワークフロー

高レベルの話として、このランサムウェアは一般的なランサムウェアの設計に倣ってローカルとネットワークドライブのファイルをスキャンして暗号化します。

図2. start()

図2. start()

start()の)先頭部分にあるように、ファイルを列挙して暗号化するという動作に注目するだけで、DeathRansomが典型的なランサムウェアであることがわかります。このマルウェアは、ネットワークリソースを列挙する目的で、標準のWindows API(WNetOpenEnumWWNetEnumResourceWなど)を使用しています。

図3.ネットワークリソースの再帰的スキャン

図3.ネットワークリソースの再帰的スキャン

この関数(processNetwork)では、ネットワークリソースの再帰的スキャンを実行し、通常のディレクトリが見つかった場合はディレクトリとして処理します(processDir)。

図4. processDir()

図4. processDir()

processNetworkと同様、processDirも再帰的ですが、いくつかのサニティチェックを実行して、その項目が("."".."ではなく)実際にフォルダであり、その項目が除外されないようにする必要がある点が異なります(以下のexclusion2を参照)。

図5.除外項目(exclusion1、exclusion2)

図5.除外項目(exclusion1、exclusion2)

これを見ると、マルウェアの作成者が次のような多くの合理的選択を実行していることがわかります。

  • Windowsの重要なフォルダ(Program Files、Windowsなど)を除外することで、システムが使用できなくなるのを防ぐ
  • ファイルについては、類似性チェックも実行する
  • システムファイル(ntuser.datなど)も「暗号化」から除外する

もちろん、ここに示したものがすべてではありませんが、この点だけでも作成者にシステムプログラミングに関する一定のスキルや知識があることがわかります。

図6.ファイルの「暗号化」

図6.ファイルの「暗号化」

DeathRansomがファイルコンテンツを実際には暗号化しないことに気付かれた方もいらっしゃるかもしれません。このケースでは、影響を受けたファイルの名前を被害者が変更する(ヒント:拡張子を削除する)だけで、システムを元の状態に戻すことができます。

図7.ランサムノート(身代金の宣告)

図7.ランサムノート(身代金の宣告)

しかしながら、ほとんどのランサムウェアがそうであるように、DeathRansomもread_me.txtと呼ばれるランサムノートを表示し、それを見ると、作成者がこのマルウェアをDEATHRANSOMと呼んでいることがわかります。この電子メールはさらに、death@cxxxxxxver.medeath@fxxxxxxx.ccに連絡する必要があると、被害者に通知します。


その他の興味深い技術的詳細

このマルウェアは、起動後にファイルの「エンコード」を開始する前に、被害者のシステムで使われている言語に関する興味深いチェックを実行します。

図8.言語のチェック

図8.言語のチェック

LangIDを使用すると、Microsoftの信頼できるソースからこれらの言語の名前を検索できます。

図9.言語識別子の定数と文字列

図9.言語識別子の定数と文字列

面白いことに、DeathRansomは1つだけでなく複数の言語をチェックしますが、明確なパターンがあること、すなわち東ヨーロッパの国のシステムの感染を回避することがわかりました。

また、文書化されていないヘッダー(具体的には、Rich Signature)からいくつかの興味深い情報を抽出できました。

図10.Rich Signature

図10.Rich Signature

この情報に基づき、このマルウェアの作成に使われた製品を特定できました。説明には、以下のマークが付加されているので注意してください。

+ [ C ] - Cコンパイラによって生成されるオブジェクトファイル
+ [IMP] - ライブラリファイル内のDLLインポートレコード
+ [LNK] - リンカによって生成されるファイル
product id: 0x0083 = MSVS2008 [ C ]
product id: 0x0004 = MSVS6 [LNK]
product id: 0x000E = ?
product id: 0x0093 = MSVS2008 [IMP]
product id: 0x0001 Objects without @comp.id
product id: 0x0109 = ?
product id: 0x0102 = VS 2019 / 2017 / 2015 [LNK]

興味深いのは、1998年の製品(MSVS6など)がマルウェアの作成に今も使われていることです。


新しいバージョンはファイルを暗号化する

我々は最近、DeathRansomの新しいバージョンを発見しましたが、その主な変更点は実際にファイルを暗号化するということです。我々の分析で注目したのは、以下のSHA256ハッシュのサンプルです。

ab828f0e0555f88e3005387cb523f221a1933bbd7db4f05902a1e5cc289e7ba4

この新しいバージョンのランサムウェアは、Elliptic Curve Diffie-Hellman(ECDH)鍵交換スキームのCurve25519アルゴリズム、Salsa20、RSA-2048、AES-256 ECB、および単純ブロックXORアルゴリズムの組み合わせを使ってファイルを暗号化します。

図11.鍵の生成とファイルの暗号化

図11.鍵の生成とファイルの暗号化


Diffie-Hellman鍵交換

  1. advapi32.SystemFunction036(RtlGenRandomと同じ)を使って、ランダムな32バイト値が生成されます。これは、ECDH鍵交換に対する被害者のCurve25519秘密鍵として機能します。

  2. Curve25519アルゴリズムを使用し、被害者のCurve25519公開鍵が被害者のCurve25519秘密鍵から導出されます。これは、攻撃者が最終的に被害者のファイルを解読する際に必要となる主な情報であり、以下に示すようにレジストリ「HKCU\Software\Wacatac\private」に含まれます。

    図12.追加されたレジストリ

    図12.追加されたレジストリ

  3. Curve25519アルゴリズムを使用し、32バイトのハードコードされた値(攻撃者のCurve25519公開鍵)と、ステップ 1で説明した以前に生成された被害者のCurve25519秘密鍵から、共有秘密鍵が導出されます。
  4. 共有秘密鍵のSHA256ハッシュが計算され、後で使用されます。

RSA鍵ペアの生成

  1. RSA-2048鍵ペアが生成されます。
  2. Salsa20と(上記のステップ4の)秘密鍵のSHA256ハッシュを使用してRSA-2048秘密鍵が暗号化され、レジストリファイル「HKCU\Software\Wacatac\private」に入れられます(図12参照)。
  3. RSA-2048公開鍵が、レジストリファイル「HKCU\Software\Wacatac\public」に書き込まれます(図12参照)。

ファイルの暗号化

  1. advapi32.SystemFunction036を使用し、AES-256鍵として使用されるランダムな32バイト値が生成されます。この処理は、すべてのファイルに対して実行されます。
  2. 16バイトのハードコードされた値が、以前に生成されたランダム値をAES-256鍵として使用して、AES-256 ECBで暗号化されます。
  3. ステップ9の結果は、ターゲットファイルのコンテンツの16バイトブロックXOR演算の鍵として使用されます。
  4. ループ毎にハードコードされた値を1ずつ増分させ、ファイル全体または4キロバイト(4096バイト)を暗号化するまで、ステップ9と10を繰り返します。
  5. (ステップ8の)AES鍵が、(ステップ5で生成された)被害者のRSA-2048公開鍵を使用して暗号化されます。
  6. 暗号化されたAES鍵とマーカー0xABEFCDABが、暗号化されたファイルに付加されます。

図13.暗号化されたファイル形式

図13.暗号化されたファイル形式

最終的に、被害者のファイルを復号するためには共有シークレットを生成しなければならず、そのためには次のペアの少なくとも1つが必要です。

  • 被害者のCurve25519の公開鍵(レジストリまたはランサムノートから取得可能)と、攻撃者のCurve25519の秘密鍵(攻撃者が所有)
  • 攻撃者のCurve25519の公開鍵(バイナリに埋め込まれているもの)と、被害者のCurve25519の秘密鍵(マルウェアの実行後に失われている)

注:現在、このランサムウェアの暗号化動作の詳しい調査が進行中であり、実装に何らかの不備がないか確認しています。新たな発見事項については、随時公開する予定です。

このランサムウェアは、暗号化後にすべてのディレクトリにランサムノートをドロップします。ランサムノートには、ユーザー毎に一意のLOCK-IDが記載されています。これは、「HKCU\Software\Wacatac\private」レジストリにあるものと同じデータで、base64でエンコードされています。

図14.新しいランサムノート(身代金の宣告)

図14.新しいランサムノート(身代金の宣告)

被害者のパブリックIPアドレスを取得するためにhxxps://iplogger[.]org/1Zqq77に接続する点を除き、このランサムウェアがネットワーク通信することはありません。ただし、前のセクションで説明したようにファイルの復号に必要な共有秘密鍵を生成するには、攻撃者が被害者のCurve25519公開鍵を取得する必要があります。ランサムノートで、LOCK-IDを電子メールで送信するよう被害者に指示されているのは、そのためです。


ソリューション

FortiGuard Labsが内部で実施したテストによって、最新アップデートが動作するFortiGateソリューションで保護されているネットワークやデバイスであれば、いずれの場合もこのマルウェアから自動的に保護されることが確認されました。また、以下の点も検証されています。

  • FortiGuard Webフィルタリングサービスは、hxxps://iplogger[.]org/1Zqq77をブロックします
  • FortiGuard Antivirusサービスは、この分析で使用されているSHA 256サンプルを次のように検知します:

7C2DBAD516D18D2C1C21ECC5792BC232F7B34DADC1BC19E967190D79174131D1
- これはW32/Filecoder.B!tr.ransomとして検知されます

13D263FB19D866BB929F45677A9DCBB683DF5E1FA2E1B856FDE905629366C5E1
AB828F0E0555F88E3005387CB523F221A1933BBD7DB4F05902A1E5CC289E7BA4
- これらはW32/Kryptik.ANT!trとして検知されます

この脅威の詳細は、フォーティネットが参加するCyber Threat Allianceの他の参加メンバーに、お客様の保護の強化を目的としてリアルタイムで共有されました。


終わりに

DeathRansomは新しいマルウェアであり、当然ながら状況は刻々と変化しています。我々の経験から、マルウェア作成者は機能を強化したり検知を回避したりする目的でマルウェアの変更を繰り返すことがわかっています。事実、DeathRansomの最初のバージョンを我々が最初に検証した後に見つかった短い記事では、DeathRansomが実際にファイルを暗号化してアクセス不能にするようになったことが解説されていました。我々の調査でも、マルウェアの作成者が最初のバージョンに足りなかった部分を追加し、DeathRansomが「正しい姿の」ランサムウェアになったことが確認されました。

続きとなるフォローアップ分析では、DeathRansomと他の攻撃との関連性や、この不正プログラムの作成の背後にいる可能性がある人物の検証を試みます。引き続き、DeathRansomパート 2:背後にいる人物をお読みいただき、詳細をご確認ください。

この記事の執筆にあたり、リサーチ過程で実用的インテリジェンスを提供いただいたArtem Semenchenko、Rommel Joven、Joie Salvioに謝意を表します。


IOC

サンプル:

7C2DBAD516D18D2C1C21ECC5792BC232F7B34DADC1BC19E967190D79174131D1
13D263FB19D866BB929F45677A9DCBB683DF5E1FA2E1B856FDE905629366C5E1
AB828F0E0555F88E3005387CB523F221A1933BBD7DB4F05902A1E5CC289E7BA4

ネットワーク:

hxxps://iplogger[.]org/1Zqq77


FortiGuard Labsが統合AIシステムを使用して提供する、比類ないセキュリティおよびインテリジェンスサービスの詳細をご確認ください。FortiGuardセキュリティサービスのポートフォリオの詳細をご覧いただき、毎週お届けしている脅威インテリジェンスブリーフ(英文)をぜひご購読ください。

FortiGuardセキュリティレーティングサービスは、セキュリティ監査とベストプラクティスを提供することで、お客様の最適なセキュリティ態勢の設計、実装、維持を支援します。