本ブログ記事は、2021年9月30日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。
背景情報
xLoader は macOS® と Windows® を標的とする情報窃取型マルウェア(インフォスティーラ)です。以前は地下フォーラムで Formbook という名前で販売されていましたが、2020 年初頭に Formbook の作成者が販売を終了した後、間もなく姿を現しました。
xLoader は MaaS(Malware-as-a-Service)の契約サービスとして販売されています。利用契約者には Windows と macOS の両方に対応した管理パネル、および実行可能なビルドが提供されます。コマンドアンドコントロール(C2)インフラストラクチャと各標的環境向けのマルウェアのビルドは、xLoader の作成者が全面的に管理しています。
オペレーティングシステム

リスクと影響

技術的解析
この記事では xLoader の Windows 向けビルドを解析していきます。
サンプルのハッシュ値:9f7b903ab126b2a3a0ca3c5977bbf84111f52a6e3a6e43aa127763e1a46b8f2d
このサンプルは 32 ビット Windows 向けの実行可能ファイルで、コンパイル時のタイムスタンプは 2001 年となっています。xLoader の出自についてわかっていることを踏まえると、これは明らかに偽の日付であり、マルウェアによる回避行動の 1 つであることが読み取れます。
基本的な静的解析からは、このマルウェアのさらに特異な以下の性質が明らかになります。
1. ライブラリと関数を一切インポートしていない
2. データディレクトリのエントリを持たない
3. 「.text」セクションは単一の実行可能形式
4. 判読可能な文字列がごく少数しかない
このサンプルのビルドは機能が大幅に制限されています。おそらく、マルウェアの作成者は「過ぎたるはなお及ばざるがごとし」と考え、解析対象となる領域を減らすことが検知回避に役立つと考えたのでしょう。しかし、いざ解析されるとなると、この判断はほとんど逆効果でした。マルウェアがシンプルであるがゆえに、その特異な性質がかえって強調されていたのです。
逆アセンブリすると、コードが以下のように高度に難読化されていることがわかります。

図 1 :xLoader バイナリの難読化されたコードフロー
次に動的解析に移ります。xLoader は、起動後にまずディスクから ntdll.dll を手動でロードします。このように DLL を手動でマッピングするアプローチは、(実装が不十分な)エンドポイント保護やマルウェアの自動解析環境によるフックを迂回するための回避手法の 1 つです。
ntdll をロードした後、xLoader は解析妨害のための一連のチェックを実施し、以下の項目を検査します。
1. ユーザーモードデバッガーの有無
2. カーネルモードデバッガーの有無
3. 実行の経過時間(rdtsc 命令を使用)
4. ブラックリストに登録されたプロセス名の有無
5. ブラックリストに登録されたモジュールの有無
6. ブラックリストに登録されたユーザー名の有無
7. スレッド環境ブロック(TEB)の Wow32Reserved フィールドが 64 ビットモジュールを指しているか
最後の項目はやや複雑であるため、少し詳しく見ていきます。
今回扱っている xLoader は 32 ビットのプロセスです。32 ビットのプロセスが 64 ビット環境で実行される場合、TEB の Wow32Reserved は wow64cpu.dll に含まれる関数のアドレスを指します。xLoader はこの Wow32Reserved が指す先の PE ヘッダーを調べ、PE ファイルの「マジックナンバー」が位置するオフセットの値が 0x20B、つまり 64 ビット(PE32+)モジュールを示しているかどうかを確認します。
解析のために xLoader の API 呼び出しを傍受する単純な方法として、Wow32Reserved を上書きし、傍受のための命令列を含んだユーザーメモリ上のブロックを指すようにするやり方があります。この場合、適切な PE ヘッダーと本来あるべき「マジックナンバー」の値が存在しないため、xLoader は自身が解析されていることを認識できるというわけです。
上記 7 項目の解析妨害チェックそれぞれの成否は 16 バイトのフィールドに記録されます。すべてのチェックが完了すると、このフィールドのハッシュ値が計算され、API 文字列の復号に使用されます。解析のためにこのチェックを単にバイパスした場合、復号が正しく行われず、未処理の例外によってマルウェア自身が意図的に終了する結果となります。

図 2 :xLoader が解析妨害のためのチェック結果をまとめる様子
実行環境のチェックを終えた後、xLoader は Windows の explorer.exe のプロセスハンドルを取得します(下図の ID 2460)。プロセスをオープンする要求にはメモリの読み出しと書き込みの許可が明示されており、これはリモートコードインジェクションが実行されようとしていることを明らかに示しています。

図 3 :読み出しおよび書き込み可のアクセス権でプロセスをオープンする要求
ここではセクションオブジェクトと共有メモリビュー、そして NtOpenThread、SetThreadContext、NtResumeThread の API 呼び出しを利用してコードインジェクションが実行されます。
このコードインジェクションの目的は正規の Windows プロセスを新たに生成することですが、このプロセスは後に第 2 段階のコードインジェクションの対象となります。通常、ユーザーが起動した正規の Windows プロセスの親プロセスは explorer.exe となるため、xLoader はできる限りそれと「同化」しようとしているのです。
xLoader は、内部に保持した以下のリストからランダムにプロセスを選択します。
svchost.exe msiexec.exe wuauclt.exe lsass.exe wlanext.exe msg.exe lsm.exe dwm.exe help.exe chkdsk.exe cmmon32.exe nbtstat.exe spoolsv.exe |
cmstp.exe colorcpl.exe cscript.exe explorer.exe WWAHost.exe ipconfig.exe msdt.exe mstsc.exe NAPSTAT.EXE netsh.exe NETSTAT.EXE raserver.exe wscript.exe |
taskhost.exe rundll32.exe systray.exe audiodg.exe wininit.exe services.exe autochk.exe autoconv.exe autofmt.exe wuapp.exe cmd.exe rdpclip.exe control.exe |
従来の類似のアプローチと同じく、起動されるプロセスは一時停止状態で生成されます。その後、そのプロセスはセクションオブジェクトと共有ビュー、そして SetThreadContext と NtResumeThread の API 呼び出しを介して実行されます。

図 4 :一時停止状態で起動される最終的な正規プロセス
解析環境下で xLoader を実行してアクティブなプロセスをスキャンしたところ、通常とは異なる生成元の実行スレッドを持つ疑わしいインスタンスが 2 つ見つかりました。

図 5 :疑わしい生成元を持つインジェクション済みスレッド
xLoader は起動後の一連のプロセスインジェクションが完了すると、cmd.exe を起動して自身をディスクから削除します。

図 6 :cmd.exe を使用した自己削除
永続性
永続性は、Windows レジストリの HKey_Current_User(以下、HKCU)の下に次のエントリを作成することで実現されています。
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\<RANDOM> REG_SZ
このエントリは、C:\Program Files (x86) 下のランダムな名前のサブフォルダーに置かれたマルウェア自身のコピーを指しています。

図 7 :Windows レジストリ HKCU を介した永続性確保/i>
コマンドアンドコントロール
C2 リクエストの処理は、explorer.exe の内部で動作する第 1 段階のコードが担当します。C2 チャネルへの初回チェックイン時には、以下に示すホストの基本情報が送信されます。
1. ハンドシェイクバイト(「XLNG」)
2. ユーザーのセキュリティ識別子(SID)のハッシュ値(「28BED20C」)
3. xLoader のバージョン(「2.3」)
4. OS のバージョンとアーキテクチャ(「x64」)
5. Base64 エンコードされたユーザー名

図 8 :C2 チェックイン時の POST リクエストに含まれる実行コンテキスト
ホストの「署名」とも言うべきこの情報は、送信前に暗号化および Base64 エンコードされます。
サンドボックス解析を繰り返した結果、xLoader はあらかじめ用意した 43 の候補から 16 の C2 ドメインをランダムに選択し、そのうち 1 つだけが本物の C2 ホストとなるようにしていることがわかりました。C2 トラフィックを目立たなくしたり、無害な HTTP リクエストと区別しにくくしたりするために、他のドメインが含まれる場合もあります。選ばれた各ドメインはラウンドロビン方式で均等にアクセスされ、チェックインの試行は 5 秒間隔で無期限に繰り返されます。
今回解析したビルドのキャンペーン ID は「ipa8」で、この ID は GET リクエストに含まれています。

図 9 :エンコード済みのホスト識別情報を含んだ xLoader C2 への GET リクエスト
チェックインが成功すると、xLoader に以下の指示を行えるようになります。
- 追加のペイロードのダウンロードと起動
- スクリーンショットのアップロード
- ユーザーの認証情報または Cookie の傍受と窃取
- キーロギングの開始
- 実行終了とアンインストール
- クリップボード内容の窃取
バインディングツール
xLoader のサブスクリプションでは、xBinder と呼ばれる Java ベースの無料ツールが提供されています。このツールは Windows と macOS の実行可能ファイルを単一のポータブルな .jar ファイルにまとめるものです。Java の普及状況を踏まえると、これは攻撃者にとって魅力的な機能です。これにより、ソーシャルエンジニアリングのメール添付ファイルや水飲み場攻撃のダウンロードファイルを介した攻撃が可能となるためです。
.jar ファイルには macOS と Windows の実行可能ファイルがバンドルされ、固定の AES 鍵で暗号化されています。このファイルは実行時にホスト OS を識別し、対応するペイロードをドロップして実行します。
xBinder は特定バージョンが VirusTotal に掲載されており、このことはリークまたは意図しないアップロードが行われた可能性を示唆しています。また、xBinder によって生成された .jar ファイルを解析した中には、「/bin/ls」などの無害な macOS コマンドラインツールと、以下のようなマルウェアファミリーの悪意ある Windows 実行可能ファイルとが含まれている場合がありました。
- Azorult(インフォスティーラ)
- Snake(インフォスティーラ)
- Neshta(ファイルインフェクタ)
- Guloader(ダウンローダ)
このように無害なファイルとさまざまなマルウェアファミリーの悪意あるコードが不釣り合いにバンドルされているという事実は、xLoader の利用契約者ではないグループまたは個人が無許可で xBinder を使用している可能性を示唆しています。

図 10 :Mac および Windows 向けの .jar ファイルを作成する xBinder ツール
まとめ
ランサムウェアをはじめとして、地下フォーラムでさまざまな MaaS サービスが販売される中、xLoader は安価で高機能、かつ回復力が高いことを売りにしています。macOS と Windows に対応したバイナリは回避能力が高く成熟している上、より無差別な攻撃を可能にする無料のバインディングツールも提供されるため、xLoader は経験に乏しいサイバー犯罪者だけでなく、より大規模で組織化されたグループにとっても魅力的なサービスとなっています。
YARA ルール
以下の YARA ルールは、この記事で説明した脅威を捕捉するために BlackBerry の Research & Intelligence Team が作成しました。
import "pe" |
侵入の痕跡(IOC)
ネットワーク: www[.]abolad[.]com レジストリ: HKCU\Software\Microsoft\CurrentVersion\Run\<RANDOM> (REG_SZ) ファイルシステム: C:\Program Files (x86)\<RANDOM>\<Random>.exe SHA256: 9f7b903ab126b2a3a0ca3c5977bbf84111f52a6e3a6e43aa127763e1a46b8f2d (xLoader PE) |
予防ファースト
BlackBerry では、サイバーセキュリティに対して、予防ファーストの AI 主導アプローチを採用しています。予防を第一とすることで、キルチェーンの悪用段階の前にマルウェアを無力化できます。
これにより、新種・亜種が氾濫するランサムウェアなどを効果的に検知・対応できるのです。
BlackBerry® ソリューションは、この段階でマルウェアを阻止することで、組織の回復力向上に貢献します。また、インフラストラクチャの複雑さが削減され、セキュリティ管理が合理化されて、業務、スタッフ、エンドポイントが確実に保護されます。
BlackBerry によるサポート
もし xLoader インフォスティーラのような脅威にさらされているなら、BlackBerry にお任せください。現在 BlackBerry 製品を利用していなくても問題ありません。
BlackBerry の インシデント対応チーム は、世界的に活躍するコンサルタントから構成され、ランサムウェアや持続的標的型攻撃(APT)など、さまざまなインシデントへの対応と封じ込めのサービスを専門としています。
弊社はグローバルコンサルティングチームを常に待機させており、ご希望があれば、24 時間サポートと現地支援を提供できます。次の URL からご相談ください。 https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows
・BlackBerry Japan:https://www.blackberry.com/ja/jp