1月に始まった、スパムメールから配信されるマルウェアによる一連の攻撃のいくつかは、Slack や BaseCamp などの人気の高いリモートワーク用のコラボレーションツールを悪用し、これらのサービスが提供するクラウドストレージでホストされているマルウェアのペイロードに誘導するものでした。また、これらのスパムメールには受信者およびその会社や組織の名前が挿入されており、企業に属する受信者が正規の Web サイトに一時的にホストされているトロイの木馬のペイロードをダウンロードして実行するように仕向けていました。
BazarLoader と呼ばれるこのマルウェアは、ターゲットである大企業の従業員に、給与、契約、請求、あるいはカスタマーサービスに関する重要な情報についてのメッセージであると信じ込ませるため、企業をターゲットにしたソーシャルエンジニアリングの手法を多く採用しています。あるスパムメールでは、従業員の解雇通知を装っていました。
受信者がスパムメールに関連付けられたドキュメントを開くとすぐ、コンピュータは BazarLoader に感染します。BazarLoader はそれ自体が他のマルウェアを配信するメカニズムとして機能します。BazarLoader は大企業をターゲットにしており、感染したコンピュータはランサムウェア攻撃に利用される可能性があります。
しかし、この攻撃を操るサイバー犯罪者 (Trickbot マルウェアを開発したグループと同じであると見られています) が、2月に入ってから全く異なる手法でスパムによる攻撃を展開しました。BazarCall と呼ばれる今回の攻撃では、スパムメッセージにはいかなる個人情報も、リンクも、添付ファイルも含まれていません。その代わりに、受信者が現在利用しているとされたオンラインサービスの無料トライアルが一両日中に期限切れになると記載されており、高額な更新費をキャンセルするために受信者がかけるべき電話番号が記されています。
この形式の攻撃では、記載された電話番号に電話をかけた人にだけ URL が伝えられ、サービスを退会できる Web サイトにアクセスするよう誘導されます。Web サイトは高度で洗練された見た目をしており、よくある質問のページに「退会」ボタンが埋め込まれています。ボタンをクリックすると、悪意のある Office 文書 (Word 文書または Excel スプレッドシート) が配信され、これらのファイルを開くとコンピュータが上記の BazarLoader マルウェアに感染します。
この仕組みを解明するために、記載されている電話番号に電話をかけてみました。電話に応対した人物は、非常に快く、マルウェアをダウンロードするよう誘導していました。
BazarLoader の仕組み
BazarLoader は過去数ヶ月の間、さまざまなソーシャルエンジニアリングの手法やギミックを用いて、多様な方法で配信されています。電子メールには Office 文書が直接添付されていたり、他の場所でホストされているファイルへのリンクが貼られていたりすることがあり、文書を開くと実行可能なペイロードがダウンロードされます。しかし、電子メールを利用した感染経路はこれだけではありません。受信者にマルウェアの実行ファイルそのものをダウンロードさせるためのリンクがメッセージ本文に含まれている場合もあります。
企業をターゲットにしたスパム攻撃のメッセージは多くの場合、仕事に関連する文書の確認を求めるなど簡潔な依頼を偽装しており、メッセージの本文には通常、(必ずしも説得力のあるものではありませんが) ターゲットとなる組織と受信者双方の名前が含まれています。ある銀行の従業員に送られたメッセージには、「[銀行名]の新入社員です。本日2度ご連絡をしております。お伺いしたいのですが、請求番号 #[数字の羅列] はどうなっておりますでしょうか。」と書かれており、その下には「PDF でオンラインプレビュー」という文言で、ダウンロードサイトへのリンクが貼られていました。
別の例では、「お電話でご連絡できませんでした」という件名のメールに、「[ターゲットの名前] 様、2 月 1 日付での辞令に従い、[企業名]でのあなたの雇用が 2021 年 [日付] をもって終了します。調停のための報告書のコピー (PDF でプレビューできます) を添付します。」という内容の本文が付属しています。
さらに、メッセージは悪い知らせだけを装っているわけではありません。成果に応じたボーナスや昇給を主張するメッセージを受け取ったターゲットもいます。「[社名] のオフィスでお声がけすることはできませんでしたが、本社の年次賞与報告書 43-2/5/21号 (PDF でプレビュー) が処理され、あなたの給与口座に1,936 ドルが追加入金されています。」などの例もあります。
これらのメッセージでは受信者がサブスクライブしているとするサービスのトライアル登録を解除しないと、1~2 日のうちにクレジットカードに代金が請求されると警告されていました。サービスの退会方法を知るためにはメッセージ本文に記載された電話番号に電話して解除のための URL を聞き出す必要があります。私達はメッセージに記載された数十件の電話番号に電話をかけてみましたが、上手く繋がり、URL を聞き出すことができたのはごく少数だけでした。
4 月中旬になると、BazarCall のメッセージは新しく「BookPoint」、「BooksPoint」、「World Book Point」などの名義で、有料のオンライン図書館を名乗りはじめました。Medical Reminder Service 社としてのメッセージと同様、これらのメッセージの本文にはリンクや添付ファイルはなく、電話番号とロサンゼルスの実在する住所が記されています。また、件名には長い番号や文字列が記載されていますが、これは攻撃の次の段階に関連するものです。
送信元アドレスの偽装は発覚しやすいと考えたのか、攻撃者らはこれ以降のスパムメッセージに微妙な変更を加えました。最も重要なのは、送信元アドレスが偽装されたものではなく、スパムに関連付けられたドメインに設定されたことです。
BazarCall による悪意のある文書の配信
攻撃のこの段階では、BazarCall のメッセージの受信者は、電話番号に電話して請求を受けているプレミアムサービスからの「退会」のための URL を聞き出すよう求められます。これは、この攻撃の中で最も不可解な部分の 1 つです。というのも、聞き出した URL は (攻撃者によって作成された) 正規にように装った Web サイトに繋がりますが、この Web サイト上ではサービスからの退会方法を簡単に見つけることができないからです。
実際、退会ボタンやリンクを見つけるためには、Web サイト内を少し探し回る必要があります。綿密な調査の結果、退会のリンクは Web サイトの「よくある質問」 (あるいは FAQ) のページにあることがわかりました。また、「購読」のページにもリンクが貼られています。
このページに掲載されている文章のほとんどは定型文です。ページに記載されているさまざまな質問に対する回答はすべて同じで、表示されている質問の内容とはまったく関係ありません。ただし、「サービスから退会するには」とラベルの貼られた質問が必ずあり、その下にリンクが貼られています。
「完璧な広告文」というものは存在しないかもしれませんが、誰でもこの文章がデタラメであることは容易に看破できます。
これらのリンクは別のページ (場合によってはまったく別の Web サイト) に繋がり、訪問者は「退会」のため、メールの件名に記載されていた長い番号を Web サイト上のテキスト入力ボックスに入力するよう求められます。このボックスに正しい数字を記入すると、Web ページは悪意のある Excel や Word 文書の配信を開始します。
実際に電話をかけ応対した人物と会話をしてみた結果、攻撃者が通話中に聞き出した「お客様番号」を有効にした場合にのみ、Web ページが悪意のある文書を配信する仕組みになっていると考えられます。「退会」のリンクに使用されているドメインを確認した後、同種のスパムメールの別のメッセージに記載されていた別の番号を Web サイトに入力したところ、容量のない空のファイル、あるいは意味のない情報で満たされたファイルが配信されました。
電話の向こうの親切な人物は、あなたの番号を入力する Web サイトのセクションに誘導し、悪意のある Excel スプレッドシートあるいは Word 文書をダウンロードして開き、さらに Microsoft Office でほとんどの場合デフォルトで有効になっているスクリプト実行防止のセキュリティ対策を無効にするよう指示してきます。
通話の中で最も不快に感じたのは、電話の相手が非常に丁寧な対応をしてくることでした。
素早く、目立たない感染経路
マルウェアがコラボレーションツールの Web サイト上でホストされているケースでは、多くの場合 Adobe 社の PDF の画像をアイコンに設定した、デジタル署名された実行可能ファイルに直接リンクされていました。ファイル名も presentation-document.exe、 preview-document-[数字].exe や annualreport.exe など、誤認を誘うものになっていました。
その後、攻撃はよりソーシャルエンジニアリング的側面を強め、BaseCamp や Slack などのリモートワーク用コラボレーションプラットフォーム上に捨てアカウントを作成し、ペイロードの実行ファイルを (被害者が誘導されるまで一時的に) ホストするために使用します。攻撃者らは、これらの有名で正規の Web サイトの URL をメッセージの本文に目立つように表示し、受信者の信頼を得ようとします。さらに、URL は短縮サービスで難読化され、.exe ファイルへのリンクであることが隠されていることがあります。
雑誌のサブスクライブ料の請求というソーシャルエンジニアリングの手法を利用した攻撃では、マクロが仕込まれた Excel スプレッドシートが添付されていました。実行されると PowerShell が起動し、攻撃対象のコンピュータが使用している可能性のある特定の CPU アーキテクチャ (32ビットあるいは64ビット) 用にそれぞれコンパイルされた一組のペイロード DLL が取得され起動します。使用していないアーキテクチャ用のペイロードは自動的に削除され、正しい方だけが実行されます。
IBazarCall による攻撃では、細工された Microsoft Office 文書が配信され、1つまたは複数のペイロード DLL をダウンロードして実行するコマンドが呼び出されます。
マルウェアの感染プロセスでは、初期化関数を持つ rundll32.exe が呼び出されることで、DLL が実行されます。これにより、システムが正規の Windows コンポーネント (cmd.exe、explorer.exe、あるいはsvchost.exe) のインスタンスを起動し、これらのプロセスのメモリ空間にマルウェアの DLL を挿入します。これらのプログラムは攻撃を受けているコンピュータのタスクマネージャを確認しても異常な動作をしているようには見えません。
初期のマルウェアは難読化されていませんでしたが、最近の検体では、マルウェアの動作の意図を明らかにする文字列が暗号化されているようです。BazarLoader は開発の初期段階のものだったようで、Trickbot のような後発のものほど洗練されていませんが、いくつか興味深い共通点を持っています。
ボットの動作、コマンド&コントロール
このマルウェアには、「ローダー」(攻撃者がマルウェアの配信メカニズムとして使用するもの) と「バックドア」の 2 つの種類があります。ローダーはさまざまなペイロードを配信していることが確認されていますが、それらの性質については本記事では扱いません。
前述の通り、BazarLoader のメインローダーモジュールは、システムプロセスに挿入されて実行されることで、メモリのみで実行されるマルウェアとして存続します。このマルウェアはコンピュータを再起動しても有効であり、1 つまたは複数のコマンド&コントロール (C&C) サーバーと、標準ポート 443 および時おり 8443 などの代替ポートに TLS で通信を行います。
このマルウェアは、機能および目的を偽装するため、インポートテーブルに関連付けられた API システムコールを利用しません。代わりに、BazarLoader がシステム API を呼び出すたびに、ルックアップテーブルの DWORD ハッシュを検索して正しい API コールアドレスを名前解決します。この複雑さは、一部のシステムツールに対してマルウェア側に有利にはたらきます。マルウェアは最初の実行時にその場でハッシュを生成しますが、エンドポイントプロテクションツールでは任意の機能を意味し得るハッシュ値を予測することができないからです。
BazarLoader は、API コールのため固有のルックアップテーブルを作成したあと、システムの言語がロシア語に設定されているかどうかを確認します。感染したシステムがロシア語を使用するように設定されている場合は、攻撃を終了します。
このマルウェアは、まず C2 サーバーに接続し、ある無効な URL (www.microsoft.com/update/service.exe) に対して HTTPS HEAD リクエストを実行します。続いて、ある C2 サーバーの /stat/var/upd というパスに HTTPS GET リクエストを行います。サーバーからは、200kb を超えるファイルが返されます。
ボットはその後すぐに一連の HTTPS GET リクエストとそれに続く HTTPS POST リクエストを行うことで C2 サーバーへのビーコンを開始し、数バイトの意味を持ったデータをアップロードします。BazarLoader は、以下のような C2 スキームを使用しています。
GET https://x.x.x.x/[32 バイトの固有 ID]/[コマンド]/ POST https://x.x.x.x/[32 バイトの固有 ID]/[コマンド]/
これらのリクエストで使用される[コマンド]は、常に 1 から 100 の間の数字です。ほとんどの場合、マルウェアはチェックイン要求 (コマンド 2) を実行した後、数バイトのデータを POST (コマンド 3) します。)
GET https://x.x.x.x/[32 バイトの固有 ID]/2/ POST https://x.x.x.x/[32 バイトの固有 ID]/3/
末尾の数字は起動されるコマンドを意味します。コマンド /2/ は C2 サーバーに新しいコマンドを要求するもので、コマンド /3/ は C2 サーバーに新しい情報をアップロードするものです。
これらの他にも、いくつかのコマンドがあります。
- /1/ はボットを起動し、広範囲のシステムプロファイリング情報を収集します。
- /10/ は URL を指定してペイロードをダウンロードし、Notepad.exe、Explorer.exe、Svchost.exe、あるいはcmd.exe のいずれかに挿入することで実行します。
- /11/ は DLL をダウンロードし、rundll32 を使って実行します。
- /12/ はバッチスクリプトをダウンロードして実行します。
- /13/ は PowerShell スクリプトを実行します。
- /15/ は BazarLoader を終了させます。
- /100/ は自分自身を完全に削除して終了させます。
ソフォスでは BazarLoader とその C2 サーバーの間の多くのトラフィックを収集しました。マルウェアは C2 サーバーサーバーの IP アドレスに接続することでほとんどの C2 サーバーと直接通信していますが、C2 サーバーの TLS 証明書は、一貫して amadeamadey.at という存在しないドメインに割り当てられているようです。BazarLoader が頻繁に使用する IP アドレスのうちの少なくとも 1 つは Amazon Web Services が使用するインターネット空間に割り当てられており、マルウェアのオペレータが C2 サーバーを通して命令を出しやすくなっています。
ブロックチェーン DNS の利用
Trickbot を操るサイバー犯罪者はさまざまな新技術を試し、実験を短い期間に繰り返し、効果がないことがわかるとその技術を放棄することでよく知られています。例えば、数年前に Trickbot は i2p という匿名化ツールを実験的に使用していましたが、これは (実質的には) Tor と似た意図を持っています。BazarLoader でもこの傾向は変わらないようで、Blockchain DNS (B-DNS) と呼ばれる技術が実験的に使用されています。
BazarLoader のペイロードをリバースエンジニアリングする過程で、ハードコードされ埋め込まれた IP アドレスや、.bazar という標準的でないトップレベルドメイン (TLD) を使用したドメイン名にしばしば遭遇しました。結論からお伝えすると、.bazar という TLD を使用したドメイン名は、他のほとんどのドメイン名と同様、ドメインレジストラを利用して登録する必要はありません。
Emercoin という暗号通貨の会社は、B-DNS TLD の下での使用を同社が管理するブロックチェーンに記録するだけで、誰にでもドメイン名の所有を許可しています。OpenNIC というネットワークが Emercoin やその他の組織のために B-DNS TLD を監視しますが、管理は行いません。所有権がブロックチェーンに記録されれば、そのドメインはあなたのものになります。
このような分散型の管理構造は、犯罪グループにとって特に重要な利点になっています。現在の B-DNS システムに登録されているドメインは、改変されたり、法執行機関に押収されたり、ドメインレジストラや ICANN などの他の機関に取り消されたり停止されたりすることはありません。ドメインのブロックチェーンの秘密鍵を持っている人物だけが登録を他の人に移譲する (または停止する) ことができるため、マルウェアのオペレーターにとっての大きな障害を 1 つ取り除くことができます。
また、B-DNS システムにはいくつかの問題があります。Tor の「ダークウェブ」とは異なり、B-DNS システムは C&C サーバーとして使用できるホスト IP アドレスを匿名化しません。また、B-DNS の TLD (.bazar のほか、.coin、.emc、.lib などがあります) に登録されたドメインは、従来の DNS アーキテクチャでは正常に名前解決できません。
その代わりに、B-DNS システムのオペレーターは、ドメイン解決のために他に多くの方法を設定しています。その 1 つが、B-DNS のルックアップメカニズムとして使用できる (従来の方法で登録された) Web ドメインのセットです。ただし、マルウェアの作成者は好きなようにドメインを登録するだけなので、これはマルウェア対策にはなりません。Emercoin のウォレットには一種の DNS サーバーが含まれており、ウォレットのユーザーは B-DNS 空間に登録されているドメインを名前解決することができます。また、ページの閲覧中にバックグラウンドで B-DNS ドメインを解決するブラウザプラグインもあります。
BazarLoader のペイロードには、マルウェアが最初に接続を試みるハードコードされた C2 サーバーのアドレスも存在していますが、ボットがメインの C2 サーバーに到達できない場合は UDP 経由で OpenNIC を使用して B-DNS ドメインの解決を試みます。一部の BazarLoader のペイロードにはドメイン生成アルゴリズムも含まれており、従来の方式、あるいは B-DNS 方式のいずれかでハードコードされた C2 サーバーのアドレスに到達できない場合に展開されることがあります。
Trickbot との関係
実は BazarLoader にはもう一つ Trickbot との共通点があることが、新たにわかりました。コマンドアンドコントロールに同一のインフラを使用していることです。この事実は意外でした。
このマルウェアの調査中、私の自宅に突然 FBI の捜査官が訪ねてきました。私の住む街には別の用で来たのだというその捜査官は、被害者への通知を行うために立ち寄ってくれたのだそうです。FBI は、私がまさに研究していたマルウェア感染のさまざまな特徴を記した数枚の紙を渡してくれましたが、その中にはセキュリティ侵害の痕跡 (IoC) も含まれていました。説明文やその他の指標は私の見解と一致していましたが、1 つだけ気になる点がありました。
捜査官が手渡してくれたメモには、私の研究所のネットワーク上で実行されているマルウェアが「Trickbot の攻撃者との関連あり」と書かれていました。
これは、Trickbot と BazarLoader の関連性が偶然ではないことを示す、最初の具体的な証拠でした。私達の認識では、研究所のネットワーク上で実行されていたマルウェアのバイナリは、Trickbot とは似ても似つかないものでした。しかし、この 2 つのマルウェアは、それぞれのマルウェア、およびその派生種が過去共通して使用してきた IP アドレスと通信していました。もちろん、これまでにも多くの人がこの関連性を研究しており、私も初めて聞いたわけではありませんでした。
しかし、私はサイバーセキュリティ分野で長いキャリアを持ち、自宅を拠点とする研究所のネットワーク上でマルウェアを長時間稼働させることを習慣的に行ってきましたが、FBI が個人的に立ち寄って、私のネットワーク上にマルウェアが存在することを知らせてくれ、さらに IOC を含む報告書を持ってきてくれたのは初めてのことでした。
驚きの展開です。
検出
BazarLoader によるセキュリティ侵害の痕跡は、SophosLabs の Github で公開されています。
謝辞
SophosLabs は BazarLoader の内部構造および C2 サーバーのコマンドの解明に対して貢献した Sivagnanam Gn、BazarLoader のドメイン生成アルゴリズムの研究を行った Johannes Bader、Trickbot と BazarLoader の類似性の発見に貢献した Cyberreason Nocturnus、BazarLoader/BazarCall の IOC を定期的に公開している Twitter 上の匿名の研究者たち (誰だかはおわかりですよね)、および BazarLoader のセキュリティ侵害の痕跡を共有し、無慈悲な攻撃者から中小企業を保護している FBI の特別捜査官たちに謝意を表明します。