Mandiant Blog 第9回「VMware ESXiサーバ,SANアレイ… 標的になるのは EDR 未配備システム」 | ScanNetSecurity
2024.04.26(金)

Mandiant Blog 第9回「VMware ESXiサーバ,SANアレイ… 標的になるのは EDR 未配備システム」

今年初め、Mandiant は、VMware ESXi、Linux vCenterサーバ、および Windows仮想マシンに影響を与える新たなマルウェアエコシステムを特定しました

脆弱性と脅威
図1:ESXiの攻撃経路のイメージ
  • 図1:ESXiの攻撃経路のイメージ
  • 図2:修正されたディスクリプタXML
  • 図 3:esxcli software vib signature verify で確認される VIB アクセプタンスレベルの偽造の例
  • 表1: Lsu-lsi-lsi-mrarpid-plugin Malicious VIB contents
  • 表2: Lsu-lsi-lsi-mrarpid-plugin Malicious VIB contents
  • 図4:攻撃者がESXiハイパーバイザー上で実行したコマンド
  • 図5:ESXiから渡されたコマンドを実行するvmtoolsd.exe
  • 図6:攻撃者がゲスト仮想マシン上で利用したファイル列挙・圧縮コマンド

 EDR(エンドポイント検出・対応)ソリューションが Windowsシステムにおけるマルウェア検知の有効性を高めるにつれ、国家の支援を背景とする一部の攻撃者は、ネットワーク機器、SANアレイ、VMware ESXiサーバなど、一般的に EDR がサポートされていないシステムに対するマルウェアの開発・配備にシフトしています。

 今年初め、Mandiant は、VMware ESXi、Linux vCenterサーバ、および Windows仮想マシンに影響を与える新たなマルウェアエコシステムを特定しました。攻撃者は、これによって以下を行えるようになります。

1.ハイパーバイザーへの持続的な管理アクセスを保持
2.ゲストVM に転送されるコマンドをハイパーバイザーに送信し、実行
3.ESXiハイパーバイザとその配下で動作するゲストマシン間でファイルを転送
4.ハイパーバイザー上のログサービスを改ざん
5.同一ハイパーバイザー上で動作しているゲストマシンから別のゲストマシンへの任意のコマンドを実行

 このマルウェアエコシステムは、Mandiant がある侵入調査の際に、VMware ESXiハイパーバイザーをホストとする Windows仮想マシン上で正規の VMware Toolsプロセスである vmtoolsd.exe をソースとする攻撃者のコマンドを確認したことから、最初に検出されました。Mandiant は、ESXiハイパーバイザのブートプロファイルを分析し、攻撃者が悪意のある vSphere Installation Bundles(以下、VIB)を利用して、ESXiハイパーバイザに複数のバックドアをインストールするという、これまでにない手法を特定しました。これらのバックドアを「VIRTUALPITA」および「VIRTUALPIE」と呼んでいます(図1)。

図1:ESXiの攻撃経路のイメージ

 ここで重要なのは、これが外部からのリモートコード実行の脆弱性ではなく、攻撃者がマルウェアを展開する前に、ESXiハイパーバイザーの管理者レベルの特権を必要とするという点です。この記事を書いている時点では、ゼロデイ脆弱性が悪意のある VIB の初期アクセスまたは展開に使用されたという証拠はありません。

 ESXi環境に悪意のある VIB や異常な VIB が現在インストールされているかどうかを手動で検出する方法の詳細については、当社のハードニングに関するブログポストに概略を説明しています。また VMware は、vSphere の保護に関する追加情報を公開しています。

●vSphere Installation Bundles (VIB)

 Mandiant は、悪意のある vSphere Installation Bundles(VIB)を介してインストールされる 2 つの新しいマルウェアファミリーを特定し、VIRTUALPITA および VIRTUALPIE と名付けました。

 VMware VIB は、ソフトウェアの配布と仮想システムの管理を容易にするために設計されたファイルの集合体です。ESXi はインメモリファイルシステムを利用しているため、ファイルの編集内容は再起動しても保存されません。VIB パッケージを使用して、スタートアップ タスク、カスタム ファイアウォール ルールを作成したり、ESXi マシンの再起動時にカスタム バイナリを展開したりすることができます。これらのパッケージは、一般的に管理者がアップデートを展開し、システムを維持するために利用されますが、この攻撃者は、ESXiハイパーバイザ間でアクセスを維持するための永続化メカニズムとしてパッケージを活用していることが確認されました。

 VIB は、次の 3 つの要素に分解することができます。

・XMLディスクリプタファイル
・VIB ”ペイロード” (.vgz アーカイブ)
・署名ファイル - VIB のホストのアクセプタンスレベルを確認するために使用されるデジタル署名

XML 記述子ファイルは、以下への参照を含む設定:

・インストールされるペイロード
・VIB メタデータ(名前、インストール日など
・VIB に属する署名ファイル

 VIBペイロードは .vgzアーカイブで、VIB を通じて ESXiマシン上に作成されるディレクトリとファイルが含まれています。これらのファイルは、VIB がロードされると、ブート時に実行するように呼び出すことができます。

 署名ファイルは、VIB のホストのアクセプタンスレベルを確認するために使用されます。アクセプタンスレベルは、VMware が使用するデジタル署名システムで、VIB が公開される前に VMware またはパートナーによって行われたテストを指定するために使用されます。アクセプタンスレベルは、ホスト、イメージプロファイル、および個々の VIB に対して設定されます。4 つのアクセプタンスレベルと XMLディスクリプタのショートネームを以下に示します。

・VMWareCertified (certified)
・VMwareAccepted (accepted)
・PartnerSupported (partner)
・CommunitySupported (community)

 VMware のドキュメントによると、VIB を ESXiホストにインストールするために必要なデフォルトの最低限のアクセプタンスレベルは、PartnerSupported です。このアクセプタンスレベルは、VMware が信頼するパートナーによって VIB が公開されていることを示します。これはデフォルトのアクセプタンスレベルですが、ESXi の管理アカウントによって手動で変更することができます。VIB のインストールに使用されるコマンド esxcli software vib install は、通常、最低アクセプタンスレベル未満のインストールを許可しませんが、-force フラグを使用すると、VIB のインストール時にシステムのアクセプタンスレベル要件をすべて無視することができます。

 観測された悪意のある VIB には、PartnerSupported というラベルが貼られていました。Mandiant が署名ファイルを確認したところ、それらは空であり、攻撃者が XMLディスクリプタファイルを修正し、アクセプタンスレベルのフィールドを Community から Partner に変更したことが判明しました。CommunitySupported のアクセプタンスレベルは、VIB がサードパーティによって作成されたことを示し、VMware やその信頼できるパートナーによってレビューも署名もされていないことを意味します。これは、攻撃者が、これらの VIB ファイルが CommunitySupported VIB の要件しか満たしていないにもかかわらず、PartnerSupported として偽装していることを示しています。また、この VIB は、VMware のパートナー プログラム以外の個人または企業によって作成され、VMware が承認したテスト プログラムを通過していないことも示しています。Figure 2 は、確認され修正された XML ディスクリプタ・ファイルの抜粋を含んでいます。

図2:修正されたディスクリプタXML

 攻撃者によって ディスクリプタXML のアクセプタンスレベルフィールドが変更さ れたものの、ESXi システムでは、最低限設定されたアクセプタンスレベル以下では、改ざんされた VIB ファイルをインストールすることができませんでした。これを回避するため、攻撃者は --force フラグを悪用して、悪意のある CommunitySupported VIB をインストールしました。

 テストでは、XMLディスクリプタファイルの変更されたフィールドが、VIB のリストと検証に使用されるコマンドの出力で行われた変更を反映していることが確認されました。これには、<acceptance-level>フィールドの変更が含まれ、esxcli software vib listコマンドに、インストールされた VIB の不正なアクセプタンスレベルを表示させるように細工されています。VMware コマンドである esxcli software vib signature verify は、インストールされた VIB パッケージの署名を検証し、次のフィールドを表示します。

・VIB名
・バージョン
・ベンダー
・アクセプタンスレベル
・VIB の署名照明の結果

 Mandiant は、このコマンドがこれらのアクセプタンスレベルが改ざんされた場合に検知し、悪意のある VIB を特定することを確認しました。このコマンドは、XMLディスクリプタファイルによって指定されたアクセプタンスレベルを表示しますが、Signature Verification(署名証明)列は、署名ファイルがそれぞれのディスクリプタXML と一致しなかった場合に明示されます。署名が確認できない場合、[Signature Verification]列には「Signature Not Available」という値が表示されます。ホストが古い ESXiバージョンからアップグレードされた可能性があります。この例は、図3 に示されています。

図 3:esxcli software vib signature verify で確認される VIB アクセプタンスレベルの偽造の例

●VIRTUALPITA (VMware ESXi)

 VIRTUALPITA は、VMware ESXiサーバ上のハードコードされたポート番号にリスナーを作成する 64 ビットパッシブバックドアです。このバックドアは、しばしば VMware のサービス名とポートを利用して、正当なサービスに見せかけます。任意のコマンドの実行、ファイルのアップロードとダウンロード、および vmsyslogd の起動と停止をサポートしています。また、任意のコマンドを実行する際に、環境変数 HISTFILE を 0 に設定し、マシン上で発生したアクティビティをさらに隠蔽します。このマルウェアの亜種は、仮想マシン通信インタフェース(VMCI)をリッスンし、この活動をファイル sysclog に記録することが確認されました。

●VIRTUALPIE (VMware ESXi)

 VIRTUALPIE は Python で書かれたライトウェイトなバックドアで、VMware ESXiサーバ上のハードコードされたポートにデーモン化された IPv6リスナーを生成します。任意のコマンドライン実行、ファイル転送機能、リバースシェル機能をサポートしています。通信はカスタムプロトコルを使用し、RC4 で暗号化されます。

 lsu-lsi-lsi-mrarpid-plugin という名前の最初の悪意のある VIB は、ペイロード lsu_lsi_.v05 (MD5: 2716c60c28cf7f7568f55ac33313468b) を参照しており、表 1 にあるように、以下の 3 つのファイルの詳細が含まれていました。

・/etc/rc.local.d/vmware_local.sh (MD5: bd6e38b6ff85ab02c1a4325e8af29ce4)
・/bin/rdt (MD5: 8e80b40b1298f022c7f3a96599806c43)
・/bin/vmsyslog.py (MD5: 61ab3f6401d60ec36cd3ac980a8deb75)

表1: Lsu-lsi-lsi-mrarpid-plugin Malicious VIB contents

vSAN reliable datagram transport (RDT) サービス

 2つ目の悪意のある VIB である ata-pata-pdc20211 は、ペイロードpayload1.v00 (MD5: 9ea86dccd5bbde47f8641b62a1eeff07) を参照しており、表 2 に示すように、その詳細は以下の 2 ファイルであることがわかります。

・/etc/rc.local.d/vmware_rhttpio.sh (MD5: 9d5cc1ee99ccb1ec4d20be1cee10173e)
・/usr/lib/vmware/weasel/consoleui/rhttpproxy-io (MD5: 2c28ec2d541f555b2838099ca849f965)

表2: Lsu-lsi-lsi-mrarpid-plugin Malicious VIB contents


●VIRTUALPITA (LINUX)

 Mandiant は、Linux vCenterシステム上の init.dスタートアップサービスとして持続する、TCPポート 7475 を利用する 2 つの VIRTUALPITAサンプルを追加で発見しました。これらのバイナリは、自身を偽装するために、正規のバイナリである ksmd の名前を共有していました。KSMD (Kernel Same-Page Merging Daemon) は、通常、Linux上でメモリを節約する重複排除を担当しており、このポートで待機することはありません。サンプルは以下のディレクトリの下で見つかりました。

・/usr/libexec/setconf/ksmd (MD5: 744e2a4c1da48869776827d461c2b2ec)
・/usr/bin/ksmd (MD5: 93d50025b81d3dbcb2e25d15cae03428)

 これらのバックドアからは、任意のコマンドの実行、ファイル転送機能、vmsyslogd の起動/停止が可能でした。

●VIRTUALGATE (Windows)

 感染したハイパーバイザーにホストされていた Windowsゲスト仮想マシンには、C:³³.exe にある固有のマルウェアサンプルも含まれていました。このマルウェアは、C言語で記述されたユーティリティ・プログラムで、ドロッパーとペイロードの 2 つの部分から構成されており、私たちはこれを「VIRTUALGATE」と呼んでいます。メモリのみのドロッパーは、VMware の仮想マシン通信インタフェース(VMCI)ソケットを使用して、ハイパーバイザーのホストからゲスト仮想マシン上、または同じホスト上のゲスト仮想マシン間でコマンドを実行する第 2 段階の DLLペイロードの暗号化を解除しています。

vmtoolsd.exeによるコマンド実行

 攻撃者の活動中の ESXiハイパーバイザーを検証したところ、攻撃者はプロセス/bin/rdt(VIRTUALPITA)を通じてゲストマシンに対してコマンドを実行していることが確認されました。親プロセスである /bin/rdt は bash シェルを生成し、図 4 に示すように、ターゲットとなるゲストマシンと実行するコマンドを指定した python スクリプトを呼び出しています。

図4:攻撃者が ESXiハイパーバイザー上で実行したコマンド


 e.py に引数として渡されたコマンドは、対象の Windowsゲストマシンでも実行され、vmtoolsd.exe の下で子プロセスとして実行されていることが確認されました。この実行チェーンは、図 5 に示すとおりです。親バイナリである /bin/rdt はディスク上に存在しませんでしたが、ESXiハイパーバイザーのプロセスメモリをダンプすることで復元することができました。ゲストマシンにコマンドを送信する Pythonスクリプトe.py は復旧できませんでした。

図5:ESXi から渡されたコマンドを実行する vmtoolsd.exe

 攻撃者がゲスト仮想マシン上で vmtoolsd.exe を介して実行したコマンドは、主にネイティブツールの「dir」と「makecab」を使用して、システムと接続されたファイル共有の両方でファイルの列挙と圧縮に重点を置いています。これらの編集されたコマンドのサンプルは、図 6 に示されています。

図6:攻撃者がゲスト仮想マシン上で利用したファイル列挙・圧縮コマンド
C:\Windows\system32\cmd.exe" /c dir /od /s /a s:\ > C:\Windows\Temp\ts_<REDACTED>.tmp
2>null
C:\Windows\System32\cmd.exe makecab /F C:\Windows\Temp\TS_<REDACTED>.txt /D compressiontype=lzx /D compressionmemory=21 /D maxdisksize=1024000000 /D
diskdirectorytemplate=C:\Windows\Temp\ /D cabinetnametemplate=TS_<REDACTED>.cab

 Mandiant はまた、攻撃者が認証情報の取得のために仮想化されたシステムを標的にしていることも確認しました。この攻撃者は、MiniDump を使用してプロセスのメモリをダンプし、平文のクレデンシャルを検索していました。図 7 は、これらのコマンドの抜粋を示したものです。

図7:ゲストマシンでのクレデンシャルダンプリング


 プロセスメモリがダンプされると、powershellスクリプトを使用して結果ファイルを解析し、平文のクレデンシャルを取得しました。図 8 は、クレデンシャル・ハーベスティングに使用されたスクリプトの内容を示しています。攻撃者は、KeyPassパスワードデータベース・ファイルも標的にしていました。

図8:PowerShellパスワード検索スクリプト
$b = New-Object System.IO.streamReader("C:\windows\Temp\<REDACTED>.tmp",
[Text.Encoding]::UTF8)
$n = 0
while (($b1 =$b.ReadLine()) -ne $null)
{
  if($b1 -like '*&password=*'){
  $n++
    Write-Host "YES $n"
    Write-Host $b1
  }

}
f($n -eq 0){Write-Host "NO!"}
$b.Dispose()

 攻撃者は、ほとんどの活動の後、C: \WindowsTemp ディレクトリをクリアしましたが、わずかなミスがあり、トレースアーチファクトを残しました。図 9 に示すように、攻撃者は dir list の出力を .tmpファイルに送信しています。この攻撃者は、Windows の構文(2>nul)ではなく、Linux の構文(2>null)を使用してエラーを回避したため、すべてのエラーは、作業ディレクトリ C: \WindowsSystem32null の null ファイルに転送されました。このファイルは、dirコマンドで列挙されたファイルのディレクトリパスが長すぎて表示できない場合のみ作成されます。

図9:Windowsコマンドの Null への書き込み失敗エラー
C:\Windows\system32\cmd.exe" /c dir /od /s /a s:\ > C:\Windows\Temp\TS_<REDACTED>.tmp 2>null

●アトリビューション

 Mandiant は、この活動を UNC3886 として追跡を開始しました。この侵入の高度な標的型かつ巧妙な回避行動から、UNC3886 の動機はサイバースパイ関連であると思われます。さらに、UNC3886 には中国との関連性があると低信頼性で評価しています。Mandiant が実施する各調査には、Mandiant が対応する数千の調査で観測された活動を関連付けるために、当社のアドバンスト・プラクティス・チームのアナリストが参加しています。時には、侵入活動を既知のグループと直接関連付けるためのデータがないこともあります。このような場合、私たちは新しい UNCグループを作成し、観測された活動を追跡します。UNCグループは、関連するサイバー侵入活動のクラスターで、敵のインフラ、ツール、技術などの観察可能なアーティファクトを含みますが、APT や FIN などの分類を与えるにはまだ準備が整っていません。Mandiant が UNC グループをどのように使用しているかの詳細については、Mandiant のブログ「DebUNCing Attribution: Mandiant による未分類の攻撃者の追跡方法」をご覧ください。

●まとめ

 UNC3886 が使用した手法は、ESXiオペレーティングシステムと VMWare の仮想化プラットフォームをより深く理解する必要があると指摘しましたが、この調査で明らかになった情報を使用して、他のさまざまな攻撃者が同様の攻撃を開始することが予想されます。Mandiant は、ESXi および VMware のインフラストラクチャ製品を使用している企業に対し、このブログ記事で説明したハードニングの手順に従って、ESXiホストの攻撃対象領域を最小限に抑えることを推奨しています。

●MITRE ATT&CK テクニック

Collection
・T1560: Archive Collected Data
・T1560.001: Archive via Utility

Execution
・T1059: Command and Scripting Interpreter
・T1059.001: PowerShell
・T1059.003: Windows Command Shell
・T1059.004: Unix Shell
・T1059.006: Python
・T1129: Shared Modules

Command and Control
・T1105: Ingress Tool Transfer
・T1573.001: Symmetric Cryptography

Defense Evasion
・T1027: Obfuscated Files or Information
・T1070: Indicator Removal on Host
・T1070.003: Clear Command History
・T1070.004: File Deletion
・T1140: Deobfuscate/Decode Files or Information
・T1202: Indirect Command Execution
・T1218.011: Rundll32
・T1497: Virtualization/Sandbox Evasion
・T1497.001: System Checks
・T1620: Reflective Code Loading

Discovery
・T1016: System Network Configuration Discovery
・T1083: File and Directory Discovery

Lateral Movement
・T1021: Remote Services
・T1021.004: SSH

Credential Access
・T1003: OS Credential Dumping
・T1003.001: LSASS Memory

Persistence
・T1547: Boot or Logon Autostart Execution

●謝辞
 Brad Slaybaugh、Joshua Kim、Zachary Smith、Kirstie Failey、Nick Simonian、Charles Carmakal には、調査、技術検討、本ブログ記事で取り上げたマルウェア群の検出結果の作成にご協力いただき、特に感謝しています。また、この調査に協力していただいた VMware社に感謝します。

※本ブログは、2022 年 9 月 29 日に公開されたブログ「Bad VIB(E)s Part One: Investigating Novel Malware Persistence Within ESXi Hypervisors」の日本語抄訳版です。

《マンディアント株式会社 ALEXANDER MARVI, JEREMY KOPPEN, TUFAIL AHMED, JONATHAN LEPORE》

編集部おすすめの記事

特集

脆弱性と脅威 アクセスランキング

  1. TvRock にサービス運用妨害(DoS)と CSRF の脆弱性

    TvRock にサービス運用妨害(DoS)と CSRF の脆弱性

  2. NETGEAR 製ルータにバッファオーバーフローの脆弱性

    NETGEAR 製ルータにバッファオーバーフローの脆弱性

  3. Linux の GSM ドライバにおける Use-After-Free の脆弱性(Scan Tech Report)

    Linux の GSM ドライバにおける Use-After-Free の脆弱性(Scan Tech Report)

  4. RoamWiFi R10 に複数の脆弱性

  5. 「Pokemon GO」で身元バレの可能性、個人情報の管理に注意

  6. 複数の HTTP/2 実装に CONTINUATION フレームの取り扱い不備

  7. PuTTY SSH クライアントの ECDSA 署名処理の実装に脆弱性

  8. WordPress 用プラグイン Ninja Forms に複数の脆弱性

  9. Adobe ColdFusion の脆弱性を悪用し webshell が設置される被害

  10. 開封確認要求や大量の空白行… 複数の手法を採用したフィッシングメール確認 ~ IPA、J-CSIP 運用状況公開

アクセスランキングをもっと見る

「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」
「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」

ページ右上「ユーザー登録」から会員登録すれば会員限定記事を閲覧できます。毎週月曜の朝、先週一週間のセキュリティ動向を総括しふりかえるメルマガをお届け。(写真:ScanNetSecurity 名誉編集長 りく)

×