マルウェア
最新版検出回避エンジンを組み込んだマルウェア「SeroXen」
マルウェア「SeroXen」の挙動を調査した結果、「FUD(Fully Undetectable:完全に検出不能)」バッチローダを作成するために、バッチ難読化エンジンBatCloakの最新版が含まれていることを確認しました。
近年、オンラインコミュニティや組織を標的とする攻撃が拡大しています。この背景には、マルウェアの検出回避能力が高度化している事実があります。現在のマルウェアでは「FUD(Fully Undetectable:完全に検出不能)」と称する検出困難化技術を使用しながらも低コストで入手可能であり、作成や運用に高いレベルの技術を必要としないものとなっています。例として、「SeroXen」として知られるマルウェアは、高度に難読化されたバッチファイルを介してFUD性能を活用し、被害者に気づかれずに遠隔操作を実現する「hVNC(Hidden-VNC)」活動を行います。
本稿は、FUDエンジンの1つである「BatCloak」とそのイテレーション、そしてSeroXenのメインローディングメカニズムとしてBatCloakエンジンが組み込まれていることを報告した三部構成シリーズの第二部です。「マルウェアを「完全に検出不能」にする難読化エンジン「BatCloak」」と題した第一部では、難読化エンジンであるBatCloakの始まりと進化について解説しています。当シリーズの第三部である「SeroXenのメカニズム:拡散方法、リスク、影響に関して」では、 BatCloakを利用したSeroXenの拡散メカニズムについて詳しく解説を行っています。また、バッチのFUD難読化によるセキュリティ上の影響を特集したインサイトも第三部に含まれています。
2023年6月時点において、SeroXenをオンラインで検索すると、公式Webサイトやソーシャルメディア、共有ページが上位に表示されます。そこでは、あたかも正規のツールであるかのようにRAT(リモート・アクセス・トロージャン)の使用方法に関する動画が掲載されています。このような拡散戦略については、第三部で解説します。
SeroXenのFUDバッチパターン
FUD性能を取得するために、SeroXenで採用されている難読化パターンは、Jlaive、BatCloak、CryBat、Exe2Bat、ScrubCryptなどの既知のFUDツールの難読化を進化させた多層的な構造となっています。なお、これらのFUDツールの作成者は、SeroXenのメインWebサイトや攻撃者たちによるフォーラムへの投稿を含め、さまざまな場面において貢献者として認識されています。
SeroXen感染チェーンの検証
感染プロセスにおいて、標的となったユーザは、まずバッチファイルを実行するように誘導されます。多くの場合、この誘導はゲームコミュニティを始めとする愛好家グループに対し、特定のソフトウェアを介して実行されます。ここでは、バッチファイルのFUD性能が有効なため、感染プロセスの効率は高まります。
トレンドマイクロは、有名なゲームのチート(不正行為)に関連する不正なアーカイブを確認しました。各アーカイブには、SeroXenへの感染経路として機能する高度に難読化されたバッチファイルが隠されています。驚くべきことに、どのアーカイブもセキュリティソリューションによって検出はされませんでした。多くのインスタンスでは、これらの不正なアーカイブは、特定の趣味を共有するコミュニティを対象としたDiscord CDN(Content Delivery Network)でホストされています。また、これらは特殊なフォーラムだけでなく、クラウドストレージオプションにおいてもホストされている可能性があります。
人気オンラインゲームのチートと偽り公開リポジトリに提出されたSeroXenの検体は、固有のComprehensive Concealment(包括的隠匿)機能を有しています。また、解析を通じて、SeroXenの難読化されたバッチファイルには一貫したパターンがあることが判明しました。このバッチファイルのサイズは、一般的に約10MBから15MBです。
SeroXenにより展開された難読化パターンの解析
トレンドマイクロは、SeroXenで使用されている難読化アルゴリズムを包括的に捉えるため、高度に難読化された多数のバッチファイルを徹底的に調査しました。図3の検体は、フォートナイト(ゲーム)のハックを装ったSeroXenの難読化されたバッチペイロードです。
以下は、SeroXenのFUDアルゴリズムが実装するバッチの簡略化した難読化パターンです。
- ディレクティブ「@echo off 」の包含によるコンソール出力の抑制
- 初期「set」コマンドを難読化するための高度な文字列操作技術(String Manipulation Techniques)の利用
- 「set」コマンドのユーザ定義変数への代入
- イコール演算子("=")のユーザ定義変数への代入
- ステップ 3 および 4 を活用し、追加のユーザ定義変数に値を代入
- 難読化プロセスの終了時に変数を連結してコマンドを作成し、そのコマンドを実行
トレンドマイクロの調査では、「junk code」という意味を有しないコードフラグメントの組み込みとともに多層化された難読化技術の実装が、バッチファイルの解析を阻害し、検出を妨げていることを示しています。
SeroXenの感染プロセス時に実行されるコマンドの概要
被害者を感染させるために結合し、実行されるコアコマンドの詳細
- 実行されるすべてのバッチコマンドを「@echo off」で確実に抑制
- System32からPowerShell実行ファイルをカレントディレクトリにコピー
- カレントディレクトリを設定
- .exeのように、コピーしたPowerShellにバッチファイル名に関連した名前を付け.exeを追加
- PowerShellコマンドを使用することで、暗号化されたペイロードを復号化し実行
- 最終ペイロードの解読に使用される最後のPowerShellコマンドを構築
- 静的演算子を使用し、最終ペイロードを復号化
難読化が解除されたSeroXenバッチファイルの解析
トレンドマイクロは、FUD性能が有効なSeroXenバッチペイロードの解析において、そのペイロードの実行に関連するコマンドの難読化を解除することができました。また、難読化が解除されたバージョンをダンプする過程で重要箇所にパッチを適用することにも成功しました。
難読化が解除された検体と高度に難読化された検体(図3)を比較すると、バッチスクリプトの主な機能を検証することができます。このバッチスクリプトは、難読化することで、一連のsetコマンドを生成し検出を回避します。なお、難読化が解除された場合でも、難読化されたsetコマンドのケースと同様の実行結果が確認できました。また、難読化されたバッチファイル全体で、多数の変数が連結することで意図されたスクリプトが実行されることも確認できました。
最終PowerShell復号化コマンドの解析
FUD難読化バッチファイルで実行されるPowerShellコマンドは、.Netローダを復号化し送信するために使用される一連の隠しPowerShellコマンドの一つです。
難読化が解除された一連のPowerShellコマンドは、ペイロードの暗号化を解除し、アセンブリリフレクション(Assembly Reflection)メカニズムを用いて、ペイロードをリフレクションによりロードします。PowerShellコマンドの最終シーケンスの特徴は以下の通りです。
- Base64を使用し、ペイロードを復号
- AES OR XOR アルゴリズムを使用し、ペイロードを解読。AESの場合:
- CBC(Cipher Block Chaining)モードで AES復号化オブジェクトのインスタンスを作成
- キーおよびIVにはBase64 Blobを使用
- ペイロードを解凍
- ペイロードをリフレクションによりロード
以下の図では、難読化されたバッチファイルからC#ローダが復号化される過程を表していいます。この後、復号化されたアーカイブを解凍し、.Netバイナリを作成します。
トレンドマイクロは、Base64を使用することでペイロードを解読しました。そして、難読化が解除されたキーおよびIVを用いてAES復号化を行います。最後に、.Netローダを明らかするためにgunzipを実行します。このペイロードはリフレクションを使用しメモリにロードされます。
SeroXenビルダーの詳細
SeroXenビルダーのバイナリファイルは、Agile.NETによって保護されています。関数およびビルダーリソースを解凍すると、SeroXenがルートキットを搭載したQuasar RATの修正バージョンであることが、このセクションで確認できます。また、ローダビルダーJlaiveや難読化エンジンBatCloakを利用してFUD .batローダを生成するなど、その他の修正も加えられています。JlaiveおよびBatCloakの進化と技術解析については、本連載の第一部で解説しています。
2023年6月15日時点で、SeroXenはオンラインで購入可能な月額鍵と永久鍵のオプション、そしてRATの使用方法を提供しています。本シリーズの第三部では、攻撃者の拡散戦略の一環として、この点について詳しく解説します。
SeroXenペイロードの生成プロセス
「build」 ボタンを押すと、ビルダーはユーザから与えられた設定をプリコンパイル済みファイルclient.binに書き込み、Quasar RATペイロードを生成します。そして、Crypt関数に引き渡します。
Crypt関数は、検出不可能なローダを生成するために、JlaiveクリプターであるMulti-Stage Loader GeneratorとBatCloackの難読化ソースコードを用いています。この関数は、まずQuasar RATのペイロードコンテンツを読み取り、それが有効な.NETアセンブリであるか否かを検証します。その後、バイナリ内の文字列とオペコードを修正し、CBCモードにおいてAESアルゴリズムを使用することで暗号化します。そして、payload.exe として保存します。
Jlaiveのクリプターと同様に、ビルダーはユーザ設定を取り込み、最初のローダを生成します。これは、リソースに埋め込まれたC#テンプレートファイルQuasar.Server.Stub.csを使用して行われます。作成者は、JlaiveのCreateCS関数に手を加えたバージョンに、APIアンフックなどの追加機能を統合しました。
Apiunhooker.dllはSharpUnhookerと称するオープンソースプロジェクトであり、API Hives(ntdll.dll、kernel32.dll、advapi32.dll、kernelbase.dll)を自動的にアンフックするC#ベースのユニバーサルAPI アンフッカーです。この技術は、プロセス中にロードされたAPI DLLをクレンジングまたはリフレッシュすることによって、ユーザ側のウイルス対策やEDR(Endpoint Detection and Response)ソリューションによる監視を回避するために使用されます。
その後、ビルダーはC#ローダスタブをコンパイルし、暗号化されたQuasart RAT(payload.exe)やSharpUnhooker(Apiunhooker.dll)などの必要なファイルやディペンデンシーをリソースに追加します。
次に、ビルダーはC#ローダを圧縮し、設定に応じてAESもしくはXORを使用して暗号化し、Base64によりエンコードを行います。最後に、バッチファイルを作成し、エンコードされたC#ローダのバイナリを読み込みます。また、難読化されたPowerShellスクリプトを使用して圧縮、解読、復号化プロセスを管理します。そして、このスクリプトもバッチファイルに追加されます。
バッチファイルの役割は、PowerShellスクリプトの難読化を解除して実行することです。このPowerShellスクリプトは、バッチファイルのコンテンツをスキャンし、「::」に続く値を探します。そして、この値を抽出、解読、解凍、復号化し、最後にメモリ内で実行します。
ビルダーのリソースセクションには、以下の2つのPowerShellテンプレートが存在します。設定に応じて、これらのうち1つがロードされます。
Qusar.Server.AESStub.ps1
Quasar.Server.XORStub.ps1
まとめ
総合的に見るとSeroXen自体はC#でコード化されたフル機能のRATであり、FUDペイロードを生成するために、関連するさまざまなオープンソースプロジェクトを組み合わせて構築されています。また、SeroXenが複数の感染や攻撃に利用されているという事実が報告書として明らかになっています。トレンドマイクロは、BatCloak難読化エンジンの進化に伴い、将来当エンジンが攻撃時のFUDツールとして使用されること、また、当エンジンがSeroXenのFUD性能の中核になると予測しています。
被害に遭わないためには
チート、ハック、クラックなどの用語や、競争上の優位性をもたらすソフトウェアに関連するリンクやパッケージに遭遇した場合には、懐疑的姿勢を崩さないことが重要です。たとえ「FUD(Fully Undetectable:完全に検出不能)」などと銘打たれていても、実際には検出する方法はあります。組織や企業のセキュリティチームは、こちらのYaraルールを適用することで、SeroXenの難読化されたバッチファイル検出することができます。また、最終的に難読化が解除されたバッチファイルおよび実行されるコマンドを明らかにするPowerShellスクリプトも存在します。このPowerShellスクリプトは、隔離されたマルウェアサンドボックス内で実行することが極めて重要です。このスクリプトを使用することで、SeroXenバッチファイルの難読化を解除し、難読化解除ルーチンで実行される PowerShell コマンドの出力ファイルを解析することが可能となります。そして、この難読化が解除されたペイロードの解析により、PowerShellコマンドからキーとIVを取得し、最終的なペイロードを復号化することが可能となります。
また、ユーザ、開発者、ゲーマー、愛好家は、インターネットから入手したバッチファイルを実行する際には慎重に行動してください。さらに、組織としては、バッチインストーラ(スクリプティングや反復タスクの自動化等)をダウンロードして実行するようにユーザを誘導するフィッシング攻撃に対して、警戒を怠らないことが大切です。
トレンドマイクロの対策
トレンドマイクロのXDRであるTrend Vision One™は、SeroXenやBatCloakのような不正なコンテンツを検出、スキャン、そして阻止できる最先端の多層防御と包括的なセキュリティソリューションを提供します。その時点で検出未対応のマルウェアの可視化では、特に挙動検知機能が効果を発揮します。またXDRは、不正活動全体をプロファイル解析することでリスクを軽減します。この機能は、エンドポイント、サーバ、ワークロード、電子メール、ネットワーク、クラウド、アイデンティティにわたる攻撃者のTTPs(テクニック、戦術、手順)を考察することで可能となります。
参考記事
SeroXen Incorporates Latest BatCloak Engine Iteration
By: Peter Girnus, Aliakbar Zahravi
翻訳:新井 智士(Core Technology Marketing, Trend Micro™ Research)