SOC Prime Bias: クリティカル

09 Apr 2026 15:14 UTC

新しいホワイトペーパー:BPFDoorのバリアントは目立たないように隠れる

Author Photo
SOC Prime Team linkedin icon フォローする
新しいホワイトペーパー:BPFDoorのバリアントは目立たないように隠れる
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Rapid7 Labsは、新しいBPFDoorの7つの亜種が、通信環境でステルス性のあるバックドアアクセスを維持するために、カーネルレベルのBerkeley Packet Filtersを悪用していることを特定しました。新しいファミリーのhttpShellとicmpShellは、マジックパケット形式と隠されたIPフィールドを備えたステートレスICMPおよびHTTPトンネリングを使用して、最小限の観測可能なフットプリントでコマンド&コントロールを確立します。このレポートでは、プロセスマスカレーディング、ファイルディスクリプタのクリーンアップ、タイムスタンプ変更、および暗号化されたICMP通信を使用して、インプラントがほぼ見えなくしようとする方法を説明しています。

調査

研究者たちは約300のサンプルを分析し、新しいBPFバイトコードの特性、新しいマジックバイトのマーキング、そしてhpasmlitedやcmathreshdのような亜種ごとのプロセス名を抽出しました。Dockerでのラボ検証により、ICMP駆動のPTYトンネリング、RC4で暗号化されたペイロード交換、そして-1フラグがパケットの送信元アドレスにトラフィックを返すルーティング動作が再現されました。チームはまた、ステージングとコントロールトラフィックをブレンドするために使用されるNTP over SSLサービスを装ったドメインを含む、サポートインフラを明らかにしました。

緩和策

カーネル付近の悪用を暴露するテレメトリを優先: AF_PACKETソケットの作成を監視し、BPFフィルタの添付を検出し、これらの亜種に関連するプロトコル異常を狩り出し、ICMPシーケンス1234および無効なICMPコード1を含む。実行可能パスのない不審なデーモン、スプーフされたサービス名、または正当なシステムプロセスと整合しないランタイム特性にアラートを出してください。Rapid7は、rapid7_bpfdoor_check.shトリアージスクリプトを実行し、新たに文書化されたマジックバイト署名でYARA/Suricata検出を更新することを推奨します。

対応

インジケータが見つかった場合は、システムを隔離し、疑わしいインプラントプロセスを停止し、関連するドメインやIP範囲をブロックしてください。BPF状態およびランタイムの証拠を保存するためにメモリおよびディスクのアーティファクトをキャプチャし、それからrapid7_bpfdoor_check.shを使用してアクティブなBPFフィルタおよび関連するゼロバイトのミューテックスアーティファクトを特定します。最後に、公表された署名で検出を更新し、同じパケットマーカー、プロセス名、およびフィルタ添付動作の再出現を引き続き監視してください。

攻撃フロー

シミュレーション実行

前提条件: テレメトリとベースラインのプレフライトチェックがパスしている必要があります。

攻撃の説明 & コマンド

  1. 悪意のあるBashスクリプトを作成 ほとんど監視されていないパスに /var/run/user/0.
  2. スクリプトを実行可能にする そして ファイルを削除 し、それを開いたままにして 削除されたiノードにより、プロセスが引き続き実行されている場合、カーネルがコマンドラインの一部としてログを記録します。 ぶら下がりファイルディスクリプタを実行
  3. することにより、削除されたiノードからプロセスを実行し、Sigmaルールが探している正確なテレメトリを生成します。プロセスが実行され、ログに記録されるまで
  4. 検証する 監査ログ内のプロセスコマンドラインが 選択3.
  5. 回避 除外対象のマスカレード文字列(hpasmlited, cmathreshd)を避けると、ルールが発火します。

リグレッションテストスクリプト

#!/usr/bin/env bash
# -------------------------------------------------
# BPFDoorスタイルの削除済みinodeからの実行テスト
# -------------------------------------------------
# 1. 悪意のある(悪用されない)ペイロードを準備
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"
# 2. ファイルディスクリプタを開く(ファイルを開いたままにする)
exec 3<"$PAYLOAD"
# 3. ファイルシステムからファイルを削除する – FD 3を介してiノードが開いたまま
rm -f "$PAYLOAD"
# 4. ぶらさがったファイルディスクリプタでスクリプトを実行。
#    /proc/self/fd/3シンボリックリンクは、現在削除されたiノードを指します。
bash /proc/self/fd/3 &
# 5. プロセスが開始され、ログに記録されるまで少し待ちます。
sleep 5
# 6. クリーンアップ: ファイルディスクリプタを閉じる
exec 3<&-
echo "シミュレーション完了 – SIEMでアラートを確認してください。"

クリーンアップコマンド

#!/usr/bin/env bash
# -------------------------------------------------
# BPFDoorシミュレーション後のクリーンアップ
# -------------------------------------------------
# スクリプトによって開始された眠っているプロセスをすべて殺す
pkill -f "sleep 60"
# ターゲットディレクトリ内に残りのファイルがないことを確認する
rm -f /var/run/user/0/malicious.sh
echo "クリーンアップ完了。"

レポート終了