原文のブログはこちらからご覧いただけます。
今年の初め、ウクライナで発生した不穏な軍事行動に世界中が危惧の念を抱き始めた頃、セキュリティ業界は同国での悪意のあるサイバー活動に目を向けていました。ランサムウェアを装った、悪意のあるマルチステージ型ワイパーである WhisperGate が発見されたとき、研究者たちは、その作成者が使った手法と一般的な脅威の状況について何が分かるかを調べました。
この記事では、この深刻なマルウェアの調査中に明らかになった驚くべき迷宮に続く道をたどります。我々が発見したことと、そこから読み取れる、脅威アクターが不正行為に利用できると考えている手法について説明します。
2022 年初めにウクライナを標的とした WhisperGate マルウェアワイパーの解析では、まず配信メカニズムに MSIL (Microsoft Intermediate Language:マイクロソフト中間言語)スタブを利用し、Discord の CDN (コンテンツ配信ネットワーク)を悪用していることが判明しました。これらのスタブをさらに調査し、似たものを探したところ、はるかに多くの .NET ベースのコモディティマルウェアの配信に使用されていることを発見しました。
発見のきっかけ
WhisperGate の詳細については以前のブログで取り上げ、このワイパーの第 3 ステージと第 4 ステージについてさらに詳しく説明しています。最終ステージの調査中に、ESET Research が最初に指摘した、マルウェアの第 3 ステージの配信で使用されている MSIL スタブが我々の目にとまりました。
簡単に言えば、これらのスタブは Windows® の小さな実行可能ファイルのコンポーネントであり、後に続くメインのペイロードのダウンローダーの役目を果たします。.NET フレームワークには、VB.NET や C# などのプログラミング言語ごとに個別のコンパイラがあります。MSIL スタブは、これらの .NET コンパイラがソースコードをコンパイルした後に作成され、どの環境でも使用できます。
このスタブが配信するメインのペイロードは、Agent Tesla や QuasarRAT などの一般的なコモディティ .NET マルウェアです。WhisperGate は、このスタブを作成したサービスを一度だけ使用したようですが、我々はもう少し詳しく調べて、この手法が特に多くの一般的な .NET ベースのマルウェアファミリの配信に使われている理由を確認しようと考えました。

図 1 – DownloadData 関数を解決してペイロードをダウンロードするコード
スタブの解剖
WhisperGate のスタブ自体はかなり初歩的なものですが、ダウンロード機能以外にも、ジャンク文字列やジャンクコードなど比較的単純な難読化も行われています。スタブの主な仕事は、関数 DownloadData (場合によっては GetByteArrayAsync)を取得し、指定した関数呼び出しを .NET の組み込み関数 GetMethod を使用して動的に解決することで行われます。
大したことは行っていないように見えるかもしれませんが、多くの場合、解決すべき関数名には特定の文字や文字セットが挟まれ、難読化されています。たとえば、DownloadData は DxownxloxadDxatxxax のように文字を挟む ことで難読化されます。実行されるとインラインで関数を元の形に戻し、本来の仕事を行います。
メソッドが解決されると、そのメソッドでコマンドアンドコントロール(C2)サーバーにあるファイルがダウンロードされます。C2 の URL はプレーンテキストでハードコードされています。このスタブテンプレートを使用しているファイルのデータセットでは、Discord の CDN が多く悪用されている証拠を確認していますが、他の IP やドメインの使用も散見されました。
他の興味深い特徴として、WhisperGate で使用されているスタブが NetReactor というツールで難読化されていることがあります。ただ、WhisperGate は NetReactor の機能の一部しか利用していないようです。
我々は、上の例のような解決された関数に見られる文字列の難読化がこのパッカーの機能なのかどうかを確認するために、あるバージョンの NetReactor をテストすることにしました。ここで迷宮がさらに深くなります。文字列の難読化は機能ではなく、これらのスタブの作成には、個別にメンテナンスされているツールやサービスが使用されていたことが分かったのです。
Discord の CDN 悪用の詳細
Discord は、ゲーマーの間で広く利用されている大規模なコミュニケーションプラットフォームです。トピックごとのチャネルで構成され、テキストメッセージ、ボイスチャット、ビデオ通話を利用できます。ファイル共有も可能であり、共有されるファイルは Discord の CDN サーバーに保管されます。
脅威アクターは、Discord の CDN サービスを悪用して簡単にマルウェアをホストすることができるうえ、通常の悪意のないトラフィックに紛れ込ませることも可能となります。このような悪用は 2019 年 10 月の時点で報告されており、Sophos をはじめ、多くの研究者によって解き明かされています。Discord は、本ブログの執筆時点で月間ユーザーが 1 億 4 千万人を超え、ファイルのホスティングと共有の仕組みが使いやすいことから、悪用しようとする脅威アクターにとっても魅力的なものとなっています。
RiskIQ による解析では、スタブのペイロードの大部分に次のようなリンクが含まれていると指摘されています。
hxxps://cdn.discordapp[.]com/attachments/[Channel_ID]/[Attachment_ID]/[file-name]
実際、ドメイン「cdn.discordapp.com」を含み、マルウェアの検出が 50 件以上あったファイルを VirusTotal に照会すると、36,600 という膨大な数のサンプルが返されました。

図 2 – cdn.discordapp を含み、50 件以上の検出があったファイルの VT グラフ
PureCrypter
各スタブの全体的な構造は違っても、すべてのスタブは、そのダウンロード機能の中に(おそらく)同じサービスによって作成されたことが分かる形で互いを結び付ける決定的な特徴を持っています。
たとえば、DownloadData 関数と GetByteArrayAsync 関数の使用、それらの解決方法、各関数名の難読化に使用するスタイルが、すべて同じサービスで作成されたことを示しています。Discord が配信プラットフォームとして頻繁に使用されている点もそうです。もう一つのヒントは、採取活動で集めたバイナリの中に「PureCrypter」という単語があったことから得られました。
PureCrypter は、その名が示すように、ダークウェブや有名なハッキングフォーラムで目にする「クリプティング」サービスです。ここでの「クリプティング」は、スキャンソリューションによる検知を回避するために、複数の手段でバイナリを難読化または暗号化することを指しています。
このようなクリプティングサービスに関連して目にすることの多い用語に「FUD」(Fully Un-Detected :完全に検知されない)があります。PureCrypter は、防御側に先んじるために 4 時間ごとに FUD チェックを行うと宣伝しています。つまり、その難読化を既存のセキュリティソリューションでチェックし、「完全に検知されない」ことを確認するのです。
PureCoder の通称を使用しているあるハッキングフォーラムのユーザーは、遅くとも 2021 年 9 月から PureCrypter ソリューションを広告し、積極的に宣伝しています。

図 3 – PureCoder による PureCrypter の投稿
PureCrypter は、PureCoder のウェブサイトで、次のような違法なサイバー製品と共に販売されています。
- PureMiner – 自身または他のボットを拡散させ、Ethereum または Bitcoin を自動採掘してマルウェア運用者のウォレットに収めるサイレントマイナーです。
- PureClipper – 被害者の暗号資産のアドレスを検知して、マルウェア運用者のものに置き換える隠れサイレントクリッパーです。
- Discord Worm Mass DM – 大量の DM (ダイレクトメッセージ)を送信し、トークンの窃取に使用する payload.exe を作成します。
- AsyncRAT fixed plugin – AsyncRAT のエラーを修正するプラグインです。
- RAT Base Source code C# – RAT (リモートアクセス型トロイの木馬)を扱っている人向けの C# ソースコードです。FUD 機能があり、26 のアンチウイルス(AV)製品で検知されないという完璧な検知率の低さをうたっています。また、176 KB という小さなサイズを誇り、その完璧な検知率の低さから、GitHub 上の他のどの RAT よりも優れていると主張しています。

図 4 – PureCoder のウェブサイト
PureCrypter ソリューションには、3 種類の販売形態があります。提供されるツールの機能はどれでも同じですが、唯一の違いは、表 1 に示すとおり、ツールの使用期間です。対応している支払い方法には、Bitcoin、Litecoin、Bitcoin Cash、Monero があります。
59.00 ドル | 30 日間 |
109.00 ドル | 90 日間 |
245.00 ドル | 永年 |
毎日のスタブ更新 |
||
.NET とネイティブのサポート |
||
32 ビットと 64 ビットのインジェクション |
||
コマンドライン |
||
タイムスタンプ |
||
地域の除外 |
||
名前の強化 |
||
クリプターキラー |
||
メモリ爆撃 |
||
耐ファイル削除 |
||
耐サンプル送信 |
||
Discord と Telegram の実行通知 |
||
アイコン、アセンブリ、証明書のクローナー |
||
高度なインジェクション |
||
偽のメッセージボックス |
||
3 つのスタートアップ技術 |
||
スキャナ |
||
バインダ |
||
遅延 |
||
無料の Excel マクロ作成ツール、ダウンローダー |
表 1 – PureCrypter の機能
PureCrypter は、バイナリの難読化、Microsoft® Excel® マクロの作成ツール、ダウンローダースタブの作成などの追加機能もうたっています(見覚えがないでしょうか)。ここで全機能を網羅することはしませんが、実行時に設定可能なオプションの一部を図 5 に示します。

図 5 – PureCrypter のユーザーインターフェース
今のところ、我々には関連するサンプルのデータセットがあり、ダークウェブのクリプターもあります。問題は、それらがどのように関連しているかということです。我々は、コマンドライン引数を特定し、サンプルのメタデータを大規模に調査することで答えを見出しました。

図 6 – 「autocrypt」パラメータを使用した PureCrypter
PureCrypter には、「autocrypt」パラメータを使用して起動したときに現れる追加の機能があります。図 6 の [Notification] ペインには、実行通知と感染通知を、Discord のウェブフックまたは Telegram ボットの通知で送信できます。
これまで説明してきた機能をトポロジカルに見て、それらを類似のスタブファイルのデータセットに適用すると、次のような共通部分が見えてきます。
- 複数のスタブが、ペイロードのダウンロードに加えて、Telegram Bot API の URL にアクセスしていた。
- 複数のスタブが、ペイロードのダウンロードに加えて、Discord のウェブフックにアクセスしていた。
- 複数のスタブが Excel マクロの実行を配信メカニズムとして使用していた。
我々のサンプルセットのスタブは、PureCrypter で作られたものだと強い確信を持って言うことができます。
スタブの出所を突き止めたところで、どんなマルウェアが PureCrypter のサービスを利用しているか見てみましょう。
図 7 は、我々のデータセットで発見されたスタブに見られる実行チェーンの概要です。どれも PureCrypter が生成したと思われるダウンロードスタブから始まり、通常、.NET マルウェアのペイロードを取得するように設計されています。その取得元は、侵害されたウェブサイト、悪意のある Discord の CDN リンク、この目的のために特別に用意されたマルウェアのホスティングサーバーのいずれかです。

図 7 – マルウェア配信の実行チェーン
.NET マルウェアの内訳
C#/.NET/MSIL のスタブであることから、PureCrypter で生成されたと思われるマルウェアの後半のステージとしてダウンロードされるマルウェアも C#/.NET です。下のグラフは、調査中に最終ステージのペイロードとして配信されることが確認されたマルウェアファミリーの内訳です。
図 8 のとおり、Agent Tesla が 34.44% とサンプルセットの最も多くの部分を占めています。2 番目は 15.89% の Snake Keylogger で、そのすぐ後ろに 11.92% の Ave Maria が続きます。我々のサンプルを絶対視することはできませんが、採取した中で最も多く出現しているファミリーに注目することは興味深いに違いありません。

図 8 – PureCrypter を使用している可能性が高いマルウェアファミリー(割合順の内訳)
使用状況の時系列推移
図 9 は、2022 年に出現したマルウェアファミリーの時期をおおまかな時系列推移で表したものです。

図 9 – 2022 年に初めて確認されたマルウェアファミリーの時系列推移
まとめ
2022 年 1 月は、WhisperGate というマルウェアワイパーの出現により、脅威の状況に関して重要な節目となりました。これは、ウクライナの民間企業と政府機関を標的としたため大きなニュースにもなりました。
我々が WhisperGate のサンプルを解析したところ、次のステージのペイロードをダウンロードする配信メカニズムとして使用される珍しい MSIL スタブにたどり着きました。オープンソースのインテリジェンス技術を脅威ハンティングと組み合わせることで、さらにファイルを入手し、それを他の脅威アクターによる組織的攻撃に結び付けることができました。
調査中はダウンローダーファイルの作成方法が分かりませんでしたが、おそらくダークウェブで販売されているであろう「as-a-Service」型のツールが使われたのは間違いありません。データセットの中に「PureCrypter」という単語への参照を見つけたことで、さらに絞り込むことができました。
PureCrypter をさらに調査したところ、それまでに見てきたものと一致する各種の機能を発見しました。脅威アクターがこのクリプターを使って不正な目的を達成しているなら、このツールが期待どおりの働きをしているということを意味します。このツールに光を当て、組織的攻撃と関連付けることで、業界が一体となり、隠蔽しようとされていたものを明らかにしたのです。