悪い VIB(E) パート 1: ESXi ハイパーバイザー内の新しいマルウェアの持続性の調査

Visualization of ESXi attack path news

エンドポイントの検出と対応 (EDR) ソリューションが Windows システムでのマルウェア検出の有効性を向上させるにつれて、特定の国が支援する攻撃者は、ネットワーク アプライアンス、SAN アレイ、VMware ESXi サーバーなど、一般に EDR をサポートしないシステム上でのマルウェアの開発と展開に移行しています。 .

今年初め、Mandiant は、VMware ESXi、Linux vCenter サーバー、および Windows 仮想マシンに影響を与える新しいマルウェア エコシステムを特定しました。これにより、攻撃者は次のアクションを実行できます。

  1. ハイパーバイザーへの永続的な管理アクセスを維持する
  2. 実行のためにゲスト VM にルーティングされるハイパーバイザーにコマンドを送信します。
  3. ESXi ハイパーバイザーとその下で実行されているゲスト マシンの間でファイルを転送する
  4. ハイパーバイザーのロギング サービスの改ざん
  5. あるゲスト VM から同じハイパーバイザー上で実行されている別のゲスト VM に対して任意のコマンドを実行する

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

Visualization of ESXi attack path
図 1: ESXi の攻撃経路の視覚化

これが外部のリモート コード実行の脆弱性ではないことを強調することが重要です。攻撃者がマルウェアを展開するには、ESXi ハイパーバイザーに対する管理者レベルの権限が必要です。 Mandiant には、この投稿の執筆時点で、初期アクセスの取得や悪意のある VIB の展開にゼロデイ脆弱性が使用されたという証拠はありません。

悪意のあるまたは異常な VIB が現在 ESXi 環境にインストールされているかどうかを手動で検出する方法の詳細については、強化ブログの投稿で概説されています。 VMware は、vSphere の保護に関する追加情報をリリースしました。

vSphere インストール バンドル (VIB)

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

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

VIB は、次の 3 つのコンポーネントに分けることができます。

  • XML 記述子ファイル
  • 「VIB ペイロード」(.vgz アーカイブ)
  • 署名ファイル – VIB のホスト受け入れレベルを検証するために使用されるデジタル署名

XML 記述子ファイルは、次への参照を含む構成です。

  • インストールするペイロード
  • 名前やインストール日などの VIB メタデータ
  • VIB に属する署名ファイル

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

署名ファイルは、VIB のホスト受け入れレベルを確認するために使用されます。許容レベルは、VMware が使用するデジタル署名システムであり、VIB が公開される前に VMware またはパートナーが行ったテストを指定します。受け入れレベルは、ホスト、イメージ プロファイル、および個々の VIB に対して設定されます。 4 つの許容レベルとその XML 記述子の短い名前を以下に示します。

  • VMWareCertified (認定済み)
  • VMwareAccepted (承認済み)
  • PartnerSupported (パートナー)
  • CommunitySupported (コミュニティ)

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

観察された悪意のある VIB には、 PartnerSupportedというラベルが付けられました。 Mandiant による署名ファイルのレビューでは、署名ファイルが空であり、攻撃者が XML 記述子ファイルを変更して、 acceptance-levelフィールドをcommunityからpartnerに変更したことが判明しました CommunitySupported承認レベルは、VIB が VMware またはその信頼できるパートナーによってレビューも署名もされていないサード パーティによって作成されたことを示しますこれは、 CommunitySupported VIBの要件のみを満たしているにもかかわらず、攻撃者がこれらの VIB ファイルをPartnerSupportedとして偽装したことを示しています。これは、VIB が VMware パートナー プログラム外の個人または企業によって作成され、VMware が承認したテスト プログラムを経ていないことも示しています。図 2には、特定された変更済み XML 記述子ファイルの抜粋が含まれています。

変更された記述子 XML
図 2: 変更された記述子 XML

acceptance-levelフィールドは攻撃者によって記述子 XML で変更されましたが、ESXi システムは依然として、偽造された VIB ファイルが最小設定許容レベル未満でインストールされることを許可しませんでした。これを回避するために、攻撃者は--forceフラグを悪用して、悪意のあるCommunitySupported VIB をインストールしました。

テストでは、XML 記述子ファイルの変更されたフィールドが、VIB の一覧表示と検証に使用されるコマンドの出力で行われた変更を反映していることが確認されました。これには、コマンドesxcli software vib listをだまして、インストールされている VIB の誤った許容レベルを表示させる<acceptance-level>フィールドの変更が含まれていました。 VMware コマンドesxcli software vib signature verifyは、インストールされている VIB パッケージの署名を検証し、次のフィールドを表示します。

  • VIB 名
  • バージョン
  • ベンダー
  • 合格レベル
  • VIB の署名検証の結果

Mandiant は、これらの許容レベルが改ざんされたときにこのコマンドが検出され、悪意のある VIB を特定したことを確認しました。このコマンドは、XML 記述子ファイルによって指定された許容レベルを表示しますが、 Signature Verification列は、署名ファイルがそれぞれの記述子 XML と一致しなかったかどうかを明確にします。署名を検証できない場合、[ Signature Verification ] 列に[署名が利用できSignature Not Available: Host may have been upgraded from an older ESXi versionます] という値が含まれます。この例を図 3に示します。

esxcli ソフトウェア vib 署名検証で偽造された VIB 許容レベルが見られる例
図 3: esxcli ソフトウェアの vib 署名検証で表示される改ざんされた VIB 許容レベルの例

仮想ピタ (VMware ESXi)

VIRTUALPITA は、VMware ESXi サーバーのハードコードされたポート番号にリスナーを作成する 64 ビットのパッシブ バックドアです。バックドアは、多くの場合、VMware のサービス名とポートを利用して、正当なサービスになりすます。任意のコマンドの実行、ファイルのアップロードとダウンロード、およびvmsyslogdを開始および停止する機能をサポートしています。任意のコマンドの実行中、マルウェアは環境変数HISTFILE0に設定して、マシン上で発生したアクティビティをさらに隠します。このマルウェアの亜種は、仮想マシン通信インターフェイス(VMCI) をリッスンし、このアクティビティをファイルsysclogに記録することが判明しました。

バーチャルピー (VMware ESXi)

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

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

  • /etc/rc.local.d/vmware_local.sh (MD5: bd6e38b6ff85ab02c1a4325e8af29ce4)
  • /bin/rdt (MD5: 8e80b40b1298f022c7f3a96599806c43)
  • /bin/vmsyslog.py (MD5: 61ab3f6401d60ec36cd3ac980a8deb75)
表 1: Lsu-lsi-lsi-mrarpid-plugin 悪意のある VIB コンテンツ

ファイル名

説明

vmware_local.sh

bash インストール スクリプトを/etc/rc.local.d/に配置して、ESXi の起動時にそのアクションが確実に実行されるようにします。 esxcliコマンド ライン ユーティリティを使用して、バックドア トラフィックのファイアウォール ルールを有効にし、両方のバックドアを実行し、VIB によって作成されたすべてのファイルをディスクから削除します。

rdt

ハードコーディングされた TCP ポート 2233 でリスナーを作成する ELF バックドア (VIRTUALPITA)。任意のコマンドの実行、ファイル転送機能、およびvmsyslogdの開始/停止機能が可能です。 VMWare のドキュメントには、このポートは通常、確認された ESXi バージョンのvSAN 信頼できるデータグラム トランスポート(RDT) サービスによって使用されることが記録されています。

vmsyslog.py

ハードコーディングされたポート 546 でデーモン化された IPv6 リスナーを生成する、Python で記述された軽量バックドア (VIRTUALPIE)。任意のコマンド ライン実行、ファイル転送機能、およびリバース シェル機能が可能です。通信はカスタム プロトコルを使用し、RC4 を使用して暗号化されます。

ata-pata-pdc20211という名前の 2 番目の悪意のある VIB は、表 2 で詳細を確認できる次の 2 つのファイルを含むペイロードpayload1.v00 (MD5: 9ea86dccd5bbde47f8641b62a1eeff07) を参照しました。

  • /etc/rc.local.d/vmware_rhttpio.sh (MD5: 9d5cc1ee99ccb1ec4d20be1cee10173e)
  • /usr/lib/vmware/weasel/consoleui/rhttpproxy-io (MD5: 2c28ec2d541f555b2838099ca849f965)
表 2: Lsu-lsi-lsi-mrarpid-plugin 悪意のある VIB コンテンツ

ファイル名

説明

vmware_rhttpio.sh

bash インストール スクリプトを/etc/rc.local.d/に配置して、ESXi の起動時にそのアクションが確実に実行されるようにします。このスクリプトは ELF バックドアを実行します

rhttpproxy-io

ハードコードされた VMCI ソケット ポート 18098 でリスナーを作成する ELF バックドア (VIRTUALPITA)。任意のコマンドの実行、ファイル転送機能、および vmsyslogd の開始/停止機能が可能です。次のサンプルは、システム コンテキスト ID (CID) をフェッチする他のサンプルには見られない追加のログを生成します。
生成されたログ
/var/log/sysclogは次の形式で記録されます[<date/timestamp>]nr[!]<<PID>>:<CID>:<port>nn

仮想ピタ (Linux)

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

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

これらのバックドアは、任意のコマンドの実行、ファイル転送機能、および vmsyslogd の開始/停止機能を備えていました。

仮想ゲート (Windows)

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

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

Mandiant は、アクティブな攻撃者イベント中に ESXi ハイパーバイザーを確認したところ、攻撃者がプロセス/bin/rdt (VIRTUALPITA)を介してゲスト マシンに対してコマンドを実行したことを特定しました。親プロセス/bin/rdtは、ターゲットのゲスト マシンと実行するコマンドを指定する Python スクリプトを呼び出す bash シェルを生成しました (図 4参照)

図 4: 攻撃者が ESXi Hypervisor で実行するコマンド

-> /bin/rdt -i

....-> sh -c /bin/sh

........-> /bin/sh

...........-> python e.py 127.0.0.1 vpxuser <password> <target guest machine> C:Windowssystem32cmd.exe /c dir /od /s /ac: > C:WindowsTempTS_<REDACTED>.tmp 2>nul

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

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

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

図 6: ゲスト仮想マシンで攻撃者が使用するファイル列挙および圧縮コマンド

C:Windowssystem32cmd.exe" /c dir /od /s /as: > C:WindowsTempts_<REDACTED>.tmp 2>null

C:WindowsSystem32cmd.exe makecab /FC:WindowsTempTS_<REDACTED>.txt /D compressiontype=lzx /D compressionmemory=21 /D maxdisksize=1024000000 /D diskdirectorytemplate=C:WindowsTemp /D cabinetnametemplate=TS_<REDACTED>.cab

Mandiant はまた、攻撃者が資格情報収集のために仮想化システムを標的にしていることを特定しました。攻撃者は、MiniDump を使用してプロセス メモリをダンプし、平文の資格情報を検索しました。図 7 は、これらのコマンドの抜粋を示しています。

図 7: ゲスト マシンでの資格情報のダンプ

-- “ C:Program FilesVMwareVmware Toolsvmtoolsd.exe”
---- “C:WindowsSystem32WindowsPowerShellv1.0powershell.exe”
------ rundll32.exe C:windowsSystem32comsvcs.dll MiniDump <Process ID> C:WindowsTempTS_<REDACTED>.tmp full

プロセス メモリがダンプされると、PowerShell スクリプトを使用して結果のファイルを解析し、クリアテキストの資格情報を取得しました。図 8は、資格情報の収集に使用されるスクリプトの内容を示しています。攻撃者は、KeyPass パスワード データベース ファイルも標的にしました。

図 8: PowerShell パスワード検索スクリプト

$b = New-Object System.IO.streamReader("C:windowsTemp<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

}

      

}

if($n -eq 0){Write-Host "NO!"}

$b.Dispose()

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

図 9: Windows コマンドでエラーを Null に書き込めませんでした

C:Windowssystem32cmd.exe" /c dir /od /s /as: > C:WindowsTempTS_<REDACTED>.tmp 2>null

帰属

Mandiant は、このアクティビティを UNC3886 として追跡し始めました。この侵入の高度に的を絞った回避的な性質を考えると、UNC3886 の動機はサイバースパイ活動に関連していると思われます。さらに、UNC3886 が中国に関連しているとの確信度は低いと評価しています。 Mandiant が実施する各調査には、Mandiant が対応する何千もの調査で観察された活動を関連付ける作業を行う Advanced Practices チームのアナリストが含まれます。場合によっては、侵入活動を既知のグループに直接帰属させるためのデータが入手できないことがあります。このような場合、監視したアクティビティを追跡するために新しい UNC グループを作成します。 UNC グループは、関連するサイバー侵入活動のクラスターであり、敵対者のインフラストラクチャ、ツール、トレード クラフトなどの観察可能なアーティファクトが含まれますが、APT や FIN などの分類を提供する準備がまだ整っていません。 Mandiant が UNC グループを使用する方法の詳細については、ブログ投稿を参照してください: DebUNCing Attribution: How Mandiant Tracks Uncategorized Threat Actors .

結論

UNC3886 で使用される手法には、ESXi オペレーティング システムと VMWare の仮想化プラットフォームに関するより深いレベルの理解が必要であることに注意しましたが、他のさまざまな攻撃者がこの調査で概説した情報を使用して、同様の機能の構築を開始すると予想されます。 Mandiant は、ESXi および VMware インフラストラクチャ スイートを使用している組織が、このブログ投稿で概説されている強化手順に従って、 ESXi ホストの攻撃面を最小限に抑えることを推奨しています。

MITRE ATT&CK テクニック

コレクション

  • T1560: 収集されたデータのアーカイブ
  • T1560.001: ユーティリティによるアーカイブ  

実行

  • T1059: コマンドおよびスクリプト インタープリター
  • T1059.001: PowerShell
  • T1059.003: Windows コマンド シェル
  • T1059.004: Unix シェル
  • T1059.006: パイソン
  • T1129: 共有モジュール

コマンドと制御

  • T1105: Ingress ツール転送
  • T1573.001: 対称暗号  

防御回避

  • T1027: 難読化されたファイルまたは情報
  • T1070: ホストでのインジケータの削除
  • T1070.003: コマンド履歴のクリア
  • T1070.004: ファイルの削除
  • T1140: ファイルまたは情報の難読化解除/デコード
  • T1202: 間接コマンド実行
  • T1218.011:Rundll32
  • T1497: 仮想化/サンドボックスの回避
  • T1497.001: システムチェック
  • T1620: リフレクティブ コードの読み込み

発見

  • T1016: システム ネットワーク構成の検出
  • T1083: ファイルとディレクトリの検出

横移動

  • T1021: リモート サービス
  • T1021.004: SSH

資格情報へのアクセス

  • T1003: OS 資格情報のダンプ
  • T1003.001: LSASS メモリ

持続性

  • T1547: ブートまたはログオンの自動開始の実行

侵害の痕跡

タイプ

価値

説明

MD5

SHA1

SHA256

2716c60c28cf7f7568f55ac33313468b

5ffa6d539a4d7bf5aacc4d32e198cc1607d4a522

2be5f4520846bf493b4694789841907d058fe08d59fff6bad7abe1db8ed96e7d

悪意のある VIB .vgz ペイロード

MD5

SHA1

SHA256

bd6e38b6ff85ab02c1a4325e8af29ce4

17fb90d01403cb3d1566c91560f8f4b7dd139aa8

e68872c49aaedeb3bde3ff5fd2ad6f70658687dc02d04f12ebc7cb28e821cc88

悪意のある VIB 展開スクリプト

MD5

SHA1

SHA256

8e80b40b1298f022c7f3a96599806c43

e9cbac1f64587ce1dc5b92cde9637affb3b58577

c2ef08af063f6d416233a4b2b2e991c177fc72d70a76c24bca9080521d41040f

バーチャルピタ

MD5

SHA1

SHA256

61ab3f6401d60ec36cd3ac980a8deb75

93d5c4ebec2aa45dcbd6ddbaad5d80614af82f84

4cf3e0b60e880e6a6ba9f45187ac5454813ae8c2031966d8b264ae0d1e15e70d

バーチャルピー

MD5

SHA1

SHA256

9ea86dccd5bbde47f8641b62a1eeff07

b90b19781fde2c35963eb3eac4ce2acc6f5019fb

23eb8d056f18e7c69ec3568f2833c9d09e91df98d11b11de235331ef42756fe5

悪意のある VIB ペイロード

MD5

SHA1

SHA256

9d5cc1ee99ccb1ec4d20be1cee10173e

9d191849d6c57bc8a052ec3dac2aa9f57c3fe0cd

4d995eb87b0685124b7f1640d1ab431f5a1ab991ade02750b876ed5c523234bb

悪意のある VIB 導入スクリプト

MD5

SHA1

SHA256

2c28ec2d541f555b2838099ca849f965

e35733db8061b57b8fcdb83ab51a90d0a8ba618c

505eb3b90cd107cf7e2c20189889afdff813b2fbb98bbdeab65cde520893b168

バーチャルピタ

MD5

SHA1

SHA256

744e2a4c1da48869776827d461c2b2ec

a3cc666e0764e856e65275bd4f32a56d76e51420

4a6f559426493abc0d056665f23457e2779abd3482434623e1f61f4cd5b41843

バーチャルピタ

MD5

SHA1

SHA256

93d50025b81d3dbcb2e25d15cae03428

abff003edf67e77667f56bbcfc391e2175cb0f8a

13f11c81331bdce711139f985e6c525915a72dc5443fbbfe99c8ec1dd7ad2209

バーチャルピタ

MD5

SHA1

SHA256

fe34b7c071d96dac498b72a4a07cb246

0962e10dc34256c6b31509a5ced498f8f6a3d6b6

5731d988781c9a1d2941f7333615f6292fb359f6d48498f32c29878b5bedf00f

バーチャルピタ

記述子 XML 名

lsu-lsi-lsi-mrarpid-plugin

VIB 名

ファイル名

lsu_lsi_.v05

VIB .vgz ペイロード

フルパス

/etc/rc.local.d/vmware_local.sh

VIB 導入スクリプト

フルパス

/bin/rdt

バーチャルピタ

フルパス

/bin/vmsyslog.py

記述子 XML 名

ata-pata-pdc20211

VIB 名

ファイル名

ペイロード1.v00

VIB .vgz ペイロード

フルパス

/etc/rc.local.d/vmware_rhttpio.sh

VIB 導入スクリプト

フルパス

/usr/lib/vmware/weasel/consoleui/rhttpproxy-io

バーチャルピタ

フルパス

/usr/libexec/setconf/ksmd

仮想ピタ (Linux)

フルパス

/usr/bin/ksmd

仮想化 (Linux)

フルパス

C:WindowsTempavp.exe

バーチャルゲート

フルパスとハッシュ (MD5) C:WindowsTempSilverlightwmpd.exe
76df41ee75d5077f2c5bec70747b3c99
vmtoolsd.exe によって作成され、vmtoolsd.exe 子プロセスによって実行される削除されたファイル

ヤラ検出

rule M_APT_VIRTUALPITA_1

{

meta:

author = "Mandiant"

md5 = "fe34b7c071d96dac498b72a4a07cb246"

description = "Finds opcodes to set a port to bind on 2233, encompassing the setsockopt(), htons(), and bind() from 40973d to 409791 in fe34b7c071d96dac498b72a4a07cb246"

strings:

$x = {8b ?? ?? 4? b8 04 00 00 00 [0 - 4] ba 02 00 00 00 be 01 00 00 00 [0 - 2] e8 ?? ?? ?? ?? 89 4? ?? 83 7? ?? 00 79 [0 - 50] ba 10 00 00 00 [0 - 10] e8}

condition:

uint32(0) == 0x464c457f and all of them

}

rule M_APT_VIRTUALPITA_2

{

meta:

author = "Mandiant"

md5 = "fe34b7c071d96dac498b72a4a07cb246"

description = "Finds opcodes to decode and parse the recieved data in the socket buffer in fe34b7c071d96dac498b72a4a07cb246. Opcodes from 401a36 to 401adc"

strings:

$x = {85 c0 74 ?? c7 05 ?? ?? ?? ?? fb ff ff ff c7 8? ?? ?? ?? ?? 00 00 00 00 e9 ?? ?? ?? ?? 4? 8b 05 ?? ?? ?? ?? 4? 83 c0 01 4? 89 05 ?? ?? ?? ?? c7 4? ?? 00 00 00 00 e9 ?? ?? ?? ?? 8b 4? ?? 4? 98 4? 8d 9? ?? ?? ?? ?? 4? 8d ?? e0 4? 8b 0? 4? 89 0? 4? 8b 4? ?? 4? 89 4? ?? 8b 4? ?? 4? 98 4? 8d b? ?? ?? ?? ?? b? ?? ?? ?? ?? e8 ?? ?? ?? ?? c7 4? ?? 00 00 00 00 eb ?? 8b 4? ?? 8b 4? ?? 01 c1 8b 4? ?? 03 4? ?? 4? 98 0f b6 9? ?? ?? ?? ?? 8b 4? ?? 4? 98 0f b6 8? ?? ?? ?? ?? 31 c2 4? 63 c1 88 9? ?? ?? ?? ?? 83 4? ?? 01}

condition:

uint32(0) == 0x464c457f and all of them

}

rule M_APT_VIRTUALPITA_3

{

meta:

author = "Mandiant"

md5 = "fe34b7c071d96dac498b72a4a07cb246"

description = "Finds opcodes from 409dd8 to 409e46 in fe34b7c071d96dac498b72a4a07cb246 to set the HISTFILE environment variable to 'F' with a putenv() after loading each character individually."

strings:

$x = {4? 8b 4? ?? c6 00 48 4? 8b 4? ?? 4? 83 c0 05 c6 00 49 4? 8b 4? ?? 4? 83 c0 01 c6 00 49 4? 8b 4? ?? 4? 83 c0 06 c6 00 4c 4? 8b 4? ?? 4? 83 c0 02 c6 00 53 4? 8b 4? ?? 4? 83 c0 07 c6 00 45 4? 8b 4? ?? 4? 83 c0 03 c6 00 54 4? 8b 4? ?? 4? 83 c0 08 c6 00 3d 4? 8b 4? ?? 4? 83 c0 04 c6 00 46 4? 8b 4? ?? 4? 83 c0 09 c6 00 00 4? 8b 7? ?? e8}

condition:

uint32(0) == 0x464c457f and all of them

}

rule M_APT_VIRTUALPITA_4

{

meta:

author = "Mandiant"

md5 = "fe34b7c071d96dac498b72a4a07cb246"

description = "Finds opcodes from 401f1c to 401f4f in fe34b7c071d96dac498b72a4a07cb246 to decode text with multiple XORs"

strings:

$x = {4? 8b 4? ?? 4? 83 c1 30 4? 8b 4? ?? 4? 8b 10 8b 4? ?? 4? 98 4? 8b 04 ?? ?? ?? ?? ?? 4? 31 c2 4? 8b 4? ?? 4? 83 c0 28 4? 8b 00 4? c1 e8 10 0f b6 c0 4? 98 4? 8b 04}

condition:

uint32(0) == 0x464c457f and all of them

}

rule M_Hunting_Script_LaunchAndDelete_1

{

meta:

author = "Mandiant"

md5 = "bd6e38b6ff85ab02c1a4325e8af29ce4"

description = "Finds scripts that launch and then delete files, indicative of cleaning up tracks and remaining in-memory only."

strings:

$ss = /setsid[^nr]{,250}-i[rn]{,5}rm/

condition:

all of them

}

rule M_Hunting_Python_Backdoor_CommandParser_1

{

meta:

author = "Mandiant"

md5 = "61ab3f6401d60ec36cd3ac980a8deb75"

description = "Finds strings indicative of the vmsyslog.py python backdoor."

strings:

$key1 = "readInt8()" ascii wide

$key2 = "upload" ascii wide

$key3 = "download" ascii wide

$key4 = "shell" ascii wide

$key5 = "execute" ascii wide

$re1 = /defsrun.{,20}commands?=s?self.conn.readInt8().{,75}upload.{,75}download.{,75}shell.{,75}execute/s

condition:

filesize < 200KB and all of them

}

謝辞

Brad Slaybaugh、Joshua Kim、Zachary Smith、Kirstie Failey、Nick Simonian、Charles Carmakal の各氏には、このブログ投稿で説明したマルウェア ファミリの調査、技術レビュー、および検出の作成を支援していただき、特に感謝しています。さらに、この調査に協力してくれた VMware にも感謝します。

参照: https://www.mandiant.com/resources/blog/esxi-hypervisors-malware-persistence

Comments

Copied title and URL